基于89C52单片机的电子时钟设计毕业设计.docx
《基于89C52单片机的电子时钟设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于89C52单片机的电子时钟设计毕业设计.docx(47页珍藏版)》请在冰点文库上搜索。
基于89C52单片机的电子时钟设计毕业设计
东华理工大学长江学院
毕业设计
题目基于89C52单片机的电子时钟设计
英文题目ElectronicClockDesignBasedon89C52
学生姓名陈志仁
学号09325202
专业电子信息工程
系别机械与电子工程系
指导教师黄河职称讲师
二零一三年六月
摘要
至今,微处置器的进展已有40连年的历史,起初由美国Intel公司首推的4为微处置器Intel4004,实现将单片处置器和运算器等元件集成在一片电路芯片上。
尔后微处置器的迅猛进展,微处置器内集成的元件也愈来愈多,其中包括增加了存储器、I/O接口电路、按时/计数器、串行通信口、中断操纵、系统总线和系统时钟等,大大增强了微处置器的性能,并针对特定的领域制作出最大效率的微处置器。
不同功能的微处置器称为微操纵器,也被咱们简称为单片机。
本文要紧介绍以单片机ST89C52和DS12C887时钟芯片为核心的电子时钟显示,LCD1602为液晶显示器件,此电子时钟显示具有年月日等大体时刻显示,和秒表计时处置、闹钟按时、蜂鸣、温度的设计。
单片机通过对时钟、温度等数据处置后传送至LCD显示输出,也可通过按键对时刻进行调剂。
通过单片机外围接口的扩展实现温度搜集等功能。
关键词:
电子时钟;AT89C52;计时;温度
ABSTRACT
ThisprojectmainlyintroducesthattheelectronicclockwhichbasedonmicrocontrollerST89C52Liquidcrystaldisplaydevices'selectronicclockdisplayhasthedateandtimetimingprocessing,alarmclocktimingandthedesignofbuzzer,throughtheclock,temperatureandotherdataprocessingandtransmitssignalstotheLCDdisplayoutput,alsobyadjustingbuttonfortheexpansionofsingle-chipperipheralinterfacetoachievetemperatureacquisitionfunctions.
Keywords:
electronicclock;ST89C52;timing;temperature
第一章绪论
系统设计的背景和意义
电子时钟设计的背景
随着微电子技术的迅猛进展,电子产品技术也取得了专门大的提高,单片机技术也一样水涨船高。
单片机是把一个运算机系统集成到一个芯片上,它的产生是近代运算机技术进展史上一个重要的里程碑,它标志这运算机正式形成了通用运算机系统和嵌入式运算机系统两大分支。
以单片机为核心的智能化产品将运算机技术、信息处置技术和电子测量与操纵技术结合在一路,把智能给予各类机械装置,对传统的产品结构和应用方式产生了本质性的变革。
由于其微小的体积和低本钱的投入已普遍涉及现代人类生活中所用的电子和机械产品中,其中电话、、计算器、家用电器、电子玩具、电脑和鼠标等电脑配件中都集成有至少1部单片机。
电子时钟设计的意义
从古时的日晷、沙漏计时到近代的机械计时,再延续到现代的通过数字电路实现计时,其按时的准确性和精度都不是超级的理想,随着单片机的体积小、易操纵、功能强、价钱低廉、稳固靠得住、集成度高等优势,注定了它的普遍普及。
在智能家居、工业操纵、通信、航天等领域有着极大的作用。
电子时钟集成的单片机,极大的提高了电子时钟显示的准确性和快捷性,最大化的方便了人们。
另外由于单片机的精准性大到工业进程中的大型操纵系统,小到早已遍及全世界的儿童玩具和智能家居操纵,无时无刻的阻碍和方便人类的生活。
一样的因为单片机的功能强、体积小、质量轻、灵活好用、性价比高等优良的性能,使得它能够更好地融入到更多更全面的系统中,能够组成许多功能不同的微电子产品。
依照这种实际情形,设计了只采纳一个单片机制作的多功能电子时钟,具有了最大体的时刻日期显示功能,按时闹铃功能和温度显示功能,和秒表功能,还能够针对家电等电气产品的自动操纵对其进行相应的扩展,一样能够幸免操作繁琐的操纵器而产生的失误,准确实现“一对多”的操纵;温度传感器的添加,使得此电子时钟能够准确,快捷的进行温度显示,为人们的生活工作提供的极大的便利。
对此设计还能够进一步的扩展利用,也可在此设计添加湿度传感器,进而实时进行湿度的显示。
电子时钟设计的应用
电子钟已成为人们日常生活中不可或缺的生活品,普遍是广场,旅店等公共场合的必需设施,给人们的衣食住行带来极大的方便。
由于单片机集成系统技术的迅猛进展,使电子时钟具有走时准确、性能稳固、携带方便、性价比高等优势能够组成许多功能不同的微电子产品。
方案论证
电子时钟电路的种类繁多,有通过数字电路和单片机集成等等,针对各类各样的情形或不同领域所需要的电子时钟的要求也不尽相同,在生活上需要的电子时钟精度就没有多大的要求,而在工业操纵和航天等一些需要精准的时刻便需要高精准的电子时钟,本设计的题目是基于89C52单片机的电子时钟设计,此设计的需要正常显示的是年、月、日、礼拜、时、分、秒。
本设计需要硬件系统和软件系统的结合。
方案1——基于STC89C52单片机的电子时钟的设计
此方案是直接利用STC89C52单片机的集成电路来进行电子时钟的设计。
相较于经常使用的51单片机STC89C52增加了一些功能,核心CPU为8位利用灵巧和可编程Flash存储器,成了嵌入式系统的应用变得加倍的灵活多样,解决方案也变得有效。
第一采纳单片机的集成电路来进行计时,便需要此单片机的按时器/计数器每隔一按时刻产生的一个中断信号,当中断次数抵达一按时会产生一个秒信号,当秒信号累加到了必然值便进行分的累加,依次类推,以后即是时、日、礼拜、月、年的进位。
如此也就实现了利用单片机集成电路的电子时钟的设计。
第二通过单片机的集成电路来实现电子时钟的设计,不需要再加入其它的芯片,实现了资源的充分,可是用此方案所设计的电子时钟精度不够,且掉电后数据易丢失,编程复杂。
方案2——基于DS12C887的电子时钟的设计
此种方案是在以单片机为核心装置的基础上,加上一个相关的时钟芯片,此类芯片有许多,比如MC146818,DS12887等等。
它们尽管能够知足单片机系统对时钟的相关要求,可是此类芯片连接单片机较为复杂,数据总线和地址总线的占用颇多,且芯片的体积相较其它较大,在现在寸土寸金的时期此种芯片已变得愈来愈不适合,由于最近几年来愈来愈多串行接口的芯片的普遍应用,也产生了一些串行接口的时钟芯片,其中DS12C887即是其中的一种它的综合性能相较MC146818,DS12887等较好且价钱公道的串行接口时钟芯片。
通过52单片机的核心操纵和DS12C887时钟芯片的辅助,实现单片机的同步信号,加上一些大体必要电路进行集成来组成整个电子时钟设计的完成,其中外加的电路有显示电路、键盘电路、闹铃电路。
若是想在此系统进行扩展还可在电路上增设相应的电路。
由于在系统设计时,需要考虑诸多因素:
功耗、精准度、软件编程的简便,芯片的体积、芯片本钱等。
结合上述的各类阻碍DS12C887芯片为最正确选择,故方案2被采纳。
第二章电子时钟的硬件设计
单片机的选择
单片微型运算机简称为单片机,是典型的嵌入式微操纵器。
通常,单片机由单块集成电路芯片组成,内部包括有运算机的大体功能部件:
存储器、中央处置器(CPU)和I/O接口电路等。
因此,单片机只需要配合适当的软件及外部设备,即可成为一个单片机操纵系统。
单片机经历SCM、MCU、SoC三大时期的进展,使得单片机具有了多功能、高性能、低电压、低价钱、低功耗、大存储容量、强I/O功能及较好的兼容性等优势。
一、多功能
单片机中尽可能地把诸多模块都集成在一块芯片上,使得单片机能够实现的功能加倍繁多。
其中把ADC、DAC和多路模拟开关和采样/维持器乃至LED等显示驱动器集成在单片机芯片中,也确实是外围器件的内置化。
二、高性能
为了提高执行速度和执行效率,单片机开始利用RISC结构、流水线和DSP的设计技术,使单片机的性能有了显著的提高。
由于系统资源和系统复杂程度的增加,开始利用高级语言来开发单片机的程序。
利用高级语言明显降低开发难度和缩短了开发的周期,软件的可读性和可移植性也取得了大大的提升,便于改良和扩充功能。
3、低电压和低功耗
因单片机利用的场合空间有限,对其体积的要求严格,这也决定了单片机具有低电压和低功耗的特性超级重要。
目前单片机制造工艺普遍应用CHMOS工艺,其中HMOS工艺为互补金属氧化物具有高速度、高密度的特点,再加上CMOS工艺具有了低功耗的优良特性。
由于CHMOS工艺的大量采纳,很多单片性能够在更低的电压下工作(或),功耗已经降低到uA级。
这些特性使得单片机系统能够在更小电源的支持下工作更长的时刻。
目前,国内生产单片机的种类繁多,在此,咱们采纳为89C52单片机为主操纵器。
89C52内置8位中央处置器、256字节内部数据存储器RAM、8k片内部程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位按时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
另外,89C52还可工作于低功耗模式,可通过两种选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM按时器、串行口和中断系统维持其功能。
掉电模式下,保留RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C52具有PDIP(40pin)和PLCC(44pin)两种封装形式。
单片机的大体简介
单片机有两种大体结构:
一种是在通用微型运算机中普遍采纳的,数据存储器和程序存储器共用一个存储器空间的结构,称为“冯·诺依曼”(VonNeumann)结构。
另一种称为“哈佛”(Harvard)结构是将数据存储器和程序存储器完全分开,采纳不同的访问指令进行访问,目前的单片机多采纳“哈佛”结构。
89C52单片机要紧功能特性
·标准MCS-51内核和指令系统
·片内8kROM(可扩充64kB外部存储器)
·32个双向I/O口
·256x8bit内部RAM(可扩充64kB外部存储器)
·3个16位可编程定时/计数器
·时钟频率24/33MHz
·向上或向下定时计数器
·改进型快速编程脉冲算法
·6个中断源
·工作电压
·全双工串行通信口
·布尔处理器
—帧错误侦测
·4层优先级中断结构
—自动地址识别
·兼容TTL和CMOS逻辑电平
·空闲和掉电节省模式
·PDIP(40)和PLCC(44)封装形式
89C52单片机各引脚功能
1.主电源引脚有VCC、VSS。
VCC(40脚):
接+5V电源,为程序运行和校检时提供所需的电能。
VSS(20脚):
为接地端。
2.外界晶体引脚有XTAL一、XTAL2。
XTAL1(18脚):
片内它属于一个反向振荡放大器输入端,此放大器组成了片内振荡器,能够提供单片机相应的时钟操纵信号。
XTAL2(19脚)在单片机内部,接至上述振荡器的反向输出端。
当利用内部时钟时,两引线端用于外接石英晶体和微调电容;当利用外部时钟时,用于接外部时钟信号,外部时钟由XTAL1引入,XTAL2处于悬空状态。
3.操纵类引脚包括RESET(即为RST/VPD)、ALE、PSEN、EA,能够提供操纵信号,有些具有复用功能。
RSR/VPD(9脚):
VPD是单片机内部备用电源,为单片机的上电复位和掉电爱惜端。
振荡器工作时,在此引脚加上两个机械周期的高电平将使单片机进行复位(REST)操作。
复位后应使此引脚电平维持为不超过的低电平,以保证单片机正常运行。
当电源端显现故障、小于低电平设定值或掉电,此引脚可接入备用电源(VPD)以维持内部RAM中的数据不显现异样。
ALE/PROG(30脚):
地址锁存许诺信号,以平均每机械周期两次有效的信号输出。
在访问片外存储器或I/O时,用于锁存低八位地址,以实现低八位地址与数据的隔离。
在不访问外部RAM和ROM时,ALE能够1/6的振荡频率固定速度输出,可作为对外输出的时钟或用作外部按时脉冲。
注意:
在访问外部RAM期间,ALE脉冲会跳过两个机械周期此信号有效3次,此种状态下便不适合作为时钟输出。
PSEN(29脚):
片外程序存储器读选通信号,低电平有效。
在从片外程序存储器取指期间,在每一个机械周期中,当有效时,程序存储器的内容被送上P0口(数据总线)。
EA/VPP(31脚):
片外程序存储器访问许诺操纵信号,此操纵信号低电平为有效。
EA=1(高电平),选择片内程序存储器;EA=0(低电平),那么程序存储器全数在片外而不管片内是不是有程序存储器
4.四个输入/输出引脚包括P0口、P1口、P2口和P3口。
P0(39脚-32脚)—8位、漏极开路的双向I/O口。
当利用片外存储器时,复用作低八位地址和数据总线分时复用。
P1(1脚-8脚)—8位、准双向I/O口。
P2(21脚-28脚)—8位、准双向I/O口。
当利用片外存储器时,复用作输出高8位地址。
P3(10脚-17脚)—8位、准双向I/O口,具有内部上拉电路。
P3口功能表:
P3口各引脚的第二功能
P3口的位
第二功能
简要说明
RXD
串行数据接收口
TXD
串行数据发射口
INT0
外部中断0输入
INT1
外部中断1输入
T0
计数器0计数输入
T1
计数器1计数输入
WR
外部RAM写信号
RD
外部RAM读信号
89C52单片机内部结构图:
第三章电子时钟的软件设计
程序整体设计
程序整体流程图:
Y
N
Y
N
图主程序流程图
DS12C887利用说明及流程图
主程序运行后,第一DS12C887将会进行初始化的设置,若是串行口中具有相应的数据,然后需要获取时钟信息就必需挪用相应的程序来从时钟芯片中获取,最后时钟信息的显示也需要挪用相应的程序,依次返复进行。
这段程序包括对DS12C887某个单元读写内容和对DS12C887设按时刻。
DS12C887的流程图如下图。
图DS12C887的流程图
1602液晶显示屏操作说明及流程图
液晶显示屏的显示主若是通过从芯片中加载程序,别离对秒、分、时、礼拜、日、月、年、温度进行相应的显示,而且对可对时刻进行加减操作,可通过键盘进行操作更新时刻的显示。
1602LCD的流程图如下图。
图1602LCD的流程图
键盘操纵说明及流程图
当功能键按下时,秒位置闪烁。
每次按下功能键按下时,别离在秒、分、时、礼拜、日、月、年处闪烁。
当功能键再次按下时,加一或减一键有效并在相应位置加一或减一。
如选定秒位,按下增大键,调整显示位秒的增加,当秒增加至满60后,自动清零,同时调剂一次送至下一名显示,显示位置从头回到调剂处;当按下减小键时,调整显示位秒的减小,当秒减至0后,自动跳转为59,同时调剂一次送至下一名显示,显示位置从头回到调剂处;年月日时分的调剂原理相同。
键盘加一减一流程图如图3-4所示。
图3-4键盘加一减一流程图
主程序
主程序要紧对按键进行扫描,和判定按时和闹铃时刻是不是已到,假设到那么挪用相关程序,该段程序如下:
延时程序
动态扫描时液晶显示需要用到延时程序,此设计利用的是延时程序,此程序需要反复挪用程序如下:
DELAY:
MOVR4,#0FH
DE1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,DE1
RET
此类延时程序所延时的程序计算为:
由于DJNZ指令执行时刻为2个机械周期。
假设单片机的工作频率为12MHz,那么一个机械周期是1μs。
上述延时执行的时刻0FFH×2μs=512μs,也是循环一次完成的时刻,因其循环0FH次,因此其循环完成总的时刻约为512μs×0FH=。
此类延时程序算法与此相同。
时钟芯片程序
下面给出的即是调历时钟芯片DS12C887的初始化和获取内部事件的汇编程序:
ORG0000H
AJMPSTART
START:
ACALLSETTIME;设置初始时刻
LOOP:
ACALLGETTIME;循环读取当前时刻
AJMPLOOP;
SETTIME:
MOVDPTR,#7D0AH;DS12C887的A寄放器
MOVA,#20H
MOVX@DPTR,A;打开DS12C887的内部晶振并使RTC(实不时钟)记录时刻
INCDPTR;DS12C887的B寄放器
MOVA,#08H
MOVX@DPTR,A;设十进制BCD码,24小时制,不按时
MOVDPTR,#7D0DH;DS12C887的D寄放器
MOVXA,@DPTR;若是D寄放器的第7位为0,表示电池耗尽
JNB,ERROR
MOVDPTR,#7D00H;DS12C887的秒单元
MOVA,#00H
MOVX@DPTR,A;写入秒
MOVDPTR,#7D02H;DS12C887分单元
MOVA,#21H
MOVX@DPTR,A;写入分
MOVDPTR,#7D04H;DS12C887时单元
MOVA,#03H
MOVX@DPTR,A;写入时
MOVDPTR,#7D06H;DS12C887礼拜单元
MOVA,#03H
MOVX@DPTR,A;写入礼拜
MOVDPTR,#7D07H;DS12C887日单元
MOVA,#20H
MOVX@DPTR,A;写入日
MOVDPTR,#7D08H;DS12C887月单元
MOVA,#07H
MOVX@DPTR,A;写入月
MOVDPTR,#7D09H;DS12C887年单元
MOVA,#05H
MOVX@DPTR,A;写入年时刻
ERROR:
RET
GETTIME:
MOVDPTR,#7D0AH
MOVXA,@DPTR
JB,GETTIME;REGISTERA的UIP位=0时才能够读数据
MOVDPTR,#7D00H
MOVXA,@DPTR
MOVR2,A;SECONDS
ACALLDISPLAY
MOVDPTR,#7D02H
MOVXA,@DPTR
MOVR1,A
ACALLDISPLAY;MINUTES
MOVDPTR,#7D04H
MOVXA,@DPTR
MOVR0,A;HOURS
ACALLDISPLAY
ACALLDELAY
RET
DISPLAY:
MOVDPTR,#TAB
MOVSCON,#00H
MOVR3,A
ANLA,#0FH
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
MOVA,R3
SWAPA
ANLA,#0FH
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
RET
DELAY:
MOVR4,#0FH
DE1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,DE1
RET
TAB:
DB03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,11H,0C1H,63H,85H,61H,71H
END
日期的显示,秒表的显示,倒计时的显示,调闹铃,调按时的显示,闪烁的显示程序与以上的的扫描相似,有的以子程序的方式显现,通过子程序挪用语句ACALL挪用;有点直接嵌套在相应的程序里面,顺序执行,或用调转语句AJMP挪用。
液晶时钟显示挪用程序
四个按键操纵液晶时钟的显示,为调时选择键,按第1次为秒钟调整,按第2次为分钟调整,按第3次为时钟调整;为加1键;为减1键;为确认键。
RSBIT
RWBIT
EBIT
LCDEQUP0
H_BITEQU20H
M_BITEQU21H
S_BITEQU22H
HHEQU23H
MMEQU24H
SSEQU25H
HH_BITEQU26H
MM_BITEQU27H
SS_BITEQU28H
;================
ORG00H
AJMPMAIN
ORG0BH
AJMPTIME0
ORG30H
;========主程序=======================
MAIN:
MOVSP,#60H
MOVP1,#00H
MOVR5,#00H
MOVH_BIT,#00H
MOVM_BIT,#00H
MOVS_BIT,#00H
MOVHH_BIT,#00H
MOVMM_BIT,#00H
MOVSS_BIT,#00H
MOVHH,#00H
MOVMM,#00H
MOVSS,#00H
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBEA
SETBET0
SETBTR0
MOVLCD,#01H
LCALLLCDWC
;=====================================
LOOP:
LCALLEY
LCALLKEY
LCALLEYY
LJMPLOOP
;=========显示子程序=================
EY:
LCALLLOOP1
LCALLLCDSET
MOVDPTR,#TAB1
MOVA,H_BIT
LCALLDISP
MOVA,HH_BIT
LCALLDISP
MOVA,#58
MOVLCD,A
LCALLWRR
MOVA,M_BIT
LCALLDISP
MOVA,MM_BIT
LCALLDISP
MOVA,#58
MOVLCD,A
LCALLWRR
MOVA,S_BIT
LCALLDISP
MOVA,SS_BIT
LCALLDISP
RET
;=======BCD码转换子程序===============
LOOP1:
MOVA,SS
MOVB,#10
DIVAB
MOVS_BIT,A
MOVSS_BIT,B
MOVA,MM
MOVB,#10
DIVAB
MOVM_BIT,A
MOVMM_BIT,B
MOVA,HH
MOVB,#10
DIVAB
MOVH_BIT,A
MOVHH_BIT,B
RET
;==========中断子程序=================
TIME0:
PUSHACC
PUSHPSW