keyscan.txt

来自「功能:4×4键盘扫描程序 返回:键序号(0~F)」· 文本 代码 · 共 47 行

TXT
47
字号
简洁高效的键盘扫描程序(单片机)/********************************************************************
*
*         函数原型:byte K_input(void);
*         功  能:4×4键盘扫描程序
*         返  回:键序号(0~F),0xFF表示没有字符输入
*
*         硬件连接:P1口(高4位 - 行;低4位 - 列)
*         软件特点:简洁高效,无须延时消抖,避免连发
*
*--------------------------------------------------------------------
*
*         编程语言:Keil-C
*         作  者:古长宏(lfgch@sohu.com)   10/18/2006 
*
*********************************************************************/       
#include  <reg51.h>
#define   byte      unsigned char
#define   KBD_Port  P1
byte code key[16]={0xEB,0xD7,0xDB,0xDD,  //0 1 2 3
                   0xB7,0xBB,0xBD,0x77,  //4 5 6 7
                   0x7B,0x7D,0xE7,0xED,  //8 9 - +
                   0xEE,0xDE,0xBE,0x7E}; //= * / C
byte K_input(void)
{
          static    bit K_status;    /*键盘状态Flag(静态局部变量)  */
          byte      i,k;
          KBD_Port=0x0F;
          k=KBD_Port;
          KBD_Port=0xFF;
          KBD_Port=k|0xF0;
          k=KBD_Port;
          KBD_Port=0xFF;
          if(k!=0xFF)
          {
                    for(i=0;i<16;i++)
                    {
                              if(k==key && K_status==0)
                              {
                                        K_status=1;
             return(i);
                              }
                    }
          }
          else
                    K_status=0;
          return(0xFF);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?