4乘4矩阵键盘扫描加数码管显示代码.docx
《4乘4矩阵键盘扫描加数码管显示代码.docx》由会员分享,可在线阅读,更多相关《4乘4矩阵键盘扫描加数码管显示代码.docx(9页珍藏版)》请在冰豆网上搜索。
4乘4矩阵键盘扫描加数码管显示代码
4*4矩阵键盘扫描加数码管显示
遵义师范学院(工学院)
电气工程及其自动化
黎卫星
/***************************************************************/
//º¯ÊýÍ·Îļþ
/***************************************************************/
#include
#include
#include
#include
#include
/***************************************************************/
//Ö÷º¯Êý
/***************************************************************/
voidmain()
{
displaychushihua();
while
(1)
{
num=keyjiance();
dula=1;
P0=~table[num-1];
dula=0;
}
}
/***************************************************/
//ÑÓʱº¯Êý
/***************************************************/
voiddelay(unsignedintz)
{
unsignedintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/***************************************************************/
//Êý×Ö¿â
/***************************************************************/
sbitdula=P2^6;
sbitwela=P2^7;
/***************************************************************/
/***************************************************************/
unsignedcharcodetable[]=
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x00//0x00Ϊ¹Ø±ÕËùÊýÂë¹ÜÏÔʾ
};
/***************************************************************/
//¼üÅÌɨÃè
/***************************************************************/
unsignedinttemp,num;
/***************************************************************/
/***************************************************************/
unsignedintkeyjiance()//unsignedintº¯Êý·µ»ØÖµÀàÐÍʹÓÃvoidΪÎÞ·µ»ØÖµ»á³ö´í
{
P3=0XFE;//µÚÒ»Ðмì²â
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xee:
num=1;
break;
case0xde:
num=2;
break;
case0xbe:
num=3;
break;
case0x7e:
num=4;
break;
}
while(temp!
=0xf0)//°´¼üËÉÊÖ¼ì²â
{
temp=P3;
temp=temp&0xf0;
}
//dula=1;
//P0=~table[num-1];
//dula=0;
}
}
P3=0XFD;//µÚ¶þÐмì²â
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xed:
num=5;
break;
case0xdd:
num=6;
break;
case0xbd:
num=7;
break;
case0x7d:
num=8;
break;
}
while(temp!
=0xf0)//°´¼üËÉÊÖ¼ì²â
{
temp=P3;
temp=temp&0xf0;
}
//dula=1;
//P0=~table[num-1];
//dula=0;
}
}
P3=0XFB;//µÚÈýÐмì²â
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xeb:
num=9;
break;
case0xdb:
num=10;
break;
case0xbb:
num=11;
break;
case0x7b:
num=12;
break;
}
while(temp!
=0xf0)//°´¼üËÉÊÖ¼ì²â
{
temp=P3;
temp=temp&0xf0;
}
//dula=1;
//P0=~table[num-1];
//dula=0;
}
}
P3=0XF7;//µÚËÄÐпªÊ¼¼ì²â
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xe7:
num=13;
break;
case0xd7:
num=14;
break;
case0xb7:
num=15;
break;
case0x77:
num=16;
break;
}
while(temp!
=0xf0)//°´¼üËÉÊÖ¼ì²â
{
temp=P3;
temp=temp&0xf0;
}
//dula=1;
//P0=~table[num-1];
//dula=0;
}
}
return(num);//º¯Êý·µ»ØÖµ
//dula=1;
//P0=~table[num-1];
//dula=0;
}
/***************************************************************/
/***************************************************************/
voiddisplaychushihua()
{
num=17;//µÚ17¸öÊýΪ¹Ø±ÕËùÓÐÊýÂë¹Ü0x00
//dula=1;
//P0=0xff;//³õʼ»¯ÇåÁã²»¸ø¶ÏÑ¡ËÍÊýÊýÂë¹Ü²»ÁÁ
//dula=0;
wela=1;
P0=~0xc0;
wela=0;
}