电工学习网

 找回密码
 立即注册

单片机键盘程序设计小结

2016-7-13 16:51| 编辑:电工学习网| 查看: 4783| 评论: 0

 在图示电路中,用 P1 口接一个 4 X 4 键盘。设: SO-S9 为数字键,键值为 0-9 ,用于向单片机系统输入数据; S10-S15 为命令键,键值为 A-F ,用于对计算机系统送操作命令;每键只 1 个功能;行线接 P1 口的高 4 位;列线接 P1 口的低 4 位。


  (1)键盘扫描子程序
  KEY: MOV A, #0F 0H
  MOV P1,A
  XRL A,P1
  JZ KEYR ;无键按下返回
  ACALL DELAY ;延时去抖动
  MOV 30H,P1 ;读闭合键行位置
  MOV P1,#0FH ;反转
  MOV A,P1 ;读闭合键列位置
  ORL 30H,A ;合成键盘位置码
  LOOP: MOV A,P1 ;等待键释放
  XRL A, #0FH
  JNZ LOOP
  ACALL DELAY ;延时去抖动
  KEYR : RET
  (2)键值转换
  键盘矩阵中各键的位置码的特点是:对应该键行、列的位为“ 0 ” ,其他各位均为“ 1 ” 。例如: S7 键的位置码是: 11010111B = 0D7H ; S12 键的位置码是: 01111110B = 7EH 。将各键的位置码顺序排列成键值表,用查表法进行键值转换。
  键值转换子程序
  TRAN: MOV DPTR,#KEYTAB ; DPTR 指向键值表
  MOV R2,#0 ;键值初值送 R2
  MOV R3,#10H ;循环次数送 R3
  LOOPT: MOV A,R2
  MOVC A, @A+DPTR ;读键值表
  XRL A,30H ;与位置码比较
  JZ KTR ;相等返回,键值在 R2 中
  INC R2 ;键值 +1
  DJNZ R3,LOOPT
  KTR: RET ;若返回时 R2=10H 为错
  KEYTAB: DB 0EEH,0EDH,0EBH,0E7H ;键值表
  DB 0DEH,0DDH,0DBH,0D7H
  DB 0BEH,0BDH,0BBH,0B7H
  DB 7EH,7DH,7BH,77H

看过《单片机键盘程序设计小结》的人还看了以下文章:

发表评论

最新评论

  • 实时时钟芯片DS1302
  • 8255的控制字
  • 单片机点亮led灯程序详解
  • 单片机引脚功能定义
  • 单片机数码管显示原理
  • RS485通信和Modbus协议

电工学习网 ( )

GMT+8, 2023-3-25 19:55

Powered by © 2011-2022 www.shop-samurai.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

返回顶部