单片机中如何控制led显示
通过键盘扫描,LED第一位显示第一次按下的值,第二位显示第二次按下的值,同时第一位的值不变,P1用于选择led,P0用于设置显示的数字,P2用于扫描键盘,我设定了一个buff[3],和一个Index每次输入index++,用于存放每次输入的数字,然后在通过一个循环
for(k=0;k<3;k++)
{
P1=led[k];
P0=buff[k];
SoftDisplay(1);//延迟
}
把值显示出来,现在总是不成功,。我现在的问题是按下一个键,每一位都显示当前按下的数字了·之前输入的值显示不了·请问我这个思路对不对?
[解决办法]
1楼的“这代码风格就非常不好”?不明白。我觉得风格很好。
LZ应该是从VC转到单片机的C(如KEIL C)的。
1、LZ思路是对的。
2、从LZ描述来看,LZ应该是这个做法:第1次按键存入buff[0],第2次按键存入buff[1],第3次按键存入buff[2]……
3、从LZ仅有的代码来看,每次for循环后,尽管有延时,但总是最后一次数据(buff[2])保留着显示。
4、LED还有一个位PIN,用以选择在不同的位上显示。LZ的代码好像没有选择位PIN,所以每个位都显示相同的了。