电子计时器的设计.docx
《电子计时器的设计.docx》由会员分享,可在线阅读,更多相关《电子计时器的设计.docx(19页珍藏版)》请在冰点文库上搜索。
电子计时器的设计
电子计时器的设计
一、设计内容
用AT89C51单片机及接口电路设计一个电子计时器.
二、设计要求
1.系统硬件设计:
根据任务要求,完成单片机最小系统及其扩展设计,组成功能完整的系统.
2.系统软件设计:
根据数字电子计时器功能,完成控制软件的编写与调试,并对数码显示进行控制.
3.基本功能说明:
(1).上电时自动点亮数码管.
(2).设置一个控制按键“START”,按下该按键,则时钟以秒为单位开始计时,显示及时范围为:
00:
00:
00—23:
59:
59.
(3).运行状态下可通过控制按键“PAUSE”使时钟暂停,同时显示已计时数值,此后,若按下继续运行按钮“CONTINUE”,则计时器继续计时.
(4).按下复位按钮“CLEAR”,时钟复位(清零),并进入下一次计时状态.
(5).具备校时功能,其中:
HOURG---校正小时个位显示
MINS---校正分钟十位显示
MING---校正分钟个位显示
SECS---校正秒钟十位显示
三.设备及工作环境
(1)硬件:
计算机一台.
(2)软件:
Windows操作系统、单片机编译软件KEILUVISION,仿真软件PROTEUS7.4
四.设计思路
电子计时器主要由AT89C51、显示模块、控制模块和计时运算模块四大部分组成.其中控制模块和计时运算模块主要对时、分、秒的数值显示和调整进行操作,并且秒计算到60时,自动清零并向分进1;分计算到60时,自动清零并向时进1;时计算到24时,自动清零.这样,就形成了循环计时,显示模块主要用来显示当前计数值。
A89C51是整个设计的核心,主要用来产生定时中断,传输数据和控制各个部件工作.
五.1.整体功能说明
在LED数码管上能实现数字计时器的时、分、秒显示,并能对时、分、秒进行加1校对和清零.通过控制键控制计时器的开始,暂停,继续和清零.并且开机时时钟时从00:
00:
00开始计时的,到23:
59:
59时再回到00:
00:
00.
2.模块功能说明
(1)AT89C51简介,如下图所示
①TMOD定时器/计数器方式寄存器
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址.TMOD的格式如下图所示.
②TCON定时器/计数器控制寄存器
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H--8FH,由于有位地址,十分便于进行位操作,如下图
③定时器/计数器的初始化:
由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作.初始货的步骤一般如下:
1、确定工作方式(即对TMOD赋值);
2、预置定时或计数的初值;
3、根据需要开放定时器/计数器的中断(直接对IE位赋值);
4、启动定时器/计数器.
(2)按键电路及74LS21
由八个开关和两个与门(74LS21)以及与89C51引脚连线构成,主要完成对计时的启动,清零,暂停,继续和对小时,分钟,秒进行调整.
(3)74HC02
两个74HC02主要用来控制74HC373工作.其中,U5.A通过P2.7和P3.6(/WR)引脚控制U3工作.U5.B通过P2.6和P3.6(/WR)引脚控制U2工作.
(4)74HC373,如下图
74HC373为三态输出八D锁存器,74HC373的输入端D0-D7可直接与总线相连.当三态允许控制端OE为低电平时,Q0-Q7为正常逻辑状态,可用来驱动负载或总线.当OE为高电平时,Q0-Q7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响.当锁存允许端LE为高电平时,Q端随D端改变而改变.当LE为低电平时,Q端被锁存在已建立的数据电平.
(5)LED数码管
7SEG-MPX6-CC是7段6位共阴级数码管,DP为小数点,位码(1-6)应轮流通低电位,段码控制数码管的显示:
0-b,1-g,2-a,3-f,4-c,5-e,6-h,7-d.共阴极LED数码管,它是将发光二极管的阴极(负极)短接后作为公共阴极.当驱动信号为高电平才能发光.
(6)系统总体原理图
3.系统使用说明
START(P1.7)键:
用来启动计时;
CONTINUE(P1.6)键:
计时暂停后用来继续计时.
CLEAR(P1.5)键:
对时、分、秒各单元进行清零.
PAUSE(P1.4)键:
用来暂停当前计时.
HOUR(P1.3)键:
对时进行加1运算.
MINS(P1.2)键:
对分单元的十位进行加1运算.
MING(P1.1)键:
对分单元的个位进行加1运算.
SECS(P1.0)键:
对秒单元的十位进行加1运算.
六.设计框图
七.程序流程图
1.主程序流程图
2.时钟显示程序流程图
3.外部中断处理流程图
八.源程序清单
ORG0000H
AJMPSTART;短转移
ORG0003H
LJMPST1;长转移
ORG000BH
AJMPTT0
ORG0030H
START:
MOV30H,#00H;秒个位内存单元
MOV31H,#00H;秒十位内存单元
MOV32H,#00H;分个位内存单元
MOV33H,#00H;分十位内存单元
MOV34H,#00H;时个位内存单元
MOV35H,#00H;时十位内存单元
MOVTMOD,#01H;定时器T0,工作方式1,
MOVTH0,#3CH;定时50MS
MOVTL0,#0B0H
MOVR0,#30H;指针指向显示单元
MOVR5,#0FEH;选中秒个位
MOVR1,#20
MOV36H,#00H;时位键盘判断时用
MOVR3,#6;秒十位判断时用
MOVR2,#6;分十位判断时用
MOVR4,#10;秒个位判断时用
MOV40H,#10;分个位判断时用
MOVIE,#81H;外部中断0中断允许
MAIN:
LCALLDIS
LJMPMAIN
;显示子程序
DIS:
MOVA,R5;先位码
MOVDPTR,#7FFFH;位码选择p2.7
MOVX@DPTR,A
MOVA,@R0;再段码,取显示数据
MOVDPTR,#TAB;表地址
MOVCA,@A+DPTR;查表,取出字型码
MOVDPTR,#0bFFFH;段码选择p2.6
;显示小数点
CJNER0,#32H,GO111;小数点选择(R0)=/=32H转移
ORLA,#80H
GO111:
CJNER0,#34H,MIN
ORLA,#80H
MIN:
MOVX@DPTR,A;送出去显示
LCALLDELAY;1MS延时
LCALLDELAY
LCALLDELAY
INCR0;修改指针指向下一显示单元
MOVA,R5;也可写为XCHA,R5
JNBACC.5,LH;判断显示完否?
RLA;也可写为XCHR5,A
MOVR5,A
AJMPENR;返回循环显示
LH:
MOVR0,#30H;重新定义显示指针
MOVR5,#0FEH;重设位码,形成循环ACC.0-ACC.3
ENR:
RET
;定时中断
TT0:
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR1,FANHUI;判断1秒到否?
未到跳转
MOVR1,#20
INC30H;秒个位加一
DJNZR4,FANHUI;判断10秒到否?
未到跳转,判断秒个位满否
MOVR4,#10;计时未到装初值
MOV30H,#00H;计时到则清零
INC31H;秒计时到,分个位加1(进位)
DJNZR3,FANHUI
MOVR3,#6
MOV31H,#00H
INC32H
DJNZ40H,FANHUI
MOV40H,#10
MOV32H,#00H;分个位计时到则清零
INC33H
DJNZR2,FANHUI
MOVR2,#6
MOV33H,#00H
INC36H;时位判断时用
MOVA,36H
CJNEA,#24,JUMP;时位计时不满则转移,若满则清零
MOV36H,#00H
JUMP:
MOVA,36H
MOVB,#10
DIVAB
MOV34H,B
MOV35H,A;显示时位
FANHUI:
RETI
;*键盘处理程序
ST1:
CLREX0;键盘1(校秒十位)判断时用,禁止外部中断0中断
PUSHB
PUSHACC
JBP1.0,ST2;若P1.0接通则调用延时去抖动子程序;若未通则跳转到下一控制位
LCALLDELAY111
JNBP1.0,$
LCALLDELAY111
DJNZR3,GO;计时未满则转移
MOVR3,#6;倒计时满(计数值满)则赋初值
GO:
INC31H;秒个位满则秒十位加一进位
MOVA,31H
CJNEA,#6,$+3;判读秒十位满否
JNBP1.0,$;P1.0为0则执行该指令,等待
JCST2
MOV31H,#00H
MOVA,31H
ST2:
JBP1.1,ST3;键盘2判断时用(校分个位)
LCALLDELAY111
JNBP1.1,$
LCALLDELAY111
DJNZ40H,GO1
MOV40H,#10
GO1:
INC32H
MOVA,32H
CJNEA,#10,$+3
JNBP1.1,$
JCST3
MOV32H,#00H
MOVA,32H
ST3:
JBP1.2,ST4;键盘3判断时用(校分十位)
LCALLDELAY111
JNBP1.2,$
LCALLDELAY111
DJNZR2,GO2
MOVR2,#6
GO2:
INC33H
MOVA,33H
CJNEA,#6,$+3
JNBP1.2,$
JCST4
MOV33H,#00H
MOVA,33H
ST4:
JBP1.3,ST5;键盘4判断时用(校时)
LCALLDELAY111
JNBP1.3,$
LCALLDELAY111
INC36H
MOVA,36H
CJNEA,#24,JUMP1
MOV36H,#00H
JUMP1:
MOVA,36H
MOVB,#10
DIVAB
MOV34H,B
MOV35H,A
ST5:
JBp1.4,ST6;(键PAUSE)
LCALLDELAY111
JNBP1.4,$
LCALLDELAY111
CLRTR0;定时器T0停止运行
ST6:
JBP1.5,ST7;(键CLEAR)
LCALLDELAY111
JNBP1.5,$
LCALLDELAY111
MOV30H,#00H;秒单元清零
MOV31H,#00H
MOV32H,#00H;分单元清零
MOV33H,#00H
MOV34H,#00H;时清零
MOV35H,#00H
LCALLDIS;调用显示子程序
LJMPTT0;跳转到定时中断子程序
ST7:
JBP1.6,ST8;(键CONTINUE)
LCALLDELAY111
JNBP1.6,$
LCALLDELAY111
SETBTR0;启动T0运行控制位(START)
ST8:
JBP1.7,ST9
LCALLDELAY111
JNBP1.7,$
LCALLDELAY111
SETBET0;开T0中断(T0溢出中断允许位)
SETBTR0;计时开始
ST9:
POPACC;键盘中断返回
POPB
SETBEX0;允许外部中断0中断
RETI
;延时1MS子程序
DELAY:
MOVR7,#02H
DE1:
MOVR6,#0FEH
DE2:
DJNZR6,DE2
DJNZR7,DE1
RET
;键盘延时消抖程序
DELAY111:
MOV50H,#2
DE1111:
MOV51H,#255
DJNZ51H,$
DJNZ50H,DE1111
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
END
九.系统软件调试
1.在软件KEILUVISION2中新建工程,设置晶振及其他条件,编译调试,生成“123.HEX”文件,并保存于桌面.
2.在PROTEUS7.4仿真软件中绘制系统原理图
3.装载“桌面\123.HEX”文件.
4.全速运行验证系统工作过程,检查设计要求的各个功能是否实现
十.系统仿真结果扫描图
十一.设计总结
本次课程设计是用80C51单片机、各种芯片及接口电路设计一个电子计时器,经过认真地查找资料与编写程序以及调试程序,结果满足设计要求,验证无误.
从开始设计到仿真实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战。
在此期间,我学到了很多知识也有很多感受,我开始了独立的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。
当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。
我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
在设计过程中,通过针对性地查找资料,了解了些电子方面的资料,既增长了自己见识,补充对AT89C51有了一个全面的认识,在此基础上结合以前所学的专业知识,这次知识贯穿到一起,对电子专业有了一个更全面的认识!
总之这次毕业设计让我把理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合等方面全面的培养学生的全面素质。
这些在我今后的学习和工作当中都会有很大的帮助。
十二.参考文献
[1]李朝清.单片机原理与接口技术.北京航空航天大学出版社。
2005.10
[2]耿永刚.单片机与接口应用技术.华东师范大学出版社.2008.04
[3]胡汉才编著.单片机原理及其接口技术.清华大学出版社.2004.
[4]孙涵芳.MCS-51系列单片机原理及应用.北京航空航天大学出版社.1996-4.
[5]黄正谨.综合电子设计与实践[M].东南大学出版社.2002-3.
[6]李华.MCS-51系列单片机实用接口技术.北京航空航天大学出版社.1993.5.
[7]梅丽凤,王艳秋,汪毓铎.单片机原理及接口技术.清华大学出版社.2003.5.
[8]何立民.单片机应用系统设计.北京航空航天大学出版社.2002.