基于单片机的数字万年历的设计与实现.docx
《基于单片机的数字万年历的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字万年历的设计与实现.docx(21页珍藏版)》请在冰豆网上搜索。
基于单片机的数字万年历的设计与实现
基础课程设计(论文)
基于单片机的数字万年历的设计与实现
专业:
电气工程及其自动化
指导教师:
小组成员:
信息技术学院电气工程系
2014年12月15日
摘要
本次设计就是设计一款万年历,以C51单片机为核心,配备数码管显示模块、按键等功能模块。
万年历采用24小时制方式显示时间,在数码管上显示年、月、日、小时、分钟、秒等功能。
设计的核心主要包括硬件设计和软件编程两个方面。
硬件电路设计主要包括中央处理单元电路、时钟电路、执行电路等几部分。
软件用汇编语言来实现,主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。
近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领、域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
而51系列单片机是各单片机中最为典型和最有代表性的一种,通过本次课程设计进一步对单片机学习和应用,从而更熟悉单片机的原理和相关设计并提高了开发软、硬件的能力。
本设计主要设计一个基于80C51单片机的电子时钟,并在LED上显示相应的时间,通过两个控制键和4×4键盘来实现时间的调节功能。
应用Proteus软件实现单片机数字时钟系统的设计与仿真。
关键词:
单片机时钟电路C51万年历
1绪论
多功能数字万年历已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、医院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
随着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些别的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。
因此,研究实用电子时钟及其发展应用,有着非常现实的意义,具有很大的实用价值。
由于数字集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点它还用于计时、自动报时及自动控制等各个领域。
虽然现在市场上已有现成的电子钟集成电路芯片出售,价格便宜,使用灵活,如可以随意设置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的发展,特别是MOS集成电路技术的发展,使电子钟具有体积小、携带方便,但是这里介绍的实用电子钟可以满足使用者的一些特殊要求,输出方式灵活、功耗低、x时准确、性能稳定、维护方便等优点。
多功能数字万年历是一个时间控制系统,既能作为一般的时间显示器,同时可以根据需要扩展其功能
1.1方案选择与DIY电子万年历的研究情况
1.1.1时钟芯片选择
选择串行接口时钟芯片DS1302
芯片主特性:
(1)实时时钟具有能计算2100年之前的秒分时日日期星期月年的能力,还有闰年调整的能力
(2)318位暂存数据存储RAM
(3)串行I/O口方式使得管脚数量最少
(4)宽范围工作电压2.05.5V
(5)工作电流2.0V时小于300nA
(6)读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式
(7)8脚DIP封装或可选的8脚SOIC封装根据表面装配
(8)简单3线接口
(9)与TTL兼容Vcc=5V
(10)可选工业级温度范围-40+85
优点:
串行接口的日历时钟芯片,使用简单,接口容易,与微型计算机连线较少等特点,在单片机系统尤其是手持式信息设备中己得到了广泛的应用。
图1DS1302管脚图
1.1.2键盘选择
选择独立式键盘
独立式键盘电路图如图2所示。
图2独立式键盘
独立式键盘是指各个按键相互独立地连接到各自的单片机的I/O口,I/O口只需要做输入口就能读到所有的按键。
特点:
电路简单,程序容易写,适用于按键数较少的情况。
1.1.3显示模块选择
选择LCD12864
作为一种输出方式液晶显示最大的特点就是能够实现友好的人机界面。
它己经广泛应用于现代工业控制和智能化仪器仪表等领域,它己经成为单片机就用开发领域典型模块之一。
能够方便的显示文字和数字。
1.2DIY万年历的研究情况
目前电子爱好者所设计的万年历大部分都采用LCD1602或数码管显示只能显示阳历不能带显示阴历,而且没有阴历相对应的的天干地支和生肖年,没有达到多功能的效果。
我们采用LCD12864显示通过算法实现能正确显示阴历,具有友好的界面。
为了追求时间的准确,我们采用芯片DS1302通过单片机控制,读出时间显示在LCD上。
我们除了用芯片DS18B20,通过程序控制把温度也显示出来外还通过算法控制把阴历相对应的天干地支和生肖年也显示出来,达到多功能效果。
2主要硬件描述
2.189C51模块
Mcs-51单片机管脚图如图所示。
图3单片机管脚图
(1)一个8位的微处理器(CPU)
(2)片内数据存储器RAM(128B/256B)
(3)片内程序存储器ROM/EPROM(4kB/8kB)
(4)4个8位并行I/O拉口P0-P3每个口既可以作输入,也可以作输出
(5)2个16位定时器/计数器
(6)5个中断源的中断控制系统
(7)1个全双工的串行I/O接口
(8)片内时钟振荡器
2.2显示模块LCM12864
2.2.1液晶模块概述
我们采用FG12864J显示模块。
它是一种图形点阵液晶显示器。
它主要采用动态驱动原理由行驱动—控制器和列驱动器两部分组成了128(列)×64(行)的全点阵液晶显示。
2.2.2液晶模块特点
(1)工作电压为+5V±10%,可自带驱动LCD所需的负电压
(2)全屏幕点阵,点阵数为128(列)×64(行),可显示8(/行)×4(行)个(16×16点阵)汉字,也可完成图形,字符的显示
(3)与CPU接口采用5条位控制总线和8位并行数据总线输入输出,适配M6800系列时序
(4)内部有显示数据锁存器
(5)简单的操作指令显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令
图4FG12864J显示模块
2.3芯片DS1302简介
DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式。
DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1RES复位2I/O数据线3SCLK串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW。
DS1302的管脚描述如表1所示。
表1DS1302管脚
X1X2
32.758KHz晶振管脚
GND
地
RST
复位
I/O
数据输入/输出引脚
SCLK
串行时钟
Vcc1Vcc2
电源供电管脚
2.4芯片DS18B20简介
DS18B20温度传感器当仁不让。
超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强。
对电子爱好者来说,DS18B20是我们开发温度相关的首选小产品。
DS18B20引脚功能如表2所示。
表2DS18B20引脚功能
GND
地
DQ
单数据总线
VDD
电源电压
NC
空引脚
3硬件设计与实现
该万年历以C51作为控制核心,外接DS18B20温度传感器,DS1302时钟芯片,显示采用LCM12864,调表采用矩阵式键盘,整体硬件电路的框图如图5所示。
图5硬件电路框图
3.1单片机最小系统的设计
89C51单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
单片机的最小系统如图6所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。
图6单片机最小系统
3.2时钟电路的设计
本系统采用有DS1302串行时钟芯片作为主时钟电路,该电路使用单独的32.768M的晶振和单独的电源供电,减小主控的负担。
电路图如图7所示。
图7时钟电路
3.3温度采集模块的设计
采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。
电路图如图8所示。
图8温度采集电路
3.4人机交互模块设计
该系统输入模块采用独立式式键盘输入,显示模块采用LCM12864,很好的实现了人机交互,液晶与主控制器的接口如图9所示。
图9液晶接口电路
4系统软件设计与实现
4.1主要算法流程图描述
以80C51为核心,处理外转电路传进来的信号,实现时钟数据的读取、保存、显示其及键盘操作。
流程图如图10所示。
图10主程序流程图
阳历和时分秒都是通过DS1302读出来的,经过主控的转换和处理最终显示在LCM12864上,该程序流程图如图11所示。
图11计算阳历和时分秒流程图
阴历是通过一种算法转换过来,首先得到阳历值,然后根据这种算法把阳历转换成阴历,最终显示在LCM12864模块上,该程序流程图如图12所示。
图12计算阴历程序流程图
时间调整是通过四个独立按键来调整时间值,时间调整流程图如图13所示。
图13时间调整程序流程图
星期的计算方法如下:
星期=(日期年份+所过闰年数+月校正数)%7,如果是在闰年又不到3月份上述之和要减一天再除7,其1到12月的校正数据为[622503514624],该程序中采用1个字节表示年份闰年数也只计算1900年以后的闰年数。
该程序的流程图如图14所示。
图14流程图
4.2各子程序设计
1键盘扫描子程序
键盘扫描流程图如图15
图15键盘扫描流程图
键盘扫描子程序如下:
L2:
MOVR3,#0F7H
MOVR1,#00H
L3:
MOVA,R3
MOVP1,A
MOVA,P1
MOVR4,A
SETBC
MOVR5,#04H
L4:
RLCA
JNCKEYIN
INCR1
DJNZR5,L4
CALLDISP
MOVA,R3
SETBC
RRCA
MOVR3,A
JCL3
JMPL2
2LED显示子程序
LED显示流程图如图16
图16LED显示流程图
LED显示子程序如下:
DISP:
MOVR0,#45H
DISP1:
MOVA,@R0
ADDA,#50H
MOVP0,A
CALLDELAY
DECR0
MOVA,@R0
ADDA,#40H
MOVP0,A
CALLDELAY
DECR0
MOVA,@R0
ADDA,#30H
MOVP0,A
CALLDELAY
DECR0
MOVA,@R0
ADDA,#20H
MOVP0,A
CALLDELAY
DECR0
MOVA,@R0
ADDA,#10H
MOVP0,A
CALLDELAY
DECR0
MOVA,@R0
ADDA,#00H
MOVP0,A
CALLDELAY
RET
3密码比较和报警程序
密码比较和报警流程图如17
图17密码较和报警流程
密码比较和报警程序:
COMP:
MOVR1,#45H
MOVR0,#35H
MOVR2,#06H
C1:
MOVA,@R1
XRLA,@R0
JNZC3
DECR1
DECR0
DJNZR2,C1
CLRP2.0
MOVR2,#200
C2:
MOVR6,#248
DJNZR6,$
DJNZR2,C2
C3:
INCR5
MOVA,R5
MOVR5,A
CJNER5,#03H,C4
CLRP2.1
MOVR5,#00H
C4:
JMPSTART
心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在同学的帮助下,终于游逆而解。
非常感谢!
参考文献
[1]周兴华编著.手把手教你学单片机C程序设计.北京:
北京航空航天大学出版社,2007
[2]侯玉宝编著.基于Proteus的51系列单片机设计与仿真.北京:
电子工业出版社,2008
[3]张义和编著.例说51单片机(C语言).北京:
人民邮电出版社.2008
[4]李朝青编著.单片机原理及接口技术.北京:
北京航空航天大学出版社,2005
[5]周慈航编著.单片机应用程序设计基础.北京:
北京航空航天大学出版社,1991
[6]马忠梅编著.单片机的C语言应用程序设计.北京:
北京航空航天大学出版社,2003
[7]李广弟编著.单片机基础.北京:
北京航空航天大学出版社,1994
[8]曾巧媛编著.单片机原理及应用.北京:
电子工业出版社,1997
[9]邱丽芳编著.单片机原理与应用.人民邮电出版社,2007
[10]何立民编著.MCS-51系列单片机应用系统设计.北京航空航天大学出版社,2003