单片机新颖60秒LED旋转电子钟Word格式.doc

上传人:wj 文档编号:4611830 上传时间:2023-05-03 格式:DOC 页数:28 大小:1,007KB
下载 相关 举报
单片机新颖60秒LED旋转电子钟Word格式.doc_第1页
第1页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第2页
第2页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第3页
第3页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第4页
第4页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第5页
第5页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第6页
第6页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第7页
第7页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第8页
第8页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第9页
第9页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第10页
第10页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第11页
第11页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第12页
第12页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第13页
第13页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第14页
第14页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第15页
第15页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第16页
第16页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第17页
第17页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第18页
第18页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第19页
第19页 / 共28页
单片机新颖60秒LED旋转电子钟Word格式.doc_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机新颖60秒LED旋转电子钟Word格式.doc

《单片机新颖60秒LED旋转电子钟Word格式.doc》由会员分享,可在线阅读,更多相关《单片机新颖60秒LED旋转电子钟Word格式.doc(28页珍藏版)》请在冰点文库上搜索。

单片机新颖60秒LED旋转电子钟Word格式.doc

本实验设计的LED显示器件显示的电子时钟,可以有效的克服时钟存在误差的问题,在夜间不必照明就可以看到时间,且以60只发光管实现秒显示,接进传统的秒针显示秒的形式,用户更容易接受,而且美观大方。

1.1LED旋转电子钟概述

随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的LED旋转电子钟。

本设计以单片机89C2051为控制核心,由实时时钟模块、电源模块、人机接口模块、60秒旋转译码驱动模块等部分组成。

其中实时时钟采用DS12887可实现年月日时分秒等时间信息的采集和闹钟功能。

温度检测模块由DS18B20集成温度传感器对现场环境温度进行实时检测。

人机接口模块由3个键盘和4个LED数码管组成,可实现时间显示、闹钟设置、时间校对等功能。

60秒旋转译码驱动模块是由60个发光二级管组成,模拟“秒针”的行走。

1.2本次设计的要求

(1)用4只LED数码管输出显示时和分。

(2)可通过按键设置闹钟的功能,且停闹无须手工操作。

(3)可同过按键设置分校时。

(4)月计时误差小于45秒

(5)用60只LED发光管旋转显示,模拟“秒针”行走。

1.3系统主要功能

本设计完成了以下功能:

(1)4只LED数码管显示当前时分

(2)每隔一秒周边的60只LED发光管旋转一格。

(3)当发生停电的时候,由后备电池供电,系统进入低功耗状态,所有显示部件停止显示,当恢复供电后,系统自动恢复工作状态,不影响计时。

第2节系统硬件设计

2.1系统设计框架及实现

2.11系统原理图

图2-1电子钟系统原理图

2.1.2系统设计框图

电子钟的原理框图如图2-2所示。

它由以下几个部件组成:

单片机89C2051、电源、时分显示部件、60秒旋转译码驱动电路。

时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。

时分显示模块、60秒旋转译码驱动电路以及显示驱动都通过89C2051的I/O口控制。

电源部分:

电源部分有二部分组成。

一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;

另一部分是由3V的电池供电,以保证停电时正常走时。

正常情况下电池是不提供电能的,以保证电池的寿命。

具体电路参见“新颖的60秒旋转电子钟参考电路原理图”。

图2-2电子钟系统设计框图

2.2系统硬件组成

2.2.1AT89C2051单片机及其引脚说明

AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。

内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与IntelMCS-51系列单片机的指令和输出管脚相兼容。

由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。

AT89C2051是一个有20个引脚的芯片,引脚配置如图3所示。

与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。

AT89C2051芯片的20个引脚功能为:

图2-3AT89C2051引脚配置图2-4CD4017引脚图

VCC电源电压。

GND接地。

RST复位输入。

当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。

XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2来自反向振荡放大器的输出。

P1口8位双向I/O口。

引脚P1.2~P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。

P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;

P1口引脚写入“1”后,可用作输入。

在闪速编程与编程校验期间,P1口也可接收编码数据。

P3口引脚P3.0~P3.5与P3.7为7个带内部上拉的双向I/0引脚。

P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。

P3口的输出缓冲器能接收20mA的灌电流;

P3口写入“1”后,内部上拉,可用输入。

P3口也可用作特殊功能口,其功能见表1。

P3口同时也可为闪速存储器编程和编程校验接收控制信号。

表2-1P3口特殊功能

P3口引脚

特殊功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

(外部中断0)

P3.3

(外部中断1)

P3.4

T0(定时器0外部输入)

P3.5

T1(定时器1外部输入)

2.2.260秒旋转译码驱动原理

按常规传统设计,需60进制译码驱动电路才能实现60秒旋转译码驱动,若用六片十进制计数译码器构成六十进制计数译码电路,则电路连线多(需要120根连线),硬件电路庞大,开销大。

为此,我们巧妙地采用了两片CD4017进行六十进制计数译码,实现60秒旋转译码驱动。

既减少了电路的复杂程度又可降低了成本。

图4为CD4017功能引脚图,图5为其时序图。

图2-5CD4017时序图

CD4017集成电路是十进制计数/时序译码器,共有10个译码输出Q0~Q9;

每个译码输出通常处于低电平,且在时钟脉冲由低到高的上升沿输出高电平;

每个高电平输出维持1个时钟周期;

每输入10个时钟脉冲,输出一个进位脉冲,因此进位输出信号可作为下一级计数器的时钟信号。

在清零输入端(R)加高电平或正脉冲时,只有输出端Q0为高电平,其余各输出端均为低电平“0”。

为实现对发光二极管的驱动,将每一个译码输出端口接一只发光二极管,并将二极管串联限流电阻后接地。

当译码端口Q0~Q9中任一端口为高电平,则对应的发光二极管点亮,如图6(左)所示。

仔细考查CD4017的功能,可发现其10个输出的高电平是相互排斥的,即任一时刻只有一只发光二极管点亮,因此可将图6(左)电路进一步简化为如图6(右)所示,从而简化电路设计。

图2-6CD4017控制发光二极管原理图

在本电子钟设计中,每秒点亮一个发光二极管,循环点亮一周共需60个发光二极管,若用上述的6片CD4017实现驱动,显然电路复杂。

为此我们选用两片CD4017和一片6反相器,采用“纵横双译码”技术,巧妙地实现60秒旋转译码驱动,其中一片接成10进制,一片接成6进制,实现6×

10=60的功能,具体连接方法如图7所示。

图2-7发光二极管“纵横双译码”循环点亮LED原理图

将周期为1秒的输入脉冲作为其中一片CD4017的时钟脉冲,而此片的级联进位输出端(QC)作为另一片的时钟输入,并将Q6与复位端相连。

在两片译码输出端交叉点上接入发光二极管,构成6×

10矩阵。

根据CD4017时序特点,在初始状态,作为高位(纵)的CD4017译码器输出端口Q0处于高平,经反相器反相后为低电平。

当作为低位(横)的CD4017译码器输出端口Q0~Q9依次输出高电平后,则对应的二极管LD1~LD10依次点亮;

此后由于QC端的进位,高位CD4017译码输出端口Q1输出高电平,反相后输出低电平,当低位的CD4017译码输出端口Q0~Q9依次输出高电平后,二极管LD11~LD20依次点亮。

如此往复,直至高位Q6向复位端输入高电平,CD4017复位,60秒循环点亮重新开始。

2.2.3时分显示部件

由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。

LED有共阴极和共阳极两种。

如图8所示。

二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。

一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。

当在某段发光二极管施加一定的正向电压时,该段笔划即亮;

不加电压则暗。

为了保护各段LED不被损坏,需外加限流电阻。

图2-8LED数码管结构原理图

众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。

本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。

所谓软件译码,即由单片机软件完成从数字到显示码的转换。

从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。

各段码位与显示段的对应关系如表2。

表2-2各段码位的对应关系

段码位

D7

D6

D5

D4

D3

D2

D1

D0

显示段

dp

g

f

e

d

c

b

a

需说明的是当用数据口连接LED数码管a~dp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。

通常数据口的D0位与a段连接,D1位与b段连接,……D7位与dp段连接,如表2所示,表3为用于LED数码管显示的十六进制数和空白字符与P的显示段码。

表2-3LED显示段码

字型

共阳极段码

共阴极段码

C0H

3FH

9

90H

6FH

1

F9H

06H

A

88H

77H

2

A4H

5BH

B

83H

7CH

3

BOH

4FH

C

C6H

39H

4

99H

66H

D

A1H

5EH

5

92H

6DH

E

86H

79H

6

82H

7DH

F

84H

71H

7

F8H

07H

空白

FFH

00H

8

80H

7FH

P

8CH

73H

注:

(1)本表所列各字符的显示段码均为小数点不亮的情况。

(2)“空白”字符即没有任何显示。

根据AT89C2051单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。

将AT89C2051的P1.0~P1.7分别与共阳数码管的a~g及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符。

例如:

当P0口输出的段码为11000000,数码管显示的字符为0。

数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。

为节省端口及降低功耗,本系统采用动态扫描显示方式。

动态扫描显示方式需解决多位LED数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制)通过P0口实现;

而每一位的公共端,即LED数码管的“位控”,则由P3口控制。

这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。

在这一瞬时,只有这一位在显示,其他几位则暗。

在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态。

系统的时分显示部件由4只7段共阳LED数码管构成,前两只用于时的显示,后两只用于分的显示。

值得一提的是,在设计中需要实现时与分之间的两个闪烁点,为此,将第三只LED数码管倒置摆放,这样就形成了两个很自然的闪烁点。

与此同时,为了能使两点显示能够形象的表示时钟“秒”的变化,设计时,将两个点由P1.7单独控制,每隔一秒使P1.7发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒。

第3节系统的软件设计

本系统的软件系统主要可分为主程序和定时器中断程序两大模块。

在程序过程中,加入了抗干扰措施。

3.1系统主程序设计

主程序的功能是完成系统的初始化,在显示时间之前,对系统是否停电状态进行检测;

若停电,将系统进入低功耗状态,用电池电压维持单片机计时工作,但此时不显示时间,用节省用电;

若不停电,则将时分发送显示。

程序流程如图3-1所示。

图3-1系统主程序流程图

3.2中断程序设计

中断程序(如图10所示)完成时间计数,时间调整,误差消除等功能。

中断采用AT89C2051内部T0中断实现,定时时间为125ms,当时间到达125ms×

8,即1分钟时,分计数缓冲器MINBUFFER增加1,到达1小时,则时计数缓冲器HOURBUFFER增加1,并将分、时的个位、十位放入显示缓冲器。

当分计数缓冲器和时计数缓冲器分别到达60min、24h时,则对它们清零,以便从新计数。

在中断设计中,还通过软件实现了累计误差消除功能,使整个系统时间的精确度得到保证。

图3-2定时中断程序

3.3程序清单

DPBIT24H.3;

定义半秒闪烁位单元

SECONDEQU31H;

定义计数单元

MBUFEQU32H;

定义分计数单元

HBUFEQU33H;

定义时计数单元

MBUF0EQU34H;

定义分个位计数存储单元

MBUF1EQU35H;

定义分十位计数存储单元

HBUF0EQU36H;

定义时个位计数存储单元

HBUF1EQU37H;

定义时十位计数存储单元

DMBF0EQU40H;

定义分个位显示缓冲单元

DMBF1EQU41H;

定义分十位显示缓冲单元

DHBF0EQU42H;

定义时个位显示缓冲单元

DHBF1EQU43H;

定义时十位显示缓冲单元

AMBF10EQU44H;

定义定闹1分个位缓冲单元

AMBF11EQU45H;

定义定闹1分十位缓冲单元

AHBF10EQU46H;

定义定闹1时个位缓冲单元

AHBF11EQU47H;

定义定闹1时十位缓冲单元

AMBF1EQU48H;

定义定闹1分计数单元

AHBF1EQU49H;

定义定闹1时计数单元

AMBF20EQU4AH;

定义定闹2分个位缓冲单元

AMBF21EQU4BH;

定义定闹2分十位缓冲单元

AHBF20EQU4CH;

定义定闹2时个位缓冲单元

AHBF21EQU4DH;

定义定闹2时十位缓冲单元

AMBF2EQU4EH;

定义定闹2分计数单元

AHBF2EQU4FH;

定义定闹2时计数单元

ORG0000H

LJMPMAIN

ORG000BH

MOVTL0,#0DCH;

125毫秒定时器初值低8位

MOVTH0,#0BH;

125毫秒定时器初值高8位

LJMPINTTO

MAIN:

MOVSP,#6FH

MOVR2,#08H;

定时器1秒中断次数

MOVR4,#08H;

快校时定时计数,8X125ms后快校时

MOVSECOND,#3CH;

秒计数单元

MOVMBUF0,#0;

分个位计数存储单元0初值

MOVMBUF1,#0;

分十位计数存储单元1初值

MOVHBUF0,#0;

时个位计数存储单元0初值

MOVHBUF1,#2;

时十位计数存储单元1初值

MOVMBUF,#00H;

分计数存储单元初值

MOVHBUF,#20H;

时计数存储单元初值

MOVAMBF10,#1;

定闹1分个位计数存储单元0初值

MOVAMBF11,#5;

定闹1分十位计数存储单元1初值

MOVAHBF10,#0;

定闹1时个位计数存储单元0初值

MOVAHBF11,#2;

定闹1时十位计数存储单元1初值

MOVAMBF1,#51H;

定闹1分计数存储单元初值

MOVAHBF1,#20H;

定闹1时计数存储单元初值

MOVAMBF20,#3;

定闹2分个位计数存储单元0初值

MOVAMBF21,#5;

定闹2分十位计数存储单元1初值

MOVAHBF20,#0;

定闹2时个位计数存储单元0初值

MOVAHBF21,#2;

定闹2时十位计数存储单元1初值

MOVAMBF2,#53H;

定闹2分计数存储单元初值

MOVAHBF2,#20H;

定闹2时计数存储单元初值

MOVIE,#10000010B;

允许定时器0中断

MOVTMOD,#00100001B;

T0方式1

MOVTL0,R5;

MOVTH0,#0BH;

125毫秒定时器初值高8位

MOVIP,#00000010B;

定时器0高优先级

SETBTR0;

启动T0计时

LOOP:

MOVR4,#08;

喂狗

MOVA,HBUF;

取时整点

SUBBA,#7

JCLOOP1;

判断是否早7时前

早7时前----晚22时后为夜间

SUBBA,#22H

JNCLOOP1;

判断是否晚22时后

ACALLDISP

AJMPALARM1

LOOP1:

ACALLNDISP;

是夜间,调用夜间显示子程序

ALARM1:

MOVA,AHBF1;

判定闹1

CJNEA,HBUF,ALARM2;

判定闹1的小时是否与系统时间相等?

MOVA,AMBF1

CJNEA,MBUF,ALARM2;

判定闹1的分是否与系统时间相等?

MOVC,DP

MOVP3.3,C;

蜂鸣器响半秒,停半秒

MOVA,SECOND;

定闹1分钟

JNZLOOP

ALARM2:

MOVA,AHBF2

CJNEA,HBUF,LOOP2;

判定闹2的时是否与系统时间相等?

MOVA,AMBF2

CJNEA,MBUF,LOOP2;

判定闹2的分是否与系统时间相等?

MOVC,DP

MOVP3.3,C;

MOVA,S

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2