微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机数码管动态显示

51单片机数码管动态显示

时间:10-02 整理:3721RD 点击:
数码管显示999-0;个位为什么闪烁?如何改善?现附程序如下,请大神指点!
sbit shi=P1^2;
sbit bai=P1^1;
unsigned int a,b,c, j;
#define uint unsigned int
void delay(uint x)
{
        for(a=x;a>0;a--)
                for(b=110;b>0;b--);
}
main()
{           while(1)
        {
               
               
                for(c=999;c>0;c--)
        
                        {
                           
                                   bai=0;
                                P0=shizhong[c/100] ;
                                delay(8);
                                P0=0xff;
                                bai=1;
                                  shi=0;
                                P0=shizhong[c%100/10] ;
                                delay(8);
                                P0=0xff;
                                shi=1;
               
                                ge=0;
                                P0=shizhong[c%10];
                                delay(24);
                                P0=0xff;
                            ge=1;
                        }
           
        }
}

你这样比较乱,扫面数码管数字最好搞一个函数来识别比较好,还有,小编的的写法感觉也存在比较大的问题

在ge=1后面加个小延时试试  虽然 不怎么看的懂整个程序。

这是原理图!我也感觉我的写法有问题。


你有什么好的写法?

你这样写真的很乱!

从你的图片看,你的没有位存端,所以你对每一个数码管的操作必须首先打开相应的位码,建议用带锁存器的,那样操作起来会相对简单一点,还有,从你的程序看,你想扫描999,必须用到三个数码管,所以你开头必须定义三个位锁存端而你只定义了两个

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

网站地图

Top