请教郭天祥书中关于数码管的消影的问题

2019-07-15 20:25发布

请教郭天祥书中关于数码管的消影的问题

程序的一段如下:

void main()
{
        while(1)
        {         dula=1;
                P0=table[1];
                dula=0;
                P0=0xff;   /*消影,避免高速显示时的显示混乱*/
                wela=1;
                P0=0xfe;
                wela=0;
                delayms(500);

                dula=1;
                P0=table[2];
                dula=0;
                P0=0xfd;
                wela=1;
                P0=0xfd;
                wela=0;
                delayms(500);

1.请问这样段选-消影-位选是最好的顺序还是较为良好的编程习惯?
2.我有试过其他的几种排列方式,没有显示混乱的是:段选-消影-位选;位-段-消;消-位-段;
显示混乱的是:位-消-段;段-位-消;消-段-位。这样看来似乎段选前一定要消影,可是郭天祥
书中的这段代码第二段的位选前不是没有消影吗?第一段的位选不会影响到第二段的段选吗?

我不太理解,求大神指点

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
cccsssc
1楼-- · 2019-07-16 19:33
其实这个东西我也是看郭天祥的书过来的,当时自己焊接的电路板就在消影的时候出的问题。具体问题还得具体分析啊。

评分

参与人数 1威望 +10 收起 理由 zhou2sheng + 10 感谢您的参与,您的支持是我们最大的动力.

查看全部评分

youzizhile
2楼-- · 2019-07-17 01:20
数码管在刷新下一个数据之前,上次的数据留有余晖;郭天祥书中的数码管是共阳数码管,所以要先写P0 = 0Xff来对数码管之前的数据关掉再去显示最新的数据,从而达到消隐的目的。
义哥1991
3楼-- · 2019-07-17 05:39
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code wetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void delay(uint);
void main()
{
        while(1)
        {
                uchar num;
                for(num=0;num<6;num++)
                {
                                P0=0xff;
                                wela=1;
                                wela=0;

                                P0=table[num+1];
                                dula=1;
                                dula=0;

                                P0=wetab[num];
                                wela=1;
                                wela=0;
                                delay(0);
                         
                }
        }

}
void delay(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
这样看便于分析。
adregards
4楼-- · 2019-07-17 08:52
多查资料,多实践……
楼上几位讲得好透彻,一看就明白。
李爱柚
5楼-- · 2019-07-17 12:01
 精彩回答 2  元偷偷看……

一周热门 更多>