?? key4x4.c
字號:
#include "reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_() /*定義空操作指令*/
sbit lcdrs=P3^2;
sbit lcdrw=P3^3;
sbit lcden=P3^4;
unsigned char temp,num1;
unsigned char key;
unsigned char i,j;
uint count,num;
uchar code table[]={"I LOVE ME!"};
sbit K1=P2^7;
sbit K2=P2^6;
sbit K3=P2^5;
sbit K4=P2^4;
sbit K5=P2^3;
sbit K6=P2^2;
sbit K7=P2^1;
sbit K8=P2^0;
uchar keyscan();
void delay1s(void)
{
unsigned char i,j,k;
for(k=100;k>0;k--)
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay(uint z)
{uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void lcdwrite_com(uchar com)
{ lcdrw=0;
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void lcdwrite_data(uchar date)
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void lcdinit()
{
lcden=0;
lcdwrite_com(0x38);
lcdwrite_com(0x01);
lcdwrite_com(0x0C);
lcdwrite_com(0x06);
lcdwrite_com(0x80);
}
void delaykey()
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
}
void main(void)
{ lcdinit();
while(1)
{
keyscan();
} //while
}
uchar keyscan()
{
P2=0x7f;
//K1=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
delaykey();
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key='F';
lcdwrite_com(0x01);
break;
case 0x0d:
key='B';
lcdwrite_com(0x01);
break;
case 0x0b:
key=0X38;
lcdwrite_com(0x01);
break;
case 0x07:
key=0x34;
lcdwrite_com(0x01);
break;
}
// temp=P2;
lcdwrite_data(key);
// temp=temp & 0x0f;
while(temp!=0x0f) //釋放鍵消抖
{
temp=P2;
temp=temp & 0x0f;
}
}
}
P2=0xbf;
// K2=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
delaykey();
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key='E';
lcdwrite_com(0x01);
break;
case 0x0d:
key='A';
lcdwrite_com(0x01);
break;
case 0x0b:
key=0X37;
lcdwrite_com(0x01);
break;
case 0x07:
key=0X33;
lcdwrite_com(0x01);
break;
}
// temp=P2;
//P1^0=~P1^0;
lcdwrite_data(key);
//temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
}
}
}
P2=0xdf;
// K3=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
delaykey();
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key='D';
lcdwrite_com(0x01);
break;
case 0x0d:
key=0X30;
lcdwrite_com(0x01);
break;
case 0x0b:
key=0X36;
lcdwrite_com(0x01);
break;
case 0x07:
key=0X32;
lcdwrite_com(0x01);
break;
}
// temp=P2;
//P1^0=~P1^0;
lcdwrite_data(key);
// temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
}
}
}
P2=0xef;
// K4=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
delaykey();
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key='C';
lcdwrite_com(0x01);
break;
case 0x0d:
key=0X39;
lcdwrite_com(0x01);
break;
case 0x0b:
key=0X35;
lcdwrite_com(0x01);
break;
case 0x07:
key=0X31;
lcdwrite_com(0x01);
break;
}
// temp=P2;
//P1^0=~P1^0;
lcdwrite_data(key);
// temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -