当前位置:首页 > 技术心得 > 正文内容

关于数码管动态扫描

xjtudll13年前 (2012-07-30)技术心得7760

大家知道驱动一个或者两三个数码管,如果单片机有足够的IO口,我们可以用静态显示,至于什么是静态显示(动态显示的基础),这里不做阐述。

但如果,或者假如我们要点亮8个数码管或者更多,而恰恰单片机IO口不够用的情况下(扩展IO口的不讲),这是就必须用到动态扫描的显示方式了。

什么是数码管动态扫描?所谓的数码管动态扫描,就是在静态显示的基础上,逐一点亮每个数码管,由于点亮的时间非常短暂,由于人眼暂留现象使得我们看到所有的数码管像被点亮一样。其中还有一点就是数码管熄灭后的余晖现象的关系。

那么,这又牵扯到一个问题了,什么是人眼暂留现象,我也码了一下解释,如下:

  (Visual staying phenomenon,duration of vision)
   人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。

     是光对视网膜所产生的视觉在光停止作用后,仍保留一段时间的现象,其具体应用是电影的拍摄和放映。原因是由视神经的反应速度造成的.其时值是二十四分之一秒。是动画、电影等视觉媒体形成和传播的根据。 视觉实际上是靠眼睛的晶状体成像,感光细胞感光,并且将光信号转换为神经电流,传回大脑引起人体视觉。感光细胞的感光是靠一些感光色素,感光色素的形成是需要一定时间的,这就形成了视觉暂停的机理。

   物体在快速运动时, 当人眼所看到的影像消失后,人眼仍能继续保留其影像0.1-0.4秒左右的图像,这种现象被称为视觉暂留现象。是人眼具有的一种性质。人眼观看物体时,成像于视网膜上,并由视神经输入人脑,感觉到物体的像。但当物体移去时,视神经对物体的印象不会立即消失,而要延续0.1 -0.4秒的时间,人眼的这种性质被称为“眼睛的视觉暂留”。

很简单,说白点,就是逐一显示数码管,根据图像在人眼的暂留时间0.1-0.4秒计算,如果要点亮10个数码管,那动态扫描的时间只要在0.1秒之内就可以看到全部点亮的数码管了。(这里以位来扫描,就是所有ABCDEFGH段并联做段选,留下每个数码管COM端做位选)

操作流程如下:

1.送数码管段码  2.打开位选(点亮数码管) 3.延时点亮(具体情况具体分析)   4.关闭位选(熄灭数码管) 接着就进行下一个数码管的显示了

也就是在某个时刻,只有一个数码管被点亮。当这个时间在人眼暂留现象的时间之内,人就能看到连续点亮的数码管了。

下面是本人做的一个实验效果,用来说明动态扫描问题。

这个是我将扫描时间片加到0.2秒的效果(也就是0.2*17=3.4秒钟扫完17个数码管)。而大家看到数码管全部亮,是因为将扫描时间片降低到0.0005秒(500微秒),由于人眼暂留现象,所以看到数码管全部亮了。

关于动态扫描的时间片问题,是的,这个问题非常关键。时间片也就是点亮一个数码管的时间,由于时间比较短,所以称为时间片。时间片对于点亮数码管的亮度有影响,也同时会影响整体动态扫描的时间,或许造成动态扫描闪烁也与此有关。

掌握适合的时间片,对于动态扫描的效果尤为重要。时间片过短,数码管太暗了。(至于为什么暗,这里可以想象一下PWM的方式,与PWM具有异曲同工之妙)。时间片太长,数码管就可能会闪烁。

经验分享:由于我扫的是17个数码管,在没有加数码管驱动芯片的情况下,全部扫描的时候很暗,逐个点亮的时候又正常了。所以如果超过8个(或者12个)数码管,建议使用专门的驱动芯片,或者采用段扫。

原文网址:http://www.jhmcu.com/index.php/digital-control-of-dynamic-scan/

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/239/

标签: 单片机
分享给朋友:

“关于数码管动态扫描” 的相关文章

未能加载文件或程序集“file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports

首先我使用工具的信息为:Visual Studio 2010 ,水晶报表的版本为:13.0.0.99。 我想做的就是:使用VS2010中的WPF,将DataSet中的数据展示出来。(DataSet中的数据来自Oracle数据库) 但是我在运行的时候出现了这个问题: 未能加载文件或程序集“...

服务端把客户端几次发的数据一起接受了,是怎么回事?

服务端把客户端几次发的数据一起接受了,是怎么回事?

  客户端是android,服务端是c#,手机监听手指一动就把手指所在的那个点的位置发给服务端,服务端死循环接收,android可以保证一次是给服务端发一条数据,但是服务端把几次发的数据一起接受了 原因: 因为TCP是流式数据,没有次的概念。看题主的数据,结构本身比较简单,可以试试利用...

sql server 2008提示“列名无效”,但是能正常查询

在SQLServer2008中,当设计(修改)表结构之后,再用SQL语句时,列名会显示无效,但执行可以通过.原因是SQL Server的intellisense(智能感知功能)需要重新整理一下,用快捷键Ctrl+Shift+R即可 归根结底是智能提示出了问题,用了缓存。...

vc中如何获取修改系统时间的消息

参考资料:http://msdn.microsoft.com/en-us/library/windows/desktop/ms725498%28v=vs.85%29.aspx 问题: 我在窗口上显示了系统时间,点击后调出系统的“日期和时间 属性”对话框,修改属性...

OKI单片机-如何查看编译后程序占用的RAM和ROM大小

OKI单片机-如何查看编译后程序占用的RAM和ROM大小

OKI单片机程序编译成功后,Project目录下将会多出一个map文件。通过这个文件,可以知道程序占用的RAM和ROM 1、程序占用ROM 分两种情况,第一种情况如下图: 像这种情况,占用ROM是: Total size(CODE) + Total size(TABLE) = 1916+95 =...

Keil C51某些汉字不显示bug解决

Keil C51某些汉字不显示bug解决

这个问题是在用ST7920 LCD 12864时发现的,“星期三”中的“三”字显示不出来。经查,发现是Keil编译器的问题,编译器在编译汉字时会将汉字内码0xFD给过滤掉,导致汉字显示不正常。 一、直接用汉字编码 如果直接用编码则不会有这个问题。例如,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。