|
#include "reg51.h"
#define GPIO_KEY=P1
#define GPIO_SMG=P0
typedef unsigned char u8;
typedef unsigned int u16;
u8 KEYVALUE;
u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u16 i)
{
while(i--);
}
void keybro()
{ char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)
{ delay(1000);
if(GPIO_KEY!=0x0f)
{ GPIO_KEY=0x0f;
switch(GPIO_KEY)
{
case(0x07):KEYVALUE=0;break;
case(0x0b):KEYVALUE=1;break;
case(0x0d):KEYVALUE=2;break;
case(0x0e):KEYVALUE=3;break;
}
GPIO_KEY=0xf0;
if(GPIO_KEY!=0xf0)
{
switch(GPIO_KEY)
{
case(0x70):KEYVALUE=KEYVALUE;break;
case(0xb0):KEYVALUE=KEYVALUE+4;break;
case(0xd0):KEYVALUE=KEYVALUE+8;break;
case(0xe0):KEYVALUE=KEYVALUE+12;break;
}
}
}
}
while((a<50)&&(GPIO_KEY!=0xf0))
{
delay(100);
a++;
}
}
/*void Display()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
lsa=0;lsb=0;lsc=0;break;
case(1):
lsa=1;lsb=0;lsc=0;break;
case(2):
lsa=0;lsb=1;lsc=0;break;
case(3):
lsa=1;lsb=1;lsc=0;break;
case(4):
lsa=0;lsb=0;lsc=1;break;
case(5):
lsa=1;lsb=0;lsc=1;break;
case(6):
lsa=0;lsb=1;lsc=1;break;
case(7):
lsa=1;lsb=1;lsc=1;break;
}
P0=smgduan[i];
delay(50000);
P0=0x00;
}
} */
void main()
{
while(1)
{
keybro();
GPIO_SMG=~smgduan[KEYVALUE];
}
} |
|