单片机实训报告

来源: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

更多类似范文
┣ 单片机实验心得 900字
┣ 基于51单片机电子时钟设计 7400字
┣ 更多单片机实训报告
┗ 搜索类似范文