电子万年历设计

  • 格式:docx
  • 大小:14.71 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程论文论文题目基于单片机的电子万年历设计

课程名称单片机原理及接口技术

专业年级 2014级自动化3班

学生姓名孙宏远贾腾飞

学号

2016年12 月3 日

摘要:

本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。。

关键词:AT89C51单片机,DS1602时钟芯片,LCD1602显示屏。串口通信。

一:引言

本设计的基于单片机控制的电子万年历,具有年、月、日、星期、时、分、秒的显示等功能,实现过程就是由主控制发送信息给DS1302时钟芯片再由时钟芯片反馈给单片机,再由主控制器传送给LCD1602显示屏显示信息。并且可以在键盘设置模块输入修改时间,当键盘设置时间、日期时,单片机主控制根据输入信息,通过串口通信传送给DS1302时钟芯片,DS1302芯片读取当前新信息产生反馈传送给单片机,然后单片机根据控制最后输送显示信息到LCD1602液晶显示屏模块上显示。

二:硬件设计:

2.0.硬件的设计总框图

2.1 DS1032时钟电路

DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。芯片如图。

DS1302的内部主要由移位寄存器、指令和控制逻辑、振荡分频电路、实时时钟以及RAM组成。每次操作时,必须首先把CE置为高电平。再把提供地址和命令信息的8位装入移位寄存器。数据在SCLK的上升沿串行输入。无论是读周期还是写周期发生,也无论传送方式是单字节还是多字节,开始8位将指定内部何处被进行访问。在开始 8个时钟周期把含有地址信息的命令字装入移位寄存器之后。紧随其后的时钟在读操作时输出数据。

2.2 LCD1602与AT89C52的引脚接线

LCD1602采用总线式与单片机相连,AT89c52的P1口直接与液晶模块的数据总线D0~D7相连;P2 口的0,1,2脚分别与液晶模块的RS、RW、E脚相连。滑动变阻器用于调整液晶显示的亮度。电路如图

2.3 DS1602与AT89C52的接线

在电路中单片机的P1.7控制DS1302的复位输入端,P1.4与数据输入/输出引脚相连,P1.3用来作为 DS1302的输入时钟SCLK控制端。由于单片机复位时,所有单片机的端口均为高电平,如果直接用单片机的某一口线同DS1302的RST相连,则影响了系统加电时对DS1302的初始化,从而造成 DS1302计时的不稳定。因此,本主电源(5 V)接 VCC2,备份电池采用可充电镉镍电池(3.6 V)接 VCC1

2.4 键盘设置电路

设置电路的功能主要是把时间和日期设置到当前的时间,可以在系统运行中进行。用4个独立式按键完成,分别接到单片机P1口的高4位。第1个按钮表示是否进行设置,按下时表示设置,并且每按一次,在显示器上分别在年、月、日等日期时间上跳转,表示对相应的项进行更改;第2个按钮按下表示对第1个按钮选中的项进行加1操作;第3个按钮按下表示进行减1操作;第4个按钮按下表示停止设置。只有在第1个按钮按时才可进行加减操作。其电路如图3所示。其中电容的作用是消除按键的抖动,也可用双稳态触发器去除按键时的抖动,同时为了提高可靠性,硬件去抖动的同时,还可以用软件去抖动的方法。

三:软件设计

3.1软件设计总框图

系统软件设计主要包括主程序设计、日期数据采集子模块程序设计、按键处理子模块程序设计和显示子模块程序设计等。主程序主要完成器件的初始化,并判断有无按键按下,并根据判断的结果调用相应的子模块程序;日期数据采集子模块程序完成相应的数据采集、处理和保存,按键处理子模块程序完成日期的设置,而显示子模块程序只要把上述子模块储存的数据送去显示即可。

3.2 主程序流程图

3.3按键的检测

通过中断的办法来实现,利用按键进行间调整。 K1按下则开始设置时间及日期,同时在第一行最右端显示被选择的对象,第一次按下K1时,设置年份,若按下K3,则是减1操作,按下K2是加1操作,设置好年后,第二次按下K1时,则是设置月份,按K3减,按K2则加1,依次循环下去,则可以将时间和日期设置完毕,K4是确定键,设置好按下即可保存设置了.

3.4 软件总设计

软件总设计:主程序首先对系统环境初始化,设置定时器T0工作模式为16位定时/计数器模式,置位总中断允许位EA,并对键盘端口置位,再对LCD1602初始化,DS1302初始化。接着扫描键盘,在键盘程序里面是对时间、日期,最下面是时间的显示。

四:调试过程及问题解决

4.1实验结果

LCD1602显示屏可以同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能

4.2 调试过程及问题解决

(1)烧入程序后,液晶显示空屏,而且亮度不均匀。

解决:首先对调用的仔细检查程序,可以解决显示闪动问题。其次,检查接线是否正确。由于其亮度由10K的电位器来调节,适当调节防止过暗或过亮的情况发生。

(2)修改时间、日期时没有与按键自动对应上。

解决:把不相关的程序暂时屏蔽,对按键的子程序独立调试,发现在调用按键自动更新时,时间与按键协调不好,所以会造成错乱。最后该延时为中断进行修改,使得时间、日期与按键自动对应上,最后解决了此问题.

2)加入温度的程序后,进行修改时间、日期时相应的LCD1602显示位没有按要求闪动。

解决:由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序反回时再打开定时器1中断允许。最终解决了此问题。

五:作品总结

这次实验自己焊接了时钟芯片模块,温度模以及LCD1602显示模块,对其引脚功能有了进一步并且直观地了解。在连接个模块的时候,经常会出现引脚接不对,液晶屏不显示,按键不能去抖等情况。在分析解决这些问题后后有了很大的收获,对于单片机有了更深的了解,为学习嵌入式有了扎实的铺垫。

六:参考文献

1.杨子文,单片机原理及应用,西安电子科技大学出版社

2.王法能,单片机原理及应用,北京科学出版社

3.余梦尝,数字电路技术基础,高等教育出版

4.赵春见,王香婷.?基于DS1302的实时日历时钟系统的设计,中国科技论文在线