计时器课程设计.docx
《计时器课程设计.docx》由会员分享,可在线阅读,更多相关《计时器课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
计时器课程设计
1.1设计任务
(1)实现计时范围00.00-99.99秒表
(2)实现秒表精确到0.01秒
(3)实现秒表的三个控制键;开启计时键,暂停键和复位键
1.2设计要求
用单片机设计一个计时范围在00.00致99.99的秒表,秒表精确在0.01秒秒表有三个控制键分别是;秒表计时开启键,计时暂停键和秒表复位键。
2 设计思想
2.1硬件设计思想
建立最小单片机系统,在AT89C51单片机的P0端口接一个74LS47(BCD-7段数码管译码器),在译码器数码输出端接上4位七段共阳极数码管,P2.0脚接第一位数码管片选端,P2.1脚接第二位数码管片选端,P2.2脚接第三位数码片选端,P2.3脚接第四位数码管片选端,这四位分别显示秒时间的十位,个位,小数点后一位,小数点后两位显示的片选控制端。
P2.4脚接小数点控制端。
秒表控制键盘。
用P3.0接键盘开启计时键,P3.1接键盘计时暂停键,P3.2接键盘计时复位键。
2.2软件设计思想
采用汇编语言编写程序,程序共有四部分;
第一部分是主程序,用于对程序的中断控制、数据等的初始化,并且对秒表控制键盘的扫描。
第二部分时间产生程序,用定时/计数器0中断程序用时产生时间,利用每10m进入本中断程序一次,用R0,R1,R2和R3四个寄存存储中断次数用于时间,R3到R0分别是时间显示的高低位,当这个四个寄存器加大于10时,本寄存器归零用于存储显示高一位时间的寄存器加一依此类推实现对时间产生。
第三部分4位七段共阳极数码管动态显示程序,用定时/计数1中断程序每50ms对数码管各扫描一次,是利用人眼视觉暂留实现数码管的显示。
第四部分动态扫描延时程序,用于在对数码管动态扫描时,每扫描一个数码管后的延时程序。
以实现四位数码时间同时显示的效果。
3 电路原理与电路图
3.1电路原理
AT89C51单片机做为控制电路,用P1口做为数据输出端,P2口做为4位七段共阴极数码管的片选控制输出口,P3.0,P3.1,P3.2做为键盘接口。
时间显示器,由4位七段共阴极数码管构成。
用74LS47为数码管的译码器。
3.2电路原理图
4 流程图与算法描述
4.1流程图
4.2算法描述
ORG0000H
LJMPSTAR
ORG000BH
LJMPINT0
ORG001BH
LJMPSCAN
;---------------------------------------------
STARTBITP3.0
STOPBITP3.1
RESTBITP3.2
;---------------------------------------------
ORG0100H
STAR:
SETBEA
SETBET0
SETBET1
SETBTR1
MOVTMOD,#11H
MOVTH0,#216
MOVTL0,#239
MOVTH1,#60
MOVTL1,#176
MOVR0,#00H
MOVR1,#00H
MOVR2,#00H
MOVR3,#00H
MOVP3,#00H
MAIN:
CLRSTART;扫描键盘
JNBSTART,MA0;判断是否-开启计时
SETBTR0;开启-中断记时
MA0:
CLRSTOP
JNBSTOP,MA1;判断是否-暂停计时
CLRTR0;关闭-中断计时
MA1:
CLRREST
JNBREST,MAIN;判断是否-复位
CLRTR0
LJMPSTAR
;------------------------------------------------------
;程序名:
INT0
;程序功能:
产生时间
;入口参数:
无
;出口参数:
R0,R1,R2,R3
;占用参数:
R0,R1,R2,R3
;------------------------------------------------------
INT0:
MOVTH0,#216
MOVTL0,#239
INCR0
CJNER0,#10,IN
MOVR0,#00H
INCR1
CJNER1,#10,IN
MOVR1,#00H
INCR2
CJNER2,#10,IN
MOVR2,#00H
INCR3
CJNER3,#10,IN
MOVR3,#00H
IN:
RETI
;-----------------------------------------------------
;程序名:
SCAN
;程序功能:
动态扫描显示数码管
;入口参数:
R0,R1,R2,R3
;出口参数:
无
;占用资源:
R0,R1,R2,R3
;------------------------------------------------------
SCAN:
MOVTH1,#60
MOVTL1,#176
MOVP2,#11H
MOVP0,R3
LCALLDELAY
MOVP2,#02H
MOVP0,R2
LCALLDELAY
MOVP2,#14H
MOVP0,R1
LCALLDELAY
MOVP2,#18H
MOVP0,R0
LCALLDELAY
RETI
;------------------------------------------------------
;程序名:
DELAY
;程序功能:
用于动态扫描延时
;入口参数:
无
;出口参数:
无
;占用资源:
R4,R5
;------------------------------------------------------
DELAY:
MOVR4,#10
DE:
MOVR5,#100
DJNZR5,$
DJNZR4,DE
RET
END
5 程序清单
ORG0000H
LJMPSTAR
ORG000BH
LJMPINT0
ORG001BH
LJMPSCAN
;---------------------------------------------
STARTBITP3.0
STOPBITP3.1
RESTBITP3.2
;---------------------------------------------
ORG0100H
STAR:
SETBEA
SETBET0
SETBET1
SETBTR1
MOVTMOD,#11H
MOVTH0,#216
MOVTL0,#239
MOVTH1,#60
MOVTL1,#176
MOVR0,#00H
MOVR1,#00H
MOVR2,#00H
MOVR3,#00H
MOVP3,#00H
MAIN:
CLRSTART;扫描键盘
JNBSTART,MA0;判断是否-开启计时
SETBTR0;开启-中断记时
MA0:
CLRSTOP
JNBSTOP,MA1;判断是否-暂停计时
CLRTR0;关闭-中断计时
MA1:
CLRREST
JNBREST,MAIN;判断是否-复位
CLRTR0
LJMPSTAR
;------------------------------------------------------
;程序名:
INT0
;程序功能:
产生时间
;入口参数:
无
;出口参数:
R0,R1,R2,R3
;占用参数:
R0,R1,R2,R3
;------------------------------------------------------
INT0:
MOVTH0,#216
MOVTL0,#239
INCR0
CJNER0,#10,IN
MOVR0,#00H
INCR1
CJNER1,#10,IN
MOVR1,#00H
INCR2
CJNER2,#10,IN
MOVR2,#00H
INCR3
CJNER3,#10,IN
MOVR3,#00H
IN:
RETI
;-----------------------------------------------------
;程序名:
SCAN
;程序功能:
动态扫描显示数码管
;入口参数:
R0,R1,R2,R3
;出口参数:
无
;占用资源:
R0,R1,R2,R3
;------------------------------------------------------
SCAN:
MOVTH1,#60
MOVTL1,#176
MOVP2,#11H
MOVP0,R3
LCALLDELAY
MOVP2,#02H
MOVP0,R2
LCALLDELAY
MOVP2,#14H
MOVP0,R1
LCALLDELAY
MOVP2,#18H
MOVP0,R0
LCALLDELAY
RETI
;------------------------------------------------------
;程序名:
DELAY
;程序功能:
用于动态扫描延时
;入口参数:
无
;出口参数:
无
;占用资源:
R4,R5
;------------------------------------------------------
DELAY:
MOVR4,#10
DE:
MOVR5,#100
DJNZR5,$
DJNZR4,DE
RET
END
6仿真图
7设计总结
7.1设计体会
课程设计总算圆满完成了,在本次的课程设计中我深深体会到单片机在实践中的作用,通过对单片机的学习,在本次课程设计中我明白了一件的完成必然在背后夹杂着汗水,虽然有汗水,但更多的是完成之后的欣喜,悉数算来大学里的课程设计也做了几个,这次的团队配合时最好的,我们互相讨论问题,使得原本复杂的设计在我们三人的共同努力下慢慢的被我们攻克
这次课程设计中,我们做的是设计秒表计数器。
这次课程设计能够顺利,我的努力,但同时也离不开指导傅篱老师的答疑解惑。
通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解
7.2存在问题与建议
通过此次课程设计,发现了自身的不足。
编程方面与耐力方面有待提高,同时希望以后课程设计的题目能够更加贴近生活上的实际应用
参考文献:
[1]侯炳辉,沈林兴,彭澎.计算机信息管理专业(本科)毕业设计案例摘选[M].北京:
清华大学出版社,2002.1:
24-35,37.
[2]武俊良.PowerBuilder课程设计与系统开发案例[M].北京:
清华大学出版社,2003.1:
56-78.
[3]何宏.单片机原理与接口技术[M].北京:
国防工业出版社,2006
[4]楼然苗,李光飞.单片机课程设计指导.[M].北京:
北京航空航天大学出版社.2007
[5]唐朔飞.计算机组成原理.[M].北京:
高等教育出版社.2007
[6]李广弟.单片机基础[M].北京:
北京航空航天大学出版社,1994
[7]阎石.数字电子技术基础(第三版).北京:
高等教育出版社,1989