资源描述
单片微型计算机原理与接口技术课程设计报告
班级:
姓名:
学号:
指引教师:
日期:
一、 课程题目: 秒表
二、 课程规定:
1.可启动、暂停、继续和复位。
2.4位显示,精准到0.1(999.9)
3.可正计时、倒计时。正计时时,从0000开始,最大到999.9秒
倒计时时,从设定期间开始
4.通过键设定期间,可设定正计时结束时间和倒计时开始时间,当到达设定期间或倒计时到0时报警,数码管闪烁最后时间,同步上传本机地址06H。
5.本机地址为03H,当接到上位机发03H时,则回发03H
当接到上位机发AAH时,则将当前显示秒值发给上位机
三、硬件系统设计阐明及原理图
1、原理图
图中与P1.0相接按钮为开始按钮,与P1.1相接按钮为计时控制按钮(按下为正计时,按上为倒计时),与P1.2、P1.3相接按钮为置数按钮(P1.2置前两位 P1.3置后两位),与P1.4相接按钮为正计时按钮(按下时可以越过所定期间始终到999.9s不准时,到所定期间即停止),与P3.2相接按钮为暂停\继续按钮,与P3.3相接按钮为复位按钮。
2、版图:
四、软件流程图及软件清单:
置数
正计时
倒计时
暂停\继续
复位
判断P1.1高低电平
低
高
判断P3.3
判断P3.3
判断P3.2
判断P3.3
开始
软件清单:
ORG 0000H
JMP MAIN
ORG 0003H
JMP L1
ORG 000BH
JMP L2
ORG 0013H
JMP L3
ORG 0023H
JMP CHUKOU
MAIN:MOV TMOD,#21H /设立定期计数方式
MOV SCON,#40H /设立串口工作方式
MOV TH1,#0FAH
MOV TL1,#0FAH /设立波特率
MOV IP,#10H
SETB EA /开CPU总中断
SETB EX0 /开中断T0中断
SETB IT0 /设立T0工作方式
SETB EX1 /开中断T1中断
SETB IT1 /设立T1工作方式
SETB ES /开串口中断
MOV PCON,#00H /波特率不倍增
MOV R1,#05H
MOV R3,#00H
MOV R4,#00H
MOV R6,#00H
GG:MOV P1,#07FH
LCALL BB
LCALL CC
LCALL DD
LCALL DELAY
MOV R0,66H
LCALL CC1
LCALL DD1
LCALL DELAY
MOV R0,65H
LCALL CC2
LCALL DD
LCALL DELAY
MOV R0,64H
LCALL CC3
LCALL DD
LCALL DELAY
JNB P1.2,GG1
INC R4
LCALL XIAN
GG1:JNB P1.3,GG2
INC R6
LCALL XIAN
GG2:MOV 60H,R4
MOV 61H,R6
MOV R5,60H
MOV R7,61H
INC R5
INC R7
JNB P1.0,GG
/置数
HH:JB P1.1,HH1 / 判断P1.1口
MOV R4,#00
MOV R6,#00
SETB ET0
SETB TR0
HH2:JB P1.1,HH1
LCALL BB
LCALL CC
LCALL DD
LCALL DELAY
MOV R0,66H
LCALL CC1
LCALL DD1
LCALL DELAY
MOV R0,65H
LCALL CC2
LCALL DD
LCALL DELAY
MOV R0,64H
LCALL CC3
LCALL DD
LCALL DELAY
JNB RI,HH2
JMP CHUKOU
JMP HH2
/ 正计时
HH1:LCALL FF
LCALL CC
LCALL DD
LCALL DELAY
MOV R0,66H
LCALL CC1
LCALL DD1
LCALL DELAY
MOV R0,65H
LCALL CC2
LCALL DD
LCALL DELAY
MOV R0,64H
LCALL CC3
LCALL DD
LCALL DELAY
JNB RI,HH2
JMP CHUKOU
JMP HH2
/倒计时
BB:CJNE R4,#99,EE
INC R6
MOV R4,#00H
CJNE R6,#99,EE
CJNE R4,#99,EE
LJMP JIESHU1
/ 正计时结束判断
FF:CJNE R6,#00,FF1
CJNE R4,#00,EE
LJMP JIESHU2
/ 倒计时结束判断
FF1:CJNE R4,#00,EE
DEC R6
MOV R4,#99
EE:MOV A,R6
MOV B,#10
DIV AB
MOV 64H,A
MOV 65H,B
MOV A,R4
MOV B,#10
DIV AB
MOV 66H,A
MOV 67H,B
MOV R0,67H
RET
/取各位数字
CC:
MOV A,#0EH
MOV P2,A
RET
CC1:
MOV A,#0DH
MOV P2,A
RET
CC2:
MOV A,#0BH
MOV P2,A
RET
CC3:
MOV A,#07H
MOV P2,A
RET
/ 取数码管各位地址
DD:MOV DPTR,#TAB
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
RET
/取无小数点各位显示数字
DD1:MOV DPTR,#TAB1
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
RET
/ 取有小数点各位显示数字
XIAN:MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
JNB TF0,$
CLR TF0
DJNZ R1,XIAN
MOV R1,#05H
RET
DELAY:MOV R2,#1000
DELAY1:DJNZ R2,DELAY1
RET
/各位数字显示延时
L1:CJNE R3,#00H,AA
CLR ET0
CLR TR0
INC R3
RETI
/ 暂停中断
L2:MOV TH0,#3CH
MOV TL0,#0B0H
JB P1.1,II
INC R4
JNB P1.4,L21
DJNZ R5,L21
DJNZ R7,L22
JMP JIESHU
L22:MOV R5,#99
L21:
RETI
II:DEC R4
RETI
/定期显示最小时间单位
AA:SETB ET0
SETB TR0
MOV R3,#00H
RETI
/ 继续中断
L3:MOV R4,60H
MOV R6,61H
CLR ET0
CLR TR0
RETI
/复位中断
CHUKOU:MOV A,SBUF
CLR RI
CJNE A,#03H,FAS
MOV SBUF,A
CLR TI
FAS:CJNE A,#0AAH,QZ
MOV A,R4
MOV SBUF,A
MOV A,R6
MOV SBUF,A
CLR TI
QZ: RETI
/ 串口中断
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH
JIESHU:SETB P1.7
L4:MOV R4,60H
MOV R6,61H
LCALL EE
LCALL CC
LCALL DD
LCALL DELAY
MOV R0,66H
LCALL CC1
LCALL DD1
LCALL DELAY
MOV R0,65H
LCALL CC2
LCALL DD
LCALL DELAY
MOV R0,64H
LCALL CC3
LCALL DD
LCALL DELAY
JMP L4
/正计时结束时所显示数字
JIESHU1:SETB P1.7
L5:MOV A,#00H
MOV P2,A
MOV A,#6FH
MOV P0,A
JMP L5
/正计时计满时所显示数字
JIESHU2:SETB P1.7
L6:MOV A,#00H
MOV P2,A
MOV A,#3FH
MOV P0,A
JMP L6
/倒计时结束时所显示数字
END
五、个人感想、体会:
通过本次做单片机课程设计,使我理解了使用汇编语言时应当注意某些基本领项。初步掌握了编写汇编语言中关于定期、中断(涉及串口中断)以及顺序、多分支、循环等构造应用,及将上面程序如何安排在一种较大程序当中。在课程设计当中学会了使用Proteus 7.5 SP3软件使用,并通过此软件绘制硬件原理图及版图,在原理图上进行程序仿真,验证程序功能等。虽然最后未作出实物,但仍让我收获颇多。
展开阅读全文