基于51单片机的电子万年历.docx
- 文档编号:7290033
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:21
- 大小:241.58KB
基于51单片机的电子万年历.docx
《基于51单片机的电子万年历.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子万年历.docx(21页珍藏版)》请在冰豆网上搜索。
基于51单片机的电子万年历
基于51单片机的电子万年历
摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。
该电路采用AT89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
万年历的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89C52单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路以及串口下载电路等组成。
在单片机的选择上使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。
显示器使用液晶LCD1602。
软件方面主要包括日历程序、液晶驱动程序,显示程序等。
程序采用汇编语言编写。
所有程序编写完成后,在KeilC51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
关键词单片机;DS1302;电子万年历
目录
1.设计要求与方案论证3
1.1 设计要求:
3
1.2系统基本方案选择和论证3
1.2.1单片机芯片的选择方案和论证:
3
1.2.2显示模块选择方案和论证:
3
1.2.3时钟芯片的选择方案和论证:
4
1.3电路设计最终方案决定4
2.系统的硬件设计与实现4
2.1电路设计框图4
2.2系统硬件概述5
2.3主要单元电路的设计5
2.3.1单片机主控制模块的设计5
2.3.2时钟电路模块的设计6
2.3.3电路原理及说明7
2.3.4显示模块电路9
3.系统的软件设计10
3.1程序流程框图10
3.2子程序的设计10
读、写DS1302子程序10
4.软件测试及分析13
4.1软件测试13
4.2分析与结论13
4.2.1分析13
4.2.2结论13
5.总结与体会14
参考文献15
附录1原理图和仿真图16
附录2仿真程序清单17
1.设计要求与方案论证
1.1 设计要求:
1具有年、月、日、星期、时、分、秒等功能;
2具备年、月、日、星期、时、分、秒校准功能;
1.2系统基本方案选择和论证
1.2.1单片机芯片的选择方案和论证:
方案一:
采用AT89S51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:
采用AT89C52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
所以选择采用AT89C52作为主控制系统。
1.2.2显示模块选择方案和论证:
方案一:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示字符比较适合,但对于电子万年历需要的数码管位数多,编程麻烦,且不稳定,存在抖动现象。
方案二:
采用LCD1602液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,易于编程,稳定可靠。
通过对比,本课程设计采用LCD1602作为显示模块。
1.2.3时钟芯片的选择方案和论证:
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
1.3电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用AT89C52作为主控制系统;DS1302提供时钟;LCD1602作为显示。
2.系统的硬件设计与实现
2.1电路设计框图
图2-1系统框图
2.2系统硬件概述
本电路是由AT89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部分由LCD1602显示,精度高,且显示稳定。
2.3主要单元电路的设计
2.3.1单片机主控制模块的设计
AT89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.如图2-2所示
图2-2主控制系统
2.3.2时钟电路模块的设计
图2-3示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.7、68KHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
I/O为串行数据输入端(双向)。
SCLK始终是输入端。
图2-3DS1302的引脚图
2.3.3电路原理及说明
(1)时钟芯片DS1302的工作原理:
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。
图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。
对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。
位1至位5指操作单元的地址。
位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。
控制字节总是从最低位开始输入/输出的。
表6为DS1302的日历、时间寄存器内容:
“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
(2)DS1302的控制字节
DS1302的控制字如表-1所示。
控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出
RAMRD
1A4A3A2A1A0
/CK/WR
表1DS1302的控制字格式
(3)数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
如下图2-4所示
图2-4DS1302读/写时序图
(4)DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2。
表2DS1302的日历、时间寄存器
写寄存器
读寄存器
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日
日
88H
89H
0
0
0
10月
月
8AH
8BH
0
0
0
0
0
星期
8CH
8DH
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(读)。
2.3.4显示模块电路
图2-5LCD显示电路
2.3.5串口下载电路
图2-6串口下载电路
3.系统的软件设计
3.1程序流程框图
图3-1主程序流程图
3.2子程序的设计
读、写DS1302子程序DS1302_WRB:
MOV40H,#8MOVA,BRRCAMOVB,AMOVDS1302_IO,CSETBDS1302_CLKCLRDS1302_CLKDJNZ40H,LPWRETDS1302_RDB:
MOV40H,#8LPR:
MOVC,DS1302_IORRCASETBDS1302_CLKCLRDS1302_CLKDJNZ40H,LPRRETDS1302_READSEC:
CLRDS1302_RSTCLRDS1302_CLKSETBDS1302_RSTMOVB,#81HCALLDS1302_WRBCALLDS1302_RDBMOV30H,ASETBDS1302_CLKCLRDS1302_RSTRET读、写DS1302子程序LCD1602_WRC:
CLRLCD1602_RWCLRLCD1602_RSCLRLCD1602_RWMOVP0,ACALLDELAYSETBLCD1602_ECALLDELAYCLRLCD1602_ECALLDELAYRETLCD1602_INIT:
MOVA,#01HCALLLCD1602_WRCMOVA,#38HCALLLCD1602_WRCMOVA,#08HCALLLCD1602_WRCMOVA,#06HCALLLCD1602_WRCMOVA,#0cHCALLLCD1602_WRCRETLCD1602_WRD:
SETBLCD1602_RSCLRLCD1602_RWCLRLCD1602_EMOVP0,ACALLDELAYSETBLCD1602_ECALLDELAYCLRLCD1602_ERET
4.软件测试及分析
4.1软件测试
电子万年历是多功能的数字显示仪器。
由于功能很多,所以对于它的程序也较为复杂,因此本次设计采用简化模型,即只显示年月日,时分秒。
但在程序调试时出现了相对较多的错误。
最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。
4.2分析与结论4.2.1分析
(1)显示的数据秒并没有变化,原因是没有启动定时器,不断的读取DS1302时钟芯片寄存器中的数据,并显示才能实现所需要的功能,实时显示年、月、日、星期、分钟、小时、秒等基本功能来满足系统的需求。
(2)调整时间后应该先去掉写保护,如果存在写保护,那么在初始化写入初始时间时,是写不进去初始化的时间的。
因而会看见显示的时间并不随着设置的初始化的值变化而变化,甚至我们看见的时间并不按着一秒一秒的增加。
(3)液晶显示的时候,由于采用的并行总线,显然传输速度快,但是数据端口必须接1K的排阻,以实现驱动,实践证明,没有排阻的时候,液晶显示就会不稳定,甚至出现乱码。
因此,排阻的作用很大。
写程序时要严格按照时序就行,否则,也不会显示。
4.2.2结论
图4-1仿真结果
经过多次反复修改程序,对电路各模块的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对所学的知识得到很大的提高与巩固.
5.总结与体会
通过本次课程设计,我对单片机有了更深刻的认识,基本掌握了与它相关的操作。
另外,这次设计在使我已学的理论知识得到全面的巩固的同时,也大大提高了我对知识的应用能力。
总之,每一次的课程设计都是一次挑战,也是一次提高,每一次都会有问题,每一次也有收获,在挑战中体验,在体验中总结,在总结中进步。
这次设计也使我感到了单片机的重要性。
本设计中采用的是汇编语言,比较难以掌握,是一种低级语言,在编写时还要考虑单片机内部的工作。
如果你一旦掌握了,对嵌入式系统就会很容易的实现,运用起来也就游刃有余,能帮助我们解决更多的问题,我们也会很容易的了解。
参考文献
[1]李全钊,单片机原理及接口技术(第二版),北京,高等教育出版社,2009年01月
[2]杨子文,单片机原理及应用,西安,西安电子科技大学出版社,2006年
[3]DS1302中文资料
[4]LCD1602中文资料
[5]徐爱均,单片机原理实用教程——基于Proteus虚拟仿真,北京,电子工业出版社,2009年
[6]AltiumDesigner6.9实用教程
附录1原理图和仿真图
图1原理图
图2仿真图
附录2仿真程序清单
S1302_IOEQUP1.0
S1302_CLKEQUP1.1
DS1302_RSTEQUP1.2
LCD1602_RSEQUP2.0
LCD1602_RWEQUP2.1
LCD1602_EEQUP2.2
ORG0000H
JMPMAIN
ORG0040H
MAIN:
MOV30H,#01H
MOV31H,#02H
MOV32H,#03H
MOV33H,#04H
MOV34H,#05H
MOV35H,#06H
MOV36H,#07H
CALLLCD1602_INIT
LOOP1:
CALLDS1302_DISPLAYSEC
CALLDS1302_DISPLAYMIN
CALLDS1302_DISPLAYHOUR
CALLDS1302_DISPLAYYEAR
CALLDS1302_DISPLAYMONTH
CALLDS1302_DISPLAYDAY
CALLDS1302_DISPLAYWEEK
SJMPLOOP1
DS1302_WRB:
MOV40H,#8
LPW:
MOVA,B
RRCA
MOVB,A
MOVDS1302_IO,C
SETBDS1302_CLK
CLRDS1302_CLK
DJNZ40H,LPW
RET
DS1302_RDB:
MOV40H,#8
LPR:
MOVC,DS1302_IO
RRCA
SETBDS1302_CLK
CLRDS1302_CLK
DJNZ40H,LPR
RET
DS1302_READSEC:
CLRDS1302_RST
CLRDS1302_CLK
SETBDS1302_RST
MOVB,#81H
CALLDS1302_WRB
CALLDS1302_RDB
MOV30H,A
SETBDS1302_CLK
CLRDS1302_RST
RET
DS1302_READMIN:
CLRDS1302_RST
CLRDS1302_CLK
SETBDS1302_RST
MOVB,#83H
LCALLDS1302_WRB
LCALLDS1302_RDB
MOV31H,A
SETBDS1302_CLK
CLRDS1302_RST
RET
DS1302_READHOUR:
CLRDS1302_RST
CLRDS1302_CLK
SETBDS1302_RST
MOVB,#85H
LCALLDS1302_WRB
LCALLDS1302_RDB
MOV32H,A
SETBDS1302_CLK
CLRDS1302_RST
RET
DS1302_READDAY:
CLRDS1302_RST
CLRDS1302_CLK
SETBDS1302_RST
MOVB,#87H
LCALLDS1302_WRB
LCALLDS1302_RDB
MOV33H,A
SETBDS1302_CLK
CLRDS1302_RST
RET
DS1302_READMONTH:
CLRDS1302_RST
CLRDS1302_CLK
SETBDS1302_RST
MOVB,#89H
LCALLDS1302_WRB
LCALLDS1302_RDB
MOV34H,A
SETBDS1302_CLK
CLRDS1302_RST
RET
DS1302_READWEEK:
CLRDS1302_RST
CLRDS1302_CLK
SETBDS1302_RST
MOVB,#8BH
LCALLDS1302_WRB
LCALLDS1302_RDB
MOV35H,A
SETBDS1302_CLK
CLRDS1302_RST
RET
DS1302_READYEAR:
CLRDS1302_RST
CLRDS1302_CLK
SETBDS1302_RST
MOVB,#8DH
LCALLDS1302_WRB
LCALLDS1302_RDB
MOV36H,A
SETBDS1302_CLK
CLRDS1302_RST
RET
DS1302_DISPLAYSEC:
CALLDS1302_READSEC
MOVA,#0C6H
CALLLCD1602_WRC
MOVA,30H
SWAPA
ANLA,#07H
ADDA,#30H
CALLLCD1602_WRD
MOVA,30H
ANLA,#0FH
ADDA,#30H
CALLLCD1602_WRD
RET
DS1302_DISPLAYMIN:
CALLDS1302_READMIN
MOVA,#0C3H
CALLLCD1602_WRC
MOVA,31H
SWAPA
ANLA,#07H
ADDA,#30H
CALLLCD1602_WRD
MOVA,#0C4H
CALLLCD1602_WRC
MOVA,31H
ANLA,#0FH
ADDA,#30H
CALLLCD1602_WRD
MOVA,#0C5H
CALLLCD1602_WRC
MOVA,#3AH
CALLLCD1602_WRD
RET
DS1302_DISPLAYHOUR:
CALLDS1302_READHOUR
MOVA,#0C0H
CALLLCD1602_WRC
MOVA,32H
SWAPA
ANLA,#07H
ADDA,#30H
CALLLCD1602_WRD
MOVA,#0C1H
CALLLCD1602_WRC
MOVA,32H
ANLA,#0FH
ADDA,#30H
CALLLCD1602_WRD
MOVA,#0C2H
CALLLCD1602_WRC
MOVA,#3AH
CALLLCD1602_WRD
RET
DS1302_DISPLAYYEAR:
CALLDS1302_READYEAR
MOVA,#80H
CALLLCD1602_WRC
MOVA,#32H
CALLLCD1602_WRD
MOVA,#30H
CALLLCD1602_WRD
MOVA,#82H
CALLLCD1602_WRC
MOVA,36H
SWAPA
ANLA,#07H
ADDA,#30H
CALLLCD1602_WRD
MOVA,#83H
CALLLCD1602_WRC
MOVA,36H
ANLA,#0FH
ADDA,#30H
CALLLCD1602_WRD
MOVA,#84H
CALLLCD1602_WRC
MOVA,#2DH
CALLLCD1602_WRD
RET
DS1302_DISPLAYMONTH:
CALLDS1302_READMONTH
MOVA,#85H
MOVA,34H
SWAPA
ANLA,#07H
ADDA,#30H
CALLLCD1602_WRD
MOVA,#86H
CALLLCD1602_WRC
MOVA,34H
ANLA,#0FH
ADDA,#30H
CALLLCD1602_WRD
MOVA,#87H
CALLLCD1602_WRC
MOVA,#2DH
CALLLCD1602_WRD
RET
DS1302_DISPLAYDAY:
CALLDS1302_READDAY
MOVA,#88H
CALLLC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电子 万年历
![提示](https://static.bdocx.com/images/bang_tan.gif)