sharpufo 发表于 2010-5-27 00:02:35

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)

zhaojun_xf 发表于 2010-5-27 06:34:10

不错啊,谈谈实现原理就好了。

plc_avr 发表于 2010-5-27 07:25:10

又一个强人啊。

honami520 发表于 2010-5-27 08:14:38

太棒了,想学习了

taoriran 发表于 2010-5-27 08:18:20

谢谢!

jackiezeng 发表于 2010-5-27 08:27:46

mark

spely 发表于 2010-5-27 08:28:46

不错的说~

xieguangye 发表于 2010-5-27 08:48:21

MARK

bsz84 发表于 2010-5-27 08:51:42

mark

litchiate 发表于 2010-5-27 09:01:04

马克回头看图片。

hz100 发表于 2010-5-27 09:32:49

litchiate 发表于 2010-5-27 09:34:41

能否贴个32级灰度, 每个灰度显示1行的图,

不知为何我做出来的每一级灰度看起来差别很小.我用的还是传说中的19场原理了. 汗...

sky_walker 发表于 2010-5-27 10:19:21

不错的

sharpufo 发表于 2010-6-1 23:19:38

回复【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了.

1181zjf 发表于 2010-6-2 06:46:50

mark

chaled 发表于 2010-6-2 18:09:24

mark

hiux 发表于 2010-6-4 08:30:45

ding

slowhand 发表于 2010-6-4 08:51:42

标记

ljt8015 发表于 2010-6-4 09:30:23

mark

avrpicarm 发表于 2010-6-4 09:36:07

嗯,不错

litteworm 发表于 2010-6-4 10:08:03

mark

wjhltk 发表于 2010-6-16 17:12:52

mark

renxupeng 发表于 2010-6-16 18:00:37

mark

yusufu 发表于 2010-6-16 19:40:16

mark

wjs1981 发表于 2010-6-16 19:45:05

mark

flyingcys 发表于 2010-6-16 20:35:45

mark

haowei236 发表于 2010-6-20 00:49:00

MARK

5irmb 发表于 2010-10-11 00:31:10

我顶起。

sharpufo 发表于 2011-1-24 19:28:26

呵呵,无意间又找到视频,
点击此处下载 ourdev_613194T4U526.rar(文件大小:2.32M) (原文件名:VIDEO_012.rar)

噪音是一旁正在运作的机器。

flyingcys 发表于 2011-1-24 20:19:50

牛x

Forever 发表于 2011-1-24 21:20:05

牛x

vtte 发表于 2011-1-24 23:13:56

收藏

format 发表于 2011-1-24 23:22:12

又遇强人

顶!

HYLG 发表于 2011-1-25 01:24:17

汇编牛人.

polar 发表于 2011-1-25 03:39:23

这个不错 马克一下

lionliu 发表于 2011-1-25 09:30:28

请教楼主的灰度数据是通过什么软件转换的?

bigworms 发表于 2011-1-25 12:00:57

mark

sharpufo 发表于 2011-1-25 12:50:52

回复【36楼】lionliu
-----------------------------------------------------------------------

自编。

guxingganyue 发表于 2011-5-30 17:22:28

牛人啊

zgx168000 发表于 2011-7-16 15:23:49

强!

bitant 发表于 2011-10-25 17:10:34

高手,太厉害了。

ayumi8 发表于 2011-10-29 16:01:28

好强大啊    再弄弄 可以放电影了

wunailaopo 发表于 2011-11-5 23:39:28

学问啊

lf415744311 发表于 2011-11-8 17:40:56

我也仿楼主用STC12C5A60S2的单片机做了一个是全彩的128*32刷新256级灰度(但实际只接上了64*32双色),图片没有实时处理,是预先处理过再发送显示的基本不闪,(实时处理太闪了),

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693050L07CAU.JPG
(原文件名:k.JPG)

lvyi913 发表于 2011-11-8 18:50:24

厉害!mark LED显示屏

t3486784401 发表于 2011-11-9 17:45:15

这个橙红的肉色,算是硬件去除了外衣么。。。。

哈哈哈哈

lzh8430000 发表于 2011-11-18 15:44:59

回复【楼主位】sharpufo 来生缘
--------------------------------------------------------------------
如果是三基色的LED屏采用这种方法
是否是依次送R G B三色的灰度数据 就是说送完R的并显示 再送G 再送B?

wobushi66 发表于 2011-12-12 13:26:13

回复【楼主位】sharpufo 来生缘
-----------------------------------------------------------------------

mark!我很想请教楼主的图片是用什么软件取模的,数据怎么排列,取数据怎么取,对上下两行(1/16扫描)同时595赋数据最快的方法?期待楼主的出现。

wangqh1983 发表于 2011-12-26 12:47:21

mari!

yangfanfske 发表于 2011-12-26 21:31:23

牛人呀

cms277415310 发表于 2012-9-11 08:57:02

make...学习下
页: [1]
查看完整版本: M32(M16)驱动 LED双色点阵128*32看32级灰度MM图