本来感觉矩阵很简单的,没有想到编了一个程序,编了一个下午,哎,难怪有人说,如果技术和科学有你理想那么容易,那它就不是科学了。在参考http://www.ruidan.com/mcuteach/226.html后终于把矩阵键盘里的16个按键控制显示0至16的效果实现了出来,呵呵,功夫不负有心人,虽然编了好久,好累,好困。但还是一个字,值!下面看下程序吧,如果各位高手看到了我程序有所不足的,麻烦指点。
}
}
//cond
P3 = 0xbf;//ʹ°´¼üS5ÖÁS8ÏÔʾ4ÖÁ7
temp = P3;
temp = temp & 0x0f;
while(temp != 0x0f)
{
delay();
temp = P3;
temp = temp & 0x0f;
while(temp != 0x0f)
{
temp = P3;
switch(temp)
{
case 0xbe:x=4;
break;
case 0xbd:x=5;
break;
case 0xbb:x=6;
break;
case 0xb7:x=7;
break;
}
while(temp!=0x0f)//Ìø³ö
{
temp=P3;
temp=temp&0x0f;
}
P1 = number[x];
}
}
//thirth
P3 = 0xdf;//ʹS9ÖÁS12ÏÔʾ8ÖÁb
temp = P3;
temp = temp & 0x0f;
while(temp != 0x0f)
{
delay();
temp = P3;
temp = temp & 0x0f;
while(temp != 0x0f)
{
temp = P3;
switch(temp)
{
case 0xde:x=8;
break;
case 0xdd:x=9;
break;
case 0xdb:x=10;
break;
case 0xd7:x=11;
break;
}
while(temp!=0x0f)//Ìø³ö
{
temp=P3;
temp=temp&0x0f;
}
P1 = number[x];
}
}
//four
P3 = 0xef;//ʹS13ÖÁS16ÏÔʾCÖÁF
temp = P3;
temp = temp & 0x0f;
while(temp != 0x0f)
{
delay();
temp = P3;
temp = temp & 0x0f;
while(temp != 0x0f)
{
temp = P3;
switch(temp)
{
case 0xee:x=12;
break;
case 0xed:x=13;
break;
case 0xeb:x=14;
break;
case 0xe7:x=15;
break;
}
while(temp!= 0x0f)
{
temp = P3;
temp = temp&0x0f;
}
while(temp!=0x0f)//Ìø³ö
{
temp=P3;
temp=temp&0x0f;
}
P1 = number[x];
}
}
}
}
感觉好长,如果厉害点的话,应该可以做编得更短的,有时间只有再把它完善了。
-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。