向高手请教C51单片机4*4矩阵键盘控制八个二极管显示问题,谢谢!!!!!!

哪位高手能帮我用C语言写一个程序,当按下第一个按键时第一个二极管亮依次往下直到按第八按键时第八个二极管亮,但要用下面的这种扫描程序:voidmatrixkeyscan()... 哪位高手能帮我用C语言写一个程序,当按下第一个按键时第一个二极管亮依次往下直到按第八按键时第八个二极管亮,但要用下面的这种扫描程序:
void matrixkeyscan()
{
uchar temp,key;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}........................................
PS:程序中有用不到或错误的地方可以进行修改。
展开
 我来答
seuzhouww
2011-05-17 · TA获得超过1386个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:296万
展开全部
1、第二处 if(temp!=0xf0); 最后的分号应该是笔误,去掉;。
2、此子函数的末尾,缺}一个。
3、该子程序,影响全局变量key。另外,键值并没有给出5-8键值码。
4、不知道:LED挂在什么地方,咋亮(P1),不知道:是不是按啥,第啥个灯亮的控制要求。
unsigned char key;
void matrixkeyscan(void);
main()
{
unsigned char i;
while(1)
{
matrixkeyscan();//假设你用了静态扫描显示key,且保留。
i=1;
i<<=(key-1);
P1=~i; //其实这三行,可以放在display的后面。
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式