单片机与数码管显示DS1302的时分秒,出现闪烁

不是数码管的数在闪烁,我扫描的是2ms,就是一个正常的数显示了,然后不该亮的数码管段总是在用很微弱的灯在闪烁
源码太长字数限制了,放网盘里了,http://pan.baidu.com/s/188k44

那要看你是如何刷新数码管的了,刷得太慢会闪烁的。

一般来说,无论你有多少个数码管,总的扫描时间不要超过30ms左右。

那么如果有8个管,则每个管扫描时间为30/8=3.75ms左右;若有5个管,则每个管扫描时间不要超过6ms左右,明白了嘛?追问

不是数码管的数在闪烁,我扫描的是2ms,就是一个正常的数显示了,然后不该亮的数码管段总是在用很微弱的灯在闪烁

追答

数码管显示时,一般正确的方法是,在动态显示一个数码管之前,先关闭所有的显示,就是把位选关闭了,这样什么都不会显示。关闭的时间只需要保持一个指令周期即可,然后把要显示的数据送出去,然后再选择在哪个数码管显示。这样就可以解决你的问题了。

参考下面的程序:
SCAN = 0xff; // 送数据时,先关闭显示,以避免重影现象
SEG = seg[cnt]; // 送数据
SCAN = sel[cnt]; // 送出数据后,选择对应的数码管
delay_1ms(1); // 延时1ms(延时时间不能太长,最好不要超过5ms)

追问

我刚改了下程序,http://pan.baidu.com/s/1DrV8P,还是在很微弱的闪,我怀疑还是和ds1302有关,因为我拔掉ds1302,显示四个数,第一个数是5少一竖,第二个数是5,后两个和前两个一样,当我插上ds1302的时候,正常显示时间,还是会有微弱的闪烁,如果我把时间扫描调整一下的话,有时就能看见他就是再变向这四个数,这个闪烁就像人打嗝一样,一会突然一下。求帮忙看下,谢谢了。

追答

送数码管数据后,延时多长?

最好把电路也弄上来看一下。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-03
你刷新数码管显示的频率不大合适,太慢了会有闪烁效果。
第2个回答  2013-10-03
和1302木有关系.
把刷新数码管显示的频率家快就好了追问

不是数码管的数在闪烁,我扫描的是2ms,就是一个正常的数显示了,然后不该亮的数码管段总是在用很微弱的灯在闪烁
源码太长字数限制了,放网盘里了,http://pan.baidu.com/s/188k44

追答

明白了.
你要在驱动每个字符显示的后面加个关显示.也就是送个"全灭码"!
就会好的.

追问

我刚改了下程序,http://pan.baidu.com/s/1DrV8P,还是在很微弱的闪,我怀疑还是和ds1302有关,因为我拔掉ds1302,显示四个数,第一个数是5少一竖,第二个数是5,后两个和前两个一样,当我插上ds1302的时候,正常显示时间,还是会有微弱的闪烁,如果我把时间扫描调整一下的话,有时就能看见他就是再变向这四个数,这个闪烁就像人打嗝一样,一会突然一下。求帮忙看下,谢谢了。

追答

先贴图上来看一下

第3个回答  2013-10-03
你把源码发上来 你这样的话我们也不知道你的问题究竟出在哪里追问

不是数码管的数在闪烁,我扫描的是2ms,就是一个正常的数显示了,然后不该亮的数码管段总是在用很微弱的灯在闪烁
源码太长字数限制了,放网盘里了,http://pan.baidu.com/s/188k44

相似回答