位置:51电子网 » 技术资料 » 单 片 机

PIC单片机人机接口模块4×4行列式键盘的程序设计

发布时间:2008/11/26 0:00:00 访问次数:1562

  程序的主流程如图1所示。

  图1 程序的主流程

  程序主要分为两个部分:一个部分不停地监测是否有按键按下,另一个部分查看哪一个键按下。

  在初始状态下,4个列输出端口输出低电平,即rd0~rd3输出低电平,然后持续监测4个行输入端口rd4~rd7的状态是不是高电平。

  如果没有按键按下,则rd4~rd7的状态是高电平;如果有按键按下,则被按下的键对应的行输入端口的电平就会被拉低,rd4~rd7会有低电平出现,对4个行输入端口rd4~rd7的电平的监测即为对按键的监测。

  在4个行输入端口rd4~rd7上出现低电平时,就转到查询程序see。键盘扫描子程序流程如图2所示,按键查询子程序流程如图3所示。

  图2 键盘扫描子程序流程

  图3 按键查询子程序流程

  查询程序see分以下5个步骤。

  · 在4个列输出端口rd0~rd3上输出,判断哪一个端口输入低电平。

  · 在4个列输出端口rd0~rd3上输出0111,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,则可以确定哪个键按下,跳出查询程序:否则进入下一项。

  · 在4个列输出端口rd0~rd3上输出1011,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,可以确定哪个键按下,并跳出查询程序;否则进入下一项。

  · 在4个列输出端口rd0~rd3上输出1101,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,可以确定哪个键按下,跳出查询程序;否则进入下一顼。

  · 在4个列输出端口rd0~rd3上输出1110,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,可以确定哪个键按下,跳出查询程序;否则进入下一项。

  程序清单如下。

  (1)主程序。

  完成初始化,对4×4的键盘输入进行扫描,然后将其输入通过端口d的低4位输出,显示时先闪两下再输出。

  (2)键盘扫描子程序。

  test为出口参数,若有键按下则子程序返回时test=0ffh,若没有键按下,则子程序返回时test=0。

  (3)按键查询子程序。

  当有按键按下时,运行该程序。value中存放被按下的按键的键值,s0~515的键值为0~15。

  (4)延时自程序。

  count1存放外部循环次数,count2存放内部循环次数。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



  程序的主流程如图1所示。

  图1 程序的主流程

  程序主要分为两个部分:一个部分不停地监测是否有按键按下,另一个部分查看哪一个键按下。

  在初始状态下,4个列输出端口输出低电平,即rd0~rd3输出低电平,然后持续监测4个行输入端口rd4~rd7的状态是不是高电平。

  如果没有按键按下,则rd4~rd7的状态是高电平;如果有按键按下,则被按下的键对应的行输入端口的电平就会被拉低,rd4~rd7会有低电平出现,对4个行输入端口rd4~rd7的电平的监测即为对按键的监测。

  在4个行输入端口rd4~rd7上出现低电平时,就转到查询程序see。键盘扫描子程序流程如图2所示,按键查询子程序流程如图3所示。

  图2 键盘扫描子程序流程

  图3 按键查询子程序流程

  查询程序see分以下5个步骤。

  · 在4个列输出端口rd0~rd3上输出,判断哪一个端口输入低电平。

  · 在4个列输出端口rd0~rd3上输出0111,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,则可以确定哪个键按下,跳出查询程序:否则进入下一项。

  · 在4个列输出端口rd0~rd3上输出1011,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,可以确定哪个键按下,并跳出查询程序;否则进入下一项。

  · 在4个列输出端口rd0~rd3上输出1101,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,可以确定哪个键按下,跳出查询程序;否则进入下一顼。

  · 在4个列输出端口rd0~rd3上输出1110,查看4个行输入端口rd4~rd7是否有低电平出现;如果有低电平出现,可以确定哪个键按下,跳出查询程序;否则进入下一项。

  程序清单如下。

  (1)主程序。

  完成初始化,对4×4的键盘输入进行扫描,然后将其输入通过端口d的低4位输出,显示时先闪两下再输出。

  (2)键盘扫描子程序。

  test为出口参数,若有键按下则子程序返回时test=0ffh,若没有键按下,则子程序返回时test=0。

  (3)按键查询子程序。

  当有按键按下时,运行该程序。value中存放被按下的按键的键值,s0~515的键值为0~15。

  (4)延时自程序。

  count1存放外部循环次数,count2存放内部循环次数。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!