4乘4矩阵键盘扫描加数码管显示代码
- 格式:doc
- 大小:98.25 KB
- 文档页数:16
4*4矩阵键盘扫描加数码管显示
遵义师范学院(工学院)
电气工程及其自动化
黎卫星
/***************************************************************/ //º¯ÊýÍ·Îļþ
/***************************************************************/ #include
#include
#include
#include
#include
/***************************************************************/ //Ö÷º¯Êý
/***************************************************************/ void main()
{
displaychushihua();
while(1)
{
num=keyjiance();
dula=1;
P0=~table[num-1];
dula=0;
}
}
/***************************************************/
//ÑÓʱº¯Êý
/***************************************************/
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/***************************************************************/ //Êý×Ö¿â
/***************************************************************/ sbit dula = P2^6;
sbit wela = P2^7;
/***************************************************************/ /***************************************************************/ unsigned char code table[]=
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x00//0x00Ϊ¹Ø±ÕËùÊýÂë¹ÜÏÔʾ
};
/***************************************************************/ //¼üÅÌɨÃè
/***************************************************************/ unsigned int temp,num;
/***************************************************************/ /***************************************************************/ unsigned int keyjiance()// unsigned int º¯Êý·µ»ØÖµÀàÐÍ Ê¹
ÓÃ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)
{ case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e: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)
{ case 0xed:num=5;
break;
case 0xdd:num=6;
break;
case 0xbd:num=7;
break;