您的位置 首页 发布

51单片机学习记载——数码管动态显示

正在学习51的数码管以及中断,打算利用六位数码管实现一个时钟的功能。但使用数码管输出时,如果不添加延时语句,那么一直有显示混乱的现象…

正在学习51的数码管以及中止,计划运用六位数码管完成一个时钟的功用。

但运用数码管输出时,假如不增加延时查办,那么一向有显现紊乱的现象,有时彻底无法分辩清楚数字。

假如在传送完数据今后延时1ms,显现紊乱状况会好转。

一起发现延时的时刻越长,显现作用越好。可是当然,相应的显现安稳程度也会下降,即数码管业绩。

程序中在送完段选数据今后现已运用了参阅书中的“消影”查办:

1 dula=1;2 P0=table[k];3 dula=0;4 P0=0xff;//“消影”

可是这个查办仅仅在有延时的状况下才有作用,假如我不写延时查办,那么显现仍旧紊乱。

虽然在显现进程延时不会影响中止的计时,可是我总不想依靠for查办写出来的延时。= =

所以自己就尝试了许多办法,想要处理这个问题,我的方针便是不写延时查办让数码管正常显现。

我有试过先向P0传送数据,然后翻开锁存器,立刻封闭。

如:

1 P0=table[k];2 dula=1;3 dula=0;

可是问题仍旧

也尝试过在翻开任一锁存器之前,再锁一次另一锁存器(即送一次低电平),依然无效。

最终发现需要在输出数据之前加这么一段代码:

1         P0=0xff;2         wela=1;3         wela=0;4         P0=0x00;5         dula=1;6         dula=0;//初始化消除搅扰

加了这段代码,数码管显现不再紊乱。查办的功用就类似于初始化一下锁存器的内容。

通过两天的研讨,总算理解了期中的猫腻。现在发出来跟我们共享一下:(转载请阐明出处)

数码管之所以有“影”,底子原因是段选,位选数据无法一起送达。

详细解说一下:当我改动了位选的值后(改动了要显现的数码管),接下来才改动段选的值(改动要显现的数字)。而在这中心有细小的时刻距离,位选的值改动了,可是段选的值没变。也便是说,我改动了要显现的数码管,可是这个数码管显现的是上一个数码管的数字!想到这儿,我有如醍醐灌顶,恍然大悟!当然,反之亦然,假如你是先段选再位选,相同有问题。请我们自己考虑。

所以不难解说上面那段代码的作用了,便是在输出之前将之前那个数码管显现空(或许不挑选任何数码管)。

所以明显这个初始化代码还能够简化,可是要取决于你是先段选仍是先位选。假如先位选,那么就要清空段选数据。

1 P0=0x00;2 dula=1;3 dula=0;

反过来也相同。假如先段选,那么清空位选数据即可。

百度百科有人问了一个差不多的问题,这儿引证过来供我们参阅:

经验总结:数码管的显现,段选数据和位选数据要紧贴,中心不要搀杂其他查办。换句话说,核算在先,最终一次性传送数据。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/265217.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部