显示和键盘流程图及程序
3. 2
部分软件设计
3.2. 3显示子程序
动态显示程序框图如图所示•显示程序的要点有两个:一是代码转换。因为 直接驱动
LED显示器的是字形码,而人们习惯的是D. 1. 2>…、F等字符, 因此,必须将待显示的字符转换成字形码。转换用查表的方法进行。二是通过 软件实现逐位轮流点亮每个LED,
为了实现代码转换,首先开辟一个显示缓冲区,将待显示的字符预先存放在 缓冲区中。由于有q位LED显示器,故不妨假设显示缓冲区长度为4个字节。 显示缓冲区地址为DISo〜DI$3,DIE单元与晟左边一位LED相对应,DIS3单 元与最右边一位LED相对应。
程序淸单如下:
DIS: ORG MOV MOV MOVX MOV MOV MOV
A, #00 0 0001 1 B 0 5 0 0H
DPTR,坍FOOH
也 DPTR, A RO ,叭8H R 3 , # 7 FH
化R3
LD: MOV MOVX I NC MOV ADD MOVC A CALL
DPTR, #7F01H 飢)PTR, A
DPTR
A, @R0 A, #ODH A, @ DPTR
DLY
显示和键盘流程图及程序
MOV JNB RR MOV INC AJMP
LD 1 : SJMP DSEG; DB
A , R3 A, RO A, LDl R3, A RO
L DO
LD1
3FH, 06H,5BH, 4FH,6 6H, 6DH
7 DH, 07H, 7FH, 6FH
R7, #02H R6, #OFFH R6, DL1
R7, DL
DLY : MOV DL : MOV DL1: D.JNZ
D J N Z RET 3. 2.4键盘子程序
键盘扫洁子程序框图如图
ACALL
JNZ
KS .调用KS判别是否有键按下
K 1 ;有键按下转移
DT R;无键按下,调延时子程序 KEY
;加长延时时间,消除锥抖动 DI R
KS ;调用KS子程序,再次判别
有无键按下
KI:
ACALL
AJMP ACALL
ACALL DIR ; ACALL
显示和键盘流程图及程序
JNZ AJMP K 2 : MOV
MOV K3; MOV
MOV MOVX INC INC MOVX JB ff OOHMOV
送
AJMP LI: JB
行
MOV AW L2:
JB MOV
号#10H送
AJWP L3: JB
列
MOV
号# 18H送 L K:
ADD PUSH K4: ACA L L
A CALL JNZ POP RE T NEXT:INC
MO V
J NB
RL
位,
MOV
K2
,有键按下,转逐列扫描 KEY;误读键,返回
R2, ffOFEH ;首列扫描字送R2 R4, #0 0 H ,首列号送R4
DPTR, # P A ;A 口地址送DRTR
A, R2
•@DP T R, A f ;
列扫描字送8155A 口
DPTR ;扌旨向8 155C 口 DPTR;
A, © DP TR
;读取行扫描值
ACC. O,L1 ;第0行无键按下,转查第1行A, ft OOH
;第0行有键按下•该行的行首键号
LK
;转求键号
ACC ・ 1, L2 ;第1行无键按下,转查第2 A 昇 08H ;第1行无键按下,该行的行首键号
#08H 送 A
LK
;转求键号
ACC .2, L3:第 2行无键按下,转査第3行
& n 1OH
;第2行有键按下,该行的行首键
A
LK ;转査键号
ACC. 3 , NEXT
,第3行无键按下,转查下一A,#18H
;第3行有锥按下.该行的行首键
A, R4形成键释放
ACC ;未释放,等待
DIR
「键释放,弹出堆栈送ACC K4 KS
;镣扫描结束,返回
;修改列号 ACC;
R4 •
A, R2 ;
ACC. 7, KEY
;8列扫描完返回KEY
A
;未扫描完,扫描字左移一变为下列扫描字
R2, A
;扫描字暂存R2
3 /4
显示和键盘流程图及程序
AJMP
MOV
MOV MOVX I NC I NC MOVX CPL
ANL RET 按下K3 DPTR,#FA A,ffOOH; ©DPTR, A DPTR DPTR A, @ DPTR
A A, #0FH
;A 口地址送DPTR
,令扫描字00H送A 口 指向C 口
I
;读入C口行线狀态
;变正逻辑,以高电平表示 有键按下
.屏蔽高4位
;出口状态:AHO时,有键
4 /4
KS;
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务