本帖最后由 eehome 于 2013-1-5 10:02 编辑
很好,有意思,很喜欢。
|
|
|
|
|
kkkkkkkkkkkkkkkkkk
|
|
|
|
|
看看
|
|
|
|
|
看看
|
|
|
|
|
#include
#define uint unsigned int
#define uchar unsigned char
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //0~F的 编码
void display()
{
uchar temp,num;
while(1)
{
//-------------------------扫描第一行-------------------------------------------
P3=0xfe; //第一行扫描赋初值
temp=P3;
if((temp&0xf0)!=0xf0) //判断是否有键按下 ,屏蔽低四位
{
delay(5); //消斗
if((temp&0xf0)!=0xf0) //在次确认是否有键按下,屏蔽低四位
{
switch (temp)
{
case 0xee:num=0;break;
case 0xde:num=1;break;
case 0xbe:num=2;break;
case 0x7e:num=3;break;
}
P0=tab[num];
P2=0xff;
}
}
//-------------------------扫描第二行-------------------------------------------
P3=0xfd; //第二行扫描赋初值
temp=P3;
if((temp&0xf0)!=0xf0) //判断是否有键按下 ,屏蔽低四位
{
delay(5); //消斗
if((temp&0xf0)!=0xf0) //在次确认是否有键按下,屏蔽低四位
{
switch (temp)
{
case 0xed:num=4;break;
case 0xdd:num=5;break;
case 0xbd:num=6;break;
case 0x7d:num=7;break;
}
P0=tab[num];
P2=0xff;
}
}
//-------------------------扫描第三行-------------------------------------------
P3=0xfb; //第三行扫描赋初值
temp=P3;
if((temp&0xf0)!=0xf0) //判断是否有键按下 ,屏蔽低四位
{
delay(5); //消斗
if((temp&0xf0)!=0xf0) //在次确认是否有键按下,屏蔽低四位
{
switch (temp)
{
case 0xeb:num=8;break;
case 0xdb:num=9;break;
case 0xbb:num=10;break;
case 0x7b:num=11;break;
}
P0=tab[num];
P2=0xff;
}
}
//-------------------------扫描第四行-------------------------------------------
P3=0xf7; //第四行扫描赋初值
temp=P3;
if((temp&0xf0)!=0xf0) //判断是否有键按下 ,屏蔽低四位
{
delay(5); //消斗
if((temp&0xf0)!=0xf0) //在次确认是否有键按下,屏蔽低四位
{
switch (temp)
{
case 0xe7:num=12;break;
case 0xd7:num=13;break;
case 0xb7:num=14;break;
case 0x77:num=15;break;
}
P0=tab[num];
P2=0xff;
}
}
}
}
void main()
{
display();
}
|
|
|
|
|