来源:m.fanwen118.com时间:2023.3.20
单片机工程实践
(第2组)
题 目: 电子秒表 (任务一)
组长:
组员:
指导教师:刘伟、裴岩、斯日古楞 韩海波、马少瑛、高鹏
设计时间:20xx年6月16日——20xx年6月27日
内蒙古工业大学课程设计(论文)任务书
目 录
一、设计目的 .......................................................... 1
二、设计任务 .......................................................... 1
2.1任务内容…………………………………………………………………………1
2.2任务分工……………………………………………………………………………1
三、框图
3.1各任务硬件框图
3.11蜂鸣器自检……………………………………………………………………1
3.12 LED 显示器自检………………………………………………………………2
3.13键盘自检………………………………………………………………………2
3.14自选任务电子秒表…………………………………………………………… 2
3.2各任务流程框图
3.21蜂鸣器自检……………………………………………………………………3
3.22 LED 显示器自检………………………………………………………………3
3.23键盘自检…………………………………………………………………………4
3.24自选任务电子秒表……………………………………………………………4
四、程序清单
4.1蜂鸣器自检…………………………………………………………………………6
4.2 LED 显示器自检…………………………………………………………………6
4.3键盘自检………………………………………………………………………… 8
4.4自选任务电子秒表……………………………………………………………… 11
五、设计体会 ......................................................... 16
六、参考资料 ......................................................... 17
一、设计目的:
通过以AT89C51为中心仪表电路,让我们对电路中的LED,蜂鸣器,键盘和拨盘等的操作原理有了进一步的了解,并且在编程实现各项功能的过程中,熟悉设计一个合格的程序的流程以及要求。 通过给定设计任务,从给定的任务要求出发,设计出正确的框图,并用汇编实现任务,在此过程中处理一些简单的电路上的以及程序上的错误。
二、设计任务:
2.1任务内容:
基本任务:完成蜂鸣器、键盘、七段LED 显示器。
(1)蜂鸣器自检
要求:利用编程实现两种以上声音。
(2)键盘自检
要求:确定键盘正常无故障。
(3)七段LED 显示器自检
要求:确定LED 显示器每一段均正确。
自选任务:电子秒表
功能:(1)显示时间范围0~59分59秒
(2)跑表时间范围0~59分59秒
硬件环境:LED显示器、键盘等
2.2任务分工:
三、框图(包括自检和任务的框图):
1、 硬件编程框图
(1)蜂鸣器自检硬件编程框图
1
(2)LED自检硬件编程框图
(3)键盘自检硬件编程框图
(4)自选题目电子秒表编程框图:
2
键盘
K1:开启/关闭LED
K2:计时、暂停、
续计、暂停
K3:跑表清零单片机反相器LED显示
器
3-8
2、各个任务框图
(1) 蜂鸣器自检程序框图
(2)LED显示器自检程序框图
3
(3)键盘自检框图
(4)自选题目:电子秒表框图
一级框图
4
二级框图 主程序
Y
5
四、 程序清单:
(1)蜂鸣器
BEEP: MOV R0,#10 ;设定BEEP1响铃LP4: DJNZ R4,LP4 DJNZ R3,LP3 RET
DELAY3: 次数
BEEP1:CLR P2.3 ACALL DELAY1 SETB P2.3 ACALL DELAY1 DJNZ R0,BEEP1 MOV R0,#10 BEEP2:CLR P2.3 ACALL DELAY2 SETB P2.3 ACALL DELAY2 DJNZ R0,BEEP2 MOV R0,#10 BEEP3:CLR P2.3 ACALL DELAY3 SETB P2.3 ACALL DELAY3 DJNZ R0,BEEP3
SJMP BEEP
DELAY1: MOV R2,#0AFH LP1: MOV R1,#0AFH LP2: DJNZ R1,LP2 DJNZ R2,LP1 RET
DELAY2: MOV R3,#080H LP3: MOV R4,#080H
MOV R3,#0FFH LP5: MOV R4,#0FFH LP6: DJNZ R4,LP6 DJNZ R3,LP5 RET
(2)LED查表自检
LED:LCALL L1 LCALL L2 LCALL L3 LCALL L4 LCALL L5
LCALL LL ;调用全亮程序 SJMP LED
L1:LCALL SEL1 ;选中第一块 LCALL CX RET
L2:LCALL SEL2 LCALL DX RET
L3:LCALL SEL3 LCALL DX RET
L4:LCALL SEL4 LCALL DX RET
L5:LCALL SEL5 LCALL DX
6
RET
LL:MOV R4,#0FFH N6:LCALL SEL1 MOV A,#08CH MOV P0,A LCALL DELAY2 LCALL SEL2 MOV A,#0FFH MOV P0,A LCALL DELAY2 LCALL SEL3 MOV A,#0FFH MOV P0,A LCALL DELAY2 LCALL SEL4 MOV A,#0FFH MOV P0,A LCALL DELAY2 LCALL SEL5 MOV A,#0FFH MOV P0,A LCALL DELAY2 DJNZ R4,N6 RET
SEL1:CLR P2.7 CLR P2.6 CLR P2.5 RET
SEL2:SETB P2.7
CLR P2.6 CLR P2.5 RET
SEL3:CLR P2.7 SETB P2.6 CLR P2.5 RET
SEL4:SETB P2.7 SETB P2.6 CLR P2.5 RET
SEL5:CLR P2.7 CLR P2.6 SETB P2.5 RET
DX:MOV DPTR,#TAB CLR A MOV R1, #7
LP1:MOVC A,@A+DPTR MOV P0,A ACALL DELAY1 CLR A INC DPTR DJNZ R1,LP1 MOV DPTR,#TAB1 CLR A MOV R1, #16 LP2:MOVC A,@A+DPTR
7
MOV P0,A ACALL DELAY1 CLR A INC DPTR DJNZ R1,LP2 RET
CX:MOV DPTR,#TAB2 CLR A MOV R1, #3
LP3:MOVC A,@A+DPTR MOV P0,A ACALL DELAY1 CLR A INC DPTR DJNZ R1,LP3 RET
DELAY1:MOV R5,#05H N5:
MOV R6,#0FFH N1 : MOV R7,#0FFH N2 : DJNZ R7,N2 DJNZ R6,N1 DJNZ R5,N5 RET
DELAY2:MOV R2,#14H N3:MOV R3,#32H N4:DJNZ R3,N4
DJNZ R2,N3 RET
TAB:DB 02H,04H,08H,10H,20H,40H,80H TAB1:DB
7EH,0CH,0B6H,9EH,0CCH,0DAH,0FAH,0EH,0FEH,0DEH,0EEH,0F8H,72H,0BCH,0F2H,0E2H TAB2:DB 04H,08H,80H
(3)键盘自检
KEY:
ACALL KEYIN
CPL A ;将采集的A取反
JZ KEY
ACALL TIME1 ;延时20ms,去抖动 ACALL KEYIN CPL A JZ KEY
L0:RRC A ; 是否为K1按下 JC KEY1 L1: RRC A JC KEY2
L2: RRC A JC KEY3
L3: RRC A JC KEY4
8
G: ACALL KEYOFF AJMP KEY
KEYIN: MOV P0,#0H ;LED关闭
ACALL SEL8 ACALL TIME2 SJMP G
KEY2: ACALL BEEP2 ACALL SEL2 MOV R0,#0B6H
MOV P1,#0FFH ;P1输入口置1
MOV A,P1 ACALL SEL7 RET
TIME1: MOV R1,#100 ;lp1: MOV R2,#100 LP2: DJNZ R2,LP2 DJNZ R1,LP1 RET
TIME2: MOV R0,#100 ;100ms
LP3: MOV R1,#500 LP4: DJNZ R1,LP4 DJNZ R0,LP3 RET
KEY1: ACALL BEEP1
ACALL SEL1 ; MOV R0,#0CH
MOV P0,R0 ; MOV P0,R0 ; ACALL TIME2 SJMP G
KEY3: ACALL BEEP3 ACALL SEL3 MOV R0,#9EH
延时20ms MOV P0,R0 ; ACALL TIME2 SJMP G
KEY4: ACALL BEEP4 ACALL SEL4 延时 MOV R0,#0CCH
MOV P0,R0 ; ACALL TIME2 SJMP G
SEL1: CLR P2.5 CLR P2.6 SETB P2.7 RET
位选LED1 SEL2: CLR P2.5 送1
SETB P2.6
9
送2 送3 送4
CLR P2.7 RET
SEL3: CLR P2.5 SETB P2.6 SETB P2.7 RET
SEL4: SETB P2.5 CLR P2.6 CLR P2.7 RET
SEL7: SETB P2.5 SETB P2.6 CLR P2.7 RET
SEL8: SETB P2.5 SETB P2.6 SETB P2.7 RET
BEEP1: MOV R2,#300
LP5: CLR P2.3 ACALL DELAY1
SETB P2.3 ACALL DELAY1
DJNZ R2,LP5 RET
DELAY1:
MOV
R6,#0FAH ;延时500us D1: DJNZ R6,D1 RET
BEEP2: MOV R2,#300
LP6: CLR P2.3 ACALL DELAY2 SETB P2.3 ACALL DELAY2 DJNZ R2,LP6 RET
DELAY2:
MOV
R6,#0AAH ;延时340us D2: DJNZ R6,D2 RET
BEEP3: MOV R2,#300
LP7: CLR P2.3 ACALL DELAY3
SETB P2.3 ACALL DELAY3
DJNZ R2,LP7 RET
DELAY3: MOV R6,#080H
D3: DJNZ R6,D3
10
RET
BEEP4: MOV R2,#300
LP8: CLR P2.3 ACALL DELAY4 SETB P2.3
ACALL DELAY4 DJNZ R2,LP8 RET
DELAY4:
MOV
AJMP INT0
ORG 001BH ;T1中断地址 AJMP INT1 ORG 0030H ;主程序
MAIN: MOV TMOD,#11H ;置定时器T0为工作方式1
CJ:LCALL JP ;采键
JZ CJ JB
ACC.2,STA2 ;K4键按下,则跳到STA2执行分钟显示功能 SJMP CJ
;秒表程序 STA2:
MOV R1,#MB MOV A, #00H CLR2: MOV @R1, A INC R1
CJNE R1,#69H,CLR2 SETB EA SETB TR1 1 SETB ET1 DISP2:
MOV R1,#MB+2 CALL JP
11
R6,#050H ;延时160us
D4: DJNZ R6,D4 RET KEYOFF:
ACALL KEYIN
ORL A,#0F0H CJNE A,#0FFH,KEYOFF RET
(4)自选任务电子秒表
PB EQU 50H ;跑表数值 MB EQU 60H ;秒表数值单元
;定义中断和主程序存储单元
ORG 0000H AJMP MAIN
ORG 000BH ;T0中断地址
JB
ACC.3,FUWEI ;K4键按下, JB ACC.0,STA1 JB ACC.2,DISP2 则跳到FUWEI执行清零功能
CALL SEL5 CALL A1 CALL SEL4
INC R1 CALL A1 CALL SEL3
INC R1 CALL B1 CALL SEL2
INC R1 CALL A1 AJMP DISP2
;跑表复位程序 FUWEI:
MOV R0,#PB MOV A, #00H CLR1: MOV @R0, A INC R0
CJNE R0,#59H,CLR1
SETB EA SETB ET0 CLR TR0 DISP3:
MOV R0,#PB+2 CALL JP
CALL SEL5 CALL AA CALL SEL4
INC R0
CALL AA CALL SEL3
INC R0
CALL BB CALL SEL2
INC R0
CALL AA SJMP DISP3
;跑表程序 DISP1:
MOV R0,#PB+2 CALL JP
JB ACC.0,STA1 ;K1键按下,则跳到STA1执行跑表功能 JB ACC.2,DISP2 ;K3键按下,则跳到STA2执行分钟显示功能 JB
ACC.3,FUWEI ;K4键按下,则跳到FUWEI执行清零功能 CALL SEL5 CALL AA
12
CALL SEL4 TIMEOUT: CLR ET0
INC R0 SJMP DISP1 CALL AA CALL SEL3
;显示子程序
INC R0 CALL BB CALL SEL2
INC R0 CALL AA SJMP DISP1 STA1:
SETB EA SETB ET0 SETB TR0 DISP11:
MOV R0,#PB+2 CALL JP JB
ACC.1,TIMEOUT ;K2则暂停跑表功能 CALL SEL5 CALL AA CALL SEL4
INC R0 CALL AA CALL SEL3
INC R0 CALL BB CALL SEL2
INC R0 CALL AA SJMP DISP11
AA: MOV P0,#00H
CALL DELAY1 MOV A,@R0 ;把RO指向的地址单元的内容送给A MOV
DPTR,#TB0 ;DPTR指向表TAB1的首地址
MOVC A,@A+DPTR ;取出表中对应的字型送给A寄存器 MOV
P0,A ;将字型送P0口显示 键按下, CALL
DELAY ;延时1MS RET
A1: MOV P0,#00H CALL DELAY1
MOV A,@R1 MOV DPTR,#TB0 MOVC A,@A+DPTR
MOV P0,A CALL DELAY RET
BB: MOV P0,#00H CALL DELAY1 MOV A,@R0
13
MOV DPTR,#TB1 MOVC A,@A+DPTR MOV P0,A CALL DELAY RET
B1: MOV P0,#00H CALL DELAY1 RET
;定时中断0控制跑表程序
INT0:PUSH
ACC ;保护A寄存器
MOV A,@R1 MOV DPTR,#TB1 MOVC A,@A+DPTR
MOV P0,A CALL DELAY RET
;键采集程序 JP:
P0,#00H ; CALL
SEL8 ;门
MOV
P1,#0FFH ;输入口 MOV
A,P1 ;的状态 CALL
SEL7 ;门
CPL A ANL A,#0FH
MOV TH1,#3CH ;置T1初值50MS MOV TL1,#0AFH
INC PB MOV A,PB CJNE A,#2,OUT0 MOV PB,#00H INC PB+1 MOV A,PB+1
MOV CJNE A,#10,OUT0
关显示 MOV PB+1,#00H 打开三态 INC PB+2 MOV A,PB+2
CJNE A,#10,OUT0 置P1口为 MOV PB+2,#00H INC PB+3 采集键盘 MOV A,PB+3
CJNE A,#6,OUT0 关闭三态 MOV PB+3,#00H INC PB+4 MOV A,PB+4
CJNE A,#10,OUT0
14
重
MOV PB+4,#00H INC PB+5 MOV A,PB+5
CJNE A,#10,OUT0 , MOV PB+5,#00H CJNE A,#10,OUT1 MOV MB+2,#00H INC MB+3 MOV A,MB+3
CJNE A,#6,OUT1 OUT0: POP ACC ;恢复A寄存器
RETI ;服务子程序结束返回
;定时中断1控制跑表程序
INT1:PUSH ACC ;A寄存器
MOV TH1,#3CH ;置T1初值50MS MOV TL1,#0AFH
INC MB MOV A,MB
CJNE A,#2,OUT1 MOV MB,#00H INC MB+1 MOV A,MB+1
CJNE A,#10,OUT1 MOV MB+1,#00H INC MB+2 MOV A,MB+2
MOV MB+3,#00H INC MB+4 MOV A,MB+4
中断 CJNE A,#10,OUT1 MOV MB+4,#00H INC MB+5 MOV A,MB+5
CJNE A,#10,OUT1 保护 MOV MB+5,#00H 重OUT1:POP ACC RETI
;延时子程序
DELAY:MOV R2,#2 LP1: MOV R3,#100 LP2: DJNZ R3,LP2 DJNZ R2,LP1 RET
DELAY1:MOV R4,#10 LP3: MOV R5,#250 LP4: DJNZ R5,LP4 DJNZ R4,LP3
15
RET
;译码器子程序
SEL2: CLR P2.5 CLR P2.6 SETB P2.7 RET SEL3: CLR P2.5 SETB P2.6 CLR P2.7 RET SEL4: CLR P2.5 SETB P2.6 SETB P2.7 RET SEL5: SETB P2.5
CLR P2.6 CLR P2.7 RET SEL7: SETB P2.5 SETB P2.6 CLR P2.7 RET SEL8: SETB P2.5 SETB P2.6 SETB P2.7 RET
TB0: DB 7EH, 0CH, 0B6H, 9EH, 0CCH, 0DAH, 0FAH, 0EH, 0FEH, 0DEH
TB1: DB 7FH, 0DH, 0B7H, 9FH, 0CDH, 0DBH, 0FBH, 0FH, 0FFH, 0DFH
五、设计体会 六、参考资料
1、《单片机系统综合设计与实践》教材 主编:裴岩 刘利民 内蒙古大学出版社。 2、《单片机原理及应用》教材 主编:林立 张俊亮 电子工业出版社。 3、《单片机原理与应用技术》教材 主编:潘明 黄继业 潘松 清华大学。
16
+ 更多类似范文
单片机实训报告一周的实训,让我们从另一个角度去发现单片机。期间我学会了很多宝贵的知识和经验,在这次单片机实训中我们巩固了我们平时所…
时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。在学习单片机这门课程之前,就早早的听各种任课老师和学长学…
单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。在学习单片机这门课程之前,就早早的听各…
这次实习我们使用控制电路的单片机是at89s51型号的。通过它实现对八盏双色灯发光二极管的控制p0和p2口控制四盏灯。在at89s…
单片机实训总结为了锻炼学生的动手能力及激发学生的创新能力,我们班于第十五周在单片机实验室迚行了单片机实训。在实训过程中首先我们要明…