keyscan.c
来自「单片机实现计算器程序」· C语言 代码 · 共 71 行
C
71 行
//#include <lcd.c>
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
void lcd_wr(char a);
//sbit dc=P2^0;
//sbit rw=P2^1;
//sbit cs=P2^4;
void delay(uint i)
{while(i--);}
uchar keyscan(void)
{uchar rcode , lcode;
P0=0xf0;
if((P0&0xf0)!=0xf0)
{delay(500);
if((P0&0xf0)!=0xf0)
{rcode = 0xfe;
while((rcode&0x10)!=0)
{P0 = rcode;
if((P0&0xf0)!=0xf0)
{lcode = P0&0xf0;
rcode = rcode&0x0f;
return(rcode+lcode);
}
else
rcode = (rcode<<1)|0x01;
}
}
}
return(0);
}
/*void lcd_wr(uchar a)
{
P0 = a;
} */
void main(void)
{uchar key;
while(1)
{
key = keyscan();
switch(key)
{
case 0xee:lcd_wr('0');
case 0xde:lcd_wr('1');
case 0xbe:lcd_wr('2');
case 0x7e:lcd_wr('3');
case 0xed:lcd_wr('4');
case 0xdd:lcd_wr('5');
case 0xbd:lcd_wr('6');
case 0x7d:lcd_wr('7');
case 0xeb:lcd_wr('8');
case 0xdb:lcd_wr('9');
case 0xbb:lcd_wr('+');
case 0x7b:lcd_wr('-');
case 0xe7:lcd_wr('*');
case 0xd7:lcd_wr('%');
case 0xb7:lcd_wr('=');
case 0x77:lcd_wr('0');
default :break;
}
delay(500);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?