基于单片机的新颖电子时钟系统课程设计.docx
- 文档编号:30044408
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:29
- 大小:130.72KB
基于单片机的新颖电子时钟系统课程设计.docx
《基于单片机的新颖电子时钟系统课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的新颖电子时钟系统课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于单片机的新颖电子时钟系统课程设计
数理与信息工程学院
《单片机原理及应用》期末课程设计
题目:
基于单片机的新颖电子时钟系统
专业:
计算机科学与技术
班级:
计算机
姓名:
学号:
指导老师:
成绩:
(2009.6)
基于单片机的新颖电子时钟系统
数理与信息工程学院09计算机专升本胡琼琼
指导教师:
余水宝
第1节引言
时钟是人们日常生活中必不可少的生活用品,无论在何地都需要精确地了解当前的具体时间。
现在市场上的时钟类型多种多样,可是它们都存在一个相当大的缺陷,那就是无论是机械钟还是石英钟在晚上都无法实现在无照明的情况下可见的状态。
使用的人要想知道当前的时间,就必须先开灯,因此使用起来比较麻烦。
此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:
时间误差。
目前单片机在各行各业领域的使用非常广泛,因为它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
运用基于单片机的形式来设计电子时钟会更加的方便有效。
针对以上的分析,我们设计了一款采用LED显示器件显示的电子时钟,有效克服了时钟存在的误差问题,并且能在夜间不必其它照明就能看到时间,且以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,使用者容易接受,而且美观大方。
另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。
这款电子时钟具有相当大的市场发展前景。
1.1本设计任务和主要内容
本论文主要是针对单片机控制的电子时钟系统,分别对时钟的时间显示、闹钟报鸣等功能以及系统设备的软、硬件各个部分进行了研究。
主要设计要求如下:
①用4只LED数码管输出显示时和分。
②可通过按键设置闹钟功能,且停闹无须手工操作。
③可通过按键设置分校时。
④月计时误差小于45秒。
⑤模拟“秒针”行走的“嘀哒”声。
⑥增加停(掉)电保护功能。
⑦提高计时精度,使年计时误差小于30秒。
⑧增加日自动校准功能,使得该电子钟“永无误差”。
⑨可通过按键设置一天两闹(比如早晨、中午各一次)。
1.2系统主要功能
电子钟的外观是周边60只发光管顺时旋转来显示秒,中间四只LED数码管用于显示时间,中下方的七只LED灯顺时旋转,供装饰用。
其主要功能有:
整点报时;四只LED数码管显示当前时分。
当发生停电事件时,由后备电池供电,系统进入低功耗状态,所有显示部件停止显示,这样即延长了电池的寿命,同时又保证了CPU继续计数,不至于因停电而时钟停止运行。
当恢复供电后,系统自动恢复工作状态,不影响计时。
闹钟功能,设定好所需的时间,时间到时时钟发出蜂鸣声。
校时,调整时间差。
温度显示功能,检测空气中的温度并显示在四只LED数码管上。
时间显示和温度显示交替进行。
第2节系统的硬件构成及功能
2.1电子钟的原理框图
它由以下几个部件组成:
单片机89C2051、电源、时分显示部件、60秒旋转译码驱动电路。
时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。
时分显示模块、60秒旋转译码驱动电路以及显示驱动都通过89C2051的I/O口控制。
电源部分:
电源部分有二部分组成。
一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由3V的电池供电,以保证停电时正常走时。
正常情况下电池是不提供电能的,以保证电池的寿命。
图2-1电子钟系统原理框图
2.2AT89C2051单片机及其引脚说明
AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与IntelMCS-51系列单片机的指令和输出管脚相兼容。
AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。
AT89C2051是一个有20个引脚的芯片,引脚配置如图2-2所示。
与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。
AT89C2051芯片的几个主要引脚功能为:
图2-2AT89C2051引脚配置图2-3CD4017引脚图
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口同时也可为闪速存储器编程和编程校验接收控制信号。
表1P3口特殊功能
P3口引脚
特殊功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
2.3时分显示部件
由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。
LED有共阴极和共阳极两种。
如图2-6所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED不被损坏,需外加限流电阻。
图2-6LED数码管结构原理图
众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。
本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。
所谓软件译码,即由单片机软件完成从数字到显示码的转换。
从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。
各段码位与显示段的对应关系如表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的显示段码。
表3LED显示段码
字型
共阳极段码
共阴极段码
字型
共阳极段码
共阴极段码
0
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
根据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中断程序设计
中断程序(如图3-2所示)完成时间计数,时间调整,误差消除等功能。
中断采用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;125毫秒定时器初值低8位
MOVTH0,#0BH;125毫秒定时器初值高8位
MOVIP,#00000010B;定时器0高优先级
SETBTR0;启动T0计时
LOOP:
MOVR4,#08;喂狗
MOVA,HBUF;取时整点
SUBBA,#7
JCLOOP1;判断是否早7时前
MOVA,HBUF;早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
MOVC,DP
MOVP3.3,C;蜂鸣器响半秒,停半秒
MOVA,SECOND;定闹1分钟
JNZLOOP
LOOP2:
JBP3.2,LOOP7;判断校时键是否按下?
LOOP3:
ACALLDISP;用于长时间按键时的显示
MOVA,R4;有校时键按下
CJNEA,#00H,LOOP6;校时键按下有1秒吗?
LOOP4:
ACALLADD1;校时键按下有1秒,则快调
MOVR1,#40
LOOP5:
ACALLDISP
DJNZR1,LOOP5
JNBP3.2,LOOP4;校时键未放开,继续快调
AJMPLOOP7;
LOOP6:
JNBP3.2,LOOP3;校时键按下不到1秒,返回再判
ACALLADD1;单次慢调
MOVTL0,R5;校时结束,秒初值置0
MOVTH0,#0BH
MOVSECOND,#00
LOOP7:
JBP3.3,LOOP
ALAM11:
ACALLADSP1;用于设置定闹1时,长时间按键的显示
MOVA,R4;有定闹1键按下
CJNEA,#00H,ALAM16;定闹1键按下有1秒吗?
ALAM12:
ACALLAAD1;定闹1键按下有1秒,则快调
MOVR1,#50
ALAM13:
ACALLADSP1
DJNZR1,ALAM13
JNBP3.3,ALAM12
MOVR1,#10;定闹1快调结束,闪烁显示定闹时间8秒
ALAM14:
MOVR3,#40
ALAM15:
ACALLADSP1
DJNZR3,ALAM15
ACALLD400MS
DJNZR1,ALAM14
AJMPAGAIN
ALAM16:
NOP
JNBP3.3,ALAM11;定闹1键按下不到1秒,返回再判
ALAM17:
ACALLAAD1;定闹1单次慢调
MOVR1,#10;定闹1慢调结束,闪烁显示定闹时间12秒
ALAM18:
MOVR3,#40
ALAM19:
ACALLADSP1
DJNZR3,ALAM19
ACALLD400MS
DJNZR1,ALAM18
AGAIN:
JBP3.3,RETUN;返回主程序
MOVR4,#08
ALAM21:
ACALLADSP2;用于设置定闹2时,长时间按键的显示
MOVA,R4;有定闹2键按下
CJNEA,#00H,ALAM26;定闹2键按下有1秒吗?
ALAM22:
ACALLAAD2;定闹2键按下有1秒,则快调
MOVR1,#50
ALAM23:
ACALLADSP2
DJNZR1,ALAM23
JNBP3.3,ALAM22
MOVR1,#10;定闹2快调结束,闪烁显示定闹时间9秒
ALAM24:
MOVR3,#40
ALAM25:
DJNZR3,ALAM25
ACALLD400MS
DJNZR1,ALAM24
AJMPLOOP
ALAM26:
JNBP3.3,ALAM21;定闹2键按下不到1秒,返回再判
ALAM27:
ACALLAAD2;定闹2单次慢调
MOVR1,#10;定闹2慢调结束,显示定闹时间9秒
ALAM28:
MOVR3,#40
ALAM29:
ACALLADSP2
DJNZR3,ALAM29
ACALLD400MS
DJNZR1,ALAM28
RETUN:
AJMPLOOP;返回主程序
INTTO:
PUSHACC
PUSHPSW
DECR4
MOVA,SECOND
CJNEA,#28H,INT01
MOVR5,#0DBH
INT01:
DJNZR2,INT02;1秒计数
MOVR2,#08H
CPLDP;小数点半秒闪烁
ACALLBEEP;1秒到,发“笛嗒”声和LED旋转脉冲
DJNZSECOND,OUTT0
MOVSECOND,#3CH;1分到
ACALLADD1;分十进制加1子程序
INT02:
MOVA,R2
CJNEA,#04H,OUTT0;判断是否半秒
CPLDP;是半秒,秒闪动一次
OUTT0:
POPPSW
POPACC
RETI
ADD1:
MOVA,MBUF;分加1子程序,
ADDA,#01;分十进制加1
DAA
MOVMBUF,A
ANLA,#0FH
MOVMBUF0,A
MOVA,MBUF
SWAPA
ANLA,#0FH
MOVMBUF1,A
MOVA,MBUF
CJNEA,#60H,ADDOUT
MOVMBUF0,#0
MOVMBUF1,#0
MOVMBUF,#0
MOVA,HBUF
ADDA,#01;时十进制加1
DAA
MOVHBUF,A
ANLA,#0FH
MOVHBUF0,A
MOVA,HBUF
SWAPA
ANLA,#0FH
MOVHBUF1,A
MOVA,HBUF
CJNEA,#24H,ADDOUT
MOVHBUF0,#0
MOVHBUF1,#0
MOVHBUF,#0
ADDOUT:
RET
AAD1:
MOVA,AMBF1;定闹1,分加1子程序,
ADDA,#01
DAA
MOVAMBF1,A
ANLA,#0FH
MOVAMBF10,A
MOVA,AMBF1
SWAPA
ANLA,#0FH
MOVAMBF11,A
MOVA,AMBF1
CJNEA,#60H,AAD1OT
MOVAMBF10,#0
MOVAMBF11,#0
MOVAMBF1,#0
MOVA,AHBF1
ADDA,#01
DAA
MOVAHBF1,A
ANLA,#0FH
MOVAHBF10,A
MOVA,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 新颖 电子 时钟 系统 课程设计