数码管显示程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数码管显示程序
一、程序X1
1、程序X1的功能:最右边的数码管显示“0”
2、程序:
ORG 0
LJMP STR
ORG 0100H
STR: MOV P3, #0FEH ;送最低位有效的位码
MOV P0, #0C0H ;送“0”的段码“0C0H”
SJMP STR
END
二、程序X2: 用查表方式显示某个显示缓冲器中的数字
1、查表显示的预备知识
设从右到左各显示器对应的显示缓冲器为片内RAM79H~7EH
3、 实例:
例:已知(79H )= 0 7H , 查段码表在最右边的数码管显示79H 中的
“7”;
注:共阳极的段码表:
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
若:(A )= 0XH
则数字“X ”对应的段码在段码表中的表地址 = TAB + X
ORG 0
LJMP STR
ORG 0100H
① 各显示器与显示缓冲器地址对应关系
显示缓冲器: 7EH 7DH 7CH 7BH 7AH 79H
对应显示
器:
② 显示缓冲器的值与显示数字的关系:
显示缓冲器中的值 对应段码表地址 显示的数字
0XH
表首址+OXH X
STR: MOV P3, #11111110B ;送最低位有效的位码
MOV 79H , #07H ;送要显示的数据到显示缓冲器
MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR
MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0)
SJMP STR
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
END
例2:. 查段码表在最右边的数码管循环显示“0”~“F”
ORG 0
LJMP STR
ORG 0100H
STR: MOV P3, #11111110B ;送最低位有效的位码
LP0: MOV 79H , #0H ;送要显示的数据的初值到显示缓冲器MOV R3 , #6 ; 送要显示的数据的个数
LP: MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR
MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0)
LCALL SE19
INC 79H
DJMZ R3 ,LP
SJMP LP0
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
SE19: MOV R6 , #0A0H
LO36: MOV R7 , #0FFH
LO35: DJNZ R7 , LO35
DJNZ R6 , LO36
RET
END
3、修改程序查段码表在最左边的数码管循环显示“0”~“9”
三、对6个数码管的操作程序X3
四、功能:通过查表使6个数码管从右到左依次循环显示对应显示缓冲
器79H~7EH中的数字0~5
1.程序:
ORG 0
LJMP X3
ORG 0100H
X3: SETB RS1 ;选工作寄存器2
MOV SP , #40H ;设置堆栈指针
MOV R0 , #79H ;对79H~7EH单元送0~5
MOV R2 , #6 ;
CLR A ;
LP0: MOV @R0 , A
INC A
INC R0
DJNZ R2, LP0
LP1: M OV 30H , #11111110B ;对字位口送选择第一个数码管的位电平
;反相后得有效的位码01H(共阳极) MOV R2 , #6 ;送数码管个数,即重复操作的次数 MOV R0 , #79H ;送第一个数码管对应的显存地址LP: MOV A ,30H ;送位码
MOV P3 , A ;
MOV A , @R0 ;要显示的数字送A
MOV DPTR , #TAB ;送段码表的首地址
MOVC A , @A + DPTR ;查表将A中的数字转换为其对应的段码
MOV P0 , A ; 段码送段码口
LCALL SE19 ;调延时
MOV A , 30H ;位码左移一位,变为使下一个数码管的位
;电平有效的位码
RL A ;
MOV 30H , A ;位码存回30H,解放A
INC R0 ;显存地址加1,指向下一个显存地址
DJNZ R2 , LP ;(R2)- 1不为0(即没有使所有数码管都显
;示),转LP,继续使下一个数码管显示的操作。
LJMP LP1 ;所有数码管都已显示,从头开始让每个数码管显
;示的操作,以获取稳定的显示图像。TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
SE19: MOV R5 , #3
LO37: MOV R6 , #0FFH
LO36: MOV R7 , #0FFH
LO35: DJNZ R7 , LO35
DJNZ R6 , LO36
DJNZ R5 , LO37
RET
END
3.修改程序
①使6个数码管从右到左循环显示对应显示缓冲器79H~7EH中的
②使6个数码管从右到左同时显示对应显示缓冲器79H~7EH中的数