按下16个矩阵键盘依次在数码管上显示16的平方.docx
《按下16个矩阵键盘依次在数码管上显示16的平方.docx》由会员分享,可在线阅读,更多相关《按下16个矩阵键盘依次在数码管上显示16的平方.docx(8页珍藏版)》请在冰豆网上搜索。
![按下16个矩阵键盘依次在数码管上显示16的平方.docx](https://file1.bdocx.com/fileroot1/2023-5/26/c9af4127-a4ba-41d2-9ec0-fcd9d38e34c1/c9af4127-a4ba-41d2-9ec0-fcd9d38e34c11.gif)
按下16个矩阵键盘依次在数码管上显示16的平方
按下16个矩阵键盘依次在数码管上显示1-16的平方
Proteus仿真原理图:
程序:
/*3,按下16个矩阵键盘依次在数码管上显示1-16的平方。
如按下第一个显示1,第二个显示4...*/
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable1[]={
0xfc,0x60,0xda,0xf2,0x66,
0xb6,0xbe,0xe0,0xfe,0xf6};
ucharcodetable2[]={0x1f,0x2f,0x37};
voiddelay(uint);
voidkeyscan();
voiddisplay(uint);
voidmain()
{
while
(1)
{
keyscan();
//display(16);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidkeyscan()
{
uchartemp,key;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xee:
key=1;
break;
case0xde:
key=2;
break;
case0xbe:
key=3;
break;
case0x7e:
key=4;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xed:
key=5;
break;
case0xdd:
key=6;
break;
case0xbd:
key=7;
break;
case0x7d:
key=8;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xeb:
key=9;
break;
case0xdb:
key=10;
break;
case0xbb:
key=11;
break;
case0x7b:
key=12;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xe7:
key=13;
break;
case0xd7:
key=14;
break;
case0xb7:
key=15;
break;
case0x77:
key=16;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
display(key*key);
}
voiddisplay(uintz)
{
ucharaa,bb,cc;
aa=z/100;
bb=z%100/10;
cc=z%10;
P1=table1[aa];
P2=table2[2];
delay
(1);
P2=0xff;
delay
(1);
P1=table1[bb];
P2=table2[1];
delay
(1);
P2=0xff;
delay
(1);
P1=table1[cc];
P2=table2[0];
delay
(1);
P2=0xff;
delay
(1);
}