单片机电子万年历系统的设计与研究.docx
- 文档编号:5843482
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:49
- 大小:504.22KB
单片机电子万年历系统的设计与研究.docx
《单片机电子万年历系统的设计与研究.docx》由会员分享,可在线阅读,更多相关《单片机电子万年历系统的设计与研究.docx(49页珍藏版)》请在冰豆网上搜索。
单片机电子万年历系统的设计与研究
引言
电子时钟已成为人们日常生活中必不可少的物品,广泛用于家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。
随着电子技术的发展,人们已不再满足于钟表原先简单的计时功能,希望出现一些新的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便。
因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具有很大的实用价值。
由于数字集成电路技术的发展和采用了先进的石英技术,现代电子时钟具有走时准确、性能稳定、制作维修简单等优点,弥补了传统钟表的许多不足之处。
我们利用单片机技术设计制作的电子万年历,可以很方便的由软件编程进行功能的调整和改进,使其在能够准确显示年、月、日、时间、星期的同时,还能具有很多其他的功能。
如设定闹钟、重要节日的显示等,有一定的新颖性和实用性,同时体积小、计时准确,使用也更为方便,具有技术更新周期短、成本低、开放灵活等优点。
单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。
由于单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。
单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。
其应用于仪器仪表中显得更为优越。
以单片机制成的电子时钟具有计时准确,功耗低的优点。
从而得到了各界领域的广泛应用。
单片机正处在微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速,强运算能力,寻址范围大以及小型廉价方面发展。
单片机的发展推动了应用系统的发展,应用系统的发展又反过来对单片机提出了更高要求,从而促进单片机的发展。
单片机正向着功能更强,速度更快,功耗更低,辐射更小的方向发展。
随着集成度的不断提高,把众多的外围功能器件集成在片内已经具备了充分的条件。
这也是单片机以后发展的重要趋势。
AT89S52是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含8KB的可反复檫写的程序存储器和256B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89S52单片机可灵活应用于各种控制领域。
美国DALLAS公司推出的低功耗实时时钟芯片DS12C887。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS12C887的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。
系统由主控制器AT89S52、时钟电路DS12C887、数字式温度传感器DS18B20、点阵式LCD12863显示电路、按键电路等部分构成,能实现时钟日历显示,能进行时、分、秒的显示,重要节日的显示等功能。
1设计要求与方案论证
1.1设计要求
1具备年、月、日、星期、时、分、秒等功能;
2时间与阳历能够自动关联;
3具备温度计量与重要节日显示功能;
4具备年、月、日、星期、时、分、秒校准功能。
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数码管不能显示汉字且连线复杂,所以此设计不采用LED数码管作为显示。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字也比较适合,但线路连接相当复杂,所以也不用点阵式数码管作为显示。
方案三:
采用点阵式LCD12864显示,点阵式LCD12864的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,且线路连接方便,所以在此设计中采用点阵式LCD12864。
1.2.3时钟芯片的选择方案和论证
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:
采用DS12C887时钟芯片实现时钟,DS12C887芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300Na。
1.2.4温度传感器的选择方案与论证
方案一:
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。
此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
方案二:
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
1.3电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用AT89S52作为主控制系统;时钟芯片DS12C887提供时钟计数;点阵式LCD12864为显示。
2系统的硬件设计与实现
2.1电路设计框图
AT89S52
主控制模块
图2.1电路设计框图
2.2系统硬件概述
本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS12887提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS12C887内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由液晶显示屏12864构成。
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线都能独立地作输出或输入。
单片机的最小系统如图2.2所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。
图2.2主控制系统
2.3.2时钟电路模块的设计
图2.3示出DS12887的引脚排列,GND、VCC:
直流电源,其中VCC接+5V输入,GND接地,当VCC输入为+5V时,用户可以访问DS12C887内RAM中的数据,并可对其进行读、写操作;当VCC的输入小于+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯片内的时间信息;当VCC的输入小于+3V时,DS12C887会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。
MOT是模式选择脚,接地选用Intel模式。
AD0~AD7是复用地址数据总线,与单片机P0口连接。
CS是片选输入,低电平有效。
图2.3DS12C887的引脚图
2.3.3温度采集模块设计
如图2.4所示。
采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P3.1口与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。
图2.4DS18B20温度采集
2.3.4电路原理及说明
(1)时钟芯片DS12C887的工作原理
DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
(2)DS12C88的引脚功能
GND、VCC:
直流电源,其中VCC接+5V输入,GND接地;MOT:
模式选择脚,接GND选用的是Intel模式;AD0~AD7:
复用地址数据总线,与P0口相连接;IRQ:
中断请求输入,低电平有效,与外部中断INT0连接;DS/RD:
数据选择或读输入脚,与P17口连接;R/W:
读/写输入端,与P16口相连接;AS:
地址选通输入脚,与P15口连接;CS:
片选输入,低电平有效,与P14口连接.
(3)DS12C887的存储功能
表2.1DS12C887的存储功能
地址
功能
取值范围十进制数
取值范围
二进制
BCD码
0
秒
0~59
00~3B
00~59
1
秒闹钟
0~59
00~3B
00~59
2
分
0~59
00~3B
00~59
3
分闹钟
0~59
00~3B
00~59
4
12小时模式
0~12
01~0CAM,
81~8CPM
01~12AM,
81~92PM
24小时模式
0~23
00~17
00~23
5
时闹钟,12小时制
1~12
01~0CAM,
81~8CPM
01~12AM,
81~92PM
时闹钟,24小时制
0~23
00~17
00~23
6
星期几(星期天=1)
1~7
01~07
01~07
7
日
1~31
01~1F
01~31
8
月
1~12
01~0C
01~12
9
年
0~99
00~63
00~99
10
控制寄存器A
11
控制寄存器B
12
控制寄存器C
13
控制寄存器D
50
世纪
0~99
NA
19,20
2.3.5显示模块的设计
(1)点阵式LCD12864的工作原理
点阵式LCD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多。
(2)点阵式LCD12864的读写时序图
图2.6串口数据线模式数据传输过程
(3)点阵式LCD12864显示
如图2.7所示,采用点阵式LCD12864显示,VSS、R/W(SID)、K接地;VDD、RESET、PSB、A接高电平;RS(CS)、E(SCLK)分别与P10和P11连接;DB0~DB7与P2口相连。
图2.7点阵式LCD12864显示
3系统的软件设计
3.1程序流程框图
图3.1主程序流程图
图3.2计算阳历程序流程图
图3.3时间调整程序流程图
3.2子程序的设计
3.2.1DS18B20温度子程序
CONFIG12EQU7FH
TEMPHEQU21H
TEMPLEQU20H
REG2EQU22H
REG3EQU23H
REG4EQU24H
DATEQUP0.7
TOUTOU:
LCALLCHUSHI
LCALLRDTEMP
MOVA,TEMPL
ANLA,#11110000B
MOVTEMPL,A
MOVA,TEMPH
ANLA,#00000111B
ORLA,TEMPL
SWAPA
MOV25H,A
MOVA,25H
MOVB,#64H
DIVAB
MOVA,B
MOVB,#0AH
DIVAB
SWAPA
ORLA,B
MOV10H,A
RET
CHUSHI:
LCALLRESET
MOVA,#0CCH
LCALLWRITE111
MOVA,#4EH
LCALLWRITE111
MOVA,#CONFIG12
LCALLWRITE111
RET
RDTEMP:
LCALLRESET
MOVA,#0CCH
LCALLWRITE111
MOVA,#44H
LCALLWRITE111
LCALLDL1MS
LCALLRESET
MOVA,#0CCH
LCALLWRITE111
MOVA,#0BEH
LCALLWRITE111
LCALLERAD111
MOVTEMPL,A
LCALLERAD111
MOVTEMPH,A
RET
RESET:
LA:
SETBDAT
MOV52H,#200
LB:
CLRDAT
DJNZ52H,LB
SETBDAT
MOV52H,#30
LC:
DJNZ52H,LC
CLRC
ORLC,DAT
JCLB
MOV58H,#80
LD:
ORLC,DAT
JCLP
DJNZ58H,LD
SJMPLA
LP:
MOV52H,#250
LF:
DJNZ52H,LF
RET
WRITE111:
MOV53H,#8
W51HA:
SETBDAT
MOV54H,#8
RRCA
CLRDAT
W52HA:
DJNZ54H,W52HA
MOVDAT,C
MOV54H,#30
W53HA:
DJNZ54H,W53HA
DJNZ53H,W51HA
SETBDAT
RET
ERAD111:
CLREA
MOV58H,#8
RD1A:
CLRDAT
MOV54H,#6
NOP
SETBDAT
RD2A:
DJNZ54H,RD2A
MOVC,DAT
RRCA
MOV55H,#30
RD3A:
DJNZ55H,RD3A
DJNZ58H,RD1A
SETBDAT
RET
3.2.2DS12C887子程序
写12C887程序WRITE:
CLRSCLK
NOP
SETBRST
NOP
MOVA,32H
MOVR4,#8
WRITE1:
RRCA;送地址给12C887
NOP
NOP
CLRSCLK
NOP
NOP
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR4,WRITE1
CLRSCLK
NOP
MOVA,31H
MOVR4,#8
WRITE2:
RRCA
NOP;送数据给12C887
CLRSCLK
NOP
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR4,WRITE2
CLRRST
RET
;读12C887程序
READ:
CLRSCLK
NOP
NOP
SETBRST
NOP
MOVA,32H
MOVR4,#8
READ1:
RRCA;送地址给12C887
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
NOP
CLRSCLK
NOP
NOP
DJNZR4,READ1
MOVR4,#8
READ2:
CLRSCLK
NOP;从12C887中读出数据
NOP
NOP
MOVC,IO
NOP
NOP
NOP
NOP
NOP
RRCA
NOP
NOP
NOP
NOP
SETBSCLK
NOP
DJNZR4,READ2
MOV31H,A
CLRRST
RET
4结论
4.1在实际中遇到的问题及解决方案
4.1.1硬件
电子万年历的电路系统较大,对于连线方面不可轻视,庞大的电路系统中只要出现一处错误,则会对系统运行造成很大的不便,而且电路的交线较多,对于各种芯片的引脚要特别注意处理,否则很容易接错引脚而是电路不能正常工作。
在电子万年历的设计最初调试中遇到了很多的问题。
回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:
(1)点正式LCD12864A、K脚连接混淆,致使显示屏显示微弱。
解决:
A管脚接电源,K管脚接地,即可解决此为题。
(2)对万年历修改时间或日期时,有时按键下去并无任何作用。
解决:
对系统断电,用万用表测试,发现按键与单片机接口处出现多处断路,重新连接此处线路,即可解决问题。
(3)点正式LCD12864显示屏时常出现显示停滞或显示乱码。
解决:
检查线路,DS12C887的AD1—-AD7管脚与P0口相连接,P0口出未加上;上拉驱动电阻,故选用九针500欧姆排阻作为P0口驱动电阻,即可解决此问题。
4.1.2软件
电子万年历是多功能的数字型、可以看当前日期、时间、温度的仪器。
电子万年历功能繁多,对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。
最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。
在软件的调试过程中主要遇到的问题如下:
(1)烧入程序后,点阵式LCD2864显示闪动,而且亮度不均匀。
解决:
首先对调用的延时进行逐渐修改,可以解决显示闪动问题。
其次,由于本设计使用动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。
(2)修改时间、日期时时间与日期没有自动对应上。
解决:
把不相关的程序暂时屏蔽,日历的子程序独立调试,发现在调用日历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。
最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题。
(3)加入温度的程序后,温度显示部分只显示DS18B20的初始值85.0。
解决:
由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。
所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序返回时再打开定时器1中断允许。
最终解决了此问题。
4.2调试小结
经过多次反复的测试与分析,对电路的原理及功能更加熟悉,同时提高了电路设计能力以及对电路分析能力.尤其在软件的编程方面得到进一步提高,对编程能力得到加强.最重要的是所学的理论知识得到了很大的提高与巩固。
4.3万年历部分成品图片
图4.2万年历实物图片
总结
本文的电子万年历系统以单片机AT89S52为基础,加以外围电路。
利用时钟芯片DS12C887作为时钟计时电路,做到计时准确无误;数字传感器DS18B20作为温度采样系统,采集处理温度:
点阵式LCD12864作为信息显示屏,工作稳定,字符清晰,字体美观,亮度适中。
三个月的毕业设计,在老师的指导下已经顺利结束了。
通过对本课题的研究和设计,从中了解到进行一项工程设计的大体过程,了解了如何根据项目的指标要求,分析实现设计方案,并且优选,了解如何通过硬件、软件设计实现这一方案。
在设计的过程中,我学到了好多在书本里没有的知识,知道了接手一个新项目时应该如何去考虑它,采取什么样的方法,如何去确定,如何去取舍。
我不仅较好的完成了毕业设计的任务要求,而且积累了一些实践经验,具有一定的实用价值。
在实践过程中,发觉自己过去所学在实际应用中还是远远不够的,且有时软件的理论设计是可行的,但在客观实践中往往会出现人为干扰等一系列不可预知的问题。
但通过自己不断的查阅资料和询问老师和同学,并不断实践,这样,理论与实际就很好的联系起来,最终克服了困难。
这点我感受颇深。
最后,这次设计可以说是对自己在大学四年中所学知识的一次总结和检验,所学的东西基本上用到了,从而才觉得原来所学的每门功课都是有联系的,在实际设计与操作中增加了新知识。
但是因此也让自己了解到自己的一些薄弱环节,这就促使我必须弥补它们。
这对以后的工作学习,也是很有益处的。
总之,这次设计让我受益匪浅,我将在今后的工作学习中继续发扬努力进取的精神,使自己的知识储备和实践能力得到更大的提高!
致谢
在毕业设计即将完成之际,我向曾经给于我帮助和支持的人表示衷心的感谢!
感谢我的母校陕西理工学院,给我提供了这么好的学习和生活环境,在学校学习和生活的日子是我一生中一段难忘的经历!
感谢我的导师张立众老师。
本次毕业设计是在张立众老师的亲切关怀和悉心指导下完成的。
他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。
张老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 万年历 系统 设计 研究