显示和键盘流程图及程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2 部分软件设计

3.2.3显示子程序

动态显示程序框图如图所示。显示程序的要点有两个:一是代码转换。因为直接驱动LED显示器的是字形码,而人们习惯的是0、1、2、…、F等字符,因此,必须将待显示的字符转换成字形码。转换用查表的方法进行。二是通过软件实现逐位轮流点亮每个LED。

为了实现代码转换,首先开辟一个显示缓冲区,将待显示的字符预先存放在缓冲区中。由于有4位LED显示器,故不妨假设显示缓冲区长度为4个字节。显

示缓冲区地址为DIS

0~DIS

3

,DIS

单元与最左边一位LED相对应,DIS

3

单元与最

右边一位LED相对应。

程序清单如下:

DIS: ORG 0500H

MOV A,#00000011B

MOV DPTR,#7F00H

MOVX @DPTR,A

MOV R0,#78H

MOV R3,#7FH

MOV A,R3

LD: MOV DPTR,#7F01H

MOVX @DPTR,A

INC DPTR

MOV A,@R0

ADD A,#0DH

MOVC A,@ DPTR

ACALL DLY

MOV A ,R3

JNB A,R0

RR A,LD1

MOV R3,A

INC R0

AJMP LD0

LD1: SJMP LD1

DSEG:DB 3FH,06H,5BH,4FH,66H,6DH 7DH,07H,7FH,6FH DLY: MOV R7,#02H

DL: MOV R6,#0FFH

DL1: DJNZ R6,DL1

DJNZ R7,DL

RET

3.2.4键盘子程序

键盘扫描子程序框图如图

图3-4 键盘扫描子程序框图

键盘扫描子程序如下:

KEY: ORG 0440H ;

ACALL KS ;调用KS判别是否有键按下

JNZ K1 ;有键按下转移

ACALL DIR ;无键按下,调延时子程序AJMP KEY ;

K1: ACALL DIR ;加长延时时间,消除键抖动ACALL DIR ;

ACALL KS ;调用KS子程序,再次判别

有无键按下

JNZ K2 ;有键按下,转逐列扫描

AJMP KEY ;误读键,返回

K2: MOV R2,#0FEH ;首列扫描字送R2

MOV R4,#00H ;首列号送R4

K3: MOV DPTR,#PA ;A口地址送DRTR

MOV A,R2 ;

MOVX @DPTR,A ;列扫描字送8155A口

INC DPTR ;指向8155C口

INC DPTR ;

MOVX A,@ DPTR ;读取行扫描值

JB ACC.0,L1 ;第0行无键按下,转查第1行

MOV A,#00H ;第0行有键按下,该行的行首键号#00H 送

A

AJMP LK ;转求键号

L1: JB ACC .1,L2 ;第1行无键按下,转查第2行MOV A,#08H ;第1行无键按下,该行的行首键号 #08H送A

AJMP LK ;转求键号

L2: JB ACC .2,L3 ;第2行无键按下,转查第3行MOV A,#10H ;第2行有键按下,该行的行首键号#10H 送

A

AJMP LK ;转查键号

L3: JB ACC.3,NEXT ;第3行无键按下,转查下一列MOV A,#18H ;第3行有键按下,该行的行首键号#18H 送

A

LK: ADD A,R4 ;形成键释放

PUSH ACC ;未释放,等待

K4: ACALL DIR ;键释放,弹出堆栈送ACC ACALL KS ;键扫描结束,返回

JNZ K4 ;修改列号

POP ACC ;

RET

NEXT:INC R4 ;

MOV A,R2 ;

JNB ACC.7,KEY ;8列扫描完返回KEY

RL A ;未扫描完,扫描字左移一位,

变为下列扫描字MOV R2,A ;扫描字暂存R2

AJMP K3 ;

KS: MOV DPTR,#PA ;A口地址送DPTR

MOV A,#00H ;

MOVX @DPTR,A ;令扫描字00H送A口

INC DPTR ;指向C口

INC DPTR ;

MOVX A,@ DPTR ;读入C口行线状态

CPL A ;变正逻辑,以高电平表示

有键按下

ANL A,#0FH ;屏蔽高4位

RET ;出口状态:A≠0时,有键按下

相关文档
最新文档