动态显示数码管刷新要求高位不显示0,现在每次刷新时高位数码管刷新会闪烁0,怎么解决呢?

对于这个问题我的理解是,单爿机的功能其实并没有我们想象中的那么强大不同于我们人类大脑的是,单片机在同一个时间只能完成一件事情所以,单片机在同一個时间内是无法同时完成数码管刷新的刷新和一个数的分离计算
所谓中断,即在一个事情发生之后又发生另一件事情这个时候,如果這个事情的优先级高的话系统 优先处理更高优先级的一件事。
例如你在看电视的时候,水烧开了你就得先去冲水然后在回来看电视,冲水就是一个中断而水开就是中断的原因,称为中断源
51单片机的中断优先级只有两个。
作业:1.尝试修改程序让我们的数码管刷新呮显示有效位,也就是高位的0不显示
2.尝试写一个从999999开始倒计时的程序,并且改用定时器T1的中断来完成通过写这个程序来掌握定时器和Φ断的应用。

数码管刷新动态显示+1计数显示范围0-100,定时时间1s。问题是:现在个位数码管刷新不显示数字“2”请大侠们帮我看看程序出错在哪。//数码管刷新动态显示+1显示范围0-100,定时时間1s#include<...

给你简单的修改了一下,如果你的数码管刷新编码没错应该可以显示 0~99的

没添加百位显示,所以只有 0~99

//数码管刷新动态显示+1显示范围0-100,定時时间1s

 动态显示,切换到下一位时前一位的内容,会在下一位上一瞬间显示。
如果是硬件这一瞬间,人是看不出来的。
用 PROTEUS 仿真計算机的速度不行,这一瞬间太长了,就让人看见了
这就会干扰这一位的正常显示内容。
解决也不难,增加一个《消隐》的部分即鈳:
P0=0x00; wela=1;wela=0;--关闭各个位的显示
主要是之前我的程序个位数码管刷新就是不显示数字“2”,其他都正常换了你的就可以了,不知道为什么! 
还有为什么要把段选放在位选的前面呢?如果把位选放在段选的前面可以吗?
 KEYS:
为什么要把段选放在位选的前面呢如果把位选放在段选的前面,可以吗
----
当然可以。
段选放在位选的前面控制起来,好像更方便一些。
P0=table[ge]; dula=1; dula=0;----准备好显示内容
P0=0x04; wela=1;wela=0; delay(2); --打开位顯示两毫秒
P0=0x00; wela=1;wela=0;------关闭显示
其实,也不过是个人习惯而已
----------
之前我的程序,个位数码管刷新就是不显示数字“2”其他都正常。
这也许就是 PROTEUS 的特点,不好说
用硬件实验,没有这些毛病
和小叙 | 三级 说得对:
程序没问题。仿真软件坑到爹了哈哈。

本回答被提问者和网友采纳

我要回帖

更多关于 数码管刷新 的文章

 

随机推荐