推荐下载电子钟Word格式.docx
- 文档编号:18520713
- 上传时间:2022-12-18
- 格式:DOCX
- 页数:18
- 大小:264.09KB
推荐下载电子钟Word格式.docx
《推荐下载电子钟Word格式.docx》由会员分享,可在线阅读,更多相关《推荐下载电子钟Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
00:
00时就可以调用报警子程序,实现报警.
4、整体电路
5、仿真结果
二.控制电路
P0口控制LED显示屏,P2口控制时间显示,P3口分别控制半秒提示和上下午,P1口分别控制四个按键和蜂鸣器。
2、相关工具
AT89C51,LED数码管,K建按钮
3、电路原理图
4、方案设计及实现结果
时间显示:
采用六个数码管显示当前时间:
小时、分钟、秒。
上下午指示:
采用两个发光二极管来指示上下午。
半秒提示:
采用两个发光二极管,每隔半秒闪烁。
按下K1键,开始调小时,同时2个小时数码管闪烁。
按下K2键,小时加;
按下K3键,小时减.
小时调整好后,再按下K1键,开始调分钟,同时分钟数码管闪烁。
按下K2键,分钟加;
按下K3键,分钟减.
整好分钟后,再按下K1键,调时结束。
按下K4键,开始调小时,同时2个小时数码管闪烁.
按下K2键,小时加;
按下K3键,小时减。
小时调整好后,再按下K4键,开始调分钟,同时分钟数码管闪烁。
按下K2键,分钟加;
按下K3键,分钟减。
调整好分钟后,再按下K4键,定闹结束。
闹钟定时的时间到后,蜂鸣器/扬声器发出提示音;
用户需按K2-k4键来取消闹钟警告。
三、定时模块设计
计时器T1的倒计时同样是1s的倒计时,只是在中断程序里实现对计时单元的减1,但在减1之前检测是否为0,如果是就调用报警子程序,如果不是则按照规则减1,注意的同样是数值的调整。
调整结束后返回ADJUST程序,继续检测,这样就可以实现连续调节。
由单片机芯片中引脚输出的信号来控制蜂鸣器的开和关在报警子程序里要求不断调用显示子程序,这样数码管可以在时间到达之后稳定显示00:
00。
蜂鸣器、三极管2N2907
P1.3为设定闹铃状态,按P1。
3实现时分秒转换,P1.2加1,P1。
1减一,再按P1。
3调闹钟结束。
引脚P1.7输出高电平时,三极管截止,蜂鸣器不发声;
输出低电平时,三极管导通,蜂鸣器发出声音。
改变单片机P1。
7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生不同的音色、音调的声音;
改变其占空比,则可以控制蜂鸣器声音的大小。
4、电路设计图
四、LED显示模块设计
P0。
0~P0。
7接数码管的片选码)P2.0~P2。
5接数码管的段选码,时间显示采用六个数码管显示两位的小时,分钟,秒.半秒提示采用两个发光二极管,每隔半秒闪烁。
上下午指示采用两个发光二极管来指示上下午。
7SEG-MPX6-CA—BLUE六位LED液晶显示屏、发光二极管、AT89C51
(1)时间显示:
动态显示的核心在于依次选中一块数码管,并在此之前将相应数码管要显示的数字的段码送到端口,进行相应的延时后关闭数码管选通信号。
不断执行上述过程就可以实现较为稳定的动态显示。
每次进入主程序都首先判断是否到了1s,到了则继续执行,否则,返回中断。
为了在显示完秒之后还能继续显示小时的十位,必须有一个用来计数的单元,用以区分当前显示的是小时还是分钟,还是秒,并以此作为仅次于显示次数N的循环.对每一个单元(30H~32H)的两位BCD码的显示,用一位(21H).0来指示即将显示的是十位还是各位,据此控制刚才所说的单元指示数值是否用该加一或者重新初始化.由此在DISPLAY子程序中有3重循环。
调用入口参数为30H~32H单元的数值。
(2)半秒提示:
采用两个发光二极管,每隔半秒闪烁.中断5次就是半秒,并在相应的分支里设置P3.6和P3。
7,保证二者同时取反即可。
这可以放在显示子程序内部,保证时间显示和半秒闪烁的同步,同时可以节约计数器。
(3)上下午指示:
只要判断30H单元的内容与11H相比较就可以知道是上午还是下午了,在分支语句里控制相应的灯亮了就行。
如上所述,将它放置在显示子程序里较为方便。
五、按键模块设计
通过控制四个开关按钮,控制8951的P1口输入,通过编写程序控制实现该设计所要求的小时分钟的调时功能,由按键控制调小时还是调分钟并控制数值的加一或减一.
按钮开关
3、设计方案
ADJUST的主体部分就是检测是否有按键按下,如果没有只是调用显示子程序,而有的话转去执行相应的分支语句。
为了防止干扰,我们便写了一个延时5ms左右的子程序,若是经过延时后,按键信号依然有效,则认定是有效信号,否则为干扰,返回程序起始点重新检测。
在K2\K3的分支语句里实现指针所指向单元的加一或者减一,但是注意要按照时间规则来,对加一或者减一结果进行调整,否则可能出错。
对单元的加一或者减一直接反映到显示子程序和定时器计数器0或者1的16位计数单元里,所以,每次更改后的值就相当于对时间确定调节,并从该处继续计时,这样就实现了调时功能。
K4的分支语句要求实现定闹,它与K1分支语句的不同之处是更改当前计数器为1,关闭0,在计数器1的中断服务程序里可以实现倒计时功能。
按下K1键,开始调小时,同时2个小时数码管闪烁。
按下K2键,小时减;
按下K3键,小时加.小时调整好后,再按下K1键,开始调分钟,同时分钟数码管闪烁。
按下K2键,分钟减;
按下K3键,分钟加。
调整好分钟后,再按下K1键,调时结束。
六、参考文献
【1】何立民,单片机系统设计[M],北京:
北京航空大学出版社.1993
【2】付家才,单片机控制工程实践技术[M],北京:
北京化学工业出版社2004
【3】李光才,单片机课程设计实力指导[M],北京:
北京航空大学出版社。
2004
【4】朱定华,单片机原理机接口技术实验[M],北京:
北方交通大学出版社2002
●结论
本次课程设计是用AT89C51单片机设计一个数字时钟,经过一个星期的调试,结果满足部分设计要求,验证无误。
通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到的元件不多,最主要的是程序也比较长比较麻烦,同时也遇到了大量困难,尤其是关于校时模块的设计实现。
关于显示模块,我们也遇到了不少的麻烦,程序的错误,对于元件了解不够深刻都是主要原因.学以致用,将从书本上学到的知识应用于实践,学会了初步的电子电路仿真设计,虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。
当最终调试成功的时候也是对自己的一种肯定。
此次的设计作业不仅增强了自己在专业设计方面的信心,鼓舞了自己,更是一次兴趣的培养,为自己以后的学习方向的明确了重点。
另外在这次实验中我们遇到了不少的问题针对不同的问题我们采取不同的解决方法,最终一一解决设计中遇到的问题。
在我们曾经遇到不懂的问题时,利用网上的资源,搜索查找得到需要的信息。
方案中仍存在不少的问题,接下来我们会继续对其进行调试修改,也希望老师能给出我们相关的意见和建议。
●项目分工
一起做,平均
●附录
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
ORG001BH
LJMPIT1P
ORG0100H
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;
0-9的共阳极显示段码
ORG1000H
MAIN:
SETBP3.0;
6亮,绿灯
CLRP3。
1
MOVTMOD,#01H;
设T0方式1,定时,T1为方式1,计数
SETBIT0;
外部中断0为跳沿方式有效
SETBIT1;
外部中断1为跳沿方式有效
SETBPX0;
外部中断0为高优先级中断
SETBPX1;
外部中断1为高优先级中断
CLRPT0;
定时器0为低优先级中断
CLRPT1;
计数器1为低优先级中断
MOV20H,#0AH;
中断10次为1s,中断计数单元为20H
MOV19H,#05H
MOV29H,#55H;
01010101B,不断左移位,相当于最高两位的0和1转换
MOV18H,#05H;
DISPLAY子程序执行这么多次后结束
CLRA;
A清零
MOV30H,A;
“时”单元清零
MOV31H,A;
“分”单元清零
MOV32H,A;
“秒”单元清零
SETBET0;
允许中断
SETBET1
SETBEX0
SETBEX1
SETBEA;
CPU开中断
MOVTH0,#3CH;
给T0装入计数初值,可计时100ms
MOVTL0,#0B0H;
MOVTH1,#3CH;
给T1装入计数初值
MOVTL1,#0B0H
SETBTR0;
启动计数
SETBTR1
MOVR1,#31H
HERE:
NOP;
允许被中断
LCALLADJUST
AJMPHERE;
反复调用显示子程序
ADJUST:
MOVR3,#00H
A1:
LCALLDISPLAY
MOVP1,#0FFH
JNBP1.2,K3
JNBP1。
1,K2
0,K1
JNBP1.3,K4
LJMPA1;
如果没有键按下重新检测
LJMPJ3;
等待按键抬起来
J3:
JBP1.2,A1
LCALLDISPLAY
LJMPJ3
J2:
JBP1.1,A1
LJMPJ2
J1:
JBP1.0,A1
LJMPJ1
J4:
JBP1.3,A1
LJMPJ4
K3:
LCALLDELAY
JBP1。
2,A1;
确实有键按下,进入下面处理,否则严重干扰,重测
MOVA,@R1
ANLA,#0FH
CJNEA,#09H,M1
MOVA,@R1
ADDA,#10H
ANLA,#0F0H
MOV@R1,A
JMPM2
M1:
INC@R1
M2:
LJMPJ3;
等按键弹起来,按一次,只加一次
K2:
JBP1.1,A1
MOVA,@R1
JNZNONBOUND
CLRC
SUBBA,#06H
MOV@R1,A
NONBOUND:
DEC@R1
K1:
0,A1
INCR3
CJNER3,#01H,TWICE1
MOVR1,#30H
JMPS1
TWICE1:
CJNER3,#02H,DONE
MOVR1,#31H
S1:
K4:
3,N1
JMPN2
N1:
LJMPA1
N2:
CLRTR0
CJNER3,#01H,TWICE2
MOVR1,#30H
JMPS2
TWICE2:
CJNER3,#02H,DONE
MOVR1,#31H
S2:
DONE:
NOP
RET
IT0P:
PUSHAcc;
保护现场
PUSHPSW
CLREA
重新装入计数初值
MOVTL0,#0B0H
DJNZ19H,HALF;
半秒
MOVA,29H
RLA
MOV29H,A
HALF:
DJNZ20H,RETURN;
1s还没有到,那么就返回继续计数100s
CPLP2.0
MOV20H,#0AH;
否则,重新装入中断次数计数值
MOVA,32H;
ADDA,#01H;
秒单元增1
DAA;
将二进制的秒数转换成BCD码,以便显示
MOV32H,A;
返回到秒单元保存
CJNEA,#60,RETURN;
如果不满60s,继续下一个1s的计时
MOV32H,#00H;
否则,秒单元就要清零
MOVA,31H
ADDA,#01H;
针对分单元加1
DAA
MOV31H,A
CJNEA,#60,RETURN;
如果不满60分钟,则继续下一个1s的计数
MOV31H,#00H;
否则分单元清零
MOVA,30H
ADDA,#01H;
针对时单元加1
MOV30H,A
CJNEA,#24,RETURN;
如果不满24小时,则继续计数,否则,全部清零
MOV30H,#00H;
时单元清零
RETURN:
SETBEA
POPPSW
POPAcc
RETI
DISPLAY:
PUSHAcc
PUSH01H
LOOP0:
DJNZ18H,START
LJMPFINISH
START:
MOVDPTR,#0100H
MOVC,(29H).7;
29H的最高两位每隔半秒互调一次,只要不断调用显示程序,输出就会每隔半秒变化一次
MOVP3。
7,C
MOVC,(29H)。
6
MOVP3.6,C
MOVA,#11H
CJNEA,30H,NEXT1;
若是12小于小时数,则Cy被置位,否则清零
NEXT1:
JCNIGHT;
C为0,是早上
SETBP3.0;
CLRP3.1
JMPMOON
NIGHT:
SETBP3.1;
C为1,是晚上
CLRP3.0;
7亮,黄灯
MOON:
NOP
MOV10H,#01H;
存放片选码
MOVR0,#30H;
寄存器间接寻址
SETB(21H).0;
指示将要显示的是十位还是个位,1表示十位,0表示个位
LOOP1:
MOVA,@R0;
A中是待显示的两位数BCD码
JNB(21H)。
0,NEXT;
若将要显示个位则直接相与取位
SWAPA;
否则,十位与个位交换再取位
NEXT:
CPL(21H)。
0;
指示位取反,为下次显示做准备
ANLA,#0FH;
取得待显示的一位BCD码
MOVCA,@A+DPTR;
取得待显示段码
MOVP0,A;
准备显示
MOVP2,10H;
片选,亮了
MOVP0,#0FFH;
关闭数码管
MOVA,10H
RLA;
为下次显示做准备
MOV10H,A
0,LOOP1;
若将显示个位,则R0不变
INCR0;
否则,加一
CJNER0,#33H,LOOP1;
若刚才显示的是秒并且是个位,也就是显示结束,那么重新置数
AJMPLOOP0;
否则,继续显示
FINISH:
MOV18H,#05H
POP01H
SETBEA
EINT0:
PUSHPSW;
它本来就是高优先级中断,所以不会再被打断
INC@R1
MOV@R1,A
RETI;
INT1中断服务程序
EINT1:
PUSHPSW
DEC@R1
SUBBA,#0CH
RETI;
T1中断服务程序;
K4按钮第一次按下,转到T1的中断程序这里
IT1P:
PUSHAcc;
MOVTH1,#3CH;
MOVTL1,#0B0H
DJNZ19H,HALF1;
MOV19H,#2AH
MOV29H,A
HALF1:
DJNZ20H,RETURN1;
1s还没有到,那么就返回继续计数100s
MOV20H,#4AH;
MOVA,30H;
CJNEA,#00H,B0
CJNEA,#00H,B0
MOVA,32H
CJNEA,#00H,B0
LJMPSPEAKER
B0:
MOVA,32H
CJNEA,#00H,W0
LJMPY0
W0:
DECA
MOV32H,A
ANLA,#0FH
JNZQ0
MOVA,32H
SUBBA,#06H
MOV32H,A
Q0:
DEC32H
LJMPRETURN1
Y0:
MOV32H,#59H
CJNEA,#00H,W1
LJMPY1
W1:
DECA
MOV31H,A
ANLA,#0FH
JNZQ1
SUBBA,#06H
MOV31H,A
Q1:
DEC31H
Y1:
MOV31H,#59H
MOVA,30H
CJNEA,#00H,W2
LJMPY2
W2:
MOV30H,A
ANLA,#0FH
JNZQ2
MOVA,30H
SUBBA,#06H
Q2:
DEC30H
Y2:
LJMPRETURN1
RETURN1:
SETBEA
SPEAKER:
NOP
SS:
CPLP1.7
LCALLDISPLAY
JMPSS
RET;
延时子程序5ms
DELAY:
MOVR6,#5
D1:
MOVR7,#250
D0:
DJNZR7,D0
DJNZR6,D1
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 推荐 下载 电子钟