📄 key.c
字号:
#include "SysDef.h"
#include "key.h"
#include "glcd.h"
unsigned char Keybuff; //
void delay(int v)
{
while(v!=0)v--;
}
void InitKey(void)
{
KeyDIR=0Xf0;
KeyOUT=0Xf0;
Keybuff=0xff;
}
unsigned char key(void)
{
unsigned char x=0xff;
KeyDIR=0Xf0;
KeyOUT=0X10; //扫描第一行
if((KeyIN&0X0f)==0X01) x=1;
else if((KeyIN&0X0f)==0X02) x=3;
else if((KeyIN&0X0f)==0x04) x=5;
else if((KeyIN&0X0f)==0x08) x=11;
else
{
KeyOUT=0X20; //扫描第二行
if((KeyIN&0X0f)==0X01) x=2;
else if((KeyIN&0X0f)==0X02) x=4;
else if((KeyIN&0X0f)==0x04) x=10;
else if((KeyIN&0X0f)==0x08) x=12;
else
{
KeyOUT=0X40; //扫描第三行
if((KeyIN&0X0f)==0X01) x=6;
else if((KeyIN&0X0f)==0X02) x=8;
else if((KeyIN&0X0f)==0x04) x=0;
else if((KeyIN&0X0f)==0x08) x=14;
else
{
KeyOUT=0x80; //扫描第四行
if((KeyIN&0X0f)==0X01 ) x=7;
else if((KeyIN&0X0f)==0X02) x=9;
else if((KeyIN&0X0f)==0x04) x=13;
else if((KeyIN&0X0f)==0x08) x=15;
}
}
}
return(x);
}
unsigned char keyjudge(void)
{
unsigned char x;
KeyDIR=0xff;
KeyOUT=0x0;
KeyDIR=0xf0;
KeyOUT=0xf0; //键盘硬件:P10--P13为行线,最上面一根为P10
x=(KeyIN&0X0f); // P14--P16为列线,最左边一根为P14,列线下拉
return(x);
}
void GetKey()
{
unsigned char ReleaseKey;
if(keyjudge()!=0X00)
{
delay(1000) ; //消抖动
if(keyjudge()!=0X0)
{
Keybuff=key(); //按键见键值保存到队列
GLCD_LcdInit();
GLCD_Locate (0, 2);
GLCD_DisplayINT(Keybuff);
}
}
//ReleaseKey= keyjudge();
//while(ReleaseKey!=0X00) ReleaseKey= keyjudge(); //等待键释放
KeyOUT=0X0f;
}
void TaskKey(void)
{
GetKey(); //get key number
/* if(( Keybuff>=0) && ( Keybuff<10)) DealNum();
else if( Keybuff==11) Rest();
else if(Keybuff==12 ) DealDel();
else if( Keybuff==13) Dealpschange();
else if( Keybuff==14) DealENl();
else if( Keybuff==15) Doorbell(); */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -