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

关于51单片机动态显示

时间:10-02 整理:3721RD 点击:
   菜鸟一只,在学习51单片机动态显示时碰到一些问题:当动态显示时的delay时间间隔较高数码管时能够一个一个按顺序清楚显示同时数数,可是delay时间间隔一旦降到几ms时【方波频率很高】,数数的数码管其他不该亮的段就会高速频闪,甚至其他没选中的数码管也会有微弱的亮光。为什么?

亮完一位后记得在后面加上一句让所有位熄灭的语句,不然会有余晖

显示部分前面加上消隐,比如段选在P0时前面加上P0 = 0xff;

问题还是没有得到解答。这是我的程序:(共阴数码管)
                wela=1;
                P0=table1[3];                                   delay(1000);         //开第四个位选数码管,下同
                wela=0;
                P0=0x00;
                dula=1;
                P0=table2[aa];                                          delay(1000); //显示百位数字
                dula=0;
                delay(10);
                P0=0x00;
                wela=1;
                P0=table1[4];                                    delay(1000);
                wela=0;
                P0=0x00;
                dula=1;
                P0=table2[bb];                                          delay(1000);//显示十位数字
                dula=0;
                delay(10);
                P0=0x00;
        wela=1;
                P0=table1[5];                                          delay(1000);
                wela=0;
                P0=0x00;
                dula=1;
                P0=table2[cc];                                           delay(1000);//显示个位数字
                dula=0;
                delay(10);
                P0=0x00;
问题在于我烧录之后数码管竟然先显示A.(0xf7正是第四个位选数码管的编码),停一秒之后再显示百位数字,之后两位数字也是同样的情况。不知道位选码什么时候莫名的就送入段选里去了。我怀疑是不是跟位选锁存器的后两个无关引脚设为高电平有关。

网上都有例程,可以找找

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

网站地图

Top