|
先看硬件图,再来共同学习4×4的键盘编程!
![]()
在来看这个键盘的原程序.但在keil 里最后有问题.请指点下!
原程序附下:
#include
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delay(void)
{
unsigned char i,j; //函数功能:延时子程序
for(i=0;i<20;i++)
for(j=0;j<250;j++);
}
void display(unsigned char i) //函数功能:LED显示子程序
{
P2=0xfe;
P0=table;
}
void keyscan(void)
{
unsigned char n;
P3=0xfe;
n=P3;
n&=0xf0;
if(n!=0xf0)
{
delay();
P3=0xfe;
n=P3;
n&=0xf0;
if(n!= 0xf0)
{
switch(n)
{
case(0xe0):display(3);break;
case(0xd0):display(2);break;
case(0xb0):display(1);break;
case(0x70):display(0);break;
}
}
}
P1=0xfd;
n=P3;
n&=0xf0;
if(n!=0xf0)
{
delay();
P3=0xfd;
n=P3;
n&=0xf0;
if(n!= 0xf0)
{
switch(n)
{
case(0xe0):display(7);break;
case(0xd0):display(6);break;
case(0xb0):display(5);break;
case(0x70):display(4);break;
}
}
}
P3=0xfb;
n=P3;
n&=0xf0;
if(n!=0xf0)
{
delay();
P3=0xfb;
n=P3;
n&=0xf0;
if(n!=0xf0)
{
switch(n)
{
case(0xe0):display(11);break;
case(0xd0):display(10);break;
case(0xb0):display(9);break;
case(0x70):display(8);break;
}
}
}
P3=0xf7;
n=P3;
n&=0xf0;
if(n!=0xf0)
{
delay();
P3=0xf7;
n=P3;
n&=0xf0;
if(n!=0xf0)
{
switch(n)
{
case(0xe0):display(15);break;
case(0xd0):display(14);break;
case(0xb0):display(13);break;
case(0x70):display(12);break;
}
}
}
void main() 这句提示有错希望能改正 {
while(1)
{
keyscan();
}
}
|
|