毕业论文-基于51单片机的智能ic考勤系统的设计与实现内容摘要:
表 43 数 据 帧 各 字 段 说 明表 字段 长度 说明 补充 FrameLen 1 数 据 帧 的 长 度 , 包 含 它 自 己。 SEQ/ CmdType 1 Bit 74: 该 包 序 号 ,从 0 到 15 循 环。 可 以 用 来 作 为 通 信 间的 错 误 检查 , 从 机 接 收 到 主 机 发 来 的 信 息 , 在 应 答 信 息 中 发 出一 个同 样的 SEQ 信息 , 主 机 可 以 通 过 此 信 息 检 查 是 否 发 生 的 “包 丢失 ”的 错 误。 第 一 个 包 的 SEQ 可 为 任 意 值。 该 字 段 主 机 发 送 和 接 收 的 应 该 相 同 Bit 30: 命 令 类 型。 0x00: 协 议 控 制 类 命 令 , 如 设 置 地 址 、 读 产 品 序 号 等 0x01:设备控制类 命 令,如读写 IO、控制蜂鸣器、读写寄存 器等 0x02: ISO14443A 命令 其它 值 保 留。 从 机 返 回 相同的 CmdType Cmd/ Status 1 主 机 ——从 机 : 命 令 从 机 ——主 机 : 状 态 Length 1 该 帧 所 带 数 据 信 息 长度 若 模 块 返 回 状 态不为 0,则 Length=0。 Info Length 数 据 信息 基于单片机的智能停车场停车位管理系统的设计与实现 16 BCC 1 校 验 和。 从 FrameLen 开始到 Info 的最后一 字 节 异 或 取 反 , C 语 言 程 序 描 述 如 下 :( SerBfr 为 一 帧 数 据 缓 冲 区 首 址 ) BCC = 0。 for(i=0。 i(SerBfr[0]2)。 i++) { BCC ^= SerBfr[i]。 } SerBfr[SerBfr[0]2] = ~BCC。 ETX 1 0x03: “End of Text”标 准 的 控 制 字 符 , 是 一 个 帧 的 结 束 标 志 数据帧接收规则: 一帧的结 束一定是 ETX,但接收到 0x03 则不一定是帧结束; 帧长必须不小于 6 字节,最大不能超过 54 字节,且帧长必须等于信息长度加 6; 无论是主机还是从机所接收的数据必须符合以上规则,否则从机不会执行任何命令,也不 会有任何错误响应,主机也必须丢弃这帧数据,以找出错误原因,从而纠正错误。 (三)串口通信原理 随着计算机技术的发展,串口通信在诸多领域得到了广泛的应用,计算机可以通过串口来获得设备的各种数据。 然后利用计算机强大的功能进行处理,再根据处理的结果发送数据来控制设备。 在串口的几种编程方式中, 利用嵌入式汇编语言编写计算机的串口通信程序需要员对低级语言的了解和掌握: windows api 串口编程虽然实现了设备无关性,但是编程过于繁琐: Microsoft 公司提供了 MSComm 控件,使得开发串口程序变得十分简单。 Visual Basic 是近年来发展最快的一种计算机语言,其简洁和实用性已经受到众多计算机用户和程序员的欢迎,尤其是其 版本,功能强大且易于掌握,是一种优秀的可视化开发环境,在 VB 应用程序中调用 MSComm 控件也十分容易,由于 VB 的通用控件 MSComm友好、功能强大,提供了功能完善 的串口数据的发送和接收功能,同时编程速度快是众人皆知的,所以在数据通讯量不是很大时,在单片机通讯领域广泛地使用 VB 的MSComm通信控件来开发上层通讯软件。 列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如 Modern),还可以发送命令、进行数据交换以及监视和响应。 在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工的、事件驱动 的 、高效实用的通信程序。 下面就对其通信控件作 MSComm 进行一定的说明。 一般用 VB 开发串行通信程序有两种 方法:一是利用 Windows 的通信 API 函数;另一种是采用 VB 标准控件 MSComm 来实现。 利用 API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更丰富、应用面更广泛,更适合于编写较为复杂的低层次通信程序。 MSComm 控件的通信功能实现,实际上是调用了 API 函数,而 API函数是由 Comm。 Dv解释并传给设备驱动程序去执行的,对于 VB程序开发者只需知道MSComm 控件的属性和事件的用法技可以实现串口的操作。 由于 MSComm 控件不属于 工具箱中的最基本的控件,要调用该控件,首先要在 VB环境中添加该部件,即在菜单“工程”的选项“部件”中控件列表中添选择 Microsoft Comm 即可,通过如上步骤,工具栏中就会出现我们需要的通信控件 MSComm,选择该控件,再放置到窗体上就能在程序中方便的使用了。 MSComm 控件 MSComm 控件通过串口端口传输和接受数据,为应用程序提供串行通信功能。 基于单片机的智能停车场停车位管理系统的设计与实现 17 MSComm 控件提供下列两种处理通讯的方式: 事件驱动通讯 这是处理串行端口交互作用的一种非常有效的方法。 在许多情况下,在事件发生时需要得到通知。 例如:在 Camier Detect( CD)或 Request To Send( RTS) 线上一个字符到达或一个变化发生时,捕获并处理这些通信事件。 OnComm 事件还可以检查和处理通讯错误。 如图 给出系统调试上位机图: 图 (四)编程软件介绍 KEIL C51标准 C编译器为 8051微控制器的软件开发提供了 C语言环境 ,,本站特地制作了一个相对简单的教程。 此软件能 嵌入汇编语言保留了汇编代码高效 ,快速的特点。 KEIL C51编译器的功能不断增强 ,使你可以更加贴近 CPU本身 ,及其它的衍生产品,其效率已经达到了相当搞 的程度。 C51 已被完全集成到 uVision2 的集成开发环境中 ,这个集成开发环境包含:编译器 ,汇编器 ,实时操作系统 ,项目管理器 ,调试器。 uVision2 IDE 可为它们提供单一而灵活的开发环境。 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编 ,PLM 语言和 C 语言的程序设计,界面友好,易学易用。 如图 界面: 基于单片机的智能停车场停车位管理系统的设计与实现 18 图 keil打开界面 工程新建后保存即可在打开界面进行编程 ,如图 为编写程序时的界面图。 图 keil打开界面 基于 IC 卡考勤终端系统的设计与实现 19 ( 四 ) 软件程序各模块函数介绍 延时函数 : 函数中 含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振 12M,精确延时请使用汇编 void DelayMs(unsigned char t) { while(t) { //大致延时 1mS DelayUs2x(245)。 DelayUs2x(245)。 } } 信息采集 函数: void InitUART (void) 信息通过串口读取 { SCON = 0x50。 // SCON: 模式 1, 8bit UART, 使能接收 TMOD |= 0x20。 // TMOD: timer 1, mode 2, 8bit 重装 TH1 = 0xFD。 // TH1: 重装值 9600 波特率 晶振 TR1 = 1。 // TR1: timer 1 打开 EA = 1。 //打开总中断 ES = 1。 //打开串口中断 } 液晶屏初始化 函数: 液晶屏初始化 void Init_ST7920() { DelayMs(40)。 //大于 40MS 的延时程序 //PSB=1。 //设置为 8BIT 并口工作模式 DelayMs(1)。 //延时 RES=0。 //复位 基于 IC 卡考勤终端系统的设计与实现 20 DelayMs(1)。 //延时 RES=1。 //复位置高 DelayMs(10)。 Write_Cmd(0x30)。 //选择基本指令集 DelayUs2x(50)。 //延时大于 100us Write_Cmd(0x30)。 //选择 8bit 数据流 DelayUs2x(20)。 //延时大于 37us Write_Cmd(0x0c)。 //开显示 (无游标、不反白 ) DelayUs2x(50)。 //延时大于 100us Write_Cmd(0x01)。 //清除显示,并且设定地址指针为 00H DelayMs(15)。 //延时大于 10ms Write_Cmd(0x06)。 //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加 1 位移动 DelayUs2x(50)。 //延时大于 100us } 实时时钟时间读取函数 void readDS1302() { miao[0]= (ReadDS_S(0x81)amp。 0x70)4。 miao[1]= ReadDS_S(0x81)amp。 0x0F。 fen[0]= (ReadDS_S(0x83)amp。 0x70)4。 fen[1]= ReadDS_S(0x83)amp。 0x0F。 shi[0]= (ReadDS_S(0x85)amp。 0x70)4。 shi[1]= ReadDS_S(0x85)amp。 0x0F。 ri[0]= (ReadDS_S(0x87)amp。 0x70)4。 ri[1]= ReadDS_S(0x87)amp。 0x0F。 yue[0]= (ReadDS_S(0x89)amp。 0x70)4。 yue[1]= ReadDS_S(0x89)amp。 0x0F。 nian[2]= (ReadDS_S(0x8d)amp。 0xf0)4。 nian[3]= ReadDS_S(0x8d)amp。 0x0F。 zhou= ReadDS_S(0x8b)amp。 0x0F。 } 基于 IC 卡考勤终端系统的设计与实现 21 主程序 void main (void) { unsigned char i。 InitUART()。 DS_ini()。 Init_ST7920()。 //初始化 LCD_PutString(0,2, 欢迎您使用 )。 LCD_PutString(0,3, IC 考勤系统 )。 //SendStr(UART test,技术论坛: 请在发送区输入任意信息)。 for(i=0。 i10。 i++) DelayMs(200)。 ClrScreen()。 ES = 1。 //打开串口中断 LCD_PutString(0,2, 请刷卡 ......)。 while (1) 基于 IC 卡考勤终端系统的设计与实现 22 五、调试与仿真 经过较长时间的制作调试,搭接了一个简单的实验模型实现了设计的基本要求下图 给出了调试结果图。 上电显示欢迎界面 刷卡等待 信息采集 基于 IC 卡考勤终端系统的设计与实现 23 整体实物图 基于 IC 卡考勤终端系统的设计与实现 24 总结 本设计基于 89C51 单片机 ,实现了 基于单片机的 IC 考勤 设计与实现。 功能实践是检验真理的唯一标准,当然也是检验学习成果的标准。 在经过一段时间的学习之后,我们需要了解自己的所学应该如何应用在实践中,因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。毕业论文-基于51单片机的智能ic考勤系统的设计与实现
相关推荐
36 23 + j + j + j 37 25 + j + j + j 38 29 + j + j + j 20 19 + j + j + j 结果分析:此程序的运行结果和试验程序给出的结果是一致的。 说明程序无误,但在精确度上有微小差异,这主要是和导纳矩阵的精确度以及显示精度有关。 心得:本程序分模块进行,先是排序,再是求导纳阵,然后求雅阁比,再进行迭代运算,程序本身很简洁明了
委员会审定答辩资格。 :先由学生阐述毕业论文(设计),时间一般为 1015 分钟,然后学生用 1015 分钟回答答辩小组老师提出的问题。 (设计)内容、文字写作(规划设计)水平、口头表 达能力等进行现场评分,并填写答辩成绩。 (设计)的,可由接收单位的技术人员和我院教 20 师共同组成答辩小组(我院教师任答辩组长)进行答辩。 ,答辩小组秘书应做好记录,以供评定成绩时参考。 第十九条 成绩评定
mp。 qYp@Eh5pDx2zVkum amp。 gTXRm 6X4NGpP$vSTTamp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。 MuWFA5ux^Gj qv^$UE9wEwZQc@UE%amp。 qYp@Eh5pDx2zVkum amp。 gTXRm 6X4NGpP$vSTTamp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。
b/。 %JAVA_HOME%/lib/to , 确定后找到 PATH 的变量,双击或点击编辑,在变量值最前面加上 %JAVA_HOME%/bin。 注意里面的 是, 确定、确定、确定后即可。 具体如下图 22 所示: 图 22 环境变量的设置 11 然后开始 运行 cmd,输入 java 或者 javac 看看有没有效果,如果出来一大堆 其它的东西 ,那就好 了,如果出现类似 xxx不是内部
断源,共 8 个中断源; 2 个读写中断口线, 3 级加密位; 低功耗空闲和掉电模式,设置睡眠和唤醒功能; 1有 PDIP、 PQFP、 TQFP 及 PLCC 等几种封装形式,以适应不同产品的需求。 显示采用 ]6x2 字符型液晶 HC1602,与单片机的接口电路如图 44 所示。 图中 c4, c5 为单片机和液晶模块 HCl602 的去耦电容。 DB0DB7 为 HCl602的数 据线
,DATA 用于微处理器与 DHT11 之间的通讯和同步 ,一次通讯时间 4ms 左右 ,数据分小数部分和整数部分。 通讯过程如图 所示 图 通讯过程 总线空闲状态为高电平的时候主机把总线拉低等待 DHT11响应 , 7 DHT11能检测到起 始信号,主机必须把总线拉低,至少大于 18ms。 DHT11一旦接收到主机的开始信号,接着就等待开始信号的结束 ,然后发送 80us的低电平响应信号