用51单片机控制8位数码管显示特定数字,如426721850求程序
答案:1 悬赏:50
解决时间 2021-01-18 12:07
- 提问者网友:情歌越听越心酸
- 2021-01-18 06:41
用51单片机控制8位数码管显示特定数字,如426721850求程序
最佳答案
- 二级知识专家网友:老鼠爱大米
- 2021-01-18 06:50
以下代码不是采用中断方式,并且使用了74HC573,给你参考。
SEG_C BIT P1.4 ;/段控制位定义
BIT_C BIT P1.5 ;/位控制位定义
DISPLAY_BUFF EQU 30H;显示缓存30H-37H,8字节
COUN_WEI EQU 3CH ;/显示位存储区
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV SP,#60H
MOV COUN_WEI,#0
;初始化显示缓存
MOV DISPLAY_BUFF,#4
MOV DISPLAY_BUFF+1,#2
MOV DISPLAY_BUFF+2,#6
MOV DISPLAY_BUFF+3,#7
MOV DISPLAY_BUFF+4,#2
MOV DISPLAY_BUFF+5,#1
MOV DISPLAY_BUFF+6,#8
MOV DISPLAY_BUFF+7,#5
LOOP: CALL DISPLAY_0
JMP LOOP
;/显示DISPLAY_BUFF(8字节)中的数据
DISPLAY_0:
CLR SEG_C ;/关显示
CLR BIT_C ;[]
MOV P0,#0ffh;[]
SETB BIT_C
NOP
CLR BIT_C
MOV A,COUN_WEI ;//段码给出
ADD A,#DISPLAY_BUFF
MOV R0,A
MOV A,@R0
MOV DPTR,#SEG_TAB
MOVC A,@A+DPTR
MOV P0,A
SETB SEG_C
NOP
CLR SEG_C
MOV A,COUN_WEI ;/位码给出
MOV DPTR,#WEI_TAB
MOVC A,@A+DPTR
MOV P0,A
SETB BIT_C
nop
CLR BIT_C
CALL DELAY_1MS;【先clr bti—C再做延时】
INC COUN_WEI
MOV A,COUN_WEI
CJNE A,#8,DISPLAY_0
MOV COUN_WEI,#0
RET
DELAY_1MS:
MOV R1,#35;50[防止闪烁]
D1:
MOV R2,#100
DJNZ R2,$
DJNZ R1,D1
RET
SEG_TAB: DB 03fh,06H,05BH,04FH,66H,06DH,07DH,07H,07FH,06FH;共阴数码管段码[0~9]
WEI_TAB: DB 0FeH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH;
END
SEG_C BIT P1.4 ;/段控制位定义
BIT_C BIT P1.5 ;/位控制位定义
DISPLAY_BUFF EQU 30H;显示缓存30H-37H,8字节
COUN_WEI EQU 3CH ;/显示位存储区
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV SP,#60H
MOV COUN_WEI,#0
;初始化显示缓存
MOV DISPLAY_BUFF,#4
MOV DISPLAY_BUFF+1,#2
MOV DISPLAY_BUFF+2,#6
MOV DISPLAY_BUFF+3,#7
MOV DISPLAY_BUFF+4,#2
MOV DISPLAY_BUFF+5,#1
MOV DISPLAY_BUFF+6,#8
MOV DISPLAY_BUFF+7,#5
LOOP: CALL DISPLAY_0
JMP LOOP
;/显示DISPLAY_BUFF(8字节)中的数据
DISPLAY_0:
CLR SEG_C ;/关显示
CLR BIT_C ;[]
MOV P0,#0ffh;[]
SETB BIT_C
NOP
CLR BIT_C
MOV A,COUN_WEI ;//段码给出
ADD A,#DISPLAY_BUFF
MOV R0,A
MOV A,@R0
MOV DPTR,#SEG_TAB
MOVC A,@A+DPTR
MOV P0,A
SETB SEG_C
NOP
CLR SEG_C
MOV A,COUN_WEI ;/位码给出
MOV DPTR,#WEI_TAB
MOVC A,@A+DPTR
MOV P0,A
SETB BIT_C
nop
CLR BIT_C
CALL DELAY_1MS;【先clr bti—C再做延时】
INC COUN_WEI
MOV A,COUN_WEI
CJNE A,#8,DISPLAY_0
MOV COUN_WEI,#0
RET
DELAY_1MS:
MOV R1,#35;50[防止闪烁]
D1:
MOV R2,#100
DJNZ R2,$
DJNZ R1,D1
RET
SEG_TAB: DB 03fh,06H,05BH,04FH,66H,06DH,07DH,07H,07FH,06FH;共阴数码管段码[0~9]
WEI_TAB: DB 0FeH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH;
END
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息