📄 key_scan.c
字号:
#include "reg51.h"
#include "intrins.h"
#include "lcd1602.h"
#define uchar unsigned char
sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
void mDelay(unsigned int DelayTime)
{
unsigned int j=0;
for(;DelayTime>0;DelayTime--)
{
for(j=0;j<125;j++)
{;}
}
}
uchar Key()
{
uchar KeyV;
uchar tmp;
P0=P0|0x1f; //四个按键所接位置
KeyV=P0;
if((KeyV|0xe0)==0xff) //无键按下
return(0);
mDelay(10); //延时,去键抖
KeyV=P0;
if((KeyV|0xe0)==0xff)
return(0);
else
{
for(;;)
{
tmp=P0;
if((tmp|0xe0)==0xff) //等待按键释放
break;
}
return(KeyV);
}
}
void main()
{
uchar KValue;
//uchar disp;
delay(10);
P1=0xff;
// lcd_init(); //初始化LCD
while(1)
{
KValue=Key();
switch (KValue)
{
case 0xfe: //P3.2=0,Start
{ //disp = 'A';
led1=!led1;
break; }
case 0xfd: //P3.3=0,Stop
{ //disp = 'B';
led2=!led2;
break; }
case 0xfb: //P3.4=0 Up
{ led3=!led3;
//disp = 'C';
break; }
case 0xf7: //P3.5=0 Down
{ //disp = 'D';
led4=!led4;
break; }
case 0xef: //P3.5=0 Down
{ //disp = 'Q';
led5=!led5;
break; }
}
//lcd_pos(0x00); //设置显示位置为第一行第1列
//lcd_wdat(disp);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -