门禁系统设计1096.pdf

上传人:得****3 文档编号:83957627 上传时间:2023-03-31 格式:PDF 页数:21 大小:893.60KB
返回 下载 相关 举报
门禁系统设计1096.pdf_第1页
第1页 / 共21页
门禁系统设计1096.pdf_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《门禁系统设计1096.pdf》由会员分享,可在线阅读,更多相关《门禁系统设计1096.pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、智能卡门禁系统设计 1 设计要求 智能卡的应用并不是简单的读写卡操作,而是一个综合性的工程项目。它不仅包括卡和读写模块的选择,还涉及到读写模块的控制、数据的传输、数据的处理和存储;既需要有硬件应用的知识、也还必须具有软件方面的能力。下面我们以一个完整的应用系统为例,详细地描述了各组成部分的设计要求、完成的功能及具体的实现方法。智能卡门禁系统设计任务:1 智能卡门禁系统门禁机模块的设计(1)非接触式 IC 卡读写头部分 主要内容:读头部分采用非接触智能卡读写模块,由读卡器读入数据并加以保存,智能卡按常规要具有加密和数据分区存储功能,读写头的读写距离在 5-10厘米左右,必须具有掉电保护、精确时间

2、记时和显示,3K5K 的临时数据存储。(2)门禁机主控模块 主要内容:智能门禁机主控模块是智能门禁机系统的核心部分,主要包括 MCU、键盘、显示、电子时钟、外部数据存储器及掉电保护和看门狗电路,有精确时间记时和显示。2 智能卡门禁系统系统管理模块的设计(1)系统管理主控模块设计 主要内容:设计门禁上层软件的主控模块,其主要实现的功能是最高权限卡对管理员和一般用户发卡,管理员对一般用户发卡。能对丢失的卡进行挂失,对找回的卡进行解挂,同时还要具备查找功能。(2)系统管理的数据库管理软件设计 主要内容:运用高级语言编程,制作数据库管理软件。采集下位机的数据并保存,然后管理采集到的数据,具有采集、数据

3、更新、查询统计和报表的打印功能 3 智能卡门禁系统数据传输模块的设计 主要内容:完成中央控制电脑与门禁读写器之间的数据传输协议的设计,能实现主、从机的双向数据传输及一对一、一对多的数据传输。2 总体方案 根据设计要求,整个智能卡门禁系统分为三大部分:其一是读写器部分,包括 MCU、复位电路、时钟电路、显示电路、键盘、数据存储等主控模块及非接触 IC 卡读写模块和电锁驱动部分;其二是中央控制电脑的软件管理系统模块;其三是中央控制电脑与读写器之间的数据传输模块。其总体方案见图 5.1。图 1 非接触式 IC 卡门禁系统框图 3 非接触式 IC 卡门禁机的设计 系统采用 Philips公司的非接触智

4、能 IC 卡 Mifare 1卡,以 M1 卡作为用户卡,以用户卡的序列号 SN(全球唯一)为依据控制门的开启。因为它是一个高频卡(工作频率为13.5MHZ),有较强的抗干扰能力、读写距离远(5MM10MM)。首先,在发卡系统(中央控制 PC 机)里把用户的卡号及个人信息输入系统数据库,并将该卡号作为合法卡号下载给所有门禁机。当有一张 M1 卡在门禁机的有效工作范围内时,系统会自动向卡发出命令,卡接收到命令后向门禁机反馈其 SN,门禁机判断收到的卡号是否合法,合法则驱动电磁门锁开门,并实时上传其开门记录;如果是非法卡(未经授权或已挂失的卡)则拒绝开门并上传报警信息。只有最高授权者(掌握授权密码

5、)才可以发管理员卡,管理员必须用管理员卡方可登录发卡系统进行发卡/下传合法卡号、挂失、解挂、下传黑名单等操作。附录二 门禁机硬件原理图 由于采用了 Philips公司的非接触式 Mifare 1卡,所以卡的读写模块也采用了以Philips公司最新推出的 Mifare读写芯片 MF RC500为核心开发的 ZLG500A读写模块。门禁机模块的硬件原理图见附录二。通过 AT89C52对 ZLG500A的控制达到对卡的读写。系统结构简单,成本较低且具有信息量大和安全保密性好等特点。外围配有 RS232转 RS485接口能与 PC 机互连成网络,可以完成读卡、显示卡号和出入时间、身份识别、开锁以及保存

6、和上传出入记录、下载黑名单、设置开门权限等功能。门禁机模块的主控软件主要完成门禁机模块的初始化、卡的识别、开启门锁及保存有关数据和数据的传输等五大功能。其总体工作流程如图 5.2 所示:装载权限初始化显示日历寻卡执行开门比较权限开放键盘设置时间设置权限合法吗?执行开门执行报警取时间+卡号+BCC码寻卡计录满否?写入24C64中数据指针加12计录数加1发送数据发送记录数清空24C64数据指针=0计录数=0 图 3 非接触式 IC 卡门禁机总体工作流程 在完成整个门禁机模块的设计和制作前,首先必须明确非接触式 IC 卡读写模块的功能特性、接口规范和控制方式。本系统选用 MIFARE 1卡作为门禁钥

7、匙,相应地,选用广州周立功公司的 ZLG500A读写模块作为卡与门禁机交换数据的接口模块。1.ZLG500A读写模块特性 1)功能特性 图 5.3为 ZLG500A非接触式 IC 卡读写模块,该模块采用最新 PHILIPS高集成 ISO14443读卡芯片MF RC500,能读写 RC500内 EEPROM,提供三线 SPI接口,并具有控制线输出口,能与任何 MCU接口。此外,该模块四层电路板设计,双面表贴,EMC性能优良;并自带无源蜂鸣器信号输出,能用软件控制输出频率及持续时间。J1 J2 图 4 ZLG500A模块实物图 如图 5.3所示 J1 为与天线的接口 J2 为与 MCU 的接口,J

8、1、J2 的管脚排列和功能说明见表 5.1:表 5.1 ZLG500A非接触式 IC 卡读写模块管脚说明(一)管脚 符号 描述 J1-1 GND 地 J1-2 TX1 天线发送 1 J1-3 GND 地 J1-4 TX2 天线发送 2 J1-5 GND 地 J1-6 RX 天线接收 表 5.1 ZLG500A非接触式 IC 卡读写模块管脚说明(二)管脚 符号 类型 描述 J2-1 SCLK 输入 三线 SPI 接口时钟线总是由外部 MCU 产生 J2-2 SDATA 双向 数据线可双向传输 J2-3 SS 双向 传输启动线接 MCU 外部中断 J2-4 VCC PWR 电源正端 J2-5 RS

9、T 复位 内部 MCU 复位端高电平有效 J2-6 GND PWR 电源负端 J2-7 CTRL 输出 控制线输出 J2-8 BZ 输出 蜂鸣器信号输出 ZLG500 模块可方便地与任何 MCU 进行接口,如图 5.4所示为 ZLG500与 MCS-51 单片机 图 5.4 ZLG500与 MCS-51单片机接口图 的典型接口。SCLK、SDATA、SS 为 ZLG500A与 MCU相联接的控制线,分别为片选 SS、时钟线P1.0P1.1P3.3P1.2MCS51SCLKSDATASSRSTCTRLBZZLG500SCLK 和数据线 SDATA。主控制器的 MCU 和读卡模块内的 MCU 通过

10、此三线相连,三根线上的实际电平是双方口线状态逻辑线与的结果。2)ZLG500三线串行读卡模块接口规范(1)接口原理 接口空闲时主机SS=1 SCLK=0 SDATA=0 从机SS=1 SCLK=1 SDATA=0。其中SS和DATA是双向的而时钟线SCLK是单向的,即时钟只能由主控制器产生,该信号必须严格遵守时序规范,否则将出现通信错误读卡模块必须释放该线。SS为数据发送使能,若一方有数据要发送给另一方,则该方控制SS线为低并在发送结束后将该线置高,接收数据方不得控制该线,双方必须遵守通信协议不得同时控制该线。SDATA为数据线,由数据发送端控制数据,接收端必须释放该线。该线在一次传输开始时还

11、同时作为数据接收端的响应信号。(2)时序图 如图 5.5所示,无论数据传输的方向如何,SPI 线上信号的波形总是如下;图 5 ZLG500时序图 由图中可以看出,在SS为低的情况时,时钟和数据线上的信号才有效。且在SCLK为低时SDATA变化,在SCLK为高时SDATA应保持稳定。以上传输中从数据发送器请求开始至数据接收器响应的时间是不确定的,取决接收器内的MCU 是否忙,有必要设置一个看门狗定时器对数据接收器的响应进行监视,一旦接收器响应,则MCU 必须根据数据传输的方向,严格控制以下几个时间,以确保数据传输无误。t1数据接收器响应至MCU 产生第一个SCLK 上升沿的时间。t2两个字节传输

12、之间SCLK 低电平的持续时间。t3传输最后一个字节的最后一位的SCLK 信号的上升沿至SS 上升沿的时间。tHSCLK 信号的高电平持续时间。tLSCLK 信号的低电平持续时间。在数据传输的方向不同时,对时间t1 t3 tH 和tL 都有各自不同的要求。(3)通信协议 MCU与ZLG500的通信必须先由MCU发送命令和数据给ZLG500,ZLG500执行命令完毕后,将命令执行的状态和响应数据发回MCU。开始通信前,收发双方必须处于空闲状态。首先由MCU发出SS下降沿信号,然后等待ZLG500载SDATA线上的响应,若在50ms内为检测到此信号,则退出本次传输。若正确响应,则MCU可将命令和数

13、据发送出去。然后MCU等待ZLG500发回的状态和响应数据。也即等待SS线上的下降沿信号,若在50ms内为检测到此信号,则退出本次传输,若正确检测到SS信号,则可以接收状态和数据。ZLG500初始化的子程序如下:SCLK BIT P1.0 SSSCLKSDATAStart from sendert1tHtLt2t3Stop from senderAck from receiverSender and receiverSDATA BIT P1.1 SS BIT P1.2 RST BIT P3.3 Zlg500:SETB RST ;ZLG500内部复位 LCALL DELAY_50MS CLR R

14、ST LCALL DELAY_50MS SETB SS ;处于空闲状态 CLR SDATA CLR SCLK 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

15、R2,#20 MOV R0,#58H MOV R1,#80H LCALL COMPARE ;进行卡号的比较和验证 REL13:SETB FLAG LCALL REL123 JB FLAG,REL13 RET 上述程序中CONFIG子程序为RC500的复位和配置子程序,是由MCU向ZLG500发出的不带数据的命令程序;REQUEST子程序是MCU向ZLG500发出的带一个字节数据的命令程序,主要是检查在有效范围内是否有卡存在;ANTICOLL子程序是防冲突操作,必须在执行了REQUEST命令后立即执行。MCU与 ZLG500之间的通信一般遵循如下的数据格式 MCU向 ZLG500发出的命令模式的

16、格式如下:SeqNr Command Len Data0N BCC INFO0 INFOn 其中:SeqNr:1 Byte 是数据交换包的序号 Command:1 Byte 是命令字符 Len:1 Byte 是数据的长度 Data Len Byte 是数据字节 BCC:1 Byte 是一个字节的 BCC效验 SeqNr Status Len Data0N BCC INFO0 INFOn 其中:SeqNr:1 Byte 是数据交换包的序号 status:1 Byte 是状态字符 Len:1 Byte 是数据的长度 Data Len Byte 是数据字节 BCC:1 Byte 是一个字节的 BCC

17、效验 按照上述数据格式传输编制的 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

18、,#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

19、 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 XRL A,5AH XRL A,5BH MOV 5CH,A MOV A,

20、#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读写模块写数据步骤 序号 动作发出者 动 作 动

21、作接收者 动作说明 1 MCU SDATA=1 SCLK=0 SS=下降沿 ZLG500 本次数据传输开始请求 2 ZLG500 SDATA=上升沿 MCU 本次数据传输响应 3 MCU SDATA=串行数据 ZLG500 数据传输 4 MCU SCLK=上升沿、延时、下降沿 ZLG500 产生时钟ZLG500 读数据 5 MCU 重复动作3、4 传送N 8 位 ZLG500 数据传输N 字节 6 MCU SS=上升沿SDATA=0 SCLK=0 ZLG500 本次数据传输结束 传输过程中必须严格遵守以下时间要求:t17s,t214s,tH7s,tL9s,t3=任意 下面是 MCU向 ZLG5

22、00写入数据的子程序,为满足上述时间要求,可通过加入空操作来实现。SPI_SEND:ANL P3,#0F7H ;恢复 SS 的输出功能,传输开始请求 DEC R0 ;发送数据的首地址 SETB SDATA CLR SCLK JB SDATA,$;SADATA仍为高则等待 CLR SS MOV R5,#100 DL33:MOV R6,#7DH DL44:JB SDATA,ASDF ;MCU等待 SDATAD的上升沿 DJNZ R6,DL44 DJNZ R5,DL33 AJMP SPI_SEND ASDF:ANL P1,#0FDH ;STADA 恢复输出 SENDBYTE:NOP INC R0 N

23、OP NOP MOV A,R0 MOV R3,#8 ;设置一个字节的位数 NOP NOP SENDBIT:NOP RLC A MOV SDATA,C ;发送数据位 NOP NOP SETB SCLK:NOP NOP CLR SCLK DJNZ R3,SENDBIT DJNZ R2,SENDBYTE SETB SS ;本次数据传输结束 CLR SDATA NOP JB SS,$RET 4)读数据 ZLG500MCU 响应信号SCLK信号由MCU 产生,SS 信号和SDATA信号由ZLG500 产生。ZLG500会在SS 线上产生一个下降沿发出请求数据传输的信号,等待MCU响应后本次数据传输开始,

24、MCU 将在SCLK 为高时读取SDATA 线上的数据,传输完毕后ZLG500 将会在SS 线上产生一个上升沿结束本次传输。读数据的具体步骤可见表5.3 表5.3 ZLG500A读写模块读数据步骤 动作 序号 动作 发出者 动作 动作 接收者 动作说明 1 ZLG500 SDATA=1 SS=下降沿 MCU 本次数据传输开始请求 2 MCU SDATA=上升沿 ZLG500 本次数据传输响应 3 ZLG500 SDATA=串行数据 MCU 数据传输 4 MCU SCLK=上升沿、延时、下降沿 ZLG500 MCU产生时钟,且读取数据 5 双方 重复动作3、4 传送N 8 位 双方 数据传输 N

25、 字节 6 ZLG500 SS=上升沿,SDATA=0 MCU 本次数据传输结束 传输过程中必须严格遵守以下时间要求 t114s,t216s,tH6s,tL6s,t39s 下面是 MCU从 ZLG500读取数据的子程序,同理,为满足上述时间要求,可通过加入空操作来实现。SPI_RCV:ORL P3,#08H ;SS 设置为输入 ANL P1,#0FDH ;SDATA设置为输出 DEC R0 CLR SCLK SETB SDATA NOP ORL P1,#02 ;SDATA设置为输入 NOP NOP RCVBYTE:MOV R3,#8 INC R0 RCVBIT:NOP NOP SETB SCL

26、K NOP NOP MOV C,SDATA ;读取一位 RLC A NOP NOP CLR SCLK NOP NOP DJNZ R3,RCVBIT MOV R0,A ;读取的一个字节存入指定地址 NOP NOP JNB SS,RCVBYTE ANL P1,#0FDH ;SDATA设置为输出 CLR SDATA RET 2 门禁机主控模块 上面我们对 ZLG500A读写模块的功能特性、接口规范和控制方式作了比较详细地讲解,在此基础上,可以进一步完成 MCU对 ZLG500A的读写和控制,如果附加上周边的辅助功能和驱动控制,就可以形成一个完整的智能卡读写器。首先,我们看一下 MCU部分的设计和控制

27、的实现。图 5.6是 MCU控制框图,从图中可以看出 MCU除了完成对 ZLG500A读写模块的控制外,还要承担其它功能的控制,主要包括四大部 图 6 门禁机控制框图 分:键盘和显示部分、实时时钟和掉电保护部分、数据存储和数据传输部分、驱动控制部分。1)键盘和显示部分 键盘和显示是一般智能化仪器仪表均须具有的功能,是人机交互最主要的方式。不同的智能仪器,随着其功能、MCU资源的占用、使用环境等各种条件的不同,可采用多种键盘和显示方案。本应用系统中,由于外围部件较多,MCU资源占用较大,为了尽可能的减少 MCU输入输出 I/O的占用,键盘的设计采用串入并出的方式,利用一片 74LS164,占用

28、MCU的四根 I/O口,就可以实现 16 个键的全部功能。具体电路见图 5.7:图 7 串行口扩展的行列式键盘 从系统监控软件的角度来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要解决,否则,在操作键盘时就容易引起误操作、失控等现象。首先是去抖动处理。按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。最常用的一种方法是软件延时的方法来避开抖动阶段,延时过程一般取 10ms50 ms。其次是连击的处理。当按下某个键时,键盘处理程序便查找相应的功能号,并转到相应的功能模块程序去执行,如果这时操作者还没有释

29、放按键,MCU就会反复执行该按键对应的功能,好像操作者在连续操作该键一样。本系统中需要按键去改变系统的实时日历,如果出现连击现象,操作者就很难设定时间。要解决连击的问题最关键是一次按键只让它响应一次,该键不释放就不执行第二次。为此要分别检测到按键按下的时刻和释放的时刻。有两种程序结构都可以解决连击的问题,一是按下键盘就执行,执行完成后等待操作者释放按键,在末放前不再执行指定的功能,从而避免了一次按键重复执行的现象。二是在按键释放后再执行指定的功能,同时可以避免连击,但与前一种相比,给人一种反应迟钝的感觉。具体采用哪种结构,可根据实际情况而定。关于键盘控制的具体编程,可参考有关的书籍和应用说明,

30、在此就不再说明。显示是人与计算机系统打交道所必不可少的部分,本系统要求门禁在不打卡时具备显示当前时间,打卡时显示该卡卡号及打卡时间。为此,选用了具有有良好的显示界面的图形点阵液晶显示器。图形点阵液晶显示器分辨率较高,显示出的结果非常细腻,且能够显示各种复杂图形,为以后的扩展留下了余地。本系统所选择的是 JG19264A图形点阵液晶,图 5.8为 JG19264A的结构框图,引脚说明见表 5.4。图 8 JG19264A图形点阵液晶结构框图 表 4 JG19264A图形点阵液晶引脚说明 引脚 符号 电平 说明 1 DB7 H/L 数据位 7 2 DB6 H/L 数据位 6 3 DB5 H/L 数

31、据位 5 4 DB4 H/L 数据位 4 5 DB3 H/L 数据位 3 6 DB2 H/L 数据位 2 7 DB1 H/L 数据位 1 8 DB0 H/L 数据位 0 9 E H,HL 片使能信号 10 R/W H/L H:读;L:写 11 RS H/L H:数据;L:指令 12 V0 可调 LCD驱动电压,对比度调节 13 VDD 5.0V 电源电压 14 VSS 0V 接地(GND)15 CSB H/L 片选信号,00,01,10分别对应一片 IC的 SEG,11 三片均不选中 16 CSA H/L 17 VEE-10.0V LCD驱动负电源 18 RST L 复位信号,低有效 19 L

32、ED+背光正极 20 LED-背光负极 JG19264A液晶的分辨率为 19264,该液晶的显示内核是 HD61202U与 HD61203U,其中一片 HD61203作为 64 路行驱动器,三片 HD61203U组成 196点列的列驱动器组。所以内置HD61202U图形液晶显示模块的电路特性实际上是 HD61203U和 HD61202U组合的电路特性。HD61203U是带有振荡器和显示时序发生器的行驱动器。它具有 64 路行驱动输出,但它的特点在于它本身带有振荡器和时序发生器,通过外接振荡电阻电容使其上电后就以其设定的占空比系数 1/N值开始行扫描工作;它可以自行完成行、列驱动时序的生成及分配

33、,自动进行行驱动的工作;同时向列驱动器输出同步信号及显示数据驱动所需的脉冲时序,控制列驱动器 HD61202U的工作,所以我们只用控制 HD61202U就可以操作整个液晶模块。HD61202U是带显示存储器的图形液晶显示列驱动控制器。它的特点是内置 6464 位的显示存储器,显示屏上各像素点的显示状态与显示存储器的各位数据一一对应,显示存储器的数据直接作为图形显示驱动信号。显示数据为“1”,相应的像素点显示;显示数据为“0”相应的像素点就不显示。同时 HD61202U配备了一套显示存储器的管理电路和与计算机的连接口电路。HD61202U一共可以有七条指令,从作用上可分为两类。第一条和第二条指令

34、为显示状态设置类;其余指令为数据读/写操作指令,见表 5.5 表 5 HD61202U的指令一览表。指令名称 控制信号 控制代码 D/I R/W D7 D6 D5 D4 D3 D2 D1 D0 显示开关设置 0 0 0 0 1 1 1 1 1 D 显示起始行设置 0 0 1 1 L5 L4 L3 L2 L1 L0 页面地址设置 0 0 1 0 1 1 1 P2 P1 P0 列地址设置 0 0 0 1 C5 C4 C3 C2 C1 C0 读取状态字 0 1 BUSY 0 on/off reset 0 0 0 0 写显示数据 1 0 数据 读显示数据 1 1 数据 下面是各个指令的功能:(1)读状

35、态字(Status Read)BUSY 0 ON/OFF RESET 0 0 0 0 状态字是计算机了解 HD61202U当前状态,或是 HD61202U向计算机提供其内部状态的唯一信息渠道。状态字为一个字节,其中仅有 3 位有效位,它们是:BUSY:表示当前 HD61202U接口控制电路运行状态。BUSY=1表示 HD61202U正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除读状态字外的任何操作。BUSY=0表示 HD61202U接口控制电路已处于”准备好”状态,等待计算机的访问。ON/OFF:表示当前 HD61202U的工作状态,即反映 RST端的电平状态。当 RST为低电

36、平状态时,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)0 0 0 0 0 0

37、0 D 该指令设置显示开/关触发器的状态,由此控制显示数据锁存的工作方式,从而控制显示位为开/关的控制位。当 D=1为显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中 ON/OFF=1。当 D=0为关显示设置,显示数据锁存器被置零,显示存储器并没有被破坏,在状态字中 ON/OFF=0。(3)显示起始行设置(Display Start Line)1 1 L5 L4 L3 L2 L1 L0 该指令设置了显示起始行寄存器的内容。HD61202U有 64 行显示的管理能力,该指令中L5L0显示起始行的地址,取值在 0 3FH(164行)范围内,它规定了显示屏上最顶一行所对应

38、的显示存储器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。(4)页面地址设置(Set Page(X address))1 0 1 1 1 P2 P1 P0 该指令设置了页面地址:X 地址寄存器的内容。HD61202U将显示存储分成 8 页,指令代码中 P2P0就是要确定当前所要选择的页面地址,取值范围为 0007H,代表显示第 18页。该指令规定了以后的读/写操作将在哪一个页面上进行。(5)列地址设置(Set Y address)0 1 C5 C4 C3 C2 C1 C0 该指令设置了 Y 地址计数器的内容,C5C0=03FH(164)代表某一页面上的某一单元地址,随后的一次读或

39、写数据将在这个单元上进行。Y 地址计数器具有自动加 1 功能经,在每一次读/写数据后它将自动加 1,所以在连续进行读/写数据时,Y 地址计数器不必每一次都设置一次。页面地址的设置和列地址的设置将显示存储单元唯一确定下来,为后来的显示数据的读/写作了地址选通。(6)写显示的数据(Write Display Data)1 0 数 据 该操作将 8 位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加一。(7)读显示的数据(Read Display Data)1 1 数 据 该操作是将 HD61202U接口部分的输出到寄存器内容读出,然后列地址自动加一。本系统采用直接访问式的接口方

40、式,就是将液晶显示模块的接口作为存储器或 I/O设备直接挂在计算机总线上,计算机以访问存储器或 I/O设备的方式操作液晶显示模块的工作。其具体的原理图如图 5.10所示:图 5.10 液晶与MCU接口电路 在图中,MCU通过P2.6控制CSA,P2.7控制CSB,以选通液晶显示屏上各区的控制器HD61202U,其关系如表 5.6所示:表 5.6 液晶显示屏控制关系 CSA CSB JG19264 0 0 左区 0 1 中区 1 0 右区 1 1 末选 另外,MCU的 P2.1接液晶显示模块的 R/W,用来控制数据总线的数据流向;用 P2.0接液晶显示模块的 RS,用来区分是数据还是指令;用 P

41、2.4接液晶显示模块的 E,控制模块的使能;P0 口直接与液晶显示模块的双向数据/地址端相连。为了加强 P0 口的驱动能力和减少外界的干扰,该口全部外接了上拉电阻。JG19264A的读写时序图如图 5.12所示,按照此时序编程,MCU即可对液晶实现正常的控制。图 11 JG19264A读时序图 图 12 JG19264A写时序图 2)实时时钟和掉电保护部分 在门禁系统中,需要实时记录出入数据(开门的卡号及其出现的时间)。若采用单片机软件计时,一方面需要占用硬件计数器资源,另一方面需要设置中断、查询等,耗费单片机的 CPU资源。而在系统中采用实时时钟芯片则能很好地解决这个问题。实时时钟采用了美国

42、 DALLAS公司推出的一种高性能、低功耗、带 RAM的 DS1302芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压 2.55.5V。采用三线接口与 CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM数据。DS1302内部有一个 31的用于临时性存放数据的 RAM寄存器。DS1302是DS1202的升级产品,与 DS1202兼容,但增加了主电源后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。下图为 DS1302的管脚及内部结构图:图 13 DS1302的管脚及内部结构图 DS1302共有 12 个寄存器,其中有 7 个寄存

43、器与日历、时钟相关,存放的数据位为 BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与 RAM相关的寄存器分为两类,一类是单个 RAM单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 COHFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的 RAM寄存器,此方式下可一次性读写所有的 RAM的 31 个字节,命令控制字为 FEH(写)、FFH(读)。具体的参数见表 5.6。表 5.6 DS1302寄存器参数表 寄存器名 命令字 取

44、值范围 各位内容 写操作 读操作 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 00 59 CH 10SEC SEC 分钟寄存器 82H 83H 00 59 0 10MIN MIN 小时寄存器 84H 85H 01 12 或00 23 12/24 0 1 HR HR 日期寄存器 86H 87H 01 28 29 30 31 0 0 10DATA DATA 月份寄存器 88H 89H 01 12 0 0 0 0 MONTH 周日寄存器 8AH 8BH 01 07 0 0 0 0 0 DAY 年份寄存器 8CH 8DH 00 99 10YEAR YEAR DS1302的控制字和数据读写

45、时序见图 5.14:图 14 DS1302的控制字和数据读写时序 控制字节的最高有效(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入到 DS1302中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM数据;位至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。DS1302的数据的写入是在控制指令字输入后的下一个 SCLK时钟的上升沿,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK脉冲的下降沿读出 DS1302的数据,读出数据时从低位 0 位至高位 7,

46、DS1302是通过把 RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当 RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置 RST为低电平,则会终止此次数据传送,并且 I/O引脚变为高阻态。上电运行时,在 Vcc2.5V 之前,RST必须保持低电平。只有在 SCLK为低电平时,才能将 RST置为高电平。本系统实时时钟模块电路原理图如图 5.15 所示,MCU的 P1.2、P1.3分别与 DS1302的SCLK、I/O相连,VCC

47、2 接主电源,VCC1接后备电源,出现掉电时自动转入后备电源供电以防时钟出现停止情况。X1、X2 接外部晶振。图 5.15 实时时钟模块电路原理图 MCU对 DS1302的读写控制主要包括 DS1302的初始化和读取 DS1302的时间和日期,初始化过程就是给 DS1302赋予初始的时间和日期,详见子程序 SET1302,当实时时钟芯片被启动后,在没有接受到新的初始化指令情况下,起内部的时钟将一直不停的运行,从而保证时间的实时性和准确性;MCU在任何时候都可以通过读取 DS1302内部时间和日期寄存器中的值而获得准确的时间和日期,GET1302为时间和日期的读取子程序。;*;模块名称:DS13

48、02.asm;功 能:实时时钟模块 时钟芯片型号:DS1302 ;T_CLK Bit P1.2 ;实时时钟时钟线引脚 T_IO Bit P1.3 ;实时时钟数据线引脚 T_RST Bit P3.6 ;实时时钟复位线引脚;*;子程序名:Set1302;功 能:设置 DS1302 初始时间,并启动计时。;说 明:;调 用:RTInputByte;入口参数:初始时间在:Second,Minute,Hour,Day,Month,Week.YearL(地址连续);返 回 值:无;影响资源:A B R0 R1 R4 R7 ;*Set1302:CLR T_RST CLR T_CLK SETB T_RST M

49、OV B,#8EH ;控制寄存器 LCALL RTInputByte MOV B,#00H ;写操作前 WP=0 LCALL RTInputByte SETB T_CLK CLR T_RST MOV R0,#Second MOV R7,#7 ;秒 分 时 日 月 星期 年 MOV R1,#80H ;秒写地址 Set13021:CLR T_RST CLR T_CLK SETB T_RST MOV B,R1 ;写秒 分 时 日 月 星期 年 地址 LCALL RTInputByte MOV A,R0 ;写秒数据 MOV B,A LCALL RTInputByte INC R0 CLR T_CLK

50、SETB T_RST MOV B,#8EH ;控制寄存器 LCALL RTInputByte MOV B,#80H ;控制,WP=1,写保护 LCALL RTInputByte SETB T_CLK CLR T_RST RET;*;子程序名:Get1302;功 能:从 DS1302 读时间;说 明:;调 用:RTInputByte,RTOutputByte;入口参数:时间保存在:Second,Minute,Hour,Day,Month,Week.YearL;返 回 值:无;影响资源:A B R0 R1 R4 R7;*Get1302:MOV R0,#Second;MOV R7,#7 MOV R1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁