微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 段选正确的电路顺序是这样的?

段选正确的电路顺序是这样的?

时间:10-02 整理:3721RD 点击:
我用的TX-1C 51单片机,在P0口上用两个锁存器连接了6个数码显示管。
写了一个程序出错了,别人告诉我,正确的电路顺序应该是
*****
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连接数码管的时候,遇到的这个问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top