智能卡门禁系统设计_第1页
智能卡门禁系统设计_第2页
智能卡门禁系统设计_第3页
智能卡门禁系统设计_第4页
智能卡门禁系统设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目案例:智能卡门禁系统设计 智能卡技术智能卡门禁系统设计一、 设计要求智能卡门禁系统设计任务:1 智能卡门禁系统门禁机模块的设计(1) 非接触式ic卡读写头部分主要内容:读头部分采用非接触智能卡读写模块,由读卡器读入数据并加以保存,智能卡按常规要具有加密和数据分区存储功能,读写头的读写距离在5-10厘米左右,必须具有掉电保护、精确时间记时和显示,3k5k的临时数据存储。(2) 门禁机主控模块 主要内容:智能门禁机主控模块是智能门禁机系统的核心部分,主要包括mcu、键盘、显示、电子时钟、外部数据存储器及掉电保护和看门狗电路,有精确时间记时和显示。2 智能卡门禁系统系统管理模块的设计(1) 系统

2、管理主控模块设计主要内容:设计门禁上层软件的主控模块,其主要实现的功能是最高权限卡对管理员和一般用户发卡,管理员对一般用户发卡。能对丢失的卡进行挂失,对找回的卡进行解挂,同时还要具备查找功能。(2) 系统管理的数据库管理软件设计 主要内容:运用高级语言编程,制作数据库管理软件。采集下位机的数据并保存,然后管理采集到的数据,具有采集、数据更新、查询统计和报表的打印功能 3 智能卡门禁系统数据传输模块的设计主要内容:完成中央控制电脑与门禁读写器之间的数据传输协议的设计,能实现主、从机的双向数据传输及一对一、一对多的数据传输。二、 总体方案根据设计要求,整个智能卡门禁系统分为三大部分:其一是读写器部

3、分,包括mcu、复位电路、时钟电路、显示电路、键盘、数据存储等主控模块及非接触ic卡读写模块和电锁驱动部分;其二是中央控制电脑的软件管理系统模块;其三是中央控制电脑与读写器之间的数据传输模块。其总体方案见图1。图1 非接触式ic卡门禁系统框图三、 非接触式ic卡门禁机的设计系统采用philips公司的非接触智能ic卡mifare 1卡,以m1卡作为用户卡,以用户卡的序列号sn(全球唯一)为依据控制门的开启。因为它是一个高频卡(工作频率为13.5mhz),有较强的抗干扰能力、读写距离远(5mm10mm)。首先,在发卡系统(中央控制pc机)里把用户的卡号及个人信息输入系统数据库,并将该卡号作为合法

4、卡号下载给所有门禁机。当有一张m1卡在门禁机的有效工作范围内时,系统会自动向卡发出命令,卡接收到命令后向门禁机反馈其sn, 门禁机判断收到的卡号是否合法,合法则驱动电磁门锁开门,并实时上传其开门记录;如果是非法卡(未经授权或已挂失的卡)则拒绝开门并上传报警信息。只有最高授权者(掌握授权密码)才可以发管理员卡,管理员必须用管理员卡方可登录发卡系统进行发卡/下传合法卡号、挂失、解挂、下传黑名单等操作。由于采用了philips公司的非接触式mifare 1卡,所以卡的读写模块也采用了以philips公司最新推出的mifare读写芯片mf rc500为核心开发的zlg500a读写模块。门禁机模块的硬件

5、原理图见附录。附录 门禁机硬件原理图通过at89c52对zlg500a的控制达到对卡的读写。系统结构简单,成本较低且具有信息量大和安全保密性好等特点。外围配有rs232转rs485接口能与pc机互连成网络,可以完成读卡、显示卡号和出入时间、身份识别、开锁以及保存和上传出入记录、下载黑名单、设置开门权限等功能。门禁机模块的主控软件主要完成门禁机模块的初始化、卡的识别、开启门锁及保存有关数据和数据的传输等五大功能。其总体工作流程如图52所示:图2 非接触式ic卡门禁机总体工作流程在完成整个门禁机模块的设计和制作前,首先必须明确非接触式ic卡读写模块的功能特性、接口规范和控制方式。本系统选用mifa

6、re 1卡作为门禁钥匙,相应地,选用广州周立功公司的zlg500a读写模块作为卡与门禁机交换数据的接口模块。1. zlg500a读写模块特性1)功能特性图3为zlg500a非接触式ic卡读写模块,该模块采用最新philips高集成iso14443读卡芯片mf rc500,能读写rc500内eeprom,提供三线spi接口,并具有控制线输出口,能与任何mcu接口。此外,该模块四层电路板设计,双面表贴,emc性能优良;并自带无源蜂鸣器信号输出,能用软件控制输出频率及持续时间。 j1 j2 图3 zlg500a模块实物图如图3所示j1 为与天线的接口j2 为与mcu 的接口,j1、j2的管脚排列和功

7、能说明见表5.1:表1 zlg500a非接触式ic卡读写模块管脚说明(一)管脚符号描述j1-1gnd地j1-2tx1天线发送1j1-3gnd地j1-4tx2天线发送2j1-5gnd地j1-6rx天线接收表1 zlg500a非接触式ic卡读写模块管脚说明(二)管脚符号类型描述j2-1sclk输入三线spi 接口时钟线总是由外部mcu 产生j2-2sdata双向数据线可双向传输j2-3ss双向传输启动线接mcu 外部中断j2-4vccpwr电源正端j2-5rst复位内部mcu 复位端高电平有效j2-6gndpwr电源负端j2-7ctrl输出控制线输出j2-8bz输出蜂鸣器信号输出zlg500 模块

8、可方便地与任何mcu 进行接口,如图4所示为zlg500与mcs-51 单片机图4 zlg500与mcs-51单片机接口图的典型接口。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是单向的,即时钟只能由主控制器产生,该信号必

9、须严格遵守时序规范,否则将出现通信错误读卡模块必须释放该线。ss为数据发送使能,若一方有数据要发送给另一方,则该方控制ss线为低并在发送结束后将该线置高,接收数据方不得控制该线,双方必须遵守通信协议不得同时控制该线。sdata为数据线,由数据发送端控制数据,接收端必须释放该线。该线在一次传输开始时还同时作为数据接收端的响应信号。(2)时序图如图5所示,无论数据传输的方向如何,spi 线上信号的波形总是如下;图5 zlg500时序图由图中可以看出,在ss为低的情况时,时钟和数据线上的信号才有效。且在sclk为低时sdata变化,在sclk为高时sdata应保持稳定。以上传输中从数据发送器请求开始

10、至数据接收器响应的时间是不确定的,取决接收器内的mcu 是否忙,有必要设置一个看门狗定时器对数据接收器的响应进行监视,一旦接收器响应,则mcu 必须根据数据传输的方向,严格控制以下几个时间,以确保数据传输无误。t1数据接收器响应至mcu 产生第一个sclk 上升沿的时间。t2两个字节传输之间sclk 低电平的持续时间。t3传输最后一个字节的最后一位的sclk 信号的上升沿至ss 上升沿的时间。thsclk 信号的高电平持续时间。tlsclk 信号的低电平持续时间。在数据传输的方向不同时,对时间t1 t3 th 和tl 都有各自不同的要求。(3) 通信协议mcu与zlg500的通信必须先由mcu

11、发送命令和数据给zlg500,zlg500执行命令完毕后,将命令执行的状态和响应数据发回mcu。开始通信前,收发双方必须处于空闲状态。首先由mcu发出ss下降沿信号,然后等待zlg500载sdata线上的响应,若在50ms内为检测到此信号,则退出本次传输。若正确响应,则mcu可将命令和数据发送出去。然后mcu等待zlg500发回的状态和响应数据。也即等待ss线上的下降沿信号,若在50ms内为检测到此信号,则退出本次传输,若正确检测到ss信号,则可以接收状态和数据。zlg500初始化的子程序如下:sclkbitp1.0sdatabitp1.1ssbitp1.2rst bit p3.3zlg500

12、: setb rst; zlg500内部复位 lcall delay_50ms clr rst lcall delay_50mssetbss ; 处于空闲状态clrsdataclrsclk 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 sa234sa123: retsa234: lcall

13、read_block; 从存储器中读取数据 lcall delay_100ms mov r2,#20 mov r0,#58h mov r1,#80h lcall compare; 进行卡号的比较和验证rel13:setb flag lcall rel123jbflag,rel13ret上述程序中config子程序为rc500的复位和配置子程序,是由mcu向zlg500发出的不带数据的命令程序;request子程序是mcu向zlg500发出的带一个字节数据的命令程序,主要是检查在有效范围内是否有卡存在;anticoll子程序是防冲突操作,必须在执行了request命令后立即执行。mcu与zlg5

14、00之间的通信一般遵循如下的数据格式mcu向zlg500发出的命令模式的格式如下: seqnr command len data0n bccinfo0 infon其中: seqnr: 1 byte 是数据交换包的序号command: 1 byte 是命令字符len:1 byte 是数据的长度data len byte 是数据字节bcc:1 byte 是一个字节的bcc效验 seqnr status len data0n bccinfo0 infon其中: seqnr: 1 byte 是数据交换包的序号status: 1 byte 是状态字符len:1 byte 是数据的长度data len b

15、yte 是数据字节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

16、_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 6

17、0h,#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,56hmov a,58hx

18、rl a,59hxrla,5ahxrla,5bhmov 5ch,amov a,#00h clr p3.4 lcall delay_50ms lcall delay_50ms lcall delay_50ms lcall delay_50ms setb p3.4l0:ret3) 写数据 mcu zlg500除响应信号外,三根线上的信号全由mcu 产生。mcu 在ss 线上产生一个下降沿,发出请求数据传输的信号,等待zlg500 响应后本次数据传输开始,zlg500 将在sclk 为高时读取sdata线上的数据,传输完毕后mcu应在ss 线上产生一个上升沿结束本次传输。写数据的具体步骤可见表2。表

19、2 zlg500a读写模块写数据步骤序号动作发出者动 作动作接收者动作说明1mcusdata=1 sclk=0 ss=下降沿zlg500本次数据传输开始请求2zlg500sdata=上升沿mcu本次数据传输响应3mcusdata=串行数据zlg500数据传输4mcusclk=上升沿、延时、下降沿zlg500产生时钟zlg500 读数据5mcu重复动作3、4 传送n 8 位zlg500数据传输n 字节6mcuss=上升沿sdata=0 sclk=0zlg500本次数据传输结束传输过程中必须严格遵守以下时间要求:t17s,t214s,th7s,tl9s,t3=任意下面是mcu向zlg500写入数据

20、的子程序,为满足上述时间要求,可通过加入空操作来实现。spi_send: anl p3,#0f7h ; 恢复ss的输出功能,传输开始请求 decr0; 发送数据的首地址setbsdataclrsclk jb sdata,$; sadata仍为高则等待 clr ss mov r5,#100dl33: mov r6,#7dhdl44: jb sdata,asdf; mcu等待sdatad的上升沿djnz r6,dl44 djnz r5,dl33 ajmpspi_sendasdf: anl p1,#0fdh ; stada 恢复输出sendbyte:nop incr0 nop nop mova,r0

21、movr3,#8; 设置一个字节的位数nop nopsendbit:nop rlcamovsdata,c; 发送数据位 nop nopsetbsclk:nop nopclrsclkdjnzr3,sendbit djnzr2,sendbytesetbss; 本次数据传输结束 clrsdata nop jb ss,$ ret4) 读数据 zlg500mcu响应信号sclk信号由mcu 产生,ss 信号和sdata信号由zlg500 产生。zlg500会在ss 线上产生一个下降沿发出请求数据传输的信号,等待mcu响应后本次数据传输开始,mcu 将在sclk 为高时读取sdata 线上的数据,传输完毕

22、后zlg500 将会在ss 线上产生一个上升沿结束本次传输。读数据的具体步骤可见表3表3 zlg500a读写模块读数据步骤动作序号动作发出者动作动作接收者动作说明1zlg500sdata=1 ss=下降沿mcu本次数据传输开始请求2mcusdata=上升沿zlg500本次数据传输响应3zlg500sdata=串行数据mcu数据传输4mcusclk=上升沿、延时、下降沿zlg500mcu产生时钟,且读取数据5双方重复动作3、4 传送n 8 位双方数据传输n字节6zlg500ss=上升沿,sdata=0mcu本次数据传输结束传输过程中必须严格遵守以下时间要求t114s, t216s, th6s,

23、tl6s, t39s下面是mcu从zlg500读取数据的子程序,同理,为满足上述时间要求,可通过加入空操作来实现。spi_rcv: orl p3,#08h ; ss 设置为输入 anl p1,#0fdh ; sdata设置为输出 decr0clrsclksetbsdatanop orl p1,#02 ; sdata设置为输入 nop noprcvbyte: movr3,#8incr0rcvbit: nop nop setbsclknop nopmovc,sdata; 读取一位rlcanop nop clrsclknopnopdjnzr3,rcvbitmovr0,a; 读取的一个字节存入指定地址

24、 nop nopjnbss,rcvbyte anl p1,#0fdh ;sdata设置为输出clrsdataret2 门禁机主控模块图6是mcu控制框图,从图中可以看出mcu除了完成对zlg500a读写模块的控制外,还要承担其它功能的控制,主要包括四大部图5.6 门禁机控制框图分:键盘和显示部分、实时时钟和掉电保护部分、数据存储和数据传输部分、驱动控制部分。1) 键盘和显示部分键盘和显示是一般智能化仪器仪表均须具有的功能,是人机交互最主要的方式。不同的智能仪器,随着其功能、mcu资源的占用、使用环境等各种条件的不同,可采用多种键盘和显示方案。本应用系统中,由于外围部件较多,mcu资源占用较大,

25、为了尽可能的减少mcu输入输出i/o的占用,键盘的设计采用串入并出的方式,利用一片74ls164,占用mcu的四根i/o口,就可以实现16个键的全部功能。具体电路见图7:图7 串行口扩展的行列式键盘从系统监控软件的角度来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要解决,否则,在操作键盘时就容易引起误操作、失控等现象。首先是去抖动处理。按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。最常用的一种方法是软件延时的方法来避开抖动阶段,延时过程一般取10ms50 ms。其次是连击的处理。当按下某个键时,键

26、盘处理程序便查找相应的功能号,并转到相应的功能模块程序去执行,如果这时操作者还没有释放按键,mcu就会反复执行该按键对应的功能,好像操作者在连续操作该键一样。本系统中需要按键去改变系统的实时日历,如果出现连击现象,操作者就很难设定时间。要解决连击的问题最关键是一次按键只让它响应一次,该键不释放就不执行第二次。为此要分别检测到按键按下的时刻和释放的时刻。有两种程序结构都可以解决连击的问题,一是按下键盘就执行,执行完成后等待操作者释放按键,在末放前不再执行指定的功能,从而避免了一次按键重复执行的现象。二是在按键释放后再执行指定的功能,同时可以避免连击,但与前一种相比,给人一种反应迟钝的感觉。具体采

27、用哪种结构,可根据实际情况而定。显示是人与计算机系统打交道所必不可少的部分,本系统要求门禁在不打卡时具备显示当前时间,打卡时显示该卡卡号及打卡时间。为此,选用了具有有良好的显示界面的图形点阵液晶显示器。图形点阵液晶显示器分辨率较高,显示出的结果非常细腻,且能够显示各种复杂图形,为以后的扩展留下了余地。本系统所选择的是jg19264a图形点阵液晶,图8为jg19264a的结构框图,引脚说明见表4。图8 jg19264a图形点阵液晶结构框图表4 jg19264a图形点阵液晶引脚说明引脚符号电平说明1db7h/l数据位72db6h/l数据位63db5h/l数据位54db4h/l数据位45db3h/l

28、数据位36db2h/l数据位27db1h/l数据位18db0h/l数据位09eh,hl片使能信号10r/wh/lh:读;l:写11rsh/lh:数据;l:指令12v0可调lcd驱动电压,对比度调节13vdd5.0v电源电压14vss0v接地(gnd)15csbh/l片选信号,00,01,10分别对应一片ic的seg,11三片均不选中16csah/l17vee-10.0vlcd驱动负电源18rstl复位信号,低有效19led+背光正极20led-背光负极 jg19264a液晶的分辨率为19264 ,该液晶的显示内核是hd61202u与hd61203u,其中一片hd61203作为64路行驱动器,三

29、片hd61203u组成196点列的列驱动器组。所以内置hd61202u图形液晶显示模块的电路特性实际上是hd61203u和hd61202u组合的电路特性。hd61203u是带有振荡器和显示时序发生器的行驱动器。它具有64路行驱动输出,但它的特点在于它本身带有振荡器和时序发生器,通过外接振荡电阻电容使其上电后就以其设定的占空比系数1/n值开始行扫描工作;它可以自行完成行、列驱动时序的生成及分配,自动进行行驱动的工作;同时向列驱动器输出同步信号及显示数据驱动所需的脉冲时序,控制列驱动器hd61202u的工作,所以我们只用控制hd61202u就可以操作整个液晶模块。hd61202u是带显示存储器的图

30、形液晶显示列驱动控制器。它的特点是内置6464位的显示存储器,显示屏上各像素点的显示状态与显示存储器的各位数据一一对应,显示存储器的数据直接作为图形显示驱动信号。显示数据为“1”,相应的像素点显示;显示数据为“0”相应的像素点就不显示。同时hd61202u配备了一套显示存储器的管理电路和与计算机的连接口电路。hd61202u一共可以有七条指令,从作用上可分为两类。第一条和第二条指令为显示状态设置类;其余指令为数据读/写操作指令,见表5表5 hd61202u的指令一览表。指令名称控制信号控制代码d/ir/wd7 d6 d5 d4 d3 d2 d1 d0显示开关设置00 0 0 1 1 1 1 1

31、 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=

32、1表示hd61202u正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除读状态字外的任何操作。busy=0表示hd61202u接口控制电路已处于”准备好”状态,等待计算机的访问。on/off:表示当前hd61202u的工作状态,即反映rst端的电平状态。当rst为低电平状态时,hd61202u处于复位工作状态,rest=1。 当rst为高电平状态时,hd61202u为正常工作状态,reset=0。在指令设置和数据读写时要注意状态字中的busy标志。只有在busy=0时,计算机对hd61202u的操作才能有效。因此计算机在每次对hd61202u操作之前,都要读出状态字判断busy是否

33、为”0”。若不为 ” 0 ”,则计算机需要等待,直至busy=0为止。计算机对hd61202u操作的流程如图9。图9 hd61202u操作的流程(2)显示开设置(display on/off)0000000d 该指令设置显示开/关触发器的状态,由此控制显示数据锁存的工作方式,从而控制显示位为开/关的控制位。当d=1为显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中on/off=1。当d=0为关显示设置,显示数据锁存器被置零,显示存储器并没有被破坏,在状态字中on/off=0。(3)显示起始行设置(display start line)11l5l4l3l2l1l0该指

34、令设置了显示起始行寄存器的内容。hd61202u有64行显示的管理能力,该指令中l5l0显示起始行的地址,取值在0 3fh (164行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。(4)页面地址设置 (set page (x address) )10111p2p1p0该指令设置了页面地址:x地址寄存器的内容。hd61202u将显示存储分成8页,指令代码中p2p0就是要确定当前所要选择的页面地址,取值范围为0007h,代表显示第18页。该指令规定了以后的读/写操作将在哪一个页面上进行。(5)列地址设置(set y address)

35、01c5c4c3c2c1c0该指令设置了y地址计数器的内容,c5c0=03fh(164)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。y地址计数器具有自动加1功能经,在每一次读/写数据后它将自动加1,所以在连续进行读/写数据时,y地址计数器不必每一次都设置一次。 页面地址的设置和列地址的设置将显示存储单元唯一确定下来,为后来的显示数据的读/写作了地址选通。(6)写显示的数据(write display data)10数据该操作将8位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加一。(7)读显示的数据(read display data) 11数据该

36、操作是将hd61202u接口部分的输出到寄存器内容读出,然后列地址自动加一。本系统采用直接访问式的接口方式,就是将液晶显示模块的接口作为存储器或i/o设备直接挂在计算机总线上,计算机以访问存储器或i/o设备的方式操作液晶显示模块的工作。其具体的原理图如图10所示:图10 液晶与mcu接口电路在图中,mcu通过p2.6控制csa,p2.7控制csb,以选通液晶显示屏上各区的控制器hd61202u,其关系如表6所示:表6 液晶显示屏控制关系csacsbjg1926400左区01中区10右区11末选另外,mcu的p2.1接液晶显示模块的r/w,用来控制数据总线的数据流向;用p2.0接液晶显示模块的r

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

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

39、放的数据位为bcd码形式。此外,ds1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与ram相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。ds1302与ram相关的寄存器分为两类,一类是单个ram单元,共31个,每个单元组态为一个8位的字节,其命令控制字为cohfdh,其中奇数为读操作,偶数为写操作;再一类为突发方式下的ram寄存器,此方式下可一次性读写所有的ram的31个字节,命令控制字为feh(写)、ffh(读)。具体的参数见表6。表6 ds1302寄存器参数表寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80h81h 0

40、0 59ch10secsec分钟寄存器82h83h 00 59010minmin小时寄存器84h85h01 12或00 2312/2401hrhr日期寄存器86h87h01 28 29 30 310010datadata月份寄存器88h89h 01 120000month周日寄存器8ah8bh 01 0700000day年份寄存器8ch8dh 00 9910yearyeards1302的控制字和数据读写时序见图14:图14 ds1302的控制字和数据读写时序控制字节的最高有效(位7)必须是逻辑1,如果它为0,则不能把数据写入到ds1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取r

41、am数据;位至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。ds1302的数据的写入是在控制指令字输入后的下一个sclk时钟的上升沿,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个sclk脉冲的下降沿读出ds1302的数据,读出数据时从低位0位至高位7, ds1302是通过把rst输入驱动置高电平来启动所有的数据传送。rst输入有两种功能:首先, rst接通控制逻辑,允许地址命令序列送入移位寄存器;其次, rst提供了终止单字节或多字节数据的传送手段。当 rst为高电平时,所有的数据传送被初始化,允许对ds

42、1302进行操作。如果在传送过程中置 rst为低电平,则会终止此次数据传送,并且i/o引脚变为高阻态。上电运行时,在vcc2.5v之前, rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。本系统实时时钟模块电路原理图如图15所示,mcu的p1.2、p1.3分别与ds1302的sclk、i/o相连,vcc2接主电源,vcc1接后备电源,出现掉电时自动转入后备电源供电以防时钟出现停止情况。x1、x2接外部晶振。图15 实时时钟模块电路原理图mcu对ds1302的读写控制主要包括ds1302的初始化和读取ds1302的时间和日期,初始化过程就是给ds1302赋予初始的时间和日期,详见子程序set1302,当实时时钟芯片被启动后,在没有接受到新的初始化指令情况下,起

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论