基于STC89C52的电子时钟说明书

更新时间:2023-08-17 23:32:01 阅读量: 资格考试认证 文档下载

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

单片机电子时钟课程设计

武汉工程大学

课程设计(学年论文)

说明书

课题名称: 基于单片机的时钟电路设计 专业班级: 学生学号: 学生姓名:

学生成绩: 指导教师:

课题工作时间:

单片机电子时钟课程设计

目录

绪论 3

第一章 第二章 设计依据 第三章 控制系统性能说明 11 第四章 硬件设计 11 第五章 软件设计 12

单片机电子时钟课程设计

绪论

单片微型计算机(Single-Chip Microcomputer),简称单片机,就是将微处理器,存储器,和RAM,定时器/计数器,中断系统,输入/输出接口(I/O接口),总线和其他多种功能器件集成在一块芯片上的微型计算机。

单片机的出现是近代计算机发展史上的一个重要里程碑,单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。通用计算机的主要特点是大存储容量,高数数值计算,不必兼顾控制功能,不断完成操作系统,它在数据处理,模拟仿真,人工智能,图像处理,多媒体,网络通讯中得到了广泛应用。

单片机的发展也是一段辉煌的历程!从1974年美国仙童(Fairchild)公司研制了世界上第一台单片F8,到现在32位单片机,单片机的顶级产品,具有较高的运算速度。同时,随着半导体工艺技术的发展及系统设计水平的提高,单片机不断产生新的变化和进步,单片机与微机系统的差距越来越小,甚至难以辨认。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机应用的市场前景是非常广阔的。

单片机电子时钟课程设计

第一章、课程设计的任务与要求

1、任务

用 LED数码管构成电子时钟电路。采用24h记时方式,日期和时间用6位数码管显示。要求设计制作出硬件电路,编制并调试出程序。

主要技术指标

显示范围:年份99年,如2001-2099;

显示格式:日期显示如2005年12月20日显示为051220; 时间显示如12点30分55秒显示为123055; 显示位数:6位;

时钟误差:24小时误差3~5秒 ;

8段LED数码管作正常、调时和省电(不显示LED 数码管)

程序流程

程序的编制可采用查询方式,也可以采用中断方式。

2、设计最低要求

设计人员应完成说明书和主要设计图纸。

(1)设计说明书 ①设计依据

摘录依据性资料中与本课程设计有关的主要内容,其它方面提供的本课程设计资料。如芯片的功能、传感器对单片的要求、环境及抗干扰级别等等。 ②设计范围

根据设计任务书的要求,说明本制冷系统的控制设计内容及与有关部件的功能。 ③系统的设计

控制系统硬件方框图,控制系统程序方框图,元件编号表及参数表等。 其中,元件编号表要表明元件型号、规格、耗电、信号特点、其他所需技术数据。被控系统的技术参数如:风机的风量、风压、出口方向、转速及电动机功率;室内外温度控制范围、电动机功率;实现功率元件控制的方案。 (2)设计图纸

绘制控制系统原理图,图中的线路连接及元件标注必需正确无误。 (3)程序设计

图纸要求

1、原理图1~2张。

2、图标可按以下规格:

单片机电子时钟课程设计

第二章 设计依据

完成此次课程设计涉及到的元件:STC879C52单片机,DS1302时钟芯片,74HC573锁存器,数码显示管,键盘。

STC89C52单片机

标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

74HC573锁存器

数据锁存功能:当输入的数据消失时,在芯片的输出端,数据仍然保持;

74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。SL74HC573跟LS/AL573的管脚一样。器件的输入是和标准CMOS输出兼容的,加上拉电阻他们能和LS/ALSTTL输出兼容。锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,

新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器 。

DS1302时钟芯片

DS1302是时钟芯片,拥有计时作用。可以对年月日、时分秒、星期计时。可以用单片机往DS1302里面写入时间进行时间设置,也可以用单片机从DS1302中读取时间,读出来的时间也可以放在数码管上显示。

数字时钟方案一:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器

设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋

单片机电子时钟课程设计

时钟将不工作。

数字时钟方案二:本方案用美国DALLAS公司推出的DS1302实时时钟芯片。该芯片内

部带有31字节静态RAM,采用SPI三线接口与CPU 进行同步通信,并可一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒,分,时,日,星期,月和年,且具有闰年自动补偿功能。运用汇编语言来控制STC89C52单片机来实现动态数码显示,实时调时,省电模式等功能。本方案中STC89C52单片机时整个工作过程的核心,是整个设计的控制者,它控制了脉冲时序的产生,DS1302时钟芯片的启动和停止,数码管的亮灭。

方案选择:尽管方案一的实现,硬件电路简单,但是每次单片机执行程序,时间被重

新赋同一个值,无法体现时钟实时的特点,故选择方案二作为数字时钟的最终方案

数码管显示方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应

的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

数码管显示方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于

显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。

方案选择:从节省I/O口和降低能耗出发,本设计采用方案二。

最终总方案确定:通过编写汇编程序控制STC89C52单片机,利用STC89C52单片机实

现对DS1302时钟芯片初始时间的设定,计时功能的启动和停止,数码管动态显示信号的控制,对键盘的反应,来实现6位数码管实时显示时间,时间调节,省电等功能。

第三章、控制系统性能说明

STC89C52控制器

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 主要特性

8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载;AT89S52单片机:8K字节程序存储空间;256字节数据存储空间;自带2KB的EEPROM存储空间; 器件参数

1.增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.

2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机)

3.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz

单片机电子时钟课程设计

5. 片上集成512 字节RAM

6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。

7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8. 具有EEPROM 功能

第四章、硬件设计

STC89C52参数:

1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.[1]

2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机)

3.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz 4. 用户应用程序空间为8K字节 5. 片上集成512 字节RAM

6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。

7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8. 具有EEPROM 功能

9. 共3 个16 位定时器/计数器。即定时器T0、T1、T2

10.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒

11. 通用异步串行口(UART),还可用定时器软件实现多个UART 12. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) 13. PDIP封装

单片机电子时钟课程设计

引脚图:

DS1302参数:

1、可以采用双电源供电(主电源和备用电源),工作电压宽达2.0~5.5V。 可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。 Vcc1:备用电源;Vcc2:主电源。当Vcc2>Vcc1+0.2V时,由 Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。 2、SCLK:串行时钟,输入;

3、I/O:三线接口时的双向数据线;

4、CE:相当于片选信号,在读、写数据期间,必须为高。 5、X1、X2: 接32.768KHz 晶振

DS1302的引脚排列,其中Vcc2为主电源,VCC1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电

单片机电子时钟课程设计

必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。

引脚图:

74HC573参数:

输出能直接接到CMOS,NMOS 和TTL 接口上 操作电压范围:2.0V~6.0V 低输入电流:1.0uA

CMOS 器件的高噪声抵抗特性 引脚图:

单片机电子时钟课程设计

总体硬件图:

单片机电子时钟课程设计

第五章、软件设计

主程序流程图

单片机电子时钟课程设计

- 12 -

单片机电子时钟课程设计

程序设计依据:

指定50H,51H,52H作为时,分,秒数据缓冲区; 指定53H,54H,55H作为年,月,日数据缓冲区

指定40H,41H,42H,43H,44H,45H为6位数码管数据显示缓冲区; 定义三个按键key0,key1,key2,实现显示日期,调时,省电功能; DS1302寄存器地址:

读:0x8d,0x8b,0x89,0x87,0x85,0x83,0x81(年,周,月,日,时,分,秒) 写:0x8c,0x8a,0x88,0x86,0x84,0x82,0x80(年,周,月,日,时,分,秒)

数码管数字显示码:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 程序说明:

当KEY0键第一次按下,进入设定时间程序,且默认为调时,再次按下KEY0,进入调分程序,第三次按下key0返回主程序。Key1按键,每按下一次,相应时(分)加一。 长按KEY1键显示日期年,月,日。

按下KEY2进入省电模式,再次按下回复正常,省电,正常模式轮流翻转。

程序如下:

DULA EQU P2.6 WELA EQU P2.7 CE EQU P1.6 SCLK EQU P1.7 IO EQU P2.4 KEY0 EQU P3.4 KEY1 EQU P3.5 KEY2 EQU P3.6 KEY3 EQU P3.7 YEAR DATA 55H MONTH DATA 54H DAY DATA 53H HOUR DATA 52H MINTUE DATA 51H

SECOND DATA 50H;时,分,秒缓存区 ADDR DATA 32H

MESS DATA 31H;初始定义

INIT:

CLR CE

MOV ADDR,#8EH MOV MESS,#00H

LCALL WRITE;去除写保护 MOV ADDR,#80H MOV MESS,#00H LCALL WRITE

单片机电子时钟课程设计

MOV MESS,#30H LCALL WRITE MOV ADDR,#84H MOV MESS,#21H

LCALL WRITE;时分秒赋初值:21:30:00 MOV ADDR,#86H MOV MESS,#11H LCALL WRITE MOV ADDR,#88H MOV MESS,#12H LCALL WRITE MOV ADDR,#8cH

MOV MESS,#15H;年月日赋值:15.12.11 LCALL WRITE CLR F0 MAIN:

JB KEY1,DISTIME;当一直按下key3时,显示日期;否则显示时间DISDATE:

MOV ADDR,#8DH LCALL READ

MOV YEAR,MESS;读年 MOV R0,YEAR LCALL DIVIDE

MOV 40H,R1;年的个位 MOV 41H,R2;年的十位

MOV ADDR,#89H LCALL READ

MOV MONTH,MESS;读月 MOV R0,MONTH LCALL DIVIDE

MOV 42H,R1;月的个位 MOV 43H,R2;月的十位

MOV ADDR,#87H LCALL READ

MOV DAY,MESS;读日 MOV R0,DAY LCALL DIVIDE

MOV 44H,R1;日的个位 MOV 45H,R2;日的十位 LCALL DISPLAY SJMP CHECK DISTIME:

MOV ADDR,#85H

单片机电子时钟课程设计

MOV HOUR,MESS;读时 MOV R0,HOUR LCALL DIVIDE

MOV 40H,R1;时的个位 MOV 41H,R2;时的十位

MOV ADDR,#83H LCALL READ

MOV MINTUE,MESS;读分 MOV R0,MINTUE LCALL DIVIDE

MOV 42H,R1;分的个位 MOV 43H,R2;分的十位

MOV ADDR,#81H LCALL READ

MOV SECOND,MESS;读秒 MOV R0,SECOND LCALL DIVIDE

MOV 44H,R1;秒的个位 MOV 45H,R2;秒的十位 LCALL DISPLAY CHECK:

JNB KEY0,CHANGE;按键key0启动调时功能

JNB KEY2,OFFORON;按键key2转换省电/正常模式 LJMP MAIN

省电/正常模式转换程序 OFFORON:

LCALL DELAY ; JB KEY2, MAIN CPL F0 WAIT2:

LCALL DISPLAY JNB KEY2,WAIT2 LJMP MAIN

时间设定程序 CHANGE:

LCALL DELAY

; JB KEY0,MAIN;消抖 WAIT0:

LCALL DISPLAY JNB KEY0,WAIT0 MOV 44H,#00H

单片机电子时钟课程设计

MOV ADDR,#8EH

MOV MESS,#00H;去除写保护 LCALL WRITE MOV ADDR,#80H

MOV MESS,#80H;时钟停止

LCALL WRITE;调时之前的初始化设置

SETG1:

LCALL DISPLAY

JNB KEY0,SETG2;第二次按下key0进入调分程序 JNB KEY1,CHANGEHOUR AJMP SETG1;等待按键按下 CHANGEHOUR: LCALL DELAY JB KEY1,SETG1 MOV R7,HOUR

LCALL ADD1;小时加1 MOV HOUR,A

CJNE A,#24H,CHANGEHOUR11 CHANGEHOUR11: JC CHANGEHOUR1 MOV HOUR,#00H CHANGEHOUR1: MOV ADDR,#84H MOV MESS,HOUR LCALL WRITE MOV R0,HOUR LCALL DIVIDE

MOV 40H,R1;时送入缓存 MOV 41H,R2 WAIT1:

LCALL DISPLAY JNB KEY1,WAIT1

AJMP SETG1;等待key1按键释放 SETG2:

LCALL DELAY

JB KEY0,SETG1;消抖 WAIT00:

LCALL DISPLAY;等待key0释放 JNB KEY0,WAIT00 SETG3:

LCALL DISPLAY

JNB KEY0,OUT;第三次按下key0进入结束调时程序 JNB KEY1,CHANGEMINTUE AJMP SETG3

单片机电子时钟课程设计

CHANGEMINTUE: LCALL DELAY

JB KEY1,SETG3;消抖 MOV R7,MINTUE

LCALL ADD1;分钟加一 MOV MINTUE,A

CJNE A,#60H,CHANGEMINTUE11 CHANGEMINTUE11: JC CHANGEMINTUE1 MOV MINTUE,#00H CHANGEMINTUE1: MOV ADDR,#82H MOV MESS,MINTUE LCALL WRITE MOV R0,MINTUE LCALL DIVIDE MOV 42H,R1 MOV 43H,R2 WAIT111:

LCALL DISPLAY

JNB KEY1,WAIT111;等待key1释放 AJMP SETG3 OUT:

LCALL DELAY JB KEY0,SETG3 MOV ADDR,#80H MOV MESS,#00H LCALL WRITE MOV ADDR,#8EH

MOV MESS,#80H;写保护 LCALL WRITE WAIT000:

LCALL DISPLAY JNB KEY0,WAIT000 LJMP MAIN;返回主程序

WRITE:

CLR SCLK NOP SETB CE NOP

MOV A,ADDR MOV R4,#8

数据写入程序

单片机电子时钟课程设计

NOP

CLR SCLK NOP NOP NOP

MOV IO,C NOP NOP NOP

SETB SCLK NOP NOP

DJNZ R4,WRITE1 CLR SCLK NOP

MOV A,MESS MOV R4,#8 WRITE2: RRC A NOP

CLR SCLK NOP NOP

MOV IO,C NOP NOP NOP

SETB SCLK NOP NOP

DJNZ R4,WRITE2 CLR CE RET

数据读出程序 READ:

CLR SCLK NOP NOP SETB CE NOP

MOV A,ADDR MOV R4,#8

单片机电子时钟课程设计

MOV IO,C NOP NOP NOP

SETB SCLK NOP NOP NOP

CLR SCLK NOP NOP

DJNZ R4,READ1 MOV R4,#8 READ2:

CLR SCLK NOP NOP NOP

MOV C,IO NOP NOP NOP NOP NOP RRC A NOP NOP NOP NOP

SETB SCLK NOP

DJNZ R4,READ2 MOV MESS,A CLR CE

RET;读出数据 调时加一程序 ADD1:

MOV A,R7 ADD A,#01H DA A RET

数码管显示程序

单片机电子时钟课程设计

JB F0,OVER

MOV DPTR,#TAB MOV A,#0FEH MOV P0,A SETB WELA CLR WELA MOV A,41H

MOVC A,@A+DPTR MOV P0,A SETB DULA CLR DULA LCALL DELAY

MOV A,#0FDH MOV P0,A SETB WELA CLR WELA MOV A,40H

MOVC A,@A+DPTR MOV P0,A SETB DULA CLR DULA LCALL DELAY

MOV A,#0FBH MOV P0,A SETB WELA CLR WELA MOV A,43H

MOVC A,@A+DPTR MOV P0,A SETB DULA CLR DULA LCALL DELAY

MOV A,#0F7H MOV P0,A SETB WELA CLR WELA MOV A,42H

MOVC A,@A+DPTR MOV P0,A SETB DULA CLR DULA LCALL DELAY

单片机电子时钟课程设计

MOV A,#0EFH MOV P0,A SETB WELA CLR WELA MOV A,45H

MOVC A,@A+DPTR MOV P0,A SETB DULA CLR DULA LCALL DELAY

MOV A,#0DFH MOV P0,A SETB WELA CLR WELA MOV A,44H

MOVC A,@A+DPTR MOV P0,A SETB DULA CLR DULA LCALL DELAY OVER:

MOV A,#0FFH MOV P0,A SETB WELA CLR WELA

RET;6位数码管显示时间

TAB:DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,77H

数字拆分程序 DIVIDE: MOV A,R0 ANL A,#0FH MOV R1,A MOV A,R0 SWAP A ANL A,#0FH MOV R2,A

RET;拆分个位,十位

延时程序 DELAY:

MOV 38H,#14H DL1:

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

Top