基于STC89C52的电子时钟说明书.docx

上传人:b****3 文档编号:5200165 上传时间:2022-12-13 格式:DOCX 页数:35 大小:196.31KB
下载 相关 举报
基于STC89C52的电子时钟说明书.docx_第1页
第1页 / 共35页
基于STC89C52的电子时钟说明书.docx_第2页
第2页 / 共35页
基于STC89C52的电子时钟说明书.docx_第3页
第3页 / 共35页
基于STC89C52的电子时钟说明书.docx_第4页
第4页 / 共35页
基于STC89C52的电子时钟说明书.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

基于STC89C52的电子时钟说明书.docx

《基于STC89C52的电子时钟说明书.docx》由会员分享,可在线阅读,更多相关《基于STC89C52的电子时钟说明书.docx(35页珍藏版)》请在冰豆网上搜索。

基于STC89C52的电子时钟说明书.docx

基于STC89C52的电子时钟说明书

武汉工程大学

 

课程设计(学年论文)

说明书

 

课题名称:

基于单片机的时钟电路设计

专业班级:

制冷01班

学生学号:

学生姓名:

学生成绩:

指导教师:

课题工作时间:

2015.12.01至2015.12.11

 

 

绪论3

第一章设计任务与要求4

第二章设计依据2

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

第四章硬件设计11

第五章软件设计12

绪论

单片微型计算机(Single-ChipMicrocomputer),简称单片机,就是将微处理器,存储器,和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口线,看门狗定时器,内置4KBEEPROM,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

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功能

第四章、硬件设计

元件编号

元件型号

1

STC89C52

2

DS1302

3

74HC573

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路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒

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

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置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电运行时,在Vcc>2.0V之前,RST必须保持低电平。

只有在SCLK为低电平时,才能将RST置为高电平。

I/O为串行数据输入输出端(双向),后面有详细说明。

SCLK为时钟输入端。

 

引脚图:

 

74HC573参数:

输出能直接接到CMOS,NMOS和TTL接口上

操作电压范围:

2.0V~6.0V

低输入电流:

1.0uA

CMOS器件的高噪声抵抗特性

引脚图:

总体硬件图:

 

第五章、软件设计

 

主程序流程图

 

程序设计依据:

指定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进入省电模式,再次按下回复正常,省电,正常模式轮流翻转。

程序如下:

DULAEQUP2.6

WELAEQUP2.7

CEEQUP1.6

SCLKEQUP1.7

IOEQUP2.4

KEY0EQUP3.4

KEY1EQUP3.5

KEY2EQUP3.6

KEY3EQUP3.7

YEARDATA55H

MONTHDATA54H

DAYDATA53H

HOURDATA52H

MINTUEDATA51H

SECONDDATA50H;时,分,秒缓存区

ADDRDATA32H

MESSDATA31H;初始定义

INIT:

CLRCE

MOVADDR,#8EH

MOVMESS,#00H

LCALLWRITE;去除写保护

MOVADDR,#80H

MOVMESS,#00H

LCALLWRITE

MOVADDR,#82H

MOVMESS,#30H

LCALLWRITE

MOVADDR,#84H

MOVMESS,#21H

LCALLWRITE;时分秒赋初值:

21:

30:

00

MOVADDR,#86H

MOVMESS,#11H

LCALLWRITE

MOVADDR,#88H

MOVMESS,#12H

LCALLWRITE

MOVADDR,#8cH

MOVMESS,#15H;年月日赋值:

15.12.11

LCALLWRITE

CLRF0

MAIN:

JBKEY1,DISTIME;当一直按下key3时,显示日期;否则显示时间

DISDATE:

MOVADDR,#8DH

LCALLREAD

MOVYEAR,MESS;读年

MOVR0,YEAR

LCALLDIVIDE

MOV40H,R1;年的个位

MOV41H,R2;年的十位

MOVADDR,#89H

LCALLREAD

MOVMONTH,MESS;读月

MOVR0,MONTH

LCALLDIVIDE

MOV42H,R1;月的个位

MOV43H,R2;月的十位

MOVADDR,#87H

LCALLREAD

MOVDAY,MESS;读日

MOVR0,DAY

LCALLDIVIDE

MOV44H,R1;日的个位

MOV45H,R2;日的十位

LCALLDISPLAY

SJMPCHECK

DISTIME:

MOVADDR,#85H

LCALLREAD

MOVHOUR,MESS;读时

MOVR0,HOUR

LCALLDIVIDE

MOV40H,R1;时的个位

MOV41H,R2;时的十位

MOVADDR,#83H

LCALLREAD

MOVMINTUE,MESS;读分

MOVR0,MINTUE

LCALLDIVIDE

MOV42H,R1;分的个位

MOV43H,R2;分的十位

MOVADDR,#81H

LCALLREAD

MOVSECOND,MESS;读秒

MOVR0,SECOND

LCALLDIVIDE

MOV44H,R1;秒的个位

MOV45H,R2;秒的十位

LCALLDISPLAY

CHECK:

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

JNBKEY2,OFFORON;按键key2转换省电/正常模式

LJMPMAIN

省电/正常模式转换程序

OFFORON:

LCALLDELAY

;JBKEY2,MAIN

CPLF0

WAIT2:

LCALLDISPLAY

JNBKEY2,WAIT2

LJMPMAIN

时间设定程序

CHANGE:

LCALLDELAY

;JBKEY0,MAIN;消抖

WAIT0:

LCALLDISPLAY

JNBKEY0,WAIT0

MOV44H,#00H

MOV45H,#00H;秒归零

MOVADDR,#8EH

MOVMESS,#00H;去除写保护

LCALLWRITE

MOVADDR,#80H

MOVMESS,#80H;时钟停止

LCALLWRITE;调时之前的初始化设置

SETG1:

LCALLDISPLAY

JNBKEY0,SETG2;第二次按下key0进入调分程序

JNBKEY1,CHANGEHOUR

AJMPSETG1;等待按键按下

CHANGEHOUR:

LCALLDELAY

JBKEY1,SETG1

MOVR7,HOUR

LCALLADD1;小时加1

MOVHOUR,A

CJNEA,#24H,CHANGEHOUR11

CHANGEHOUR11:

JCCHANGEHOUR1

MOVHOUR,#00H

CHANGEHOUR1:

MOVADDR,#84H

MOVMESS,HOUR

LCALLWRITE

MOVR0,HOUR

LCALLDIVIDE

MOV40H,R1;时送入缓存

MOV41H,R2

WAIT1:

LCALLDISPLAY

JNBKEY1,WAIT1

AJMPSETG1;等待key1按键释放

SETG2:

LCALLDELAY

JBKEY0,SETG1;消抖

WAIT00:

LCALLDISPLAY;等待key0释放

JNBKEY0,WAIT00

SETG3:

LCALLDISPLAY

JNBKEY0,OUT;第三次按下key0进入结束调时程序

JNBKEY1,CHANGEMINTUE

AJMPSETG3

;

CHANGEMINTUE:

LCALLDELAY

JBKEY1,SETG3;消抖

MOVR7,MINTUE

LCALLADD1;分钟加一

MOVMINTUE,A

CJNEA,#60H,CHANGEMINTUE11

CHANGEMINTUE11:

JCCHANGEMINTUE1

MOVMINTUE,#00H

CHANGEMINTUE1:

MOVADDR,#82H

MOVMESS,MINTUE

LCALLWRITE

MOVR0,MINTUE

LCALLDIVIDE

MOV42H,R1

MOV43H,R2

WAIT111:

LCALLDISPLAY

JNBKEY1,WAIT111;等待key1释放

AJMPSETG3

OUT:

LCALLDELAY

JBKEY0,SETG3

MOVADDR,#80H

MOVMESS,#00H

LCALLWRITE

MOVADDR,#8EH

MOVMESS,#80H;写保护

LCALLWRITE

WAIT000:

LCALLDISPLAY

JNBKEY0,WAIT000

LJMPMAIN;返回主程序

WRITE:

CLRSCLK

NOP

SETBCE

NOP

MOVA,ADDR

MOVR4,#8

数据写入程序

WRITE1:

RRCA

NOP

NOP

CLRSCLK

NOP

NOP

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

DJNZR4,WRITE1

CLRSCLK

NOP

MOVA,MESS

MOVR4,#8

WRITE2:

RRCA

NOP

CLRSCLK

NOP

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

DJNZR4,WRITE2

CLRCE

RET

数据读出程序

READ:

CLRSCLK

NOP

NOP

SETBCE

NOP

MOVA,ADDR

MOVR4,#8

READ1:

RRCA

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

NOP

CLRSCLK

NOP

NOP

DJNZR4,READ1

MOVR4,#8

READ2:

CLRSCLK

NOP

NOP

NOP

MOVC,IO

NOP

NOP

NOP

NOP

NOP

RRCA

NOP

NOP

NOP

NOP

SETBSCLK

NOP

D

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1