您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>数码管>

数码管如何做到动态显示

2021年02月07日 17:46 小亮谈电气 作者:小亮谈电气 用户评论(0

说到动态显示,我们可以说是轻车熟路了,之前的LED已经练过不少了,此次只是把LED换成了数码管,原理一样,还是一样的电路,接下来看看如何做到动态显示。

o4YBAF_-wcKARpo7AAHLH_fzdxM539.png

首先是对程序代码做些更改,只要要加上扫描的部分就可以了。关于中间的时间,还是用延时函数来做。

pIYBAF_-wc6AUrhmAAVfq2isd1I201.png

o4YBAF_-wdWASuv0AAIjeCr-1MQ356.png

在循环函数中,我先是把刷新代码写在了最前部分,激活数码管1,输出数据,然后延时,接着激活数码管2,然后输出数据,再次延时,延时结束判断按键是否按下。没有按下继续扫描数码管,显示的是之前的存储在缓存中的数值,延时函数,采用的还是之前的配方,时间也是一样的,估计有些同学已经忘记了是延时多久了。我再给介绍下如何查看延时时间。

首先看下仿真中选择的单片机的晶振频率。

o4YBAF_-wdyAMQtfAAFXZihovbc494.png

我用的是11.0592MHz,然后再去查看keil中仿真的频率是多少。修改为一致的参数

pIYBAF_-weSAbx0pAAN8dMRbwUs998.png

单击这个按键,弹出设置对话框。

o4YBAF_-weqAMG5yAALAZSv29qw968.png

把此处的数字更改为11.0592即可,只填数值。记号小数点不要填错位置。其他不用动,单击OK即可。

o4YBAF_-wfGABHE9AAF0HiRCKBs288.png

单击此按键进入仿真模式。

pIYBAF_-wfeAbegwAAKj7yNGOkM263.png

首先单击左上角的复位按键,对时间复位,然后再代码调试窗口对这左侧的灰色部分,在delay对应的前方单击,就可以添加一个断点,当程序运行到此处,会停止运行,方便我们查看时间。为了计算的方便,可以把delay后边括号中的数值更改的合适一些,例如改成整数,这里我修改为100,方便计算。切记一旦进入仿真模式,你可以修改代码,但是修改后的代码是不会立即运行到此次仿真中的,需要退出仿真,进行编译后,再次进入仿真,才会运行修改后的代码。所以进入仿真后,就不要更改了,需要改的,可以退出放着后再修改,每次修改完记得编译。

pIYBAF_-wf2AWZd5AAHZo75wtrA292.png

在延时函数结尾处的灰色部分也添加断点。接着单击左上角复位键后的开始键。

pIYBAF_-wgOABj29AAL_YSOk7eg887.png

当运行到延时函数时,就停下来了,此时延时函数前的运行时间是0.00043511秒。还是很快的。再次点击开始按键。

o4YBAF_-wgmAWyKCAAIkvUJRtLw890.png

代码停止到了延时的函数结尾处,此时延时函数已经运行完毕。当前总时间是0.21941732秒,减去之前的运行时间,得到的延时时间是21941732-43511=21898221,就是0.21898221秒,四舍五入,就是0.219秒,219毫秒。因为延时了100次,所以一次就是2.19毫秒。

之前的代码是delay(26),就是延时26次,相当于26*2.19=56.94毫秒,约为57毫秒,道理上已经低于人眼的范围,从仿真软件上,也可以看出闪烁,为什么用这个数值呢,主要是当我选则较低的延时时间时,就会出现仿真数码管不显示,没办法,因为手头没有实际的数码管去验证,所以就增大了延时时间,如果实际去验证的话,延时时间应该设置在5毫秒以内,因为是两个数码管,一个5毫秒,两个就是10毫秒。5/2.19=2.28次,所以延时设置为delay(2)。注意这一点,不然用26去试,闪得厉害。所以仿真软件只适用于测试,真正的还是需要去动手实践。

我们还接着看仿真效果吧。

o4YBAF_-whGACu2IAAHIyr4ywS8746.png

当按下按键,首先是显示的0,1、2此时再不停地切换。

pIYBAF_-whiABYoNAAHPoepMU7k452.png

再次按下按键,数码管显示了10,因为buffer2中的0依然在,buffer1中存储的是1,所以就显示了10。

多次单击后,可以看到,奇数显示在左,偶数显示在右,随着单击,交替更新。有兴趣可以自己测试下。这就是动态显示,也不是那么难。
责任编辑人:CC

非常好我支持^.^

(43) 78.2%

不好我反对

(12) 21.8%

( 发表人:陈翠 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!