段选正确的电路顺序是这样的?
写了一个程序出错了,别人告诉我,正确的电路顺序应该是
*****
P0 = table[1]; dula=1; dula=0;
先往P0送数据,再打开段选,然后再关闭段选。
*****
为什么不能这样写呢?
dula=1; P0=table[1]; dula=0;
这样写是可以的,最好前后都添加个延时。
delayms(5);dula=1; P0=table[1]; dula=0;delayms(5);
具体延时多少自己试验一下,懒得拿出实验板了。
本人用的也是tx-1c的板子学习的。对了你可以在网上找一下郭天祥的51教程,很经典的。
嗯,是的,加延时就可以了。我试验过。在这里我有一个疑问,就是什么样的电路有记忆功能?
在数学逻辑中
P0=0x00;
P0=0x01;
现在P0的值就是0x01了,但在单片机中有时候不是这样,例如下面这段程序
P0=0; wela=1; wela=0; //打开所有位选
P0=0x3f; //0
delay();
P0=0x06; //1
delay();
P0=0x5b; //2
delay();
P0=0x4F; //3
delay();
P0=0x66; //4
delay();
P0=0x6D; //5
delay();
dula=1; //开启段选
dula=0; //关闭段选
数码管会依次显示0 1 2 3 4 5,而不是仅仅显示数字5 。
在 P0=0x3f; //0
delay();
之前加入dula=0; //关闭段选信号的锁存器
这样应该只会显示5了吧。
本身不是专业的,电路几乎不懂,等高手解答吧。
嗯,关闭段选后,后面的数据就不显示了。
这种写法是可以的~~~其实不加延时都可以,不知道为什么你的不行呢?
哦,不是不行,也可以运行。只是别人告诉我这样写不是很好。
哦哦~~~~现在在调试什么程序啊!
51连接数码管的时候,遇到的这个问题。
