问题描述
- 关于单片机的数码管扫描
-
为什么下面的程序在现实的不是扫描而是有点乱
#include
#define uint unsigned int
#define uchar unsigned charsbit LE1=P2^0; //位选573锁存器使能
sbit LE2=P2^1; //段选573锁存器使能
void delay (int time)
{
uint i,j;
for (i=0;i<time;i++)
for (j=0;j<50;j++);
}
uchar code dis[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
uchar code step[8]={0x7f,0xbf,0xcf,0xdf,0xf7,0xfb,0xfc,0xfd};
void main ()
{
while (1)
{
uint i;
for (i=0;i<8;i++)
{
P1=step[i];
LE1=1;
LE1=0;
P1=dis[i];
LE2=1;
LE2=0;
delay(8000);
}
}
}
解决方案
解决方案二:
代码这么贴,太乱了。
解决方案三:
你把for循环里的代码改成这样看看
for (i=0;i<8;i++)
{
P1=step[i];
LE1=1;
P1=dis[i];
LE2=1;
delay(8000);
LE1=0;
LE2=0;
}
解决方案四:
这完全不能真正理解你的程序啊
解决方案五:
能明白你的意思 看看锁存器的连接对不对 断选位选的数组编码有没有问题 程序上 P1每次赋值前先置0一下 看看有没有效果