




免费预览已结束,剩余17页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能卡门禁系统设计 1 设计要求 智能卡的应用并不是简单的读写卡操作 而是一个综合性的工程项目 它不仅包括卡 和读写模块的选择 还涉及到读写模块的控制 数据的传输 数据的处理和存储 既需要 有硬件应用的知识 也还必须具有软件方面的能力 下面我们以一个完整的应用系统为例 详细地描述了各组成部分的设计要求 完成的功能及具体的实现方法 智能卡门禁系统设计任务 1 智能卡门禁系统 门禁机模块的设计 1 非接触式 IC 卡读写头部分 主要内容 读头部分采用非接触智能卡读写模块 由读卡器读入数据并加以保存 智 能卡按常规要具有加密和数据分区存储功能 读写头的读写距离在 5 10 厘米左右 必须具 有掉电保护 精确时间记时和显示 3K 5K 的临时数据存储 2 门禁机主控模块 主要内容 智能门禁机主控模块是智能门禁机系统的核心部分 主要包括 MCU 键盘 显示 电子时钟 外部数据存储器及掉电保护和看门狗电路 有精确时间记时和显示 2 智能卡门禁系统 系统管理模块的设计 1 系统管理主控模块设计 主要内容 设计门禁上层软件的主控模块 其主要实现的功能是最高权限卡对管理员 和一般用户发卡 管理员对一般用户发卡 能对丢失的卡进行挂失 对找回的卡进行解挂 同时还要具备查找功能 2 系统管理的数据库管理软件设计 主要内容 运用高级语言编程 制作数据库管理软件 采集下位机的数据并保存 然 后管理采集到的数据 具有采集 数据更新 查询统计和报表的打印功能 3 智能卡门禁系统 数据传输模块的设计 主要内容 完成中央控制电脑与门禁读写器之间的数据传输协议的设计 能实现主 从机的双向数据传输及一对一 一对多的数据传输 2 总体方案 根据设计要求 整个智能卡门禁系统分为三大部分 其一是读写器部分 包括 MCU 复位电路 时钟电路 显示电路 键盘 数据存储等主控模块及非接触 IC 卡读写模块和电 锁驱动部分 其二是中央控制电脑的软件管理系统模块 其三是中央控制电脑与读写器之 间的数据传输模块 其总体方案见图 5 1 图 1 非接触式 IC 卡门禁系统框图 3 非接触式 IC 卡门禁机的设计 系统采用 Philips 公司的非接触智能 IC 卡 Mifare 1 卡 以 M1 卡作为用户卡 以用户 卡的序列号 SN 全球唯一 为依据控制门的开启 因为它是一个高频卡 工作频率为 13 5MHZ 有较强的抗干扰能力 读写距离远 5MM 10MM 首先 在发卡系统 中央控制 PC 机 里把用户的卡号及个人信息输入系统数据库 并 将该卡号作为合法卡号下载给所有门禁机 当有一张 M1 卡在门禁机的有效工作范围内时 系统会自动向卡发出命令 卡接收到命令后向门禁机反馈其 SN 门禁机判断收到的卡号是 否合法 合法则驱动电磁门锁开门 并实时上传其开门记录 如果是非法卡 未经授权 或已挂失的卡 则拒绝开门并上传报警信息 只有最高授权者 掌握授权密码 才可以 发管理员卡 管理员必须用管理员卡方可登录发卡系统进行发卡 下传合法卡号 挂失 解挂 下传黑名单等操作 附录二 门禁机硬件原理图 由于采用了 Philips 公司的非接触式 Mifare 1 卡 所以卡的读写模块也采用了以 Philips 公司最新推出的 Mifare 读写芯片 MF RC500 为核心开发的 ZLG500A 读写模块 门禁机模块的硬件原理图见附录二 通过 AT89C52 对 ZLG500A 的控制达到对卡的读写 系统结构简单 成本较低且具有信息 量大和安全保密性好等特点 外围配有 RS232 转 RS485 接口能与 PC 机互连成网络 可以完 成读卡 显示卡号和出入时间 身份识别 开锁以及保存和上传出入记录 下载黑名单 设置开门权限等功能 门禁机模块的主控软件主要完成门禁机模块的初始化 卡的识别 开启门锁及保存有 关数据和数据的传输等五大功能 其总体工作流程如图 5 2 所示 装载权限 初始化 显示日历 寻卡 执行开门 比较权限 开放键盘 设置时间 设置权限 合法吗 执行开门执行报警 取时间 卡号 BCC码 寻卡 计录满否 写入24C64中数 据指针加12 计录数加1 发送数据 发送记录数 清空24C64 数据指针 0 计录数 0 图 3 非接触式 IC 卡门禁机总体工作流程 在完成整个门禁机模块的设计和制作前 首先必须明确非接触式 IC 卡读写模块的 功能特性 接口规范和控制方式 本系统选用 MIFARE 1 卡作为门禁钥匙 相应地 选用广 州周立功公司的 ZLG500A 读写模块作为卡与门禁机交换数据的接口模块 1 ZLG500A 读写模块特性 1 功能特性 图 5 3 为 ZLG500A 非接触式 IC 卡读写模块 该模块采用最新 PHILIPS 高集成 ISO14443 读卡芯片 MF RC500 能读写 RC500 内 EEPROM 提供三线 SPI 接口 并具有控制 线输出口 能与任何 MCU 接口 此外 该模块四层电路板设计 双面表贴 EMC 性能优良 并自带无源蜂鸣器信号输出 能用软件控制输出频率及持续时间 J1J1 J2J2 图 4 ZLG500A 模块实物图 如图 5 3 所示 J1 为与天线的接口 J2 为与 MCU 的接口 J1 J2 的管脚排列和功能说明 见表 5 1 表 5 1 ZLG500A 非接触式 IC 卡读写模块管脚说明 一 管脚符号描述 J1 1GND 地 J1 2TX1 天线发送 1 J1 3GND 地 J1 4TX2 天线发送 2 J1 5GND 地 J1 6RX 天线接收 表 5 1 ZLG500A 非接触式 IC 卡读写模块管脚说明 二 管脚符号类型描述 J2 1SCLK 输入三线 SPI 接口时钟线总是由外部 MCU 产生 J2 2SDATA 双向数据线可双向传输 J2 3SS 双向传输启动线接 MCU 外部中断 J2 4VCCPWR 电源正端 J2 5RST 复位内部 MCU 复位端高电平有效 J2 6GNDPWR 电源负端 J2 7CTRL 输出控制线输出 J2 8BZ 输出蜂鸣器信号输出 ZLG500 模块可方便地与任何 MCU 进行接口 如图 5 4 所示为 ZLG500 与 MCS 51 单片 机 图 5 4 ZLG500 与 MCS 51 单片机接口图 P1 0 P1 1 P3 3 P1 2 M MC CS S5 51 1 SCLK SDATA SS RST CTRL BZ Z ZL LG G5 50 00 0 的典型接口 SCLK SDATA SS 为 ZLG500A 与 MCU 相联接的控制线 分别为片选 SS 时钟 线 SCLK 和数据线 SDATA 主控制器的 MCU 和读卡模块内的 MCU 通过此三线相连 三根线 上的实际电平是双方口线状态逻辑线与的结果 2 ZLG500 三线串行读卡模块接口规范 1 接口原理 接口空闲时主机SS 1 SCLK 0 SDATA 0 从机SS 1 SCLK 1 SDATA 0 其中SS和DATA是 双向的而时钟线SCLK是单向的 即时钟只能由主控制器产生 该信号必须严格遵守时序规 范 否则将出现通信错误读卡模块必须释放该线 SS为数据发送使能 若一方有数据要发送给另一方 则该方控制SS线为低并在发送结 束后将该线置高 接收数据方不得控制该线 双方必须遵守通信协议不得同时控制该线 SDATA为数据线 由数据发送端控制数据 接收端必须释放该线 该线在一次传输开始 时还同时作为数据接收端的响应信号 2 时序图 如图 5 5 所示 无论数据传输的方向如何 SPI 线上信号的波形总是如下 图 5 ZLG500 时序图 由图中可以看出 在SS为低的情况时 时钟和数据线上的信号才有效 且在SCLK为低 时SDATA变化 在SCLK为高时SDATA应保持稳定 以上传输中从数据发送器请求开始至数据接收器响应的时间是不确定的 取决接收器 内的MCU 是否忙 有必要设置一个看门狗定时器对数据接收器的响应进行监视 一旦接收 器响应 则MCU 必须根据数据传输的方向 严格控制以下几个时间 以确保数据传输无误 t1 数据接收器响应至MCU 产生第一个SCLK 上升沿的时间 t2 两个字节传输之间SCLK 低电平的持续时间 t3 传输最后一个字节的最后一位的SCLK 信号的上升沿至SS 上升沿的时间 tH SCLK 信号的高电平持续时间 tL SCLK 信号的低电平持续时间 在数据传输的方向不同时 对时间t1 t3 tH 和tL 都有各自不同的要求 3 通信协议 MCU与ZLG500的通信必须先由MCU发送命令和数据给ZLG500 ZLG500执行命令完毕后 将命令执行的状态和响应数据发回MCU 开始通信前 收发双方必须处于空闲状态 首先由MCU发出SS下降沿信号 然后等待 ZLG500载SDATA线上的响应 若在50ms内为检测到此信号 则退出本次传输 若正确响应 则MCU可将命令和数据发送出去 然后MCU等待ZLG500发回的状态和响应数据 也即等待SS线上的下降沿信号 若在50ms 内为检测到此信号 则退出本次传输 若正确检测到SS信号 则可以接收状态和数据 S SS S S SC CL LK K S SD DA AT TA A S St ta ar rt t f fr ro om m s se en nd de er r t t1 1 t tH H t tL L t t2 2t t3 3 S St to op p f fr ro om m s se en nd de er r A Ac ck k f fr ro om m r re ec ce ei iv ve er r S Se en nd de er r a an nd d r re ec ce ei iv ve er r ZLG500初始化的子程序如下 SCLKBITP1 0 SDATABITP1 1 SSBITP1 2 RST BIT P3 3 Zlg500 SETB RST ZLG500内部复位 LCALL DELAY 50MS CLR RST LCALL DELAY 50MS SETBSS 处于空闲状态 CLRSDATA CLRSCLK MOV 58H 11H MOV 59H 11H MOV 5AH 11H MOV 5BH 11H LCALL CONFIG 配置 LCALL REQUEST 发送请求 LCALL ANTICOLL 防碰撞 IF HAVE CARD MOV A 52H CJNE A 04H SA123 A 04 IS NO CARD LJMP SA234 SA123 RET SA234 LCALL READ BLOCK 从存储器中读取数据 LCALL DELAY 100MS MOV R2 20 MOV R0 58H MOV R1 80H LCALL COMPARE 进行卡号的比较和验证 REL13 SETB FLAG LCALL REL123 JBFLAG REL13 RET 上述程序中CONFIG子程序为RC500的复位和配置子程序 是由MCU向ZLG500发出的不带 数据的命令程序 REQUEST子程序是MCU向ZLG500发出的带一个字节数据的命令程序 主要 是检查在有效范围内是否有卡存在 ANTICOLL子程序是防冲突操作 必须在执行了REQUEST 命令后立即执行 MCU 与 ZLG500 之间的通信一般遵循如下的数据格式 MCU 向 ZLG500 发出的命令模式的格式如下 SeqNr Command Len Data 0 N BCC INFO 0 INFO n 其中 SeqNr 1 Byte 是数据交换包的序号 Command 1 Byte 是命令字符 Len 1 Byte 是数据的长度 Data Len Byte 是数据字节 BCC 1 Byte 是一个字节的 BCC 效验 SeqNr Status Len Data 0 N BCC INFO 0 INFO n 其中 SeqNr 1 Byte 是数据交换包的序号 status 1 Byte 是状态字符 Len 1 Byte 是数据的长度 Data Len Byte 是数据字节 BCC 1 Byte 是一个字节的 BCC 效验 按照上述数据格式传输编制的 CONFIG REQUEST 和 ANTICOLL 子程序清单如下 CONFIG CONFIG MOV 60H 00H 数据交换包的序号 MOV 61H 52H 配置命令字符代码 MOV 62H 00H 数据的长度为 0 LCALL BCC SUM0 BCC 效验子程序 MOV 63H A BCC SUM MOV A 00H MOV R2 04H MOV R0 60H 发送首地址 LCALL SPI SEND MOV R0 30H 接收起始地址 LCALL SPI RCV RET REQUEST REQUEST MOV 60H 00H 数据交换包的序号 MOV 61H 41H 请求命令字符代码 MOV 62H 01H 数据的长度为 1 MOV 63H 01H 请求模式的数据 mode 01H LCALL BCC SUM MOV 64H A MOV A 00H MOV R2 05H 发送 5 个字节数 MOV R0 60H 60H 64H 的数据发送 LCALL SPI SEND MOV R0 40H 接收起始地址 LCALL SPI RCV RET ANTICOLL ANTICOLL MOV 60H 00 数据交换包的序号 MOV 61H 42H 防碰撞命令字符代码 MOV 62H 01 数据的长度为 1 MOV 63H 00H 数据值为 0 LCALL BCC SUM MOV 64H A MOV A 00H MOV R2 05H 发送 5 个字节数 MOV R0 60H 60H 64H 的数据发送 LCALL SPI SEND MOV R0 50H 存放数据 LCALL SPI RCV MOV A 52H CJNE A 04H L0 MOV 58H 53H MOV 59H 54H MOV 5AH 55H MOV 5BH 56H MOV A 58H XRL A 59H XRLA 5AH XRLA 5BH MOV 5CH A MOV A 00H CLR P3 4 LCALL DELAY 50MS LCALL DELAY 50MS LCALL DELAY 50MS LCALL DELAY 50MS SETB P3 4 L0 RET 3 写数据 MCU ZLG500 除响应信号外 三根线上的信号全由MCU 产生 MCU 在SS 线上产生一个下降沿 发出 请求数据传输的信号 等待ZLG500 响应后本次数据传输开始 ZLG500 将在SCLK 为高时读 取SDATA线上的数据 传输完毕后MCU应在SS 线上产生一个上升沿结束本次传输 写数据的 具体步骤可见表5 2 表5 2 ZLG500A读写模块写数据步骤 序号动作发出者动 作动作接收者动作说明 1MCU SDATA 1 SCLK 0 SS 下降沿 ZLG500 本次数据传输开始请 求 2ZLG500 SDATA 上升沿 MCU 本次数据传输响应 3MCU SDATA 串行数据 ZLG500 数据传输 4MCU SCLK 上升沿 延时 下降沿 ZLG500 产生时钟ZLG500 读 数据 5MCU 重复动作3 4 传送N 8 位 ZLG500 数据传输N 字节 6MCU SS 上升沿SDATA 0 SCLK 0 ZLG500 本次数据传输结束 传输过程中必须严格遵守以下时间要求 t1 7s t2 14s tH 7s tL 9s t3 任意 下面是 MCU 向 ZLG500 写入数据的子程序 为满足上述时间要求 可通过加入空操作来实现 SPI SEND ANL P3 0F7H 恢复 SS 的输出功能 传输开始 请求 DECR0 发送数据的首地址 SETBSDATA CLRSCLK JB SDATA SADATA 仍为高则等待 CLR SS MOV R5 100 DL33 MOV R6 7DH DL44 JB SDATA ASDF MCU 等待 SDATAD 的上升沿 DJNZ R6 DL44 DJNZ R5 DL33 AJMPSPI SEND ASDF ANL P1 0FDH STADA 恢复输出 SENDBYTE NOP INCR0 NOP NOP MOVA R0 MOVR3 8 设置一个字节的位数 NOP NOP SENDBIT NOP RLCA MOVSDATA C 发送数据位 NOP NOP SETBSCLK NOP NOP CLRSCLK DJNZR3 SENDBIT DJNZR2 SENDBYTE SETBSS 本次数据传输结束 CLRSDATA NOP JB SS RET 4 读数据 ZLG500 MCU 响应信号SCLK信号由MCU 产生 SS 信号和SDATA信号由ZLG500 产生 ZLG500会在SS 线上产生一个下降沿发出请求数据传输的信号 等待MCU响应后本次数据传输开始 MCU 将 在SCLK 为高时读取SDATA 线上的数据 传输完毕后ZLG500 将会在SS 线上产生一个上升沿 结束本次传输 读数据的具体步骤可见表5 3 表5 3 ZLG500A读写模块读数据步骤 动作 序号 动作 发出者 动作 动作 接收者 动作说明 1ZLG500 SDATA 1 SS 下降沿 MCU 本次数据传输开始请求 2MCU SDATA 上升沿 ZLG500 本次数据传输响应 3ZLG500 SDATA 串行数据 MCU 数据传输 4MCU SCLK 上升沿 延时 下 降沿 ZLG500 MCU 产生时钟 且读取数 据 5 双方重复动作3 4 传送N 8 位 双方数据传输 N 字节 6ZLG500 SS 上升沿 SDATA 0 MCU 本次数据传输结束 传输过程中必须严格遵守以下时间要求 t1 14s t2 16s tH 6s tL 6s t3 9s 下面是 MCU 从 ZLG500 读取数据的子程序 同理 为满足上述时间要求 可通过加入空 操作来实现 SPI RCV ORL P3 08H SS 设置为输入 ANL P1 0FDH SDATA 设置为输出 DECR0 CLRSCLK SETBSDATA NOP ORL P1 02 SDATA 设置为输入 NOP NOP RCVBYTE MOVR3 8 INCR0 RCVBIT NOP NOP SETBSCLK NOP NOP MOVC SDATA 读取一位 RLCA NOP NOP CLRSCLK NOP NOP DJNZR3 RCVBIT MOV R0 A 读取的一个字节存入指定地址 NOP NOP JNBSS RCVBYTE ANL P1 0FDH SDATA 设置为输出 CLRSDATA RET 2 门禁机主控模块 上面我们对 ZLG500A 读写模块的功能特性 接口规范和控制方式作了比较详细地讲解 在此基础上 可以进一步完成 MCU 对 ZLG500A 的读写和控制 如果附加上周边的辅助功能 和驱动控制 就可以形成一个完整的智能卡读写器 首先 我们看一下 MCU 部分的设计和控制的实现 图 5 6 是 MCU 控制框图 从图中可 以看出 MCU 除了完成对 ZLG500A 读写模块的控制外 还要承担其它功能的控制 主要包括 四大部 图 6 门禁机控制框图 分 键盘和显示部分 实时时钟和掉电保护部分 数据存储和数据传输部分 驱动控制部 分 1 键盘和显示部分 键盘和显示是一般智能化仪器仪表均须具有的功能 是人机交互最主要的方式 不同 的智能仪器 随着其功能 MCU 资源的占用 使用环境等各种条件的不同 可采用多种键 盘和显示方案 本应用系统中 由于外围部件较多 MCU 资源占用较大 为了尽可能的减 少 MCU 输入输出 I O 的占用 键盘的设计采用串入并出的方式 利用一片 74LS164 占用 MCU 的四根 I O 口 就可以实现 16 个键的全部功能 具体电路见图 5 7 图 7 串行口扩展的行列式键盘 从系统监控软件的角度来看 仅仅完成键盘扫描 读取当前时刻的键盘状态是不够的 还有不少问题需要解决 否则 在操作键盘时就容易引起误操作 失控等现象 首先是去抖动处理 按键的触点在闭合和断开时均会产生抖动 这时触点的逻辑电平 是不稳定的 如不妥善处理 将会引起按键命令的错误执行或重复执行 最常用的一种方 法是软件延时的方法来避开抖动阶段 延时过程一般取 10ms 50 ms 其次是连击的处理 当按下某个键时 键盘处理程序便查找相应的功能号 并转到相应 的功能模块程序去执行 如果这时操作者还没有释放按键 MCU 就会反复执行该按键对应 的功能 好像操作者在连续操作该键一样 本系统中需要按键去改变系统的实时日历 如 果出现连击现象 操作者就很难设定时间 要解决连击的问题最关键是一次按键只让它响 应一次 该键不释放就不执行第二次 为此要分别检测到按键按下的时刻和释放的时刻 有两种程序结构都可以解决连击的问题 一是按下键盘就执行 执行完成后等待操作者释 放按键 在末放前不再执行指定的功能 从而避免了一次按键重复执行的现象 二是在按 键释放后再执行指定的功能 同时可以避免连击 但与前一种相比 给人一种反应迟钝的 感觉 具体采用哪种结构 可根据实际情况而定 关于键盘控制的具体编程 可参考有关的书籍和应用说明 在此就不再说明 显示是人与计算机系统打交道所必不可少的部分 本系统要求门禁在不打卡时具备显 示当前时间 打卡时显示该卡卡号及打卡时间 为此 选用了具有有良好的显示界面的图形 点阵液晶显示器 图形点阵液晶显示器分辨率较高 显示出的结果非常细腻 且能够显示 各种复杂图形 为以后的扩展留下了余地 本系统所选择的是 JG19264A 图形点阵液晶 图 5 8 为 JG19264A 的结构框图 引脚说明见表 5 4 图 8 JG19264A 图形点阵液晶结构框图 表 4 JG19264A 图形点阵液晶引脚说明 引脚符号电平说明 1DB7H L 数据位 7 2DB6H L 数据位 6 3DB5H L 数据位 5 4DB4H L 数据位 4 5DB3H L 数据位 3 6DB2H L 数据位 2 7DB1H L 数据位 1 8DB0H L 数据位 0 9EH H L 片使能信号 10R WH L H 读 L 写 11RSH L H 数据 L 指令 12V0 可调LCD 驱动电压 对比度调节 13VDD5 0V 电源电压 14VSS0V 接地 GND 15CSBH L 16CSAH L 片选信号 00 01 10 分别对应一片 IC 的 SEG 11 三片均不选中 17VEE 10 0V LCD 驱动负电源 18RSTL 复位信号 低有效 19LED 背光正极 20LED 背光负极 JG19264A 液晶的分辨率为 192 64 该液晶的显示内核是 HD61202U 与 HD61203U 其 中一片 HD61203 作为 64 路行驱动器 三片 HD61203U 组成 196 点列的列驱动器组 所以内 置 HD61202U 图形液晶显示模块的电路特性实际上是 HD61203U 和 HD61202U 组合的电路特性 HD61203U 是带有振荡器和显示时序发生器的行驱动器 它具有 64 路行驱动输出 但 它的特点在于它本身带有振荡器和时序发生器 通过外接振荡电阻电容使其上电后就以其 设定的占空比系数 1 N 值开始行扫描工作 它可以自行完成行 列驱动时序的生成及分配 自动进行行驱动的工作 同时向列驱动器输出同步信号及显示数据驱动所需的脉冲时序 控制列驱动器 HD61202U 的工作 所以我们只用控制 HD61202U 就可以操作整个液晶模块 HD61202U 是带显示存储器的图形液晶显示列驱动控制器 它的特点是内置 64 64 位 的显示存储器 显示屏上各像素点的显示状态与显示存储器的各位数据一一对应 显示存 储器的数据直接作为图形显示驱动信号 显示数据为 1 相应的像素点显示 显示数据 为 0 相应的像素点就不显示 同时 HD61202U 配备了一套显示存储器的管理电路和与计 算机的连接口电路 HD61202U 一共可以有七条指令 从作用上可分为两类 第一条和第二条指令为显示状 态设置类 其余指令为数据读 写操作指令 见表 5 5 表 5 HD61202U 的指令一览表 控制信号控制代码 指令名称 D IR WD7 D6 D5 D4 D3 D2 D1 D0 显示开关设置 00 0 0 1 1 1 1 1 D 显示起始行设置 00 1 1 L5 L4 L3 L2 L1 L0 页面地址设置 00 1 0 1 1 1 P2 P1 P0 列地址设置 00 0 1 C5 C4 C3 C2 C1 C0 读取状态字 01BUSY 0 on off reset 0 0 0 0 写显示数据 10 数据 读显示数据 11 数据 下面是各个指令的功能 1 读状态字 Status Read BUSY0ON OFFRESET0000 状态字是计算机了解 HD61202U 当前状态 或是 HD61202U 向计算机提供其内部状态的 唯一信息渠道 状态字为一个字节 其中仅有 3 位有效位 它们是 BUSY 表示当前 HD61202U 接口控制电路运行状态 BUSY 1 表示 HD61202U 正在处理计 算机发来的指令或数据 此时接口电路被封锁 不能接受除读状态字外的任何操作 BUSY 0 表示 HD61202U 接口控制电路已处于 准备好 状态 等待计算机的访问 ON OFF 表示当前 HD61202U 的工作状态 即反映 RST 端的电平状态 当 RST 为低电 平状态时 HD61202U 处于复位工作状态 REST 1 当 RST 为高电平状态时 HD61202U 为 正常工作状态 RESET 0 在指令设置和数据读写时要注意状态字中的 BUSY 标志 只有在 BUSY 0 时 计算机对 HD61202U 的操作才能有效 因此计算机在每次对 HD61202U 操作之前 都要读出状态字判 断 BUSY 是否为 0 若不为 0 则计算机需要等待 直至 BUSY 0 为止 计算机对 HD61202U 操作的流程如图 5 9 读状态字 BUSY 1 入口 退出 写指令代码或显示数据 否 是 图 9 HD61202U 操作的流程 2 显示开设置 Display on off 0000000D 该指令设置显示开 关触发器的状态 由此控制显示数据锁存的工作方式 从而控制 显示位为开 关的控制位 当 D 1 为显示设置 显示数据锁存器正常工作 显示屏上呈现所 需的显示效果 此时在状态字中 ON OFF 1 当 D 0 为关显示设置 显示数据锁存器被置零 显示存储器并没有被破坏 在状态字中 ON OFF 0 3 显示起始行设置 Display Start Line 11L5L4L3L2L1L0 该指令设置了显示起始行寄存器的内容 HD61202U 有 64 行显示的管理能力 该指令 中 L5 L0 显示起始行的地址 取值在 0 3FH 1 64 行 范围内 它规定了显示屏上最顶一 行所对应的显示存储器的内容 则显示屏将呈现显示内容向上或向下平滑滚动的显示效果 4 页面地址设置 Set Page X address 10111P2P1P0 该指令设置了页面地址 X 地址寄存器的内容 HD61202U 将显示存储分成 8 页 指令 代码中 P2 P0 就是要确定当前所要选择的页面地址 取值范围为 00 07H 代表显示第 1 8 页 该指令规定了以后的读 写操作将在哪一个页面上进行 5 列地址设置 Set Y address 01C5C4C3C2C1C0 该指令设置了 Y 地址计数器的内容 C5 C0 0 3FH 1 64 代表某一页面上的某一单元 地址 随后的一次读或写数据将在这个单元上进行 Y 地址计数器具有自动加 1 功能经 在每一次读 写数据后它将自动加 1 所以在连续进行读 写数据时 Y 地址计数器不必每一 次都设置一次 页面地址的设置和列地址的设置将显示存储单元唯一确定下来 为后来的显示数据的 读 写作了地址选通 6 写显示的数据 Write Display Data 10 数据 该操作将 8 位数据写入先前已确定的显示存储器的单元内 操作完成后列地址计数器 自动加一 7 读显示的数据 Read Display Data 11 数据 该操作是将 HD61202U 接口部分的输出到寄存器内容读出 然后列地址自动加一 本系统采用直接访问式的接口方式 就是将液晶显示模块的接口作为存储器或 I O 设 备直接挂在计算机总线上 计算机以访问存储器或 I O 设备的方式操作液晶显示模块的工 作 其具体的原理图如图 5 10 所示 图 5 10 液晶与 MCU 接口电路 在图中 MCU 通过 P2 6 控制 CSA P2 7 控制 CSB 以选通液晶显示屏上各区的控制器 HD61202U 其关系如表 5 6 所示 表 5 6 液晶显示屏控制关系 CSACSBJG19264 00 左区 01 中区 10 右区 11 末选 另外 MCU 的 P2 1 接液晶显示模块的 R W 用来控制数据总线的数据流向 用 P2 0 接 液晶显示模块的 RS 用来区分是数据还是指令 用 P2 4 接液晶显示模块的 E 控制模块的 使能 P0 口直接与液晶显示模块的双向数据 地址端相连 为了加强 P0 口的驱动能力和减 少外界的干扰 该口全部外接了上拉电阻 JG19264A 的读写时序图如图 5 12 所示 按照此时序编程 MCU 即可对液晶实现正常的 控制 图 11 JG19264A 读时序图 图 12 JG19264A 写时序图 2 实时时钟和掉电保护部分 在门禁系统中 需要实时记录出入数据 开门的卡号及其出现的时间 若采用单片机 软件计时 一方面需要占用硬件计数器资源 另一方面需要设置中断 查询等 耗费单片 机的 CPU 资源 而在系统中采用实时时钟芯片则能很好地解决这个问题 实时时钟采用了美国 DALLAS 公司推出的一种高性能 低功耗 带 RAM 的 DS1302 芯片 它可以对年 月 日 周日 时 分 秒进行计时 且具有闰年补偿功能 工作电压 2 5 5 5V 采用三线接口与 CPU 进行同步通信 并可采用突发方式一次传送多个字节的时 钟信号或 RAM 数据 DS1302 内部有一个 31 的用于临时性存放数据的 RAM 寄存器 DS1302 是 DS1202 的升级产品 与 DS1202 兼容 但增加了主电源 后备电源双电源引脚 同时提供了对后备电源进行涓细电流充电的能力 下图为 DS1302 的管脚及内部结构图 图 13 DS1302 的管脚及内部结构图 DS1302 共有 12 个寄存器 其中有 7 个寄存器与日历 时钟相关 存放的数据位为 BCD 码形式 此外 DS1302 还有年份寄存器 控制寄存器 充电寄存器 时钟突发寄存器及与 RAM 相关的寄存器等 时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内 容 DS1302 与 RAM 相关的寄存器分为两类 一类是单个 RAM 单元 共 31 个 每个单元组 态为一个 8 位的字节 其命令控制字为 COH FDH 其中奇数为读操作 偶数为写操作 再 一类为突发方式下的 RAM 寄存器 此方式下可一次性读写所有的 RAM 的 31 个字节 命令控 制字为 FEH 写 FFH 读 具体的参数见表 5 6 表 5 6 DS1302 寄存器参数表 命令字各位内容寄存器名 写操作读操作 取值范围 76543210 秒寄存器 80H81H 00 59CH10SECSEC 分钟寄存器 82H83H 00 59010MINMIN 小时寄存器 84H85H 01 12 或 00 23 12 2401HRHR 日期寄存器 86H87H01 28 29 30 31 0010DATADATA 月份寄存器 88H89H 01 120000MONTH 周日寄存器 8AH8BH 01 0700000DAY 年份寄存器 8CH8DH 00 9910YEARYEAR DS1302 的控制字和数据读写时序见图 5 14 图 14 DS1302 的控制字和数据读写时序 控制字节的最高有效 位 7 必须是逻辑 1 如果它为 0 则不能把数据写入到 DS1302 中 位 6 如果为 0 则表示存取日历时钟数据 为 1 表示存取 RAM 数据 位 至位 1 指示 操作单元的地址 最低有效位 位 0 如为 0 表示要进行写操作 为 1 表示进行读操作 控制字节总是从最低位开始输出 DS1302 的数据的写入是在控制指令字输入后的下一个 SCLK 时钟的上升沿 数据输入 从低位即位 0 开始 同样 在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据 读出数据时从低位 0 位至高位 7 DS1302 是通过把 RST 输入驱动置高电平来启动所有的数据传送 RST 输入有两种功能 首先 RST 接通控制逻辑 允许地址 命令序列送入移位寄存器 其次 RST 提供了终止 单字节或多字节数据的传送手段 当 RST 为高电平时 所有的数据传送被初始化 允许对 DS1302 进行操作 如果在传送过程中置 RST 为低电平 则会终止此次数据传送 并且 I O 引脚变为高阻态 上电运行时 在 Vcc 2 5V 之前 RST 必须保持低电平 只有在 SCLK 为低电平时 才能将 RST 置为高电平 本系统实时时钟模块电路原理图如图 5 15 所示 MCU 的 P1 2 P1 3 分别与 DS1302 的 SCLK I O 相连 VCC2 接主电源 VCC1 接后备电源 出现掉电时自动转入后备电源供电以 防时钟出现停止情况 X1 X2 接外部晶振 图 5 15 实时时钟模块电路原理图 MCU 对 DS1302 的读写控制主要包括 DS1302 的初始化和读取 DS1302 的时间和日期 初 始化过程就是给 DS1302 赋予初始的时间和日期 详见子程序 SET1302 当实时时钟芯片被 启动后 在没有接受到新的初始化指令情况下 起内部的时钟将一直不停的运行 从而保 证时间的实时性和准确性 MCU 在任何时候都可以通过读取 DS1302 内部时间和日期寄存器 中的值而获得准确的时间和日期 GET1302 为时间和日期的读取子程序 模块名称 DS1302 asm 功 能 实时时钟模块 时钟芯片型号 DS1302 T CLK Bit P1 2 实时时钟时钟线引脚 T IO Bit P1 3 实时时钟数据线引脚 T RST Bit P3 6 实时时钟复位线引脚 子程序名 Set1302 功 能 设置 DS1302 初始时间 并启动计时 说 明 调 用 RT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45828-2025共享闲置物品质量信息描述
- TD/T 1044-2014生产项目土地复垦验收规程
- JJG(烟草)15-2010烟草专用吸阻标准棒检定规程
- 2025学年环翠区八年级上学期历史期末试题:中外历史时间轴历史人物解读
- 化学●广东卷丨2022年广东省普通高中学业水平选择性考试化学试卷及答案
- 被害人陈述38课件
- 考研复习-风景园林基础考研试题附参考答案详解【培优】
- 考研复习-风景园林基础考研试题(研优卷)附答案详解
- 风景园林基础考研资料试题及参考答案详解【基础题】
- 《风景园林招投标与概预算》试题A带答案详解(研优卷)
- 4-02-02-01 国家职业标准客运车辆驾驶员 (2025年版)
- 2024北京西城区四年级(下)期末语文试题及答案
- 【航线补贴绩效评估实证研究-以华夏航空公司为例19000字(论文)】
- 《中国老年高血压管理指南(2023版)》解读
- 电梯五方对讲设计方案
- 24 唐诗三首 《茅屋为秋风所破歌》课件
- 2025年初一下册语文-课内现代文复习23课.《蛟龙探海》(解析版)
- 小升初英语作文写作专题训练题100题(含范文详解)
- 国际化创新型人才培养模式与中俄合作办学实践案例分析
- 附件6工贸高风险企业高危领域较大以上安全风险管控清单
- 一次性使用无菌医疗器械管理制度
评论
0/150
提交评论