一、设计任务
1、如图1,在AT89C51的P0端口的8个引脚接上一个数码管,利用单片机让数码管显示一个静态的数“6”。
2、如图2,在AT89C51的P0端口的8个引脚接上一个数码管,利用单片机让数码管连续显示0~~9数字,时间间隔0.2秒。
3、如图3,做数码管的动态显示,P0端口的8个引脚接数码管数据引脚,P2.0~~P2.4接5个数码管的位选引脚。让数码管依次循环显示“8 9 C 5 1”, 时间间隔0.2秒。
二、电路原理图
图1:数码管显示一个静态的数“6
图2——1:单片机让数码管连续显示0~~9数字的“3”
图2——2:单片机让数码管连续显示0~~9数字的“7”
图3——1:数码管动态显示“8”
图3——2:数码管动态显示“C”
三、设计程序
//数码管显示一个静态的数“6(设计1)
MAIN:CLR
P0.0
SETB P0.1
CLR
P0.2
CLR
P0.3
CLR
P0.4
CLR
P0.5
CLR
P0.6
SETB P0.7
AJMP MAIN
END
//单片机让数码管连续显示0~~9数字,时间间隔0.2秒。(设计2)
ORG 00H
START:MOV DPTR,#TABLE
S1:MOV A,00H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
INC DPTR
LJMP S1
DELAY:MOV R5,#20
D2: MOV R6,#20
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABLE:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
//数码管的动态循环显示“8 9 C 5 1”(设计3)
MAIN:MOV P0,#80H
;显示数字8
CLR P2.0
ACALL DELAY1
MOV P0,#0FFH
MOV P2,#0FFH
MOV P0,#90H
;显示数字9
CLR P2.1
ACALL DELAY1
MOV P0,#0FFH
MOV P2,#0FFH
MOV P0,#0C6H
;显示数字C
CLR P2.2
ACALL DELAY1
MOV P0,#0FFH
MOV P2,#0FFH
MOV P0,#92H
;显示数字5
CLR P2.3
ACALL DELAY1
MOV P0,#0FFH
MOV P2,#0FFH
MOV P0,#0F9H
;显示数字1
CLR P2.4
ACALL DELAY1
MOV P0,#0FFH
MOV P2,#0FFH
AJMP MAIN
;循环
DELAY1:MOV R1,10
L1:MOV R2,100
DJNZ R2,$
DJNZ R1,L1
RET
END
|