c语言超经典矩阵式键盘的接法,流程图和扫描程序

c语言超经典矩阵式键盘的接法,流程图和扫描程序,第1张


c语言超经典矩阵式键盘的接法,流程图和扫描程序,第2张

行扫描法
  行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
判断键盘中有无键按下 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
c语言超经典矩阵式键盘的接法,流程图和扫描程序,第3张c语言超经典矩阵式键盘的接法,流程图和扫描程序,第4张

/*************************C语言键盘扫描子函数************************/
uchar KeyV()
{  uchar Key,a;
   P3=0x0f;                 //确定P3.0~P3.3为输入线,P3.4~P3.7为输出线。
   if(P3==0x0f) return(0);      //无键按下返回0.
   else
    { mling(6);               //调用延时函数,去前沿键抖
      for(a=0;a<4;a++)
        { P3=_cror_(0x7f,a);   //计算键值,依次将输出线置低电平,检查输入线。
          if(P30==0) break;   //P30表示p3.0口引脚。预先定义,以下类同
          if(P31==0) break;
          if(P32==0) break;
          if(P33==0) break;
        }  Key=P3;          //取得键值
      for(;P3!=0x0f;P3=0x0f) ;  //等待按键释放,去后沿键抖
      return(Key);            //带键值返回
  }

计算后变量Key得到的键值对照:
【0 0xee】 【1 0xed】 【2 0xeb】 【3 0xe7】 【4 0xde】 【5 0xdd】 【6 0xdb】 【7 0xd7】
【8 0xbe】 【9 0xbd】 【A 0xbb】 【B 0xb7】 【C 0x7e】 【D 0x7d】 【E 0x7b】 【F 0x77】


c语言超经典矩阵式键盘的接法,流程图和扫描程序,第5张
单片机矩阵式键盘C语言扫描子函数详细N_S图  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2714563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存