单片机矩阵键盘程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//3.按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,第二个显示4...
//键盘P1口
//显示同前边
#include
unsigned code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
unsigned int i,n;
unsigned char hang,lie,key,key1,a,b;
void delay(unsigned int a)
{ unsigned char i,j;
for(i=0;i<110;i++)
for(j}
void xianshi(unsigned int shu)
{
unsigned char a,b,c;
a=shu/100;
b=shu%100/10;
c=shu%10;
P0=duan[a];
P2=~0x01;
delay(20);
P0=duan[b];
P2=~0x02;
delay(20);
P0=duan[c];
P2=~0x04;
delay(20);
}
void keyscan()
{
P1=0x0f;
if(P1!=0x0f)
{
delay();
if(P1!=0x0f)
{
hang=P1;
P1=0xf0;
lie=P1;
key=hang|lie;
P1=0x0f;
while(P1!=0x0f);
// return(key);
}
}
}
void chuli()
{
switch(key)
{
case 0x77:n=1;break;
case 0xb7:n=2;break;
case 0xd7:n=3;break;
case 0xe7:n=4;break;
case 0x7b:n=5;break;
case 0xbb:n=6;break;
case 0xdb:n=7;break;
case 0xeb:n=8;break;
case 0x7d:n=9;break;
case 0xbd:n=10;break;
case 0xdd:n=11;break;
case 0xed:n=12;break;
case 0x7e:n=13;break;
case 0xbe:n=14;break;
case 0xde:n=15;break;
case 0xee:n=16;break;
}
}
void main()
{
while(1)
{
keyscan();
chuli();
n=n*n;
xianshi(n);
delay(100);
}
}