基于单片机at89c52的实时日历时钟系统的设计本科毕业论文.docx
- 文档编号:158689
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:35
- 大小:972.33KB
基于单片机at89c52的实时日历时钟系统的设计本科毕业论文.docx
《基于单片机at89c52的实时日历时钟系统的设计本科毕业论文.docx》由会员分享,可在线阅读,更多相关《基于单片机at89c52的实时日历时钟系统的设计本科毕业论文.docx(35页珍藏版)》请在冰点文库上搜索。
基于单片机at89c52的实时日历时钟系统的设计本科毕业论文
毕业设计(论文)
题目:
基于单片机AT89C52的实时日历时钟系统的设计
学生姓名:
学号:
所在学院:
机械与电子工程学院
专业班级:
届别:
指导教师:
皖西学院本科毕业设计(论文)创作诚信承诺书
1.本人郑重承诺:
所提交的毕业设计(论文),题目《基于单片机AT89C52的实时日历时钟系统的设计》是本人在指导教师指导下独立完成的,没有弄虚作假,没有抄袭、剽窃别人的内容;
2.毕业设计(论文)所使用的相关资料、数据、观点等均真实可靠,文中所有引用的他人观点、材料、数据、图表均已标注说明来源;
3.毕业设计(论文)中无抄袭、剽窃或不正当引用他人学术观点、思想和学术成果,伪造、篡改数据的情况;
4.本人已被告知并清楚:
学校对毕业设计(论文)中的抄袭、剽窃、弄虚作假等违反学术规范的行为将严肃处理,并可能导致毕业设计(论文)成绩不合格,无法正常毕业、取消学士学位资格或注销并追回已发放的毕业证书、学士学位证书等严重后果;
5.若在省教育厅、学校组织的毕业设计(论文)检查、评比中,被发现有抄袭、剽窃、弄虚作假等违反学术规范的行为,本人愿意接受学校按有关规定给予的处理,并承担相应责任。
学生(签名):
日期:
年月日
基于单片机AT89C52的实时日历时钟系统的设计
学生:
(指导老师:
)
(皖西学院机械与电子工程学院)
摘要:
日历时钟是一个常见的用品,它渗透到我们生产、生活、学习中的每一个角落,一个性能精准、功能齐全、外表美观的日历时钟对我们的工作、学习生活起着非常重要的作用。
本文设计一种实时日历时钟系统,它以单片机AT89C52为主控制器,以DS1302日历时钟芯片,以1602LCD数码管为显示器件,再配以适当的外围电路,具有显示精准、调节方便、高可靠性、高性价比、低电压、低功耗等优点。
关键词:
AT89C52单片机;DS1302;1602LCD数码管显示;时钟
DesignofrealtimecalendarclocksystembasedonsinglechipmicrocomputerAT89C52
Student:
WangXiang(Guidanceteacher:
ZhouTongxu)
(CollegeofmechanicalandelectronicengineeringofWestAnhuiUniversity)
Abstract:
Inthe51singlechipmicrocomputerapplicationsystem,itisoftenneededtorecordreal-timeinformationandlong-termpreservation.Forexample,atthetimeofdataacquisition,forsomeimportantinformationrequiresnotonlyrecordthecontent,alsoneedtheexacttimeoftherecordstheevent;singlechipmicrocomputerforthehighreliability,highprice,lowvoltage,lowpowerconsumption,andaseriesofadvantages,inrecentyearsgetrapiddevelopmentandpromotionofawiderange,iswidelyusedinindustrialcontrolsystems,communicationsequipment,dailyconsumptionclassproductsandtoys.ThisdesignusestheAT89C52singlechipmicrocomputeraswellastheDS1302calendarclockchiptorealizethedesignofthecalendarclock.ThedesignresultsshowthatthedesignofrealtimeclockbasedonDS1302throughthe1602LCDdigitaltubedisplaysystemcanmeetthedesignrequirement.
KeyWords:
52Microcontroller;DS1302;1602LCDdigitaltubedisplay;clock
1绪论
时间与人类的生活紧密相连,是一个重要的参数。
这个参数无论什么时候都是非常重要的,少了时间这个参数,社会的进步也会随之变得缓慢,足以可见对时间的研究是非常有必要的。
本次设计的功能是在51系列单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,要求能够进行长时间的记录,并且在断电的情况下,还能继续保对时间的回去和记录。
实时显示可以通过软件编程实现,但这种方法需要编制的程序复杂,代码多且单片机软件开销大,时间信息也不宜长期保存。
而采用专用实时时钟芯片可以避免这些问题,并且可以非易失地长期保存时间信息,因此,在设计中选择使用专用芯片来实现日历时钟显示系统。
根据功能模块的划分,本系统包括3个部分:
1)51单片机模式块:
其作用是和外围的时钟芯片通信,并控制数据传输过程,采集时间信息并予以处理;
2)日历时钟模块:
此模块由专用的实时时钟芯片构成,它是本设计的核心模块,由它提供实时的日历时钟信息;
3)数码管显示模块:
此模块用于实时日历时钟信息显示;
程序部分包括单片机和时钟芯片的接口程序(实现单片机和时钟芯片之间的数据传输过程)以及数码管显示程序。
2设计思路
2.1硬件的设计思路
由于系统要实现的功能比较简单,主要是采集实时日历时间及闹钟的设置,因此,硬件设计思路非常清晰。
采用AT89C52芯片作为硬件核心,具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、星期、日、周、月、年以及闰年补偿的年进行计数,而且精度高位的RAM作为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.故采用DS1302作为时钟芯片。
当然,其他的外接电路中显示器及按键等硬件的设计都非常简单了。
本设计采用的是1602LCD液晶显示器。
它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,能很好地显示出本设计要求的结果(对实时日历时钟的显示)。
2.2软件的设计思路
整个单片机应用系统是一个整体。
在应用系统整体设计时,软件和硬件要统一考虑进来的。
其中软件的设计要根据系统要达到的功能要求,将其分为若干个独立的模块,画出程序流程图。
根据系统的特点和考虑实际的情况选择编程语言。
一般选择汇编语言和C语言。
汇编语言对硬件操作方便,程序代码短;C语言功能较多,表达能力好,使用方便,在应用方面也很广,程序效率高,移植性韧度好,现在很多单片机都是用C语言作为编程语言。
软件系统设计时,要分配好系统的资源。
一个单片机系统的资源主要是片内和片外资源,前者是指单片机内部的中央处理器、程序储存器、书数据储存器、定时/计数器、串行口、并行口等。
所以,在设计的时候要分出各个独立的模块设计软件。
本设计应该把单片机分为单片机AT89C52主程序、时钟芯片DS1302的软件设计、1602LCD的设计和其它外接电路模块。
这样,对本次的设计又有一定程度的简化。
3硬件电路设计
本设计的硬件电路设计主要是围绕日历时钟芯片DS1302的使用进行的。
3.1系统结构框图
本设计的硬件电路包括单片机电路、日历时钟芯片电路和数码管显示输出电路,其结构框图如图1所示。
图1系统硬件结构框图
3.2单片机AT89C52的介绍
单片机选用美国ATMEL公司生产的AT89C52单片机。
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。
AT89C52单片机引脚分布如图2所示。
图2AT89C52单片机引脚分布图
3.3时钟芯片DS1302接口设计与性能分析
DS1302是Dallas公司生产的一种实时时钟芯片。
它与单片机连起来,向单片机传送年、月、日、时、分、秒的功能。
它还拥有用于主电源和备份电源的双电源引脚,在没有主电源的情况下,也能保持时钟的连续运行。
另外,它还能提供31字节的用于高速数据暂存的RAM。
表1DS1302引脚功能
X1,X2
32.768kHz晶振引脚
GND
地线
RST
复位端
I/O
数据输入/输出端口
SCLK
串行时钟端口
VCC1
慢速充电引脚
VCC2
电源引脚
图3内部链接
DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器。
DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。
其工作过程可概括为:
首先系统RST引脚驱动至高电平,然后在SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。
DS1302的引脚排列如表1及内部结构图如图3所示。
3.4DS1302接口电路设计
1、时钟芯片DS1302的接口电路及工作原理:
图4DS1302的时钟模块
图4为DS1302的接口电路,其中Vcc1为后备电源,Vcc2为主电源。
VCC1为提供低功率的电池备份。
VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。
此外,DS1302由VCC1或VCC2两者中较大者供。
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图5所示。
表-1为DS1302的控制字,此控制字的位7必须置1,若为0则不能对DS1302进行读写数据。
对于位6,若对时间进行读/写时,CK=0,对程序进行读/写时RAM=1。
位1至位5指操作单元的地址。
位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0。
控制字节总是从最低位开始输入/输出的。
表-2为DS1302的日历、时间寄存器内容:
“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
2、DS1302的控制字
DS1302的控制字如表2所示。
控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为1表示进行读操作,为0表示进行写操作。
[5]控制字节总是从最低位开始输出。
表2DS1302的控制字格式
1
RAM/CK
A4
A3
A2
A1
A0
RD/WR
3、数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
如图5所示:
图5DS1302读/写时序图
4、DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3。
表3DS1302的日历、时间寄存器
写寄存器
读寄存器
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
80H
81H
CH
10秒
秒
82H
83H
10分
分
84H
85H
12/24
0
10
时
时
AM/PM
86H
87H
0
0
10
日
日
8A
8B
0
0
0
0
0
星期
8C
8D
10年
年
8EH
8FH
WP
0
0
0
0
0
0
0
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
3.5按键模块设计
本系统采用了5个按键,其中4个采用独立按键,因为这种方法查询方便,程序简单,可节省CPU资源,按键电路如图6所示,4个独立按键分别与AT89C52的P3.3、P3.4、P3.5、P3.6接口相
图6按键电路
对图6中的各个按键做一下说明:
set键:
按下SET键进入时间校准状态,按一下显示时间的调整,按两下显示年月日的调整;
up键:
当按下set键后,up进行set选定项(如:
分钟)的加操作;
down键:
当按下set键后,down进行set选定项(如:
分钟)的减操作;
chose键:
当按下set键后,chose就会对年月日,时分秒的某一位进行准确的调整;
3.6复位电路模块的设计
当AT89C52单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行了复位操作。
若ST持续为高电平,单片机就处于循环复位,从而无法执行程序。
而本系统选用的是12MHz的晶振,因此一个机器周期为1μs,那么复位脉冲宽度最小应为2μs。
在实际应用系统中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必须有足够的余量。
如图7位晶振电路所示:
本设计采用上电且开关复位电路,如图8所示上电后,由于电容充电,使RST持续一段高电平时间。
当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。
通常选择C=10~30μF,本设计采用的电容值为20μF的电容和电阻为100欧的电阻。
图7晶振电路
图8复位电路
4软件的设计
4.1主程序运行流程图及说明
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。
因此,软件设计在微机控制系统设计中占重要地位。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字滤波等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制实现想要的结果。
为了实现本次设计的任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。
所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。
模块程序设计法对本设计完成的好处是:
单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用;模块程序分割任务和利用已有程序,来简化的完成设计要求。
本系统软件采用模块化结构,主要由主程序﹑DS1302子程序及键盘控制子程序构成。
如图9为主程序流程图所示:
是
否
是
是
否
否
图9主程序流程图
4.2时钟芯片DS1302的软件设计及流程图
本系统的时间显示来源于DS1302对单片机的执行,二者的连接需要3根线,CLK(7)、I/O(6)、RST(5),具体连接图见系统硬件设计原理图如图10所示:
图10单片机与DS1302的连接
进入主程序后,DS1302先进行初始化设置,若串行口有数据,最后则调用函数从日历时钟芯片获取日历时钟信息,调用显示函数显示日历时钟信息显示出来,重复进行。
这部分包括对DS1302某个单元写、读DS1302某个单元的内容和对DS1302设定时间。
在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。
若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。
读、写DS1302的数据流程图如图11所示:
图11读写DS1302数据流程图
其中DS1302的读写程序见附录1。
4.3按键控制及流程图
当set键按下时,秒位置闪烁。
每次按下set键按下时,分别在秒、分、时、日、月、年处闪烁。
当set键再次按下时,加一或减一键有效并在相应位置加一或减一。
比如选定分位,按下增大键,调整显示分位的增加,当秒增加至满60后,自动清零,同时调节一
次送至下一位显示,显示位置重新回到调节处;当按下减小键时,调整显示位秒的减小,当秒减至0后,自动跳转为59,同时调节一次送至下一位显示,显示位置重新回到调节处;年月日时分的调节只需要按chose键进行选择调节的位置,调节方法一样。
键盘加一减一流程图如图12所示
图12键盘加一减一操作流程图
4.41602LCD操作说明及流程图
显示主要是通过从芯片中读入程序,分别对秒、分、时、星期、日、月、年以及闹钟
进行显示,并且通过键盘的操作,对时间进行加减操作,使时间更新显示。
进入主函数后,执行完1602LCD的初始化函数,然后用write_com(0x80)指令,命令先将数据指针定位在第一行第一个字处,然后写入第一行要显示的数据,在每个字之间简短的延时;在第二行重新定位数据指针write_com(0x80+0x40),将数据指针定位在第二行,然后再将第二行所要显示的数据写入,继而显示。
1602LCD的写命令操作和写数据操作分别用两个独立的函数来完成,函数内部唯一的区别就是液晶数据命令选择端的电平。
写命令函数解释如下:
voidwrite_com(ucharcom)//向液晶写入命令
{
rs=0;//选择写命令模式
lcden=0;//使能端置零
P0=com;//将要写的命令送到数据总线上
delay(3);//延时,以待数据稳定
lcden=1;//给使能端一个高脉冲
delay(3);//延时
lcden=0;//将使能端置零,以完成高脉冲
}
写数据函数操作如下:
voidwrite_date(uchardate)//向液晶写入数据
{
rs=1;//选择写数据模式
lcden=0;//使能端置零
P0=date;//将要写的数据送到数据总线上
delay(3);//延时,以待数据稳定
lcden=1;//给使能端一个高脉冲
delay(3);//延时
lcden=0;//将使能端置零,以完成高脉冲
}
1602LCD的初始化如下:
write_com(0x38);//1602液晶初始化
write_com(0x0c);//开光标闪烁:
0x0f,关光标闪烁:
0x0c
write_com(0x06);//写一个字符后,地址指针自动加1
write_com(0x01);//显示清0,数据指针清0
1602LCD的流程图如图13所示。
1602初始化
读取数据第一行显示
读取数据第二行显示
图131602LCD的流程图
5系统的仿真与结果分析
5.1用Proteus仿真及结果
Proteus是是英国LabCenterElectronics公司出版的一个能很好的仿真单片机的软件。
所以,仿真软件的选择就是Proteus。
由于在元件库的版本比较低,没有1602LCD这个元件,所以,采用共阳极和共阴极断码器7SEG-MPX-CA和7SEG-MPX-CC代替1602LCD来仿真。
所以,此时总程序见附录2。
当按下set键时,系统进入另一模式,系统最先进入的是时分秒的调整,按下chose进入具体的某一位(时或分或秒)的调整。
继续按set键,进入年月日的调整,按下chose,进
入某一位(年或月或日)的调整。
如图14所示为Proteus仿真显示
图14用Proteus仿真的结果显示时间和日期
仿真开始时输入的是电脑的时间,如图15所示:
图15仿真开始时输入电脑的时间
按下set键,调整时间的仿真如图16所示:
图16仿真调整时间
5.2实物的制作
由于在制作实物的过程中用断码器7SEG-MPX-CA和7SEG-MPX-CC的引脚比较多,而且显示为闪动的,可能实物和仿真对比误差较大,所以,实物的制作还是采用1602LCD作为显示器。
如图17为制作好的日历时钟。
图17制作好的日历时钟电路板
5.3误差分析
在实际的制作中有很大的影响因素,比如电容的损坏、电源的稳定性、晶振的稳定时间或者复位的可靠性等各方面因素,都可能导致制作实物和用Proteus仿真出来的结果会有一定的差距。
并且仿真图就是一个模拟用的,和实际效果是有点差别的,仿真中没有晶振电路和复位电路都是可以工作的,焊接是按照原理图来的而不是仿真.所以,在实际制作过程中要留一些余量。
总结
本设计硬件电路较简单,所用器件较少,电路中使用AT89C52单片机、DS1302时钟显示芯片等主要器件,实现计时、校时的功能。
在整个设计过程中,硬件方面主要设计了AT89C52单片机的最小系统、DS1302接口电路;软件方面借助各个渠道的资料。
系统的调试主要是通过一块AT89C52开发板,再借助于Proteus以及少许自己搭建的外围电路实现的;再此过程中,分步调试时显示出了日期、时间及闹钟,集中调试时没有达到预期效果。
本次设计的万日历时钟具有读显示直观、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
在对芯片的管脚功能和用法有充分的了解后,根据设计要求设计硬件电路,包括单片机控制电路、时钟
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 at89c52 实时 日历 时钟 系统 设计 本科毕业 论文