⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyscan.c

📁 spce061A驱动的128*64点阵液晶程序
💻 C
字号:
#include "keyScan.h"

#include <reg51.h>
#define KEY_BOARD P1
#define DELAY_VALUE 500
/*****************
延时子程序
*****************/
void delay()
{
 unsigned short data i;
 for(i = DELAY_VALUE;i != 0;i--);
}
/**********************
取得当前按键码
**********************/
unsigned char getKey()
{
 unsigned char data keyState,scan,count,keyCode;
 keyCode = 0xff;
 /*是否有键按下*/
 KEY_BOARD = 0xf0;
 keyState = KEY_BOARD | 0x0f;
 keyState = ~keyState;
 if(!keyState) return keyCode;
 delay();
 KEY_BOARD = 0xf0;
 keyState = KEY_BOARD | 0x0f;
 keyState = ~keyState;
 if(!keyState) return keyCode;
 /*键盘扫描*/
 scan = 0xfe;
 for(count = 0;count < 4;count++){
     KEY_BOARD = scan;
     scan <<= 1;
     scan ++;
     keyState = KEY_BOARD & 0xf0;
     if(keyState){
          switch(keyState){
          case 0xe0:
               keyCode = count;
               break;
          case 0xd0:
               keyCode = count + 4;
               break;
          case 0xb0:
               keyCode = count + 8;
               break;
          case 0x70:
               keyCode = count + 12;
               break;
          }
     }
     if(keyCode != 0xff) break;
 }
 //等到按键松开
 do{
    KEY_BOARD = 0xf0;
    keyState = KEY_BOARD | 0x0f;
    keyState = ~keyState;
 }while(keyState);
 return keyCode;
}

⌨️ 快捷键说明

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