电子万年历毕业设计.docx
- 文档编号:3881489
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:46
- 大小:1.87MB
电子万年历毕业设计.docx
《电子万年历毕业设计.docx》由会员分享,可在线阅读,更多相关《电子万年历毕业设计.docx(46页珍藏版)》请在冰豆网上搜索。
电子万年历毕业设计
本科毕业设计(论文)
题目
电子万年历的设计
完成日期
2012
年
6
月
6
日
SouthwestPetroleumUniversity
GraduationThesis
Thedesignofelectroniccalendar
摘要
在当代繁忙的工作与生活中,时间与每一个人都有非常密切的关系,每个人都受到时间的影响,电子万年历的出现给人们的工作与生活带来了福音。
电子万年历是实现对阳历的日期和时间以及阴历的日期显示的计时装置。
随着科技的发展,电子万年历也有了巨大的进步和发展,目前已经广泛应用于家庭、车站、码头、办公室以及银行等各种场所。
已经成为人们日常生活和工作中必不可少的电子产品,具有广阔的发展空间和市场前景。
本文介绍了基于单片机AT89C52的电子万年历的设计,该设计结合时钟芯片DS1302以及显示器件LCD12864,能够直观的显示阳历年、月、日、星期、时、分、秒,以及通过程序算法转换阳历的日期,得到阴历的年、月、日。
在显示阴历时间时,能标明是否为闰年、闰月,同时完成对它们的自动校正,全部信息均受单片机AT89C52的控制,并由液晶显示器件LCD12864显示。
人机口由4个按键来实现,通过这四个按键可对时间、日期进行人为的自由调整。
本设计采用单片机为核心器件,软硬件结合,使硬件部分大为简化,提高了系统稳定性,设计出的电子万年历可以显示阳历的日期和时间以及阴历的日期。
其软硬件设计简单,时间记录准确,有较强的实用性。
关键词:
万年历;AT89C52;DS1302;LCD12864
Abstract
Incontemporarybusyworkandlife,timeandeveryonehasaverycloserelationship,everyoneistheinfluenceofthetime,theemergenceofelectroniccalendartopeople'sworkandlifebringtheGospel.Electroniccalendaristherealizationofthesolarcalendardateandtimeanddateofthedisplayofthetimingdevice.Withthedevelopmentofscienceandtechnology,electroniccalendaralsohadgreatprogressanddevelopment,nowhasbeenusedwidelyinthefamily,station,wharf,officeandofthebankandothervariousplaces.Hasbecomepeopledailylifeandworknecessaryinelectronicproducts,havewidedevelopmentspaceandthemarketprospect.
ThispaperintroducestheAT89C52singlechipmicrocomputerbasedontheelectroniccalendardesign,thedesignwiththeclockchipDS1302anddisplaydevicesLCD12864,canintuitiveshowsYangLiNian,month,day,week,when,minutesandseconds,andthroughtheprocessofconvertingsolarcalendardatealgorithm,getthelunarcalendaryear,month,day.Inthedisplaylunarcalendartime,canindicatewhetherforaleapyear,intercalarymoon,finishatthesametimetotheirautomaticadjustment,allinformationbyAT89C52singlechipmicrocomputercontrolofboth,andtheliquidcrystaldisplaydeviceLCD12864display.Theman-machinemouthbyfourpressingbuttons,throughthefourbuttonsontime,dateofpeoplefreeadjustment.
ThisdesignusestheMCUasthecore,thehardwareandsoftwarecombinationtomakehardwarepartgreatlysimplifiedandimprovethestabilityofthesystem,designofelectroniccalendarcandisplaythesolarcalendardateandtime,andthedateofthelunarcalendar.Itssoftwareandhardwaredesignsimple,timetorecordandaccurate,withstrongpracticability.
Keywords:
electroniccalendar;AT89C52;DS1302;LCD12864
1.绪论
1.1本设计的研究背景和研究意义
随着电子技术的迅速发展,时间的流逝,从观察太阳、摆钟到现在的电子钟,人类在不断的研究、不断的创新。
电子万年历是实现对年、月、日、时、分、秒、农历等显示的计时装置,广泛应用与家庭、车站、码头、办公室、银行等各种场所,成为人们日常生活中的必需品。
数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。
钟表的数字化给人们生活带来了极大的方便,在此基础上完成的电子万年历精度高,功能易于扩展,可扩展为诸如整点报时、定时自动报警、按时自动打铃、自动启闭路灯等等具有多种功能的产品。
电子万年历的出现给人们的生活与工作带来了诸多的方便,具有读取方便、显示直观,功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。
1.2设计任务及任务分析
设计任务:
设计一个电子万年历,要求能显示阳历年、月、日、星期、<小>时、分<钟>、秒和阴历年、月、日,在显示农历时间时,能标明是否为闰年。
主控芯片使用AT89C52单片,时钟芯片使用美国DALlAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。
任务分析:
实现对阳历时间、日期及阴历日期的显示,需要单片机的控制,并通过显示模块进行显示。
能对时间、日期进行调节,就需要按键模块。
2.本设计总体设计方案
2.1方案论证与比较
2.1.1方案一:
基于AT89C52的电子万年历的设计
采用AT89C52芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,编程也简单,而且价格便宜,使整体的设计成本降低。
采用LCD12864液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,显示美观,方便查看。
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
本方案的系统框图如图2.1所示。
图2.1方案一系统框图
2.1.2方案二:
基于PLD的电子万年历的设计
采用ALTERA公司的FLEX10K系列PLD器件。
设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接比较方便。
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合。
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
本方案的系统框图如图2.2所示。
图2.2方案二系统框图
2.1.3方案三:
基于凌阳单片机的电子万年历的设计
凌阳16位单片机有丰富的中断源和时基。
它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。
I/O口功能也比较强大,方便使用。
用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。
这些都方便对设计进行扩展,使设计更加完善,成本也相对低一些。
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是实现的时间误差较大。
本方案的系统框图如图2.3所示。
图2.3方案三系统框图
2.2本设计方案选择
在方案二中,但是考虑到本设计的特点,PLD在功能扩展上比较受局限,而且占用的资源也相对多一些。
显示模块使用的点阵式数码管的价格相对较高。
在方案三中,凌阳单片机在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高。
显示模块使用的数码管编程繁琐,操作比液晶显示复杂,也不便于直观的查看。
综上各所述,本次设计将选择方案一:
基于AT89C52的电子万年历的设计。
采用AT89C52作为控制系统;DS1302提供时钟;LCD12864作为显示。
3.硬件电路的设计与计算
3.1控制电路的设计与计算
3.1.1电路选择
最小控制系统由单片机、晶振电路和复位电路组成。
晶体振荡器的两端分别接两个电容,来对晶振信号退耦。
单片机复位采用的上电复位的方式。
如图3.1所示为控制系统电路图。
图3.1控制系统电路图
3.1.2元器件的选型及参数计算
1、单片机AT89C52
AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89C52的引脚图如图3.2所示。
图3.2AT89C52引脚图
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
如图3.3所示为P0口的上拉电阻电路连接图。
图3.3P0口上拉电阻
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器,EA端必须保持低电平。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
2、单片机晶振电路
晶振电路采用的是频率为12MHz的晶体振荡器。
在晶振的两端接两个电容值为30pF电容的目的是为晶振输出信号滤波。
如图3.4所示为晶振电路连接图。
图3.4单片机晶振电路
3、单片机复位电路
复位电路采用的复位方式为上电复位。
复位电路中使用的电容C2的值为30pF,电阻R11的值为10K。
上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。
如图3.5所示为复位电路图。
图3.5单片机复位电路
3.2时钟电路的设计与计算
3.2.1电路选择
时钟电路的晶体振荡器与单片机的晶振一样,两端分别接两个电容,来对晶振信号退耦。
如图3.6所示为时钟电路连接图。
图3.6时钟芯片电路图
3.2.2元器件的选型及参数计算
1、时钟芯片DS1302
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
如图3.7所示为DS1302引脚图,其中Vcc1为后备电源,Vcc2为主电源。
X1和X2是振荡源,外接32.768KHz晶振。
图3.7DS1302引脚图
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
读写时序如下图3.8所示。
图3.8DS1302读/写时序图
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3-1。
表3-1DS1302的日历、时间寄存器
2、DS1302晶振电路
DS1302的晶振电路与单片机的晶振电路相似,唯一不同之处在晶振的频率,DS1302所选晶振频率为32.768KHz。
如图3.9所示为DS1302的晶振电路。
图3.9DS1302晶振电路
3.3显示电路的设计与计算
3.3.1电路选择
图3.10显示电路连接图
LCD12864的引脚直接接在单片机的引脚上面,RE、RW、E、PSB依次接在单片机P1.0至P1.3口上,数据口D0-D7依次接在单片机P0口上。
A引脚上接一个10K的滑动变阻器来调节显示屏的亮度。
显示部分电路图如图3.10所示。
3.3.2元器件的选型及参数计算
1、LCD12864液晶显示
12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。
利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字。
也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
各管脚功能如表3—2所示。
表3—212864管脚功能表
管脚号
管脚名称
电平
管脚功能描述
1-地
VSS
0V
电源地
2-+5V
VCC
3.0+5V
电源正
3-中
V0
-
对比度(亮度)调整(可以接Vcc)
4-单1
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5-单2
R/W(SID)
H/L
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6-单3
E(SCLK)
H/L
使能信号
7-单39
DB0
H/L
三态数据线
8-单38
DB1
H/L
三态数据线
9-单37
DB2
H/L
三态数据线
10-单36
DB3
H/L
三态数据线
11-单35
DB4
H/L
三态数据线
12-单34
DB5
H/L
三态数据线
13-单33
DB6
H/L
三态数据线
14-单32
DB7
H/L
三态数据线
15-单4
PSB
H/L
H:
8位或4位并口方式,L:
串口方式(见注释1)
16空
NC
-
空脚
17空
/RESET
H/L
复位端,低电平有效(见注释2)
18空
VOUT
-
LCD驱动电压输出端
19-+5V
A
VDD
背光源正端(+5V)(见注释3)
20-地
K
VSS
背光源负端(见注释3)
LCD12864的数据传输过程如图图3.11所示。
图3.11写数据(8位数据线模式)
LCD12864读数据的时序图如图3.12所示。
图3.12读数据(8位数据线模式)
3.4硬件总电路图
系统总电路图见附录一,PCB板见附录二。
4.软件设计及编程
4.1软件设计功能图
软件系统功能图如图4.1所示。
图4.1软件系统功能图
4.2软件设计流程图
软件系统流程图如图4.2所示。
图4.2软件流程图
4.3阳历程序设计及功能实现
因为使用了时钟芯片DS1302,阳历程序只需从DS1302各个寄存器中读出年、月、日、星期、时、分、秒等数据,在处理即可。
在首次对DS1302进行操作前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示模块单元。
阳历程序设计系统流程图如图4.3所示。
图4.3计算阳历程序流程图
4.4时间调整程序设计及功能实现
调整时间用4个按钮调整,1个用于控制,1个用于移位,两外2个作为加、减调节按钮。
在调节时间过程中,逃调整的位与其他的位应该有区别,所以增加了汉字显示提示功能,即调整的位有相应的汉字提示。
当按下一位按钮时,即进入下一位的调整,并有相应汉字提示。
时间调整程序流程图如图4.4所示。
图4.4时间调整程序流程图
4.5阴历程序设计及功能实现
阴历程序的实现是靠阳历日期来推算。
要根据阳历日期来推算阴历日期,首先要设计算法。
推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。
阳历一个月不是30天就是31天(2月除外,闰年2月为29天,平年2月为28天)。
阴历一年有12个月或13个月(含闰月),一个月为29天或30天。
如果把一个只有29天的月称为小月,用1标志,把30天的月称为大月,用0标志,那么12位二进制就能表示一年12个月的大小。
如果有闰月,则把闰月的月份作为一字节的高4位,低4位表示闰月大小,大月为0,小月为1。
这样一字节就包含了所有闰月信息。
阴历春节和阳历元旦相差天数也用一字节表示。
总共用4字节就可以存储一年中任何一天阳历与阴历对应关系的有关数据,例如2004年的阴历与阳历对应关系如表4-1所示。
表4-12004年的阴历与阳历对应关系表
月份
1
2
3
4
5
6
7
8
9
10
11
12
闰2月
大小
小
大
大
大
小
大
小
大
小
大
小
大
小
二进制
1
0
0
0
1
0
1
0
1
0
1
0
1
天数
29
30
30
30
29
30
29
30
29
30
29
30
30
十六进制
4
2
5
2
21
2004年春节和元旦相差21天,这样2004年的信息表示为:
21,42H,52H,21H。
其中表示12个月大小信息的字节,第4位和第7位不用。
第一字节位十进制,其他的都为十六进制。
按此方法,100年的阳历和阴历对应关系表共使用400字节。
先要根据当前阳历的日期,算出阳历为该年中的第几天,计算出当前阳历日期为该年的第几天后,再减去该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年中的总第几天,根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历为阳历的前一年,在这种情况下,根据实际,当前阴历日期会处于阴历的11月或12月,此时春节和元旦的日差减去前面计算出的当前阳历日期在阳历中的第几天的数据,其结果表示当前阴历日期距离春节的天数。
再根据查表所得的该年的阴历的闰月和大小月信息,就可以推算出该天的阴历日期。
阴历程序算法流程图如图4.5所示。
图4.5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 万年历 毕业设计