| 一、设计任务 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
 
 |