数码管显示程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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中的数

相关文档
最新文档