单片机电子万年历程序设计.docx
《单片机电子万年历程序设计.docx》由会员分享,可在线阅读,更多相关《单片机电子万年历程序设计.docx(71页珍藏版)》请在冰豆网上搜索。
单片机电子万年历程序设计
单片机电子万年历程序设计
摘要:
电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。
它可以对年、月、
日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,
误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,功
耗小,能在3V的低压工作,电压可选用3~5V电压供电。
本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。
在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。
在硬件与软件设计时,没有良好的基础知
识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。
在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写。
万年历的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89C52
单片机,LED显示电路,以及调时按键电路等组成。
在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。
显示器使用2
片7SEG-MPX8-C和一片7SEG-MPX4-CA7SEG-MPX8-C是一种八个共阳二极管显示器,7SEG-MPX4-CA1一种四个共阳二极管显示器。
为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。
74HC164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。
程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。
所有程序编写完成后,在wave软件中进行调试,
确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。
关键词:
时钟电钟;DS1302DS18B20动态扫描;单片机
Abstract
E-calendardaytimeisaverywiderangeoftools,increasinglypopularinmodernsociety.Itcanbeyear,month,day,Sunday,hours,minutes,secondsfortime,butalsohasaleapyearcompensationtoavarietyoffunctions,andtheDS1302'slonglife,smallerror.Forthedigitalelectroniccalendarusinganintuitivedigitaldisplaycansimultaneouslydisplayyear,month,day,Sunday,hours,minutes,seconds,andtemperatureandotherinformation,butalsoatime-calibrationandother
functions.ThecircuitusesAT89S52microcontrollerasthecore,powerconsumption,
low-voltageworkin3V,thevoltagecanchoose3〜5Vvoltagesupply.
Thedesignisbasedon51seriesofmicrocontrollerstothedesignofelectroniccalendar,youcandisplaydateinformationonwhentheminutesandseconds,andweeks,withadjustabledateandtimefunctions.AtthesametimeinthedesignofthetheoreticalbasisoftheMCUandperipheralexpansionofknowledgeofthemorecomprehensivepreparation.Thehardwareandsoftwaredesign,thereisnogoodbasic
knowledgeandpracticalexperieneewillbegreatlylimited,eachfeatureisrequired
toachievethekindofhardware,procedures,howtowrite,howtoimplementsuchalgorithms,thereisnocertainfoundationcannotbegoodimplementation.Foundduringthepreparationprocesstotheexistingknowledgetocompletethepreparationofthetaskalonedifficult,
Inthehelpofteachersandstudentstocompletetheprogrampartofthepreparation.Calendarofthedesignprocessinhardwareandsoftwaretosynchronizethedesign.
HardwaremainlybytheAT89C52microcontroller,LEDdisplaycircuit,andthetunecomposedofthecircuitwhenthebutton.IntheSCMchoiceIusedtheAT89C52microcontroller,whichissuitableformanyofthemorecomplexcontrolapplications.
Monitortheuseoftwo7SEG-MPX8-CAanda7SEG-MPX4-CA.7SEG-MPX8-CAisatotalofeight-yangdiodedisplay,7SEG-MPX4-CAisatotaloffour-yangdiodedisplay.Inordertomoreeasilycontrolthethreemonitors,Iusethree74HC164todrive.
74HC164isan8-bitedge-triggeredshiftregister,serialinputdata,andparalleloutput.Thesoftwareincludescalendarprogram,timetoadjustprocedures,turnthelunarcalendarprograms,displayprograms.ProgramswritteninassemblyIanguageusedinordertomoreeasilyadjustthetimeandtherealizationofthelunarcalendardisplay.Allprogrammingiscomplete,thewavesoftwaredebugging,makesurethatnoproblems,intheProteussoftwarewithinamicrocontrollerembeddedinthesimulation.Thefinaloveralltheteachertohelpstudents,aswellastheirowneffortstocompletethedesignoftheelectroniccalendar.
Keywords:
Clockelectricclock:
DS1302DS18B20:
Dynamicscan:
sem
一、设计要求与方案论证,
11设计要求
1.2系统基本方案选择和论证
1.2.1
1.2.2
1.2.3
1.2.4
单片机芯片的选择方案和论证显示模块选择方案和论证:
时钟芯片的选择方案和论证温度传感器的选择方案与论证
2.系统的硬件设计与实现
2.1电路设计框图,,,,,,,,
2.2系统硬件概述,,,,,,,,2.3主要单元电路的设计
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
单片机主控制模块的设计”时钟电路模块的设计,,,,,,,,,,温度采集模块设计,,,,,,,,,,,,,,电路原理及说明,,,,,,,,,,,,,,,,,显示模块的设计,,,,,,,,,,,,,,,,,,
、系统的软件设计,,,,,,,,,,,,,,,,,,,,,
3.1程序流程框图,,,,,,,,,,,,,,,,,,,,,,,,,,
3.2子程序的设计,,,,,,,,,,,,,,,,,,,,,,,,,
3.2.1DS18B20温度子程序,,,,,,,,,,
3.2.2读、写DS1302子程序,,,,,,,四.
4.1
4.2
4.3
指标测,”,,””,”测试仪器,”,””,硬件测试,,,,,,,,,,软件测试,,,,,,,,,,
4.4测试结果分析与结论,,,,,,,,
4.4.1测试结果分析,,,,,,,,,,,,,,,
4.4.2测试结论,,,,,,,,,,,,,,,,,,,,,,,五作品总结士
―'*-'IL口I-1丿Hi、—口jjjjjjjjjjjjjjjjjjjjjjjjjj/、、致谢!
词,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,参考文献附录一:
附录二:
附录三:
系统电路图,,,,,,,,,,,,,,”系统程序清单,,,,,,,,,,,,系统使用说明书,,,,,,,,
7
8
9
9
9
9
10
11
11
11
11
12
12
12
12
12
13
14
15
40
一、设计要求与方案论证
1.1设计要求:
(1)基本要求
1具有年、月、日、星期、时、分、秒等功能;
2时间与阴、阳历能够自动关联;
3具有温度计功能;
4具备年、月、日、星期、时、分、秒校准功能;
(2)创新要求
1具有上、下课响铃功能;
2具有防御报警功能;
1.2系统基本方案选择和论证
1.2.1单片机芯片的选择方案和论证:
万案一:
采用89C51芯片作为硬件核心,采用FlashROM内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在
线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51
系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有
在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
所以选择采用AT89S52作为主控制系统.
1.2.2显示模块选择方案和论证:
方案一:
采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏.
万案一:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示
采用LED数码管动态扫描丄ED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
所以采用了LED数码管作为显示。
1.2.3时钟芯片的选择方案和论证:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、
分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM故为数据暂存
区,工作电压2.5V〜5.5V范围内,2.5V时耗电小于300nA.
1.2.4温度传感器的选择方案与论证
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,禾U用热敏电阻
阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。
。
此设计
方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另
外,数字式温度传感器还具有测量精度高、测量范围广等优点。
1.3电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用AT89S52作为主控制系统;DS1302提供时钟;数字式温度传感器;LED数码管动态扫描作为显示。
2.系统的硬件设计与实现
2.1电路设计框图
2.2系统硬件概述
本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM勺实时时钟电路,它可以
对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V〜5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM
数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;
温度的采集由DS18B20构成;显示部份由21个数码管,74IS138、74ls47译码器构成。
使
用动态扫描显示方式对数字的显示。
2.3主要单元电路的设计
2.3.1单片机主控制模块的设计
AT89S52单片机为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引脚为电源端.如图-1所示
图-1主控制系统
2.3.2时钟电路模块的设计
图-2示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当
Vcc2大于VCC1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768KHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/
命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为
高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RSTS
置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于
2.5V之前,RST必须保持低电平。
中有在SCLK为低电平时,才能将RST置为高电平,I/O
为串行数据输入端(双向)。
SCLK始终是输入端。
图-2DS1302的引脚图
2.3.3温度采集模块设计
如图-3所示。
采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,
电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20
的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。
VCC
PO.Tr
VCC
I/O
VSS
~DS18B20
图-3DS18B20温度采集
2.3.4电路原理及说明
(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时,写保护
位防止对任一寄存器的写操作。
⑵DS1302的控制字节
DS1302的控制字如表-1所示。
控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM
数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为
1表示进行读操作,控制字节总是从最低位开始输出
图-4DS1302读/写时序图
⑷DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD
码形式,其日历、时间寄存器及其控制字见表-2。
写奇存
器d
读寄存
器审
Bit7^
Bit6r
Bits*1
Bit4v
Bit^P
Bit2
BitOip
SIHP
10杪Q
杪a
10牛
如
8斗Ela
的氐
12/禹a
2
时2
g
1U日a
曰卡
2
2
g月-:
月J
沁m
0-T
0“
3
呈期J
SCH-P
SHHp
10■■手J
年J
WP*3
2
g
表-2DS1302的日历、时间寄存器
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态
为一个8位的字节,其命令控制字为COH〜FDH,其中奇数为读操作,偶数为写操作;另
一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命
令控制字为FEH(写卜FFH(读)。
2.3.5显示模块的设计
如图—5所示,采用动态扫描显示,由21个数码管,3-8译码器74LS138接1K限流电阻,再接8550三极管接到共阳数码管的CoM端作为选通位码,每位选择相应的列。
74IS47接240Q限流电阻,再接共行的LED数码管的断码。
d
C3
.«r1
mBBBEi
2400
IBilBBI
Mia*?
VJi
—rd
1
-
£■
L
d
r
V
d
z
I
i"
i
L
d
«■
I1
0
4
:
J
T~
(
u
L
J
L
C
9
'
mi*
f.rtacEI塾&E1
XXX
图-5LED动态扫描显示
三、系统的软件设计
3.1程序流程框图
图-A
主程序流程图
图-B计算阳历程序流程图
开始
图-C时间调整程序流程图
图-D阴历程序流程图
3.2子程序的设计
3.2.1DS18B20温度子程序
C0NFIG12EQU7FH
DIVAB
LCALLWRITE111
TEMPHEQU21H
MOVA,B
MOVA,#44H
TEMPLEQU20H
MOVB,#0AH
LCALLWRITE111
REG2EQU22H
DIVAB
LCALLDL1MS
REG3EQU23H
SWAPA
LCALLRESET
REG4EQU24H
ORLA,B
MOVA,#0CCH
DATEQUP0.7
MOV10H,A
LCALLWRITE111
TOUTOU:
RET
MOVA,#0BEH
LCALLCHUSHI
CHUSHI:
LCALLWRITE111
LCALLRDTEMP
LCALLRESET
LCALLERAD111
MOVA,TEMPL
MOVA,#0CCH
MOVTEMPL,A
ANLA,#11110000B
LCALLWRITE111
LCALLERAD111
MOVTEMPL,A
MOVA,#4EH
MOVTEMPH,A
MOVA,TEMPH
LCALLWRITE111
RET
ANLA,#00000111B
MOVA,#CONFIG12
RESET:
ORLA,TEMPL
LCALLWRITE111
LA:
SWAPA
RET
SETBDAT
MOV25H,A
RDTEMP:
MOV52H,#200
MOVA,25H
LCALLRESET
LB:
MOVB,#64H
MOVA,#0CCH
CLRDAT