利用单片机制作简单万年历Word文件下载.docx
- 文档编号:20662545
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:9
- 大小:218.53KB
利用单片机制作简单万年历Word文件下载.docx
《利用单片机制作简单万年历Word文件下载.docx》由会员分享,可在线阅读,更多相关《利用单片机制作简单万年历Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
在软件设计方面,应用c语言编写程序,它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能。
在设计同时对单片机的理论基础和外围扩展知识进行了很好的实现。
关键词:
AT89C52DS1302LCD1602
1、前言
据了解,目前市场上的电子万年历并不是采用51单片机作为主控制器的,基于单片机的万年历一般是学生和单片机爱好者在进行设计,谈不上占有市场。
也许就是这样,研究单片机万年历的人不在少数,并且都在努力。
努力不是单方面的,单片机的功能也应该要提高,STC89C52单片机就是这样的例子,其功能虽然没有大幅度提高,但使用起来更方便了。
我相信,在不久的将来肯定会有功能更强大成本更低的单片机出现,给我们的设计带来更多的便利。
本设计采用的是AT89S52单片机,该单片机采用的MCU51内核,因此具有很好的兼容性,内部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。
计时芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。
总体来说,本设计成本消耗不高,功能设计也比较简单实现。
2、方案设计
2.1总体设计思路
本设计包括硬件和软件设计两个部分。
模块划分为主控模块、时钟电路模块、显示模块等子模块。
软件方面可划分为:
液晶显示程序、时钟调节程序、按键控制程序等管理软件组成。
用户终端对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。
它们之间的构成框图系统设计框图如图1所示。
图1系统设计框图
2.2系统的硬件模块设计
2.21主控模块设计
AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
单片机的最小系统如图2所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
图2单片机最小系统
2.22时钟电路模块设计
DS1302的引脚排列如图3所示,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768KHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;
其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。
中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。
SCLK始终是输入端。
图3时钟电路
2.23按键电路模块设计
键盘是一种最常用的输入设备,它是一组按键的集合,从功能上可分为数字键和功能键两种,作用是输入数据与命令,查询和控制系统的工作状态,实现简单的人机对话。
本文用到键盘的软件方法:
是指编制一段时间大于100ms的延时程序,在第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。
同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理。
如图4所示。
图4按键电路
2.24显示模块设计
液晶显示原理是将液晶置于两片导电玻璃之间,靠两个电极间电场的驱动,引起液晶分子扭曲向列的电场效应,以控制光源透射或遮蔽功能,在电源关开之间产生明暗而将影像显示出来,若加上彩色滤光片,则可显示彩色影像。
LCD1602电路如下图5所示。
图5液晶电路图
2.3系统的软件模块设计
2.31主程序设计
本程序设计与平时编写程序步骤相同,不过需要添加DS1302、LCD1602的头文件,之后在设定延迟函数的延迟时间,再设置外部中断初始化、显示函数初始化,最后在程序最后加入中断请求服务函数。
程序流程图如图6所示。
图6程序流程图
2.32LCD1602显示软件设计
经过ADC0804模数转换得到的电压值数字量,在单片机的P1口输入,单片机处理后在P0口由LCD1602显示出来该被测电压的值,在设置LCD1602时,定义数组以显示屏里的字母以及输出电源的数值,以下为LCD1602的部分伪代码,如图7所示。
图7液晶1602部分伪代码
2.33按键程序设计
采用查询法时,必须保证CPU每隔一定时间主动地去扫描按键一次,该扫描时间间隔应小于两次按键的时间间隔,否则会有按键不响应的情形查询检测是否有键按下,如有键闭合,则消除抖动,再判断键号,然后转入相应的键处理。
为了避免抖动干扰需要对程序进行以下的编排,其原理流程图如图8所示。
图8按键流程图
2.34DS1302时钟程序模块设计
DS1302和单片机的连接很简单。
只需一根复位线,一根时钟线,一根数据线即可。
同时它本身还需要接一个32.768KHz的晶振来提供时钟源。
对于晶振的两端可以分别接一个6PF左右的电容以提高晶振的精确度。
同时可以在第8脚接上一个3.6V的可充电的电池。
对于这些器件的操作基本上按照数据手册上面提供的时序图和相关命令字来进行操作就可以了。
部分程序如图9所示。
图9DS1302程序
3、测试与结果分析
首先熟悉各个元器件的性能和引脚排列情况,并认真检查各个元器件是否好的,然后依据原理图在板上把硬件电路连接起来,接着开始调试。
首先用电压表对整个模拟电路分块测试,看是否有短接和断接起来,如果没有则分模块进行电压值测试并与理论值相比,如果相差不大就表示这个模块连接正确,接着继续下一个模块的检测,直到整个电路检测完毕。
如果测试值与理论值相比相差较大,则说明这个模块的电路有问题,这时候就要一步步检查,直到测试值与理论值基本相符,即电路连接正确。
4、软件仿真
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
运行Proteus程序后,进入软件的主界面。
通过左侧工具栏中的P(从库中选择元件命令)命令,在PickDevices左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。
整体仿真电路图如图10所示。
图10整体电路图
ProteusISIS的工作界面,如图11所示。
图11液晶显示
5、结束语
制作这次课程设计一切都是从零开始,从最简单的画流程图起步,这次课程设计可以圆满完成,跟单片机课程里面的课外作业是离不开的。
这次课程设计从开始到制作成功前后超过了一个星期。
当电子万年历可以成功实现时,那种激动和喜悦只有自己可以体会。
在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。
较好的完成了设计,达到了预期的目的,完了最初的设想。
对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学讨论,理清了思路,反而得心应手。
在此次设计中,我要感谢本专业的老师们精心教导,才能学到了这么多东西,这是最重要的。
总之,此次课设使我的能力得到了全方位的提高,使得我的操作能力和专业技能都有了很大的提高。
参考文献
1.ATMEL公司AT89S52单片机中文PDF资料.
2.祝诗平.Proteus和Keil软件在单片机教学中的应用[J].西南农业大学学报(社会科学版),2011
(2).
3.王庆利.单片机设计案例实践教程[M].北京邮电大学出版社,200.
4.刘松,曹金玲.《单片机技术与应用》[J].机械工业出版社,2000.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 单片机 制作 简单 万年历
![提示](https://static.bdocx.com/images/bang_tan.gif)