电子万年历的设计 毕业论文.docx
《电子万年历的设计 毕业论文.docx》由会员分享,可在线阅读,更多相关《电子万年历的设计 毕业论文.docx(27页珍藏版)》请在冰豆网上搜索。
电子万年历的设计毕业论文
密级:
公开
科学技术学院
SCIENCE&TECHNOLOGYCOLLEGEOF
NANCHANGUNIVERSITY
学士学位论文
THESISOFBACHELOR
(2008—2012年)
题目电子万年历的设计
学科部:
信息学科部
专业:
电子信息工程
班级:
08电子1班
学号:
**********
*******
******
起讫日期:
2011.11.21―2012.5.28
南昌大学科学技术学院
学士学位论文原创性申明
本人郑重申明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。
本人完全意识到本申明的法律后果由本人承担。
作者签名:
日期:
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权南昌大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
本学位论文属于
保密□,在年解密后适用本授权书。
不保密□。
(请在以上相应方框内打“√”)
作者签名:
日期:
导师签名:
日期:
电子万年历的设计
专业:
电子信息工程学号:
**********学生姓名:
陈志平指导老师:
胡斐
摘要:
单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
单片机是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬件的能力。
本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。
系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。
关键词:
单片机;农历查询;万年历
Thedesignofelectroniccalendar
Abstract:
Therapiddevelopmentofmicrocomputerapplicationtechnology,throughoutallareasoflifewearenow,Navigationdevicefromthemissiletotheplaneoftheinstrumentcontrol,Fromthecomputernetworkcommunicationsanddatatransmissiontotheindustrialautomationprocesscontrolandreal-timedataprocessing.AndweliveinavarietyofwidelyusedsmartICcardandelectronicpets,whichareinseparablefromthemicrocontroller.MicrocontrollerisaCPU,RAM,ROMtiming,countingandmultipleinterfacesinoneofthemicro-controller,itssmallsize,lowcost,powerful,widelyusedinsmartindustriesandindustrialautomation.The51seriesofmicrocontrollersisthemosttypicalandmostrepresentativeofones.Thisgraduationprojectthroughtostudyitandapplicationtoachievethestudy,designdevelopmentsoftwareandhardwarecapabilities.
Inthisarticledesignamicrocontroller-basedelectronicclockcalendarfunctiontoachievethedesigntoachievethelearning,understandingofSCM-relatedinstructioninallaspectsoftheapplication.SystemfromthemaincontrollerAT89C51,clockcircuitDS1302,displaycircuit,keycircuit,andresetthecircuitandotherparts,itcanachievetheclockcalendardisplayfunctionandcanbedisplaythehoursminutesandseconds.
Keywords:
Monolithicsingle-chiplunarcalendardemandperpetualcalendars
第一章绪论
1.1选题的依据及意义
单片机应用技术迅速发展,在我们生活的各个领域,无论工业发展中还是现实生活中都离不开它,它是集CPU,RAM,ROM,定时,计数和多接口于一体的微控制器。
它体积小,成本低,功能强大,广泛应用于只能产业和工业自动化上。
51系列单片机是各种单片机中最具典型和最有代表性的一种。
通过这次毕业设计可以让我提升学习,设计,开发软硬件的能力。
电子万年历的设计就是建立在单片机的基础上,它是应用非常广泛的日常计时工具,而且显示清晰直观,走时准确,可以进行夜视。
数字显示的日历钟已经越来越流行,特别是在家庭居室,办公室,车站和广场等使用,壁挂式LED数码显示的日历钟逐渐受到人们的欢迎。
[1]
随着科学技术的快速发展,时间的流逝,从摆钟到现在的电子钟,人类不断的研究,不断创新纪录。
美国DALLAS公司推出的具有涓流电流充电能的低功耗实时时钟电路DS1302.它可以对年,月,日,周,时,分,秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年,月,日,周,时,分,秒和温度等信息,还具有时间校准等功能。
该电路采用AT89C52单片机作为核心,功能小,能在3V的低压工作,电压可选用3—5V电压供电。
[2]
综上所述此万年历具有读取方便,显示直观,功能多样,电路简洁,成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有管扩大市场前景,值得我们进入深入的研究和了解。
意义:
(1)通过设计提高对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。
(2)通过设计、制作提高焊接、布局、电路检查能力;
(3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;
(4)通过完成一个实际电子产品从电路设计、程序开发、系统调试的完整过程,熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。
通过此毕业课题的设计,加深对理论知识的理解,学会将学习的理论知识在实际中运用,培养动手能力和解决实际问题的能力,为今后从事相关工作打下基础。
1.2国内外研究现状及发展趋势
随着科学技术的发展,以前的年历已发展成现在的电子万年历,他一开始是采用数字电路实现的,电路复杂,精确度差,每天都需要调时,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得它的电路越来越简单,精确度越来越高,现在的电子万年历一般都是集成芯片和软件结合实现,电路简单,制作方法简便,给人们生产生活带来了极大的便利,它已成为我们生活中不可缺少的家居用品。
[3]
二十一世纪的今天,最具有代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
前两次革命是摆和摆轮游丝的发明,以及石英晶体振荡器的应用,第三次革命就是单片机数码计时技术的应用(电子万年历),使得从原来传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期,星期,温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!
因此,电子万年历的出现带来了钟表计时业界跨越性的进步。
电子万年历的发展趋势将会朝着功能多,读取操作简单,显示更加直观,电路更加简洁,成本越来越低,满足大部分人的要求。
随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。
集成技术的最新发展之一就是将CPU和外围芯片,如程序存储器,数据存储器,并行,串行I/O口,定时/计数器,中断控制器及其他控制器件集成在一个芯片中,支撑单片计算机。
而近年来推出的一些高档单片机还包括有许多特殊功能的单元,如A/D,D/A转换器,调制解调器,锁相环,浮点运算单元等。
因此只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如数据采集系统,自动测试系统等。
[4]
1.3本课题研究内容
设计一个基于单片机多功能的电子万年历。
单片机最为本设计的核心,实现时钟日历的显示:
用1602显示月、日、星期、时、分、秒,用DS1302作为该设计的实时时钟芯片。
第二章电子万年历的方案与论证
2.1设计要求
(1)具有年、月、日、星期、时、分、秒等功能;
(2)具备年、月、日、星期、时、分、秒校准功能;
(3)校准时具有闪烁功能。
2.2整体方案的论证
本万年历设计可以采用两种方法
方案一:
在FPGA芯片上,通过配置NIOS软核处理器和相关接口模块,实现了嵌入式系统的硬件结构。
系统用液晶模块显示万年历等汉字字符,用8个七段数码管显示电子钟的日期和时间,并可通过按键对其进行调整。
具有高集成度、设计灵活和可移植性较好等特点。
但是此种方案的需要的成本高,作为设计研究不予采取。
方案二:
采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是孕育电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
显示电路还可以采用液晶LCD1602来实现。
液晶显示器具有微功耗、体积小、显示内容丰富、超薄轻巧等诸多优点,在本题的制作中,用液晶来实现数字信息的显示是比较合适的一种选择。
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V范围内,2.5V时耗电小于300mA。
所以方案二对于我们学生作为毕业设计最为合适,且作品的精度高,成本低,易于制作研究。
2.3器件的选择
2.3.1单片机芯片的选择方案和论证
方案一:
采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:
采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全兼容,该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
所以选择采用AT89S52作为主控制系统。
2.3.2显示模块选择方案和论证
方案一:
采用LED数码管动态扫描,虽然LED数码管价格适中,对于显示数字也比较合适,然而需要显示多位数字和字母时,编程就会变得很复杂,而且占用的单片机口线多。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三:
可以通过数码管来显示时钟的日历、时间、温度,使用数码管的优点是直观清楚,适合用在光线较暗的地方,但是数码管的功耗大,显示单一,并且在电路制作上布线复杂,难度较高。
显示电路还可以采用液晶1602来实现。
液晶显示器具有微功耗、体积小、显示内容丰富、超薄轻巧等诸多优点,在本题的制作中,用液晶来实现数字信息的显示是比较合适的一种选择。
所以采用1602液晶显示屏作为显示。
2.3.3时钟芯片的选择方案和论证
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300mA.
所以采用DS1302提供时钟。
2.4电路设计最终方案确定
综上所述我们最终决定采用单片机AT89C52作为时钟的主控制部分,LCD1602作为显示部分,时钟信号采用芯片通过设置4个按键来实现时间的调整,闹钟的开关。
这五个主要部分基本上就实现了集日历、时间、星期、温度、闹钟于一体的多功能万年历。
精确度高,显示直观,轻巧的优越性具有很高的使用价值。
第三章系统的硬件设计与实现
3.1电子万年历的系统设计
图3-1电子万年历的系统设计
模块说明:
DS1302时钟模块可以输出其当前日期及时间;
键盘输入电路可以调整日期,时间及整体的转换;
显示电路则显示当前的系统运行情况。
3.2最小系统设计.
单片机要正常运行,必须具备一定的硬件条件,其中最主要的就是三个基本条件:
(1)电源正常
(2)时钟正常;(3)复位正常。
AT89S51的引脚如图3-2所示。
3.2.1时钟电路
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不絮的一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟有两种方式:
一种是内部时钟方式,另一种为外部时钟方式。
本文用的是内部时钟方式。
AT89S52单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
[5]
3.2.2复位电路
为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。
单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。
复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。
复位操作有两种情况,即上电复位和手动(开关)复位。
本系统采用上电复位方式。
上电复位电路中的电阻R取为1KΩ,C取为10PF。
[6]
图3-2单片机最小系统
3.3显示电路
液晶显示器的接口有两种:
一种是总线式接口电路方式;另一种是非总线接口电路方式。
总线式接口方式是把液晶显示器看做外部的数据存储器,访问液晶显示器就像访问数据存储器的一个单元一样,采用这种方式能充分发挥单片机的总线读写功能,便于升级和扩展。
而非总线方式是直接利用IO口进行读写较灵活,不便于升级。
这里采用总线式接口方式。
接口时要注意显示器的功能信号E是高电平有效,所以要取反。
这里使用的液晶显示器为LCD1602为字符点阵式液晶显示器。
可以显示16×2字符,而要显示日期字符23个,可以满足要求。
图3-3显示电路
LCD1602引脚说明:
1脚:
Vss接地;
2脚:
Vdd电源正极;
3脚:
V0偏置电源;
4脚:
RS控制输入是数据或是命令;
5脚:
RW控制读写端口;
6脚:
E使能端;
7-14脚:
数据IO口
3.4按键电路
3.4.1键盘接口介绍
独立式键盘:
独立式键盘是指直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,当某个键闭合时,相应的I/O口线变为低电平,当CPU查询到为低电平的I/O口线时,就可以判别出与其对应的键处于释放状态。
行列式键盘:
依次使列线P1.4~P1.7中的一根输出为低电平,则只有与之对应的键按下时,才能使行线为低电平,此时其他列线都输出高电平,与它们对应的键按下,不能使行线电平变低,所以就实现了行线的时分复用。
3.4.2按键电路设计
按键电路的功能主要是把时间和日期设置到当前的时间,可以在系统运行中进行。
用4个独立式按键完成,分别接到单片机P1口的高4位。
第1个按钮表示是否进行设置,按下时表示设置,并且每按一次,在显示器上分别在年、月、日等日期时间上跳转,表示对相应的项进行更改;第2个按钮按下表示对第1个按钮选中的项进行加1操作;第3个按钮按下表示进行减1操作;第4个按钮按下表示停止设置。
只有在第1个按钮按时才可进行加减操作。
其电路如图3-4所示。
其中电容的作用是消除按键的抖动,也可用双稳态触发器去除按键时的抖动,同时为了提高可靠性,硬件去抖动的同时,还可以用软件去抖动的方法。
[7]
图3-4按键电路
第四章软件设计
本设计的软件程序包括主程序、计算阳历程序流程图、计算阴历序流程图、万年历设置功能子程序等。
4.1主程序流程图
图4-1主程序流程图
程序启动载入默认预定时间及日期数值,数据转入显示屏幕显示,时钟芯片启动,程序依年月日判别进行时间增加,进入键盘扫描死循环,在键盘有输入值时即做出调时,转农历显示等操作,显示主程序流程图如图4-1所示。
4.2时间调整程序设计
调整时间用三个调整按钮,一个作为移位、控制用,一个作为加用,一个作为退出调整用。
分别定义为控制按钮、加按钮、退出按钮。
在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。
闪烁原理就是,让要调整的一位每隔一定的时间熄灭一次,例如间隔时间为50ms。
利用定时器计时,当达到50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。
此时送正常显示值给该位,再进入下一位调整闪烁程序。
时间调整程序流程图如图4-2所示。
图4-2时间调整程序流程图
4.3阳历程序的设计
因为使用了时钟芯片DS1302,阳历程序只需从DS1302各寄存器中读出年、周、月、日、小时、分、秒等数据,再处理即可。
在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。
阳历程序流程图见图4-3所示。
图4-3阳历程序流程图
4.4阴历程序设计
阴历程序的实现是要靠阳历日期来推算的。
要根据阳历来推算阴历日期,首先要设计算法。
推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。
阳历一个月不是30天就是31天(2月除外,闰年2月为29天,平年2月为28天)。
阴历一年有12个月或13个月(含闰月),一个月为30天或29天。
如果把一个只有29天的月称为小月,用1为标志,把30天的月称为大月,用0为标志,那么12位二进制就能表示一年12个月的大小。
如果有闰月,则把闰月的月份作为一个字节的高4位,低4位表示闰月大小,大月为0,小月为1,这样一个字节就包括了所有闰月的信息。
阴历春节和阳历元旦相差的天数也用一个字节表示。
总共用4字节就可以存储一年中任何一天阳历和阴历的对应关系的有关数据。
[8]
例如2004年的阴历和阳历对应关系如表4-4所示。
表4-42004年的阴历和阳历对应关系表
月份
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
十六进制
4
2
5
2
21
2004年的春节和元旦差21天,这样2004年的信息表示为:
21,42H,52H,21H。
其中表示12个月大小信息的字节,第4位和第7位不用,第1个字节为十进制,其它的都为十六进制。
按此方法,50年的阳历和阴历对应关系表总共使用200字节。
有了算法和数据以后,就可以设计软件了。
先要根据当前阳历的日期,算出阳历为该年中的第几天。
图4-5为计算阳历中任何一天在该年中为第几天的程序流程图。
图4-5计算阳历天数程序流程图
计算出当前阳历日期为该年中的第几天后,再减去阳历该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年中的总第几天了。
根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历年为阳历年的前一年。
这种情况下,根据实际,当前阴历日期会处于阴历11月或12月,此时春节和元旦的日差减去前面计算出的当前阳历日期在阳历年为第几天的数据,其结果表示当前阴历日期离春节的天数。
计算出的阳历天数为该年的第几天,存放在寄存器R2和R3中。
计算出天数后,如果大于#FFH,则把#FFH存放在R2中,余值存放在R3中。
也就是说在用寄存器R2和R3表示的天数信息中,R2充当主寄存器,数据先存满R2,再存R3。
在整个转换程序中,这里面的数据不能被覆盖。
[9]
计算出阳历总天数后,就可以根据它来推算阴历日期。
推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计算春节和元旦的日差时,假设元旦为0天,春节为n天,则日差为n。
而前面计算的阳历总天数是该天在该年中的第几天,是以元旦为1而得到的,与计算春节和元旦日差的这样方法相比,其数值少了1,所以要在原来本应该以0作为该天就是春节的依据的基础上加1,所以以1作为该天是春节的标志);如果结果小于1,则阴历应该是阳历的前一年;如果结果大于1,说明阳历和阴历为同一年。
再根据查表所得的该年的阴历的闰年和大小月的信息,就可以推算出该天的阴历日期了。
图4-6为由总天数推算出阴历日期的程序流程图。