基于89C52单片机的电子时钟设计

更新时间:2023-09-06 21:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于89C52单片机的电子时钟设计

东华理工大学长江学院

毕业设计

题 目 基于89C52单片机的电子时钟设计

英文题目 Electronic Clock Design Based on 89C52

学生姓名 陈志仁 学 号 09325202 专 业 电子信息工程 系 别 机械与电子工程系 指导教师 黄河 职 称 讲 师

二零一三年六月

基于89C52单片机的电子时钟设计

摘 要

至今,微处理器的发展已有40多年的历史,起初由美国Intel公司首推的4为微处理器Intel4004,实现将单片处理器和运算器等元件集成在一片电路芯片上。此后微处理器的迅猛发展,微处理器内集成的元件也越来越多,其中包括增加了存储器、I/O接口电路、定时/计数器、串行通信口、中断控制、系统总线以及系统时钟等,大大加强了微处理器的性能,并针对特定的领域制作出最大效率的微处理器。不同功能的微处理器称为微控制器,也被我们简称为单片机。

本文主要介绍以单片机ST89C52和DS12C887时钟芯片为核心的电子时钟显示,LCD1602为液晶显示器件,此电子时钟显示具有年月日等基本时间显示,以及秒表计时处理、闹钟定时、蜂鸣、温度的设计。单片机通过对时钟、温度等数据处理后传送至LCD显示输出,也可通过按键对时间进行调节。通过单片机外围接口的扩展实现温度采集等功能。

关键词:电子时钟;AT89C52;计时;温度

基于89C52单片机的电子时钟设计

ABSTRACT

This project mainly introduces that the electronic clock which based on microcontroller ST89C52 display.LCD1602 Liquid crystal display devices's electronic clock display has the date and time display.Stopwatch timing processing, alarm clock timing and the design of buzzer, temperature.SCM through the clock, temperature and other data processing and transmits signals to the LCD display output, also by adjusting button for time.Through the expansion of single-chip peripheral interface to achieve temperature acquisition functions.

Key words: electronic clock;ST89C52;timing ;temperature

基于89C52单片机的电子时钟设计

第一章 绪论

1.1 系统设计的背景和意义

1.1.1 电子时钟设计的背景

随着微电子技术的迅猛发展,电子产品技术也得到了很大的提高,单片机技术也同样水涨船高。单片机是把一个计算机系统集成到一个芯片上,它的产生是近代计算机技术发展史上一个重要的里程碑,它标志这计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。以单片机为核心的智能化产品将计算机技术、信息处理技术和电子测量与控制技术结合在一起,把智能赋予各种机械装置,对传统的产品结构和应用方式产生了本质性的变革。由于其微小的体积和低成本的投入已普遍涉及现代人类生活中所用的电子和机械产品中,其中手机、电话、计算器、家用电器、电子玩具、电脑以及鼠标等电脑配件中都集成有至少1部单片机。 1.1.2电子时钟设计的意义

从古时的日晷、沙漏计时到近代的机械计时,再延续到现代的通过数字电路实现计时,其定时的准确性和精度都不是非常的理想,随着单片机的体积小、易控制、功能强、价格低廉、稳定可靠、集成度高等优点,注定了它的广泛普及。在智能家居、工业控制、通信、航天等领域有着极大的作用。

电子时钟集成的单片机,极大的提高了电子时钟显示的准确性和快捷性,最大化的方便了人们。此外由于单片机的精确性大到工业过程中的大型控制系统,小到早已遍及全世界的儿童玩具和智能家居控制,无时无刻的影响和方便人类的生活。同样的因为单片机的功能强、体积小、质量轻、灵活好用、性价比高等优良的性能,使得它可以更好地融入到更多更全面的系统中,可以构成许多功能不同的微电子产品。

根据这种实际情况,设计了只采用一个单片机制作的多功能电子时钟,具备了最基本的时间日期显示功能,定时闹铃功能和温度显示功能,以及秒表功能,还可以针对家电等电气产品的自动控制对其进行相应的扩展,同样可以避免操作繁琐的控制器而产生的失误,准确实现“一对多”的控制;温度传感器的添加,使得此电子时钟可以准确,快捷的进行温度显示,为人们的生活工作提供的极大的便利。对此设计还可以进一步的扩展利用,也可在此设计添加湿度传感器,进而实时进行湿度的显示。

基于89C52单片机的电子时钟设计

1.1.3电子时钟设计的应用

电子钟已成为人们日常生活中不可或缺的生活品,广泛是广场,旅店等公共场合的必须设施,给人们的衣食住行带来极大的方便。由于单片机集成系统技术的迅猛发展,使电子时钟具有走时准确、性能稳定、携带方便、性价比高等优点可以构成许多功能不同的微电子产品。

1.2 方案论证

电子时钟电路的种类繁多,有通过数字电路和单片机集成等等,针对各种各样的情况或者不同领域所需要的电子时钟的要求也不尽相同,在生活上需要的电子时钟精度就没有多大的要求,而在工业控制和航天等一些需要精准的时间便需要高精准的电子时钟,本设计的题目是基于89C52单片机的电子时钟设计,此设计的需要正常显示的是年、月、日、星期、时、分、秒。本设计需要硬件系统和软件系统的结合。 1.2.1 方案1——基于STC89C52单片机的电子时钟的设计

此方案是直接使用STC89C52单片机的集成电路来进行电子时钟的设计。相比于常用的51单片机STC89C52增加了一些功能,核心CPU为8位使用灵巧以及可编程Flash存储器,成为了嵌入式系统的应用变得更加的灵活多样,解决方案也变得有效。

首先采用单片机的集成电路来进行计时,便需要此单片机的定时器/计数器每隔一定时间产生的一个中断信号,当中断次数到达一定时会产生一个秒信号,当秒信号累加到了一定值便进行分的累加,依次类推,之后便是时、日、星期、月、年的进位。这样也就实现了利用单片机集成电路的电子时钟的设计。

其次通过单片机的集成电路来实现电子时钟的设计,不需要再加入其它的芯片,实现了资源的充分,但是用此方案所设计的电子时钟精度不够,且掉电后数据易丢失,编程复杂。

1.2.2 方案2——基于DS12C887的电子时钟的设计

此种方案是在以单片机为核心装置的基础上,加上一个相关的时钟芯片,此类芯片有许多,比如MC146818,DS12887等等。它们虽然可以满足单片机系统对时钟的相关要求,但是此类芯片连接单片机较为复杂,数据总线和地址总线的占用颇多,且芯片的体积相比其它较大,在如今寸土寸金的时代此种芯片已变得越来越不合适,由于近年来愈来愈多串行接口的芯片的广泛应用,也产生了一些串行接口的时钟芯片,其中DS12C887

基于89C52单片机的电子时钟设计

便是其中的一种它的综合性能相比MC146818,DS12887等较好且价格公道的串行接口时钟芯片。

通过52单片机的核心控制和DS12C887时钟芯片的辅助,实现单片机的同步信号,加上一些基本必要电路进行集成来构成整个电子时钟设计的完成,其中外加的电路有显示电路、键盘电路、闹铃电路。如果想在此系统进行扩展还可在电路上增设相应的电路。

由于在系统设计时,需要考虑诸多因素:功耗、精确度、软件编程的简便,芯片的体积、芯片成本等。结合上述的各种影响DS12C887芯片为最佳选择,故方案2被采用。

第二章 电子时钟的硬件设计

2.1 单片机的选择

单片微型计算机简称为单片机,是典型的嵌入式微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:存储器、中央处理器(CPU)和I/O接口电路等。因此,单片机只需要配合适当的软件及外部设备,便可成为一个单片机控制系统。

单片机经历SCM、MCU、SoC三大阶段的发展,使得单片机具有了多功能、高性能、低电压、低价格、低功耗、大存储容量、强I/O功能及较好的兼容性等优点。

1、多功能

单片机中尽可能地把诸多模块都集成在一块芯片上,使得单片机可以实现的功能更加繁多。其中把ADC、DAC以及多路模拟开关和采样/保持器乃至LED等显示驱动器集成在单片机芯片中,也就是外围器件的内置化。

2、高性能

为了提高执行速度和执行效率,单片机开始使用RISC结构、流水线和DSP的设计技术,使单片机的性能有了显著的提高。

由于系统资源和系统复杂程度的增加,开始使用高级语言来开发单片机的程序。使用高级语言明显降低开发难度以及缩短了开发的周期,软件的可读性和可移植性也得到了大大的提升,便于改进和扩充功能。

3、低电压和低功耗

因单片机使用的场合空间有限,对其体积的要求严格,这也决定了单片机具有低电压和低功耗的特性非常重要。目前单片机制造工艺普遍应用CHMOS工艺,其中HMOS工艺为互补金属氧化物具有高速度、高密度的特点,再加上CMOS工艺具备了低功耗的优良特性。由于CHMOS工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或

基于89C52单片机的电子时钟设计

0.9V),功耗已经降低到uA级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。

目前,国内生产单片机的种类繁多,在此,我们采用为89C52单片机为主控制器。89C52内置8位中央处理器、256字节内部数据存储器RAM、8k片内部程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52具有PDIP(40pin)和PLCC(44pin)两种封装形式。

2.2 单片机的基本简介

单片机有两种基本结构:一种是在通用微型计算机中广泛采用的,数据存储器和程序存储器共用一个存储器空间的结构,称为“冯·诺依曼”(Von Neumann)结构。另一种称为“哈佛”(Harvard)结构是将数据存储器和程序存储器完全分开,采用不同的访问指令进行访问,目前的单片机多采用“哈佛”结构。 2.2.1 89C52单片机主要功能特性

基于89C52单片机的电子时钟设计

2.2.2 89C52单片机各引脚功能

1.主电源引脚有VCC、VSS。

VCC(40脚):接+5V电源,为程序运行和校检时提供所需的电能。 VSS(20脚):为接地端。

2.外界晶体引脚有XTAL1、XTAL2。

XTAL1(18脚):片内它属于一个反向振荡放大器输入端,此放大器构成了片内振荡器,可以提供单片机相应的时钟控制信号。

XTAL2(19脚)在单片机内部,接至上述振荡器的反向输出端。

当使用内部时钟时,两引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟信号,外部时钟由XTAL1引入,XTAL2处于悬空状态。

3.控制类引脚包括RESET(即为RST/VPD)、ALE、PSEN、EA,可以提供控制信号,有些具有复用功能。

RSR/ VPD(9脚):VPD是单片机内部备用电源,为单片机的上电复位和掉电保护端。振荡器工作时,在此引脚加上两个机器周期的高电平将使单片机进行复位(REST)操作。复位后应使此引脚电平保持为不超过0.5V的低电平,以保证单片机正常运行。

当电源端出现故障、小于低电平设定值或者掉电,此引脚可接入备用电源(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位地址。

基于89C52单片机的电子时钟设计

P3(10脚-17脚)—8位、准双向I/O口,具有内部上拉电路。 P3口功能表:

2.2.3 89C52单片机内部结构图:

基于89C52单片机的电子时钟设计

第三章 电子时钟的软件设计

3.1 程序总体设计

3.1.1 程序总体流程图:

图3.1 主程序流程图

3.2 DS12C887使用说明及流程图

主程序运行后,首先DS12C887将会进行初始化的设置,如果串行口中具有相应的数据,然后需要获取时钟信息就必须调用相应的程序来从时钟芯片中获取,最后时钟信

基于89C52单片机的电子时钟设计

息的显示也需要调用相应的程序,依次返复进行。这段程序包括对DS12C887某个单元读写内容和对DS12C887设定时间。

DS12C887的流程图如图3.2所示。

调用程序

获取时钟信

送数据显示

图3.2 DS12C887的流程图

3.3 1602液晶显示屏操作说明及流程图

液晶显示屏的显示主要是通过从芯片中加载程序,分别对秒、分、时、星期、日、月、年、温度进行相应的显示,并且对可对时间进行加减操作,可通过键盘进行操作更新时间的显示。1602LCD的流程图如图3.3所示。

图3.3 1602LCD的流程图

基于89C52单片机的电子时钟设计

3.4 键盘控制说明及流程图

当功能键按下时,秒位置闪烁。每次按下功能键按下时,分别在秒、分、时、星期、日、月、年处闪烁。当功能键再次按下时,加一或减一键有效并在相应位置加一或减一。如选定秒位,按下增大键,调整显示位秒的增加,当秒增加至满60后,自动清零,同时调节一次送至下一位显示,显示位置重新回到调节处;当按下减小键时,调整显示位秒的减小,当秒减至0后,自动跳转为59,同时调节一次送至下一位显示,显示位置重新回到调节处;年月日时分的调节原理相同。

键盘加一减一流程图如图3-4所示。

图3-4 键盘加一减一流程图

基于89C52单片机的电子时钟设计

3.5 主程序

主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若到则调用相关程序,该段程序如下: 3.5.1 延时程序

动态扫描时液晶显示需要用到延时程序,此设计使用的是延时程序,此程序需要反复调用程序如下: DELAY:

MOV R4,#0FH DE1:MOV R5,#0FFH DJNZ R5,$ DJNZ R4,DE1 RET

此类延时程序所延时的程序计算为:由于DJNZ指令执行时间为2个机器周期。假设单片机的工作频率为12MHz,则一个机器周期是1μs。上述延时执行的时间0FFH×2μs=512μs,也是循环一次完成的时间,因其循环0FH次,所以其循环完成总的时间约为512μs×0FH=8.192ms。此类延时程序算法与此相同。 3.5.2 时钟芯片程序

下面给出的便是调用时钟芯片DS12C887的初始化和获取内部事件的汇编程序: ORG 0000H

AJMP START START:

ACALL SETTIME ;设置初始时间 LOOP: ACALL GETTIME ;循环读取当前时间 AJMP LOOP;

SETTIME: MOV DPTR,#7D0AH ;DS12C887的A寄存器 MOV A,#20H MOVX @DPTR,A ;打开DS12C887的内部晶振并使RTC(实时时钟)记录时间 INC DPTR ;DS12C887的B寄存器 MOV A,#08H MOVX @DPTR,A ;设十进制BCD码,24小时制,不定时 MOV DPTR,#7D0DH ;DS12C887的D寄存器 MOVX A,@DPTR ;如果D寄存器的第7位为0,表示电池耗尽 JNB ACC.7,ERROR

基于89C52单片机的电子时钟设计

MOV DPTR,#7D00H ;DS12C887的秒单元 MOV A,#00H MOVX @DPTR,A ;写入秒 MOV DPTR,#7D02H ;DS12C887分单元 MOV A,#21H MOVX @DPTR,A ;写入分 MOV DPTR,#7D04H ;DS12C887时单元 MOV A,#03H MOVX @DPTR,A ;写入时 MOV DPTR,#7D06H ;DS12C887星期单元 MOV A,#03H MOVX @DPTR,A ;写入星期 MOV DPTR,#7D07H ;DS12C887日单元 MOV A,#20H MOVX @DPTR,A ;写入日 MOV DPTR,#7D08H ;DS12C887月单元 MOV A,#07H MOVX @DPTR,A ;写入月 MOV DPTR,#7D09H ;DS12C887年单元 MOV A,#05H MOVX @DPTR,A ;写入年时间 ERROR: RET

GETTIME:

MOV DPTR,#7D0AH MOVX A,@DPTR

JB ACC.7,GETTIME ;REGISTER A的UIP位=0时才可以读数据

MOV DPTR,#7D00H MOVX A,@DPTR

MOV R2,A ;SECONDS ACALL DISPLAY

MOV DPTR,#7D02H MOVX A,@DPTR MOV R1,A

ACALL DISPLAY ;MINUTES

MOV DPTR,#7D04H MOVX A,@DPTR

MOV R0,A ;HOURS ACALL DISPLAY

ACALL DELAY

基于89C52单片机的电子时钟设计

RET DISPLAY:

MOV DPTR,#TAB MOV SCON,#00H MOV R3,A ANL A,#0FH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,R3 SWAP A ANL A,#0FH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI RET DELAY:

MOV R4,#0FH DE1:MOV R5,#0FFH DJNZ R5,$ DJNZ R4,DE1 RET

TAB: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,11H,0C1H,63H,85H,61H,71H END

日期的显示,秒表的显示,倒计时的显示,调闹铃,调定时的显示,闪烁的显示程序与以上的的扫描相似,有的以子程序的方式出现,通过子程序调用语句ACALL调用;有点直接嵌套在相应的程序里面,顺序执行,或者用调转语句AJMP调用。

基于89C52单片机的电子时钟设计

3.5.2 液晶时钟显示调用程序

四个按键控制液晶时钟的显示,P3.2为调时选择键,按第1次为秒钟调整,按第2次为分钟调整,按第3次为时钟调整;P3.3为加1键;P3.4为减1键;P3.5为确认键。 RS BIT P2.0 RW BIT P2.1 E BIT P2.2 LCD EQU P0 H_BIT EQU 20H M_BIT EQU 21H S_BIT EQU 22H HH EQU 23H MM EQU 24H SS EQU 25H HH_BIT EQU 26H MM_BIT EQU 27H SS_BIT EQU 28H ;================ ORG 00H AJMP MAIN ORG 0BH AJMP TIME0 ORG 30H

;========主程序======================= MAIN:

MOV SP,#60H MOV P1,#00H MOV R5,#00H MOV H_BIT,#00H MOV M_BIT,#00H MOV S_BIT,#00H MOV HH_BIT,#00H MOV MM_BIT,#00H

基于89C52单片机的电子时钟设计

MOV SS_BIT,#00H MOV HH,#00H MOV MM,#00H MOV SS,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 SETB TR0 MOV LCD,#01H LCALL LCDWC

;===================================== LOOP: LCALL EY LCALL KEY LCALL EYY LJMP LOOP

;=========显示子程序================= EY:

LCALL LOOP1 LCALL LCDSET MOV DPTR,#TAB1 MOV A,H_BIT LCALL DISP MOV A,HH_BIT LCALL DISP MOV A,#58 MOV LCD,A LCALL WRR MOV A,M_BIT LCALL DISP MOV A,MM_BIT LCALL DISP MOV A,#58

基于89C52单片机的电子时钟设计

LCALL WRR MOV A,S_BIT LCALL DISP MOV A,SS_BIT LCALL DISP RET

;=======BCD码转换子程序=============== LOOP1: MOV A,SS MOV B,#10 DIV AB MOV S_BIT,A MOV SS_BIT,B MOV A,MM MOV B,#10 DIV AB MOV M_BIT,A MOV MM_BIT,B MOV A,HH MOV B,#10 DIV AB MOV H_BIT,A MOV HH_BIT,B RET

;==========中断子程序================= TIME0: PUSH ACC PUSH PSW MOV TH0,#3CH MOV TL0,#0B0H INC R5

CJNE R5,#20,LOOP2 MOV R5,#00H INC SS

基于89C52单片机的电子时钟设计

CJNE A,#60,LOOP2 MOV SS,#00H INC MM MOV A,MM CJNE A,#60,LOOP2 MOV MM,#00H INC HH MOV A,HH CJNE A,#24,LOOP2 MOV HH,#00H LOOP2: POP PSW POP ACC RETI

;=====按键检测子程序==================== KEY: clr ea

JNB P3.2,SS_KEY KEY1: setb ea RET

;========秒钟调整子程序================ SS_KEY: LCALL EY1 LCALL DIS1 JNB P3.2,SS_KEY SSA:

LCALL EY1

JNB P3.3,S_ADDKEY JNB P3.4,S_DECKEY LCALL DIS1 JNB P3.2,MM_KEY JNB P3.5,KEY3 LJMP SSA

本文来源:https://www.bwwdw.com/article/vhch.html

Top