基于实时钟芯片的万年历设计

更新时间:2024-04-04 作者:用户投稿原创标记本站原创 点赞:5943 浏览:21032

【摘 要 】随着科技日新月异的发展,由原始的时钟发展到今天的电子万年历,不断改进创新,给人们生活带来了很多的方便.这次设计的电子万年历以AT89S52单片机为控制核心,功耗小,能在3V的低压下工作,电压可选用3~5V电压供电.采用Dallas公司推出的低功耗DS1302实时钟芯片构成计时电路,电子万年历采用直观的数字显示,能够同时显示秒、分、时、周、日、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式.时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信.实时钟芯片DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW,而且DS1302的使用寿命长,误差小.

【关 键 词 】万年历;单片机;DS1302实时钟芯片;功耗

1.引言

电子万年历在家庭居室、学校、公司、剧院、码头、车站和广场使用越来越广泛,给人们的生活、学习、工作带来极大的方便.

针对以往的电子万年历断电后需重新调整时间与日期,且计时误差大的现象,本次设计是基于实时钟设计的万年历设计,本系统设计采用实时钟芯片(DS1302)作为计时器件,DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:(1)RES(复位).(2)I/O(数据线).(3)SCLK(串行时钟).DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW.该芯片内部自带晶体振荡器,这样就有效的保证了计时的精确性,它能够准确地显示年、月、日、星期、时、分、秒,在断电情况能继续更新时间信息,包括自动调整每月的天数和闰年的天数.

采用AT89S52作为主控制器,功耗小,实用性更强.

2.实时钟芯片万年历设计

2.1 课题设计的总体要求

1)实时时钟具有能准确显示年、月、日、星期、时、分、秒的功能;

2)断电后及时更新时间,具备时间校准功能;

3)具备每月的天数和闰年的天数可自动调整的功能;

4)存储器主要是对LED数码管等数据进行存储;

5)显示采用LED显示屏.

2.2 万年历设计的工作原理

系统的工作原理是:主控制器每隔一段时间(小于一秒钟)读一次时钟芯片的内部寄存器的值,将读出的日历、时间信息实时的显示在LED数码显示器上.同时,主控制器不断的扫描按键电路,当有键按下时,识别出按键的值并调整相应的时间或日历的值再写入时钟芯片内部.

3.系统的硬件主要模块

3.1 AT89S52单片机主控制器模块设计实现

3.2 实时钟芯片DS1302模块

DS1302包含一个实时时钟/日历和31字节的静态RAM,它和单片机通信经由一个简单的串行接口.实时时钟/日历提供秒、分、时、日、周、月、年信息,月末日期自动调整,包括闰年的修正.时钟可工作在24小时(AM/PM)格式,单片机与DS1302接口使用同步串行通信,仅需三根线连接:(1)/RES(复位);(2)I/O(串行数据);(3)SCLK(串行时钟).数据传送从单片机到实时时钟/RAM或实时时钟/RAM到单片机,可以每次1字节或每次31字节.它可以工作在很低的耗电状态以保存时钟信息和数据,功耗小于1微瓦.

3.3 显示模块的设计

采用LED数码管动态扫描,LED显示器是由二极管发展过来的.LED数码显示器具有高宽度、宽视角、反应速度快、可靠性高、实用寿命长等特点.数码管适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少.

采用动态扫描显示,由15个数码管,3-8译码器74HC138N接1K限流电阻,再接8550三极管接到共阳数码管的COM端作为选通位码,每位选择相应的列.74LS47接240Ω限流电阻,再接共行的LED数码管的断码.

数码管显示采用动态显示,动态显示控制的基本原理是:单片机依次发送段选控制字和对应哪一位LED显示器的位选择控制信号,显示器逐个循环点亮.适当选择扫描速度,利用人眼“留光”效应,使得看上去好像这几位显示器同时在显示一样,而在动态扫描显示控制中,同一时刻实际是只有一位LED显示器被点亮.

3.4 按键与电源电路模块

本系统为了使电路更简单,按键电路只设计了三个按键,分别是“设置”、“+”、“-”,三个键用来调整日历以及时钟.

为了减少电路成本,本系统电源电路由变压器变压、三端集成稳压(L7805)电路产生5V,具有简单、可靠、低廉等特点.

4.系统的软件设计与实现

4.1 软件设计

系统控制程序采用C语言编写,将整个程序划分成多个功能模块.万年历系统可以划分为不同的功能模块,分别为单片机主控模块、实时钟芯片模块、显示模块、译码器模块、控制开关模块等.软件则是将这些硬件系统可以统一的运行起来.要根据硬件设计的功能单元,模块化的设计软件.软件系统由读取时间程序和显示时间程序等几部分构成.

本系统程序由主程序、中断怎么写作函数和多个子函数构成.主函数主要完成各子函数和中断函数的初始化.定时中断函数主要完成时钟芯片的定时扫描及键盘扫描.时钟芯片的读写函数主要是将时间、日历信息读出来,并把要修改的具体值写入时钟芯片内部.

4.2 主程序流程框图与描述

时钟显示是一个循环的过程,系统不断读取DS1302中的时间数据,然后将时间信息显示在数码管上,按键采用中断方式.当用户把通过按键输入的时间数据存储在DS1302中时.需要对DS1302进行写操作,先送控制字到DS1302.允许写时间数据,然后把要写入的数据直接存储即可.把DS1302中的时间数据读出,需要对DS1302进行读操作.先送控制字到DS1302,允许读时间数据.然后直接读取相应的存储器即可.对显示缓冲区的读写映射成对存储区的读写,一个数码管对应一个存储地址.使用查表方法完成BCD码到显示代码的转换.

5.系统调试

在数字电路的调试中,需要将软件和硬件相结合,问题往往不仅出在软件设计,还有在硬件中一些不合理的设计,以及在焊接电路板时可能产生的一些疏漏等方面.首先先要将所编写的软件编译连接通过.再将每个模块包含到主函数中进行调试,有时为了查看每个接口的功能是否完善,还需要写相应的调试程序.

Keil C51的调试功能非常强大,其调试过程也比较生涩.

单击工具栏的图标,将显示出存储器窗口.8051单片机的存储器分为多个不同的逻辑空间.拖动存储器窗口右边的滚动条可观察其它存储单元.存储器窗口有“Memory#1 ~Memory#4”共4个观察子窗,据存储器.存储器的内容是可以修改的.用鼠标右击打算要修改的存储单元,选择“ModifyMemory at 等”项,弹出修改对话框,可以随意修改存储单元的内容.单击工具栏上的的图标,将显示变量观察和堆栈窗口(Watch & Call Stack Window).在Locals标签页,会自动显示局部变量的名称和数值.在C语言程序的函数中,每一对花括号“{}”内定义变量都是局部变量,能够自动显示.在“Watch”标签页内,先用鼠标点击一次“type F2 to edit”,再按功能键“F2”,输入所要观察的局部或全局变量的名称,回车后就能显示出当前数值.在“Call Stack”标签页内,可以实时地观察到堆栈的使用情况.可以用来分别观察代码存储器、内部数据存储器和外部数.


相关论文范文