简析基于DS1302和LCD1602的万年历系统设计论文
0引言
在日常生活中,无论哪一行业,哪一领域,时间授时都是不可或缺的。从古老的钟表到现代的电子设备都提供时间授时的功能。因此,对于单片机学习者来说,设计并实现一款低成本的,有操作性的,提供年,月,日,小时,分,秒,星期等基本计时功能的万年历系统,显得特别实用,特别有意义。
1总体设计及原理图
万年历的基本功能一是要提供年月日等基本时间项的授时;二是可以修改时间项。基于以上两个功能,我们万年历总体设计方案。
万年历有时钟计时模块,显示模块,调整时钟模块和控制器4部分组成。接下来的任务就是对以上模块进行选型。低成本,可操作是选型的标准。对于控制器,选择最常用的C51系列单片机STC89C52。
STC89C52是由宏品科技生产的是一种低功耗8位基于经典C51内核的微处理器,具有8 KhyteFLASH存储器,512 byte RAM , 4 KByte EEPROM , 32位通用IO接口,可以直接用串口下载程序。
时钟模块选择由dallas公司生产的时钟芯片DS1302,DS1302是一款支持年月日,小时分秒,星期,闰年补偿的实时时钟芯片;其简单三线结构可以很方便地与单片机通用IO相连,进行串行总线读写传输。
显示模块选择16x2的字符点阵模块LCD 16020LC D 1602的控制器以Hitachi公司生产的HD44780芯片最为常见。LC D 1602引脚主要包括3类,第1类是电源。第2类是8位数据I/0通道,用于读写LC D 1602。第3类是3根控制线,RS,R/W和E,其中,RS和R/W是用于实现LCD不同操作的。
E是作为读写的启动信号,有点类似一个时钟信号,数据要写人LC D 1602或从LCD 1602读出数据均需要首先置E信号为高至少1 s,然后置低。
调整时钟模块设计了4个轻触开关,用于设定和修改时间项。
根据总体设计方案和各个模块的特性。设计了万年历的原理图STC89C52的PO口作为通过IO来用,连接上拉电阻。时钟芯片DS1302由32.768 Khz的品振作为时钟源,用于串行数据传输的SCLK,SDA,RST分别于STC89C52的P0.3,P0.4,P0.5相连。显示模块LC D 1602的8位数据通道DO,D7与STC89C52的P2相连,其控制引脚RS,RW,E分别于STC89C52的P0.1 , P0.2 , P0.3相连。P1.O}P1.4连接4个上拉电阻和轻触开关,未按下为高电平,按下为低电平。
2软件设计
通过STCS9cs2读取DS1302各个时间项的值,然后显示到LC D1602,4个轻触开关,S1用于选择年月日等时间修改项,S2和S3用于在修改时间项,增加和减少某个时间项的数值,S4键用于确认时间项的修改。基于以上需要实现的功能,设计了软件总体流程图。
首先设计了读取DS1302各个时间项寄存器模块。DS1302有两类寄存器,一类是时间项读写寄存器,另一类是控制寄存器,与万年历系统相关有7个时间项读写寄存器和一个控制寄存器。
7个时间项寄存器分别可以读写秒,分,小时,日期,月,星期和年。控制寄存器control,其第7位WP用于对时间项寄存器的写保护,该位为0,允许对年月日等时间项寄存器写,该位为1,禁止对其他寄存器写。所有的时间项寄存器值均采用BCD码格式存放。DS1302时间项寄存器是读还是写由该寄存器号的最后一位决定,最后一位为0就是写人,为1就是读出。秒寄存器最高位CH用于控制DS1302计时的启停。 CH为1计时会中止,DS1302进人待机模式。CH为0启动计时。在按键设定DS1302时间项值的时候该位需置1。小时寄存器可以设置12或24小时制,第7位为1选择12小时制,在这种制式下,第5位为1表示PM,为0表示AM。第7为为0选择24小时制。
软件的第3个部分是设计如何实现按键设定修改时间项。按键S1的功能有两个:一是按下表示需要设定时间项,中止DS1302计时,关闭DS1302寄存器写保护;二是再次不断按下选择设定不同的时间项,从年开始,月,日,一直到星期,再回到年,在哪个时间项停留,在LC D 1602显示的该项目就闪烁,就可以开始按S2或S3开始增加或减少该时间项的值。S4键的功能是确认修改,打开DS1302写保护,重新启动DS1302计时。
除了以上3部分的软件设计,软件部分还设计了初始化LCD 1602和DS1302的程序。
3结束语
从设定目标任务,完成总体设计方案,基于低成本、通用原则选择相应的元器件,设计原理图,到整体软件设计,各个模块的软件设计,本文完成了万年历系统的设计,并完成了实物设计。从应用的角度看,该系统既可以满足学习者很好地学习单片机知识,又可以为学习者设计、完成其他系统提供借鉴。
本文标签:
[!--temp.ykpl--]