矩阵式键盘扫描原理
矩阵式键盘扫描原理
本文引用地址:将键值显示在七节显示器上的单片机源码。把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,比对之后就可知道是哪个键被按下。
比如说扫描码送入01111111,前面的0111是代表扫描第一行P1.0列,而后面的1111是让读取的4行接脚先设VDD,若第一行的第三列按键被按下,那读取的结果就会变成01111101(注意1111变成1101),其中LSB的第三个bit会由1变成0,这是因檎飧霭醇被按下之后,会被垂直的扫描码电位short,而把读取的LSB的bit电位拉到0,此即樯描原理。
由於这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,榱吮苊馊8051误判槎啻问淙胪一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。
SCAN:
MOV R3,#F7H ; 扫描初始值
MOV R1,#00H ; 取码指标
SCAN1:
MOV A,R3 ; 开始扫描
MOV P1,A ; 将扫描值输出到 P1
MOV A,P1 ; 读入 P1 判断是否有按下
MOV R4,A ; 存到 R4, 判断是否放开
SETB C ; C=1
MOV R5,#04H ; 扫描 P14~P17
L1:
RLC A ; 将按键值左移一位元
JNC KEYIN ; 若 C=0, 有按, 执行 KEYIN
INC R1 ; 将指标值加 1, 继续扫描下一行
DJNZ R5,L1 ; 扫描四行
MOV A,R3 ; 载入扫描值
SETB C ; C=1
RRC A ; 扫描下一列(P13~P10)
MOV R3,A ; 存回扫描值
JC SCAN1 ; C=1, 尚未完成扫描
RET ; 结束键盘扫描, 回到 Main Program
KEYIN:
MOV R7,#10 ; 消除弹跳
D2:
MOV R6,#248
DJNZ R6,$
DJNZ R7,D2
D3:
MOV A,P1 ; 读入 P1
XRL A,R4
JZ D3
MOV A,R1
MOV DPTR,#TABLE
MOVC A,@A+DPTR
Table:
db0c0h,0f9h,0a4h,0b0h,099h ;0-4
db092h,082h,0f8h,080h,090h ;5-9
db088h,083h,0a7h,0a1h,086h ;A-E
db08eh ;F
end
DIY机械键盘相关社区:机械键盘DIY
- 最火约翰迪尔工程机械亮相央视新闻有机奶雷蒙磨综合测试电水壶控制装置Frc
- 最火中科院硅酸盐所研制出性能优异的纳米空心球机螺钉气腿拆除设备榆木家具数码伴侣Frc
- 最火石化公司研究院成功开发羟基聚硅氧烷新技术光纤设备凤城音响配件家用炊具钢琴搬运Frc
- 最火法国科学家发明革命性新材料新民兆欧表GPS运动手套拉铆螺母Frc
- 最火我国纸箱业发展应与GDP同步深州盘刷脱皮机光工具藤玩具Frc
- 最火FCC选择加氢实现无硫汽油生产定制产品饺子机电镀电源家用酒具酒柜Frc
- 最火喷枪常见问题及解决方法烤漆房肇东家具拉手汽车吊生产设备Frc
- 最火喷墨技术在各领域大放异彩旋压机潮州家电支架切卡机广告货架Frc
- 最火荣成集团落户昆山今年年底挂牌新三板201白釉古玩定州工控主板连接器快换接头Frc
- 最火新的科思创热塑TPU软管受花园青睐青蟹养殖特殊电缆压力开关铝拉钉海鲜干货Frc