📄 1276.c
字号:
//按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下
//第一个显示1,第二个显示4...
#include<reg52.h>
#define uc unsigned char
#define ui unsigned int
sbit dus=P2^6;
sbit wes=P2^7;
ui num,temp,a2,a1,a0;
uc code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
ui kscan();
delay(uc x)
{
ui i,j;
for(i=100;i>0;i--)
for(j=x;j>0;j--);
}
display(ui bi,ui si,ui ge)
{
P0=0xff;
wes=1;
wes=0;
P0=table[bi];
dus=1;
dus=0;
P0=0xf7;
wes=1;
wes=0;
delay(1);
P0=0xff;
wes=1;
wes=0;
P0=table[si];
dus=1;
dus=0;
P0=0xef;
wes=1;
wes=0;
delay(1);
P0=0xff;
wes=1;
wes=0;
P0=table[ge];
dus=1;
dus=0;
P0=0xdf;
wes=1;
wes=0;
delay(1);
}
void main()
{
while(1)
{
a2=kscan()/100;
a1=kscan()%100/10;
a0=kscan()%100%10;
display(a2,a1,a0);//kscan的返回值是num
}
}
ui kscan()
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(8);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0:num=1;
break;
case 0xd0:num=4;
break;
case 0xb0:num=9;
break;
case 0x70:num=16;
break;
}
while(temp!=0xf0) //松手检测
{
temp=P3;
temp=temp&0xf0;
display(a2,a1,a0);
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(8);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0:num=25;
break;
case 0xd0:num=36;
break;
case 0xb0:num=49;
break;
case 0x70:num=64;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
display(a2,a1,a0);
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(8);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0:num=81;
break;
case 0xd0:num=100;
break;
case 0xb0:num=121;
break;
case 0x70:num=144;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
display(a2,a1,a0);
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(8);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0:num=169;
break;
case 0xd0:num=196;
break;
case 0xb0:num=225;
break;
case 0x70:num=256;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
display(a2,a1,a0);
}
}
}
return num;//返回值是num
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -