/*试试这个我自己写的现在还在用*/
#include
#define uchar unsigned char
#define uint unsigned int
sbit we=P1^3;//一位数码管显示
unsigned char codesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
void delay_50us(uintt)
{
uint j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void main()
{
uchar key_1,key_h;
uchar key;
while(1)
{
we=0;//
P0=0;
P2=0xf0;//11110000
key_1=P2;
key_1=key_1&0xf0;
if(key_1!=0xf0)
{
delay_50us(100);//延时
if(key_1!=0xf0)
{
key_1=P2&0xf0;//11100000
key_1=key_1|0xf0;//11101111
P2=key_1;
key_h=P2;
key_h=key_h&0x0f;//00001110
key_1=key_1&0xf0;//11100000
key=key_h+key_1; //11101110
}
}
}
switch (key)
{
case 0xee:P0=smg_du[0];break;
case 0xde:P0=smg_du[1];break;
case 0xbe:P0=smg_du[2];break;
case 0x7e:P0=smg_du[3];break;
case 0xed:P0=smg_du[4];break;
case 0xdd:P0=smg_du[5];break;
case 0xbd:P0=smg_du[6];break;
case 0x7d:P0=smg_du[7];break;
case 0xeb:P0=smg_du[8];break;
case 0xdb:P0=smg_du[9];break;
case 0xbb:P0=smg_du[10];break;
case 0x7b:P0=smg_du[11];break;
case 0xe7:P0=smg_du[12];break;
case 0xd7:P0=smg_du[13];break;
case 0xb7:P0=smg_du[14];break;
case 0x77:P0=smg_du[15];break;
}
}
#include"AT89X52.H"//头文件
#define uint unsignedint//定义uint型延时子函数
#define bianliangunsigned char//定义bianliang=char型变量
bianliang num;aa;//定义变量num,temp
sbit wela=P1^3;//定义个位
bianliang codeshuoma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98,0xc6};
void yanshi(uintz);//声明延时子函数
void main()//进入主程序
{
P0=0xc0;
wela=0;
while(1)
{
P2=0xfe;//定义键盘第1行
aa=P2;//变量temp=P2口
aa=aa&0xf0;//用于temp和temp&0xf0向于
while(aa!=0xf0)//判断是否有键按下(temp!不等于=0xf0)
{
yanshi(5);//延时5毫秒
aa=P2;//temp=P2
aa=aa&0xf0;//再次//用于temp和temp&0xf0向于
while(aa!=0xf0)//再次//用于temp和temp&0xf0向于
{
aa=P2;//temp=P2
switch(aa)//temp!不等于=0xf0判断(temp)=是否=2,3,4,11
{
case0xee:num=2;//数码管段选第2位
break;//退出
case0xde:num=3;//数码管段选第3位
break;//退出
case0xbe:num=4;//数码管段选第4位
break;//退出
case0x7e:num=11;//数码管段选第11位
break;//退出
}
while(aa!=0xf0)//再次//判断是否有键按下(temp!不等于=0xf0)
{ // while(temp!=0xf0)用于条跳到2行
aa=P2;//temp=P2
aa=aa&0xf0;//再次//用于temp和temp&0xf0向于
}
P0=shuoma[num-1];//数码管段选-1位
}
}
P2=0xfd;//定义键盘第2行
aa=P2;
aa=aa&0xf0;
while(aa!=0xf0)
{
yanshi(5);
aa=P2;
aa=aa&0xf0;
while(aa!=0xf0)
{
aa=P2;
switch(aa)
{
case0xed:num=5;
break;
case0xdd:num=6;
break;
case0xbd:num=7;
break;
case0x7d:num=11;
break;
}
while(aa!=0xf0)
{
aa=P2;
aa=aa&0xf0;
}
P0=shuoma[num-1];
}
}
P2=0xfb;//定义键盘第3行
aa=P2;
aa=aa&0xf0;
while(aa!=0xf0)
{
yanshi(5);
aa=P2;
aa=aa&0xf0;
while(aa!=0xf0)
{
aa=P2;
switch(aa)
{
case0xeb:num=8;
break;
case0xdb:num=9;
break;
case0xbb:num=10;
break;
case0x7b:num=11;
break;
}
while(aa!=0xf0)
{
aa=P2;
aa=aa&0xf0;
}
P0=shuoma[num-1];
}
}
P2=0xf7;//定义键盘第4行
aa=P2;
aa=aa&0xf0;
while(aa!=0xf0)
{
yanshi(5);
aa=P2;
aa=aa&0xf0;
while(aa!=0xf0)
{
aa=P2;
switch(aa)
{
case0xe7:num=11;
break;
case0xd7:num=1;
break;
case0xb7:num=11;
break;
case0x77:num=11;
break;
}
while(aa!=0xf0)
{
aa=P2;
aa=aa&0xf0;
}
P0=shuoma[num-1];
}
}
}
}
void yanshi(uint z)//延时子函数
{
uint x,y;//延时定义
for(x=z;x>0;x--)
for(y=123;y>0;y--);//延时
}
把头文件代码发出来看看
boardinit();???