原创 4*4

2008-5-7 08:53 1759 7 7 分类: MCU/ 嵌入式

#include <reg51.h>
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
                       0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//延时子程序
void delay(void)
{
unsigned i,j;
for(i=0;i<20;i++)
for(j=0;j<250;j++);
}
//LED显示子程序
void display(unsigned char i)
{
P2=0xfe;
P0=table;
}


void keyscan(void)
{
unsigned char n;
//扫描第一行
P1=0xef;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
delay();
P1=0xef;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
switch(n)
{
case(0x0e):display(0);break;
case(0x0d):display(1);break;
case(0x0b):display(2);break;
case(0x07):display(3);break;
}
}
}
//扫描第二行
P1=0xdf;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
delay();
P1=0xdf;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
switch(n)
{
case(0x0e):display(4);break;
case(0x0d):display(5);break;
case(0x0b):display(6);break;
case(0x07):display(7);break;
}
}
}
//扫描第三行
P1=0xbf;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
delay();
P1=0xbf;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
switch(n)
{
case(0x0e):display(8);break;
case(0x0d):display(9);break;
case(0x0b):display(10);break;
case(0x07):display(11);break;
}
}
}
//扫描第四行
P1=0x7f;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
delay();
P1=0x7f;
n=P1;
n&=0x0f;
if(n!=0x0f)
{
switch(n)
{
case(0x0e):display(12);break;
case(0x0d):display(13);break;
case(0x0b):display(14);break;
case(0x07):display(15);break;
}
}
}
}
//函数功能:主程序
void main(void)
{
while(1)
{
keyscan();
}
}

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条