仪器社区

利用芯片74138控制的数码管的C程序

dyyangjianlei 2008-09-15
voidReadKey(void);//扫描键盘获取键值voidmain(void)//入口函数{while(1){ReadKey();//调用键盘扫描if(l_key!=0xff)//如果有键按下,将其输出P2口LED灯显示,{switch(l_key){case0x7... void ReadKey(void); //扫描键盘 获取键值

void main(void) //入口函数
{
while(1){
ReadKey(); //调用键盘扫描
if(l_key!=0xff) //如果有键按下,将其输出P2口LED灯显示,
{ switch(l_key)
{ case 0x7e:
num=1;
break;
case 0xbe:
num=2;
break;
case 0xde:
num=3;
break;
case 0xee:
num=4;
break;
} P2=table[num] ; } //这里取反是因为LED灯采用共阴接法 } } void ReadKey(void) //读键盘值 { P0=0xfe; //将diyi列拉低,扫描是否有按键按下,diyi列按键包括:0,4,8,C l_key=P0; //读取键值 if(l_key!=0xfe) //如果l_key不等于0xfe,说明有键按下,就返回,否则继续扫描下一列 return; P0=0xfd; //将第二列拉低,扫描是否有按键按下,第二列按键包括:1,5,9,D l_key=P0; //读取键值 if(l_key!=0xfd) //如果l_key不等于0xfd,说明有键按下,就返回,否则继续扫描下一列 return; P0=0xfb; //将第三列拉低,扫描是否有按键按下,第三列按键包括:2,6,A,F l_key=P0; //读取键值 if(l_key!=0xfb) //如果l_key不等于0xfb,说明有键按下,就返回,否则继续扫描下一列 return; P0=0xf7; //将第四列拉低,扫描是否有按键按下,第四列按键包括:3,7,B,F l_key=P0; //读取键值 if(l_key!=0xf7) //如果l_key不等于0xf7,说明有键按下,就返回,否则扫描完毕将l_key=0xff return; l_key=0xff; } void delay() { unsigned int x,y; for(x=100;x>0;x--) for(y=200;y>0;y--); } 这个程序是用来扫描diyi列键盘,diyi个和第二个键按下,数码管会显示1和2,但是第三个键和第四个键按下,就不显示不出来三和四,这是为什么呢?
评论
全部评论
ltvgjhd10906
从你程序没看出什么问题,可以从以下方面检查下:
1.
不知道你table数组存的什么东西,
你可以直接将P2=table[num] ;直接改为P2=table[3];和P2=table[4];首先确定问题是不是出在3、4led显示上,
2.
如果不是,可以将
case 0x7e:
num=1; //改为3
break;
case 0xbe:
num=2; //改为4
break;
确定是不是没有产生3、4按键,检查3、4按键的外部电路。
13 0 2008-09-16 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论