M32(M16)驱动 LED双色点阵128*32看32级灰度MM图
今天有点闲时,也来发点消遣的,M32(M16)驱动 LED双色点阵128*32看32级灰度MM图。注意哦,是32级的,不是3级的哦。以前一段时间无聊时做的,今天翻硬盘的时候看到拍的图片就想起来了。顺便贴上来与大家共享.
用M32跑24M驱动2块双色的64*32LED点阵组成128*32的屏幕看灰度图片.图片数据存在ROM中.256级灰度的时候闪得厉害,32级还凑合。因为速度问题,未作gamma校正.汇编程序。灰度采用8421原理来生成,每一位的定时时间采用定时器2,32分频来生成。定时器运行时程序同时送下一位的数据.
电路图就不贴了,M32最小系统。点阵屏是16扫描的,74hc595,74hc138,oe高电平有效.端口定义见程序。话不多说,看图:
原图
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_557286.JPG
(原文件名:mm12832.JPG)
实际效果图
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_557287.JPG
(原文件名:led12832_mm.JPG)
程序AVRSTUDIO
点击此处下载 ourdev_557398.rar(文件大小:182K) (原文件名:ASM_LED_SHOW_32.rar) 不错啊,谈谈实现原理就好了。 又一个强人啊。 太棒了,想学习了 谢谢! mark 不错的说~ MARK mark 马克回头看图片。 拽 能否贴个32级灰度, 每个灰度显示1行的图,
不知为何我做出来的每一级灰度看起来差别很小.我用的还是传说中的19场原理了. 汗... 不错的 回复【1楼】 zhaojun_xf
-----------------------------------------------------------------------
生成一次灰度,假如是32级的,那么第一次定时时间是1<<3个定时器时钟,把每一行的数据的最低位(第3位)打入74hc595并锁存输出后,设置定时器2(32分频)的比较匹配值为(1<<3),然后开启定时器,再开启oe使能74hc595点亮LED,然后接着CPU就马上可以送下一位的数据,定时器2的OCR中断服务中再关闭oe.第二次是1<<4个定时器时钟,送第4位的数据,第三次为(1<<5)个定时器时钟,送第5位,以此类推直到最高位第7位送完显示。这样完成一行的一轮灰度.其实有个问题是定时器进入中断需要一段时间,所以可能最低位的定时时间有点偏差,但是实际影响没有非常严重.要说明的一点是,程序锁存输出出一位数据前需要等待确认上一位的定时时间是否已经结束,即标志timer_get是否设置。
一行每位的灰度送完后接着就进入下一行的灰度生成。16行扫描完后就完成了一帧图像的显示。
回复【11楼】litchiate 草真多
-----------------------------------------------------------------------------------------
因为LED屏现在已经不在我的手上,所以没办法做这个测试。如果你有屏的话可以自己稍微修改下测试。没做gamma校正的话确实是差别可能会小一点。
程序可以显示256级灰度,设置每次调用deep为1即可。但是这个时候已经闪得非常厉害了。CPU送一位的时间大约是200us(视数据而变),200us*8*16=25ms,实际上还要更换每行的行数据缓存,所以显示一轮的话就需要30ms左右了,已经闪得厉害了。
如果屏幕是单色的或者是64*32的应该可以稳定显示256级。试过64*32双色256级显示,很稳定。
为了达到最大亮度,最高位的定时时间应该约等于送出一整行的每位数据的平均时间.CPU送一位的时间大约是200us(视实际数据而变),如果进行256级显示,则定时器应该分频数是200us/(1<<7)/晶振周期=38分频,取实际可以设置的定时器分频数为32分频。
再次说明下,没有gamma校正。
照片中比较暗的那条横线为拍照原因,实际看不出横线.
19场原理要求送数速度非常非常快,用单片机恐怕实现不了像这样面积的19场,要用到CPLD或者FPGA了. mark mark ding 标记 mark 嗯,不错 mark mark mark mark mark mark MARK 我顶起。 呵呵,无意间又找到视频,
点击此处下载 ourdev_613194T4U526.rar(文件大小:2.32M) (原文件名:VIDEO_012.rar)
噪音是一旁正在运作的机器。 牛x 牛x 收藏 又遇强人
顶! 汇编牛人. 这个不错 马克一下 请教楼主的灰度数据是通过什么软件转换的? mark 回复【36楼】lionliu
-----------------------------------------------------------------------
自编。 牛人啊 强! 高手,太厉害了。 好强大啊 再弄弄 可以放电影了 学问啊 我也仿楼主用STC12C5A60S2的单片机做了一个是全彩的128*32刷新256级灰度(但实际只接上了64*32双色),图片没有实时处理,是预先处理过再发送显示的基本不闪,(实时处理太闪了),
http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693050L07CAU.JPG
(原文件名:k.JPG) 厉害!mark LED显示屏 这个橙红的肉色,算是硬件去除了外衣么。。。。
哈哈哈哈 回复【楼主位】sharpufo 来生缘
--------------------------------------------------------------------
如果是三基色的LED屏采用这种方法
是否是依次送R G B三色的灰度数据 就是说送完R的并显示 再送G 再送B? 回复【楼主位】sharpufo 来生缘
-----------------------------------------------------------------------
mark!我很想请教楼主的图片是用什么软件取模的,数据怎么排列,取数据怎么取,对上下两行(1/16扫描)同时595赋数据最快的方法?期待楼主的出现。 mari! 牛人呀 make...学习下
页:
[1]