如题,始终只显示默认的内容,按下按键没有变化,麻烦帮我看看。
代码如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar data dir_buf;
uchar key;
uchar code dir_tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};
uchar code key_tab[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void dir()
{
P2=dir_tab[dir_buf];
}
void keyscan()
{
uchar code_h,code_l,i;
P1=0xf0;
code_l=P1&0xf0;
if(code_l!=0xf0)
{
delay(5);
P1=0xf0;
code_l=P1&0xf0;
if(code_l!=0xf0)
{
code_h=0xfe;
for(i=0;i<4;i++)
{
P1=code_h;
code_l=P1&0xf0;
if(code_l!=0xf0)
break;
else
code_h=(code_h<<1)|0x01;
}
P1=0xff;
while(P1!=0xff);
code_h=code_h&0x0f;
key=code_h+code_l;
for(dir_buf=0;dir_buf<16;dir_buf++)
{
if(key==key_tab[dir_buf])
break;
}
}
}
}
void main()
{
dir_buf=16;
dir();
while(1)
{
keyscan();
dir();
}
}
接线如下:
最后是全部的工程文件:
test7.rar
(52.06 KB, 下载次数: 12)
谢谢了。
P1还要定义啥
试试这样改
if(code_l!=0xf0)
{
delay(5);
P1=0xf0;
code_l=P1&0xf0;
if(code_l!=0xf0)
{
code_h=0xfe;
for(i=0;i<4;i++)
{
P1=code_h;
code_l=P1&0xf0;
if(code_l!=0xf0)
{ code_h=code_h&0x0f;
key=code_h+code_l;
}
else
code_h=(code_h<<1)|0x01;
}
P1=0xf0;
while(P1!=0xf0);
for(dir_buf=0;dir_buf<16;dir_buf++)
{
if(key==key_tab[dir_buf])
break;
}
}
}
评分
查看全部评分
还是不行哎。。。
一周热门 更多>