显示和键盘流程图及程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图3-3显示子程序方框图
程序清单如下:
DIS: ORG 0500H
MOV A,#00000011B
MOV DPTR,#7F00H
MOVX @DPTR,A
MO来自百度文库 R0,#78H
MOV R3,#7FH
MOV A,R3
LD: MOV DPTR,#7F01H
MOVX @DPTR,A
INC DPTR
MOV A,@R0
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;
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;无键按下,调延时子程序
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送
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
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;键扫描结束,返回
AJMP KEY ;
K1: ACALL DIR;加长延时时间,消除键抖动
ACALL DIR;
ACALL KS;调用KS子程序,再次判别
有无键按下
JNZ K2 ;有键按下,转逐列扫描
AJMP KEY;误读键,返回
K2: MOV R2,#0FEH ;首列扫描字送R2
MOV R4,#00H ;首列号送R4
3.2 部分软件设计
3.2.3显示子程序
动态显示程序框图如图所示。显示程序的要点有两个:一是代码转换。因为直接驱动LED显示器的是字形码,而人们习惯的是0、1、2、…、F等字符,因此,必须将待显示的字符转换成字形码。转换用查表的方法进行。二是通过软件实现逐位轮流点亮每个LED。
为了实现代码转换,首先开辟一个显示缓冲区,将待显示的字符预先存放在缓冲区中。由于有4位LED显示器,故不妨假设显示缓冲区长度为4个字节。显示缓冲区地址为DIS0~DIS3,DIS0单元与最左边一位LED相对应,DIS3单元与最右边一位LED相对应。
MOVX @DPTR,A ;令扫描字00H送A口
INC DPTR;指向C口
INC DPTR ;
MOVX A,@ DPTR ;读入C口行线状态
CPL A;变正逻辑,以高电平表示
有键按下
ANL A,#0FH ;屏蔽高4位
RET;出口状态:A≠0时,有键按下
相关文档
最新文档