秒表计时器
秒表计时器设计
学院 化工学院 班级 生物042 设计人赵丽丽学号 041176成绩 ____
1. 设计
目
秒表计时器
2. 总体设计
1. 所能实现的功能:
1) 计时,计时数值最大为99分59秒99;
2) 停止或继续,清零。
2. 总体
:用LED数码管显示计时的时间,显示的时间应有百分之一秒位、十分之一秒位、秒个位、秒十位、分个位、分十位;利用单片机的外中断,某键为低时产生中断开始计时,再一次为低时产生中断停止计时;另一键为低时产生中断使时间清0。
3. 硬件系统设计
1. 所需设备:DICE-5013S实验系统一个,并行接口8155一个,PC微机(P4)一台。
2. 接线设计:
1) 将外部中断1的引脚INT1接到按钮一开关上,作为STOP中断;
2) 外部中断0的引脚INT0接到另一按钮开关,作为CLEAR中断。
4. 软件系统设计
1. 软件功能模块设计及流程图
先利用计时中断产生百分之一秒基时,将百分之一秒位、十分之一秒位、秒个位、秒十位、分个位、分十位分别存于片内RAM地址79H,7AH,7BH,7CH,7DH,7EH中,再由主程序显示程序将其显示在LED显示器上;开始/继续通过STOP中断对P1.2进行取反,然后在计时中断中对输入口P1.2的位进行判断来实现;清零通过在清零中断中设置各位初值来实现。
主流程图:
Y
N
Y
N
Y
N
计时中断程序流程图:
N
Y
N
Y
N
Y
2.电路图(实际为共阴极接法)
3.程序清单和注释
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP CLEAR ;清零中断
ORG 000BH
AJMP START ;计时中断
ORG 0013H
AJMP STOP ;停止中断
MAIN: MOV TMOD,#01H
;T/C0工作方式为方式1
MOV IE, #87H
MOV TL0, #78H
;置T/C0初值(216-10000/2=EC78H)
MOV TH0, #0ECH
SETB TR0
;开启各个中断
SETB IT0
SETB IT1
MOV R2, #00H ;1/100秒置初值
MOV R3, #00H ;秒置初值
MOV R4, #00H ;分置初值
MOV 79H, #00H ;1/100秒位置初值
MOV 7AH, #00H ;1/10秒位置初值
MOV 7BH, #00H ;秒位置初值
MOV 7CH, #00H ;十秒位置初值
MOV 7DH, #00H ;分位置初值
MOV 7EH, #00H ;十分位置初值
SETB P1.2
SHOW: MOV SP,#5FH
;显示程序
MOV A,#03H
MOV DPTR,#0FF20H
;设置8155初始化
MOVX @DPTR,A
DISP4: MOV R5,#01H
MOV R0,#79H
MOV A,R5
LD0: MOV DPTR,#0FF21H ;C口地址送DPTR
MOVX @DPTR,A ;位码送位选端
MOV DPTR,#0FF22H ;B口地址送DPTR
MOV A,@R0 ;待选地址偏移量送A
ADD A,#0EH ;对A进行地址修正
MOVC A,@A+PC ;查断码表
MOVX @DPTR,A ;断码送B口,1字节
ACALL DLAY ;延时1ms,2字节
INC R0 ;显示缓冲区地址加1,1字节
MOV A,R5 ;位码送A,1字节
JB ACC.5,LD1 ;若显示一遍则返回,3字节
RL A ;位码左移一位,1字节
MOV R5,A ;送回R5,1字节
AJMP LD0 ;显示下一个数码,2字节
LD1: SJMP DISP4 ;跳转到DISP4,2字节
DB 0C0H,0F9H,0A4H,0B0H,99H,92H
DB 82H,0F8H,80H,90H,88H,83H,0C6H
DB 0A1H,86H,8EH,0FFH,0CH,89H
DB 0C8H,0C1H,7FH,0BFH
DLAY: MOV R7,#02H ;延时子程序,延时1ms
DL1: MOV R6,#0FFH
DL2: DJNZ R6,DL2
DJNZ R7,DL1
RET
START: MOV TL0, #78H
MOV TH0, #0ECH
PUSH ACC
JNB P1.2,NEXT ;P1.2为0则返回不计时
INC R2
MOV A, R2
MOV B, #10
DIV AB
MOV 79H, B
;存1/100秒位
MOV 7AH, A
;存1/10秒位
CJNE R2, #100, NEXT ;1/100秒到100则秒加一
MOV R2, #00H
MOV 79H, #00H
MOV 7AH, #00H
INC R3 ;加1秒
MOV A, R3
MOV B, #10
DIV AB
MOV 7BH, B
;存秒位
MOV 7CH, A
;存十秒位
CJNE R3, #60, NEXT ;秒到60则分加一
MOV R3, #00H
MOV 7BH, #00H
MOV 7CH, #00H
INC R4
MOV A, R4
MOV B, #10
DIV AB
MOV 7DH, B
;存分位
MOV 7EH, A
;存十分位
CJNE R4, #100, NEXT ;分到100则还原
MOV R4, #00H
MOV 7DH, #00H
MOV 7EH, #00H
NEXT: POP ACC
RETI
CLEAR: MOV R2, #00H ;计时器清零
MOV R3, #00H
MOV R4, #00H
MOV 79H,#00H
MOV 7AH,#00H
MOV 7BH,#00H
MOV 7CH,#00H
MOV 7DH,#00H
MOV 7EH,#00H
RETI
STOP: CPL P1.2 ;停止或开始
RETI
END
5. 调试
1. 接线并连接单片机,运行程序看是否有编译错误,如果有进行改正。
2. 将外部中断1的引脚INT1(X10)接到一按钮开关作为STOP中断。
3. 外部中断0的引脚INT0(X15)接另一按钮开关作为CLEAR开关。
4. 运行程序。
6. 本设计的不足之处
此次设计所设计的秒表,只能
一个时间,而不能记录多个时间,可以将其改进为可以记录一组时间的秒表。
本设计中用的INT1作为停表的中断,也可以将P1.2口接到一按钮开关上,作为一个停止或开始计时的中断。
7. 收获体会
本设计基本上达到了设计的要求。在设计系统的过程中,参考了书上以及网上的一些资料,但设计系统的过程还是很艰辛的,经过了不断的调试与修改,最终才达到了成功。通过此次单片机设计实习,我提高了观察问题和搜集资料的能力。经过了本次设计,我对LED显示器和定时器等有了更深一步的认识。
感谢学校给我们提供这样一个机会,也感谢老师的教导和同学们的帮助。当然,对于单片机,我还有许多不清楚不明白的地方,以后还要努力学习。
指导教师签字:
教学部主任签字:
日 期:2007年 6月 13 日
开始�
设置系统初值
显示
有清零中断?
有停止中断?
有计时中断?
处理计时中断 中毒中断中断�
处理停止中断�
处理清零中断�
设置计时初值
P1.2为1
百分之一秒加一
存位
1/100秒为100?
秒加一
分加一
存位
存位
秒为60?
分为100?
各位重新清零
中断返回
PAGE
1
_1181816248.dwg