单片机课程设计时钟.docx
- 文档编号:23172209
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:13
- 大小:250.56KB
单片机课程设计时钟.docx
《单片机课程设计时钟.docx》由会员分享,可在线阅读,更多相关《单片机课程设计时钟.docx(13页珍藏版)》请在冰豆网上搜索。
单片机课程设计时钟
单片机电子时钟设计
一.电子时钟工作简介
本作品采用Atmel公司的AT89C51单片机,以汇编语言为程序设计的基础,设计一个用四位数码管显示时、分的时钟。
在实物图中,左边靠近电源的绿色发光二极管(长亮)是电源指示灯,表示的是5V稳定电源工作正常;单片机左下角红色发光二极管是秒灯,每闪烁一次表示时间走动一秒钟;按键正上方绿色发光二极管是设置灯,当时间正常走动时此时不亮,当第一次按下设置键(右键)时,此绿灯亮,同时秒时熄灭,且分钟的两位数码管出现闪烁,时间停止走动,进入校时状态,表示此时可以进行分钟的调整,当按一次加一键(左键)可实现分钟的加一功能,分钟以60分为极限,超出60分则返回数值0,从0再重新算起;如果再次按下设置键时,这时秒灯和设置灯仍旧保持熄灭和点亮状态,表示分钟的数码管停止闪烁,反过来表示小时的两位数码管则开始闪烁,此时可进行小时的调整,按加1键可实现小时的加1功能,小时调整以24为上限,同样超出24小时则从新回0;当第三次按下设置键时,数码管停止闪烁,设置灯熄灭,秒灯重新闪烁,时间以设定值计时。
二.硬件工作介绍
(一)电源组成部分
如图所示,220V交流电通过双12V变压器变为12V的交流电,12V交流电通过四个二极管的全桥整流后变为12V直流电,然后经过电解电容(470μF)进行一级滤波,以去除直流电里面的杂波,防止干扰。
12V直流电出来后再经过三端稳压器7805稳压成为稳定的5V电源,其中7805的Vin脚是输入脚,接12V直流电源正极,GND是接地脚,接12V直流电源负极,Vout为输出脚,它和接地脚的电压就是+5V了。
5V电源出来再经过电解电容的二级滤波,使5V电源更加稳定可靠。
同时在5V稳压电源加上一个470Ω的电阻和一个绿色发光二极管,当上电后,绿色发光二极管点亮,表示电源工作正常。
此时一个稳定输出5V的电源已经设计好,对于本设计它完全能够满足单片机及集成块所需电源的要求。
注:
由于7805产生的5V电源供给的器件比较多,所以用散热片防止7805过热而烧坏芯片。
(二)线路布置图部分
(1)上拉电阻
如图所示,5V电源正端经R1~R88个上拉电阻分别加到单片机的P0口,而P2口则没有。
之所以这样是因为当向P0口输出1时,此时P0口并非输出高电平而是处于高阻状态,所以无法驱动4511译码器。
加上上拉电阻后,当P0口输出1时,电流不流过P0口,加到4511译码器的A、B、C、D端是高电平,当P0口输出0时,电流流进P0口,加到4511译码器的A、B、C、D端是低电平。
由此可见,当加上上拉电阻后,P0口就有能力驱动4511译码器了。
(2)秒灯
图中,5V电源通过电阻R9(1K)及红色发光二极管加到P1.0构成秒灯闪烁,当P1.0为低电平0时,此时秒灯亮,当其为高电平1时,秒灯灭。
(3)键盘
键盘是通过P1.7和P1.6的循环扫描来控制的,其中连接P1.7的S2为设置键,连接P1.6的S1为加1键,(S1、S2没有动作时,P1.6、P1.7输入为高电平,当S1、S2动作时,P1.6、P1.7输入低电平)当按下S2时,此时单片机响应按键动作,进入校时状态(设置灯亮,秒灯灭,数码管闪烁),按P1.6可实现加1功能。
当P1.7无动作而按P1.6时,单片机不响应按键动作。
电路中R10、R11都为1K。
(4)上电自动复位
AT89C51单片的RST端外部复位有两种操作方式:
上电自动复位和按键手动复位。
本设计用上电自动复位外接电路(右下图),它是利用电容充电来实现的,上电瞬间,RC电路充电,RST端出现正脉冲,在RST端持续给出2个机器周期(24个振荡周期)的高电平就可完成复位操作,二极管在这里起保护作用(也可不加)。
单片机复位后时钟默认的时间为12:
00。
(5)设置灯
5V电源通过电阻R12(1K)及绿色发光二极管加到P3.5端口,当处于设置状态时,P3.5口输出低电平,此时灯亮,计时状态P3.5口输出高电平,灯熄灭。
(6)时钟振荡电路
作品中采用6M晶振,其连接方法如图所示,其中电容C4、C5的值都为22pF。
(三)
数码管
本设计用到的共阴极数码管有10只脚(如右图),上下各5只,中间两只为接地端,将数码管和4511对应的脚连接起来再用单片机控制便正确显示数字。
为使四个数码管互相之间不干扰,采用4个阻值为150Ω的电阻分别与数码管接地端串连起来,这样做一方面对数码管起到限流保护作用,另一方面把小时和分钟各两个数码管的电流分开,避免在校时数码管显示不稳定
(四)4511集成分析
4511译码器有16只脚k(如右图),所需电源为5V。
输入脚D、C、B、A吸收BCD码,/LT、/BI和LE三脚为控制信号,当/LT=1、/BI=1、LE=0时(硬件连接图中,令/LT、/BI接电源正极,LE接地)且DCBA的值不超出1001时,4511译码显示,否则数码管消隐。
下表为4511译码器的逻辑图。
输入
输出
LE
/BI
/LT
D
C
B
A
a
b
c
d
e
f
g
显示
X
X
0
X
X
X
X
1
1
1
1
1
1
1
8
X
0
1
X
X
X
X
0
0
0
0
0
0
0
消隐
0
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1
0
1
1
0
0
0
0
1
0
1
1
0
0
1
0
1
1
0
1
1
0
1
2
0
1
1
0
0
1
1
1
1
1
1
0
0
1
3
0
1
1
0
1
0
0
0
1
1
0
0
1
1
4
0
1
1
0
1
0
1
1
0
1
1
0
1
1
5
0
1
1
0
1
1
0
0
0
1
1
1
1
1
6
0
1
1
0
1
1
1
1
1
1
0
0
0
0
7
0
1
1
1
0
0
0
1
1
1
1
1
1
1
8
0
1
1
1
0
0
1
1
1
1
0
0
1
1
9
0
1
1
1
0
1
0
0
0
0
0
0
0
0
消隐
0
1
1
1
0
1
1
0
0
0
0
0
0
0
消隐
0
1
1
1
1
0
0
0
0
0
0
0
0
0
消隐
0
1
1
1
1
0
1
0
0
0
0
0
0
0
消隐
0
1
1
1
1
1
0
0
0
0
0
0
0
0
消隐
0
1
1
1
1
1
1
0
0
0
0
0
0
0
消隐
1
1
1
X
X
X
X
锁存
锁存
三.软件工作介绍
(一)语言编程介绍
此程序采用汇编语言编写,用汇编语言编写有两方面的好处:
一方面,用汇编语言编写和高级语言(C语言)比较起来节省空间,这样对于存储空间仅4K的AT89C51来说是极之有利的,以后如果想再增加程序使实物更美观(如把1个秒灯扩展为5个,使每秒5个秒灯变化一次状态)也是可能的;另一方面,本设计为电子时钟,用汇编语言能够使时钟运行很准确,充分体现一个电子时钟最重要的一面,而用高级语言则较难达到这点。
(二)硬件及软件问题分析
考虑到本设计外观及其焊接的问题,数码的显示采用静态显示(即用4个4511显示4个数码管),虽然这样做和动态显示(用1个4511显示4个数码管)相比耗电比较大,但一方面却能降低焊线难度及减少线与线的交叉,避免相互干扰,另一方面能使实物外观大方得体。
注意:
因硬件连接关系,在软件设计中,显示小时时间位时要把数值高四位和低四位调转(SWAPA),再经P0口送到4511译码显示,而显示分钟时只要把数值直接经P2口中送至4511译码器即可正确显示时间。
(三)软件程序介绍
(1)单片机内寄存器用途分配
0.1秒、秒、分、时记录存入片内RAM60H、61H、62H、63H号单元中。
用65H号单元记录按键按动的次数。
(2)单片机工作方式
单片机用6M晶振,定时器用16位计数器(1方式)工作。
(3)时间初值
设0.1秒时间初值为Z,Z的计算方法为
(65535-Z)×2=100000,结果Z=15536D=3CB0H
(4)程序清单
ORG0000H
LJMPSTART;转入主程序
ORG000BH;0号定时器中断入口
TOIRQ:
MOV7FH,A;0号定时器的中断服务程序。
先行保护累加器存数
MOVTL0,#0B0H
MOVTH0,#3CH;重置时间常数
INC60H
MOVA,60H;0.1秒单元存数加1
CJNEA,#0AH,EXIT;未到1秒,退出
CPLP1.0;到1秒,秒灯变化1次
MOV60H,#0
MOVA,61H
ADDA,#1
DAA
MOV61H,A;秒单元存数加1
CJNEA,#60H,EXIT;未到1分,退出
MOV61H,#0;到1分
MOVA,62H
ADDA,#1
DAA
MOV62H,A;分单元存数加1
CJNEA,#60H,EXIT;未到60分,退出
MOV62H,#0;到60分
MOVA,63H
ADDA,#1
DAA
MOV63H,A;时单元存数加1
CJNEA,#24H,EXIT;未到24时,退出
MOV63H,#0;到24时
EXIT:
MOVA,7FH;恢复累加器存数
RETI;中断返回
START:
MOVTMOD,#11H;主程序入口,设两定时器均按1方式工作
MOVTL0,#0B0H;用6MC晶振
MOVTH0,#3CH;令0号定时器置入0.1秒时常
SETBEA;开启总中断
SETBET0;开放0号定时器的中断
SETBTR0;起动定时器
SETBP1.0;秒灯熄灭
MOV60H,#0;用0.1秒记录单元清0
MOV61H,#0;1秒记录单元清0
MOV62H,#00H;分记录单元清0
MOV63H,#12H;时记录单元记录初值为12
HEAD:
JBP1.7,COMPA1;校时按键没有动作,跳出
LCALLKEYDELAY;校时按键有动作,先作防抖延时
JNBP1.7,$;等候松键
LCALLKEYDELAY;作防抖动延时
INC65H;按键记录加1
COMPA1:
MOVA,65H
CJNEA,#1,COMPA2
CLRTR0;校时期间,停止走时
SETBP1.0;秒灯熄灭
CLRP3.5;设置灯亮
MOVR0,#62H;若是第一次按键,则去令分记录加1
LCALLMODIFY60
LJMPHEAD;返回检查按键是否有动作
COMPA2:
CJNEA,#2,COMPA3
SETBP1.0;秒灯熄灭
CLRP3.5;设置灯亮
MOVR0,#63H;若是第二次按键,则去令时记录加1
LCALLMODIFY24
LJMPHEAD;返回检查按键是否有动作
COMPA3:
SETBTR0;停止校时,再次起动时钟
MOV65H,#0;清除按键记录
SETBP3.5;设置灯熄灭,退出校时状态
LCALLDISPLAY
LJMPHEAD
KEYDELAY:
MOVR7,#20H;防抖动延时0.25秒
DEL1:
MOVR6,#80H
DEL2:
NOP
DJNZR6,DEL2
DJNZR7,DEL1
RET
MODIFY60:
JBP1.6,MOEXIT1
LCALLKEYDELAY;有加1键动作,先作防抖动延时
JNBP1.6,$;等候松键
LCALLKEYDELAY;作防抖动延时
MOVA,@R0
ADDA,#1
DAA
MOV@R0,A
CJNEA,#60H,MOEXIT1;秒分记录以60为上限
MOV@R0,#0
MOEXIT1:
LCALLDISPLAY
RET
MODIFY24:
JBP1.6,MOEXIT2
LCALLKEYDELAY;有加1键盘动作,先作防抖动延时
JNBP1.6,$;等候松键
LCALLKEYDELAY;作防抖动延时
MOVA,@R0
ADDA,#1
DAA
MOV@R0,A
CJNEA,#24H,MOEXIT2;时记录以24为上限
MOV@R0,#0
MOEXIT2:
LCALLDISPLAY;把更改后的时间交显示
RET
DISPLAY:
MOVA,63H;显示子程序
SWAPA;调整为正确的小时位显示顺序
MOVP0,A
MOVP2,62H
DIS0:
MOVA,65H
CJNEA,#1,DIS1;判断是否有第一次按设置键,否,跳至DIS1
MOVP2,62H;是,交分钟显示
LCALLDELAY;延时
MOVP2,#0FFH;令显示分钟的数码管消隐
LCALLDELAY
RET
DIS1:
MOVA,65H
CJNEA,#2,DIEND;判断是否有第二次按设置键,否,跳至DISEND
MOVA,63H
SWAPA
MOVP0,A;是,交小时显示
LCALLDELAY;延时
MOVP0,#0FFH;令显示分钟的数码管消隐
LCALLDELAY;延时
RET
DELAY:
MOVR7,#0B0H;校时状态数码管闪烁延时程序
DE1:
MOVR6,#80H
DE2:
NOP
JNBP1.7,DIEND;设置键有动作则跳出
JNBP1.6,DIEND;加1键有动作则跳出
DJNZR6,DE2
DJNZR7,DE1
DIEND:
RET
END;程序结果
四.结束语
本次用单片机设计的数码电子时钟至此已全部完成,从开始至结束的一切工作都经同组同学齐心协力的努力下,以及黄汉南老师和周磊军老师的关怀、支持和指导下,才能顺利的完成(因为无论是资料的采集、零件选购、软件设计、还是硬件焊接、外观设计、论文编写都是由先讨论、后确定、再经过老师的指导,最后经过分工合作来完成的),在这次的设计中体现出我们强大的团队精神,让我们感受到团队的力量。
享受到了学以致用,用以助学的快乐。
特别是两位老师无微不至的关心,更另我们感受到学院的温暖。
老师的伟大。
通过本次毕业设计,使我们对书本又有了更深层次的认识,增强了每位组员的动手能力,特别是认识到理论与实际异同。
理论需要实际的验证,实际需要理论为基础和指导。
在此向黄汉南、周磊军两位指导老师表示感谢!
五.毕业设计总结
此次毕业设计中,我们组做的是一个可在线调整的单片机数码电子时钟,从毕业设计任务下达到设计任务的完成,整个过程经历了确定设计目标、拟订设计项目、执行设计任务、完成设计任务四个步骤。
在这四个步骤中,执行设计任务是最艰辛的,但同时也是我们组团队精神得到最大发挥的时候,是我们组最具有成就感的阶段。
在执行设计任务的过程中,零件的选购、实物的焊接以及到后来论文的完成都不是最难的,最难的是硬件的调试,因为理论与实践总是存在着差距,想出来的东西没有经过实践的检验是不可靠的,任何一个小小的疏忽大意都能导致失败。
比如说,因为P0口与其它口的区别,要在AT89C51单片机的P0口上驱动LED的显示必须加上上拉电阻(资料书上只简单地用一句话来描述),但是我们在拟订设计项目的过程中忽略了这一点,以至在调试的过程中没有达到原定的计划,即无法驱动LED发光。
在查阅了大量的资料书并对实物进行详细的检查分析后,我们组终于发现问题地所在并及时地解决了问题,之后再一次对硬件进行调试,这次终于成功了。
这只是一个例子,在设计的过程中遇到的问题远远不止这一个。
从这一方面来说,我认识到要做成一件事是很难的,期中必定有很多的阻碍,但是我们一定要慢慢来,一点一点地找出问题,再一点一点地解决它,这样的话,到达成功的彼岸也就仅仅是时间的问题了。
我想,通过这次设计,特别是通过对硬件的制作而不单单是对原理的论述,我学到的不仅仅是电子方面的知识,更重要的是,我学到了作为一名电子设计者所必需的心理素质,那就是——决心加上耐心!
当然,在制作的过程中我也强烈地感受到团队的力量,没有团队地共同努力是不可能完成设计任务地。
除此之外,没有老师的关心与帮助也是很难达到设计要求的,在此再次向两位指导老师:
黄汉南及周磊军老师表示感谢!
参考文献
[1]《单片机应用系统开发实例导航》靳达主编人民邮电出版社
[2]《通用集成电路速查手册》王新贤主编山东科学技术出版社
[3]《单片机原理及应用》张伟主编机械工业出版社
[4]《单片机原理及接口技术》余锡存主编西安电子科技大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 时钟