初学者:关于led显示的一点粗浅经验之谈,大家多多指教 [秋雨] [218次] 01-8-11 下午 04:05:26
这段时间有不少朋友在作led显示,问了我不少问题,一一回答总是找不到要点
在此我把我几年来作led的一点经验总结以下,作为对大家回答,希望对大家有
点启发,也作为抛砖引玉吧,大虾们多谈谈自己的宝贵经验!
一: LED显示器件的基础
LED发光器件一般常用的有2类,数码管和点阵,
1:数码管
a,数码管常用的一般8字型,分为A B C D E F G P段,其中P位小数点
b,数码管常用的有10根管脚(单位),每段一根管脚,另外两根管脚为
公共端,2根是通的
c,从尺寸上分的话种类很多,常用的有0.3 0.5 0.8 1.0 1.2 1.5 1.8
2.3 3.0 4.0 5.0 等等
d,一般小于1.0的为单管芯,(1.0有单有双),1.2~~1.5为双管芯,1.8以
上为3个以上的管芯,因而他们的供电电压要求不同,一般每个关芯的
压降为2.1v左右
我的经验是0.8以下5v供电,1.0~2.3为12v,3.0以上更高
e,数码管分共阴和共阳两种
2:点阵
a,点阵常用的为8*8,以前还有5*8(现在不大用了)
b,点阵都是单管芯,分(行)共阴和(行)共阳,一般都用5v供电
c,8*8点阵为16根管脚(单色,也有24根的,可能是作废的双色点阵或者
为了能在同一种线路板上实现单色双色都可用而设计的,也比较常见)
8根行8根绿
双色为24根管脚,8根行,8根列红,8根列绿,
二: 显示基本原理
分为静态(只有数码管能实现)和动态
1:静态的比较好实现,在此不多讲了
2:数码管动态
a,硬件连接
数码管一般为1/13能扫描,再高的话亮度损失比较大,
在此假设为列为13列,行为16行,共阳管,每行数码管的各段连在一起,每列数码
管的公共段连在一起
列开关用tip127,他可以直接用154驱动,达林顿管5安培,注意127输出
不要加电阻
行用595(164不建议)+2803或者2003+一个9013,在2003的输出要加上
限流电阻,一般为56~330欧姆(如果是 电阻驱动)
b,软件
采用89c51为cpu,存储器可采用24c系列,或者28c系列,注意他们的写入速度都不是很
快,不过一般数码管的输入设备为键盘或遥控器,速度足够了,还有24c系列的读出速度也比较
慢,我发现每次读出的数据大概只有20以内才不会影响更新显示
显示采用时钟中断1,中断时间不能超过1.5ms,最好为1.2ms左右,可以在中断服务程序中
读24c02,也可以在中断的间隙中读取,但必须保证能够读出所有的一列数据!读出的数据放到
一块显示区中,(在内存中定义一个数组buf[16]),在中断子程序中把数据发送的595中即可,
最好采用串口发送,编程最简单.
发送完毕后,关掉控制行的154,给595的RCLK(12脚)一个脉冲,把数据从移位寄存器传输到
锁存器,而后打开154并输入列信号即可
3: 点阵
a,点阵一般采用1/16扫描,控制原理和数码管差不多
b,硬件: 行用154+tip127,列用595加电阻(0~56欧姆)直接驱动
c,软件
方案比较多,见下面
三: 先说说信息的存储
分为2种,
1:一种为固化的汉字,汉字点阵信息存于27c256中,最多存1024个16*16点阵汉字,要修
改只能重新写27c256,优点是不丢失,一般我们为银行做的都是这种,他很少修改显示能容,而
且以后每次修改可以收费
2: 另一种是可以用户自己修改的,修改方式又分为2中,
早期一般用键盘或者遥控器修改,那样必须在主办上固化有汉字字库,可用27c040
固化ucdos的hzk16全角字库和asc16半角字库,用户输入区位吗进行修改,用户需要显示的汉
字以区位吗的方式存到一片E2POM中,显示的时候程序根据区位吗读取点阵信息送到屏上显
示,
还有一种近年来常用的方式就是利用微机串口进行修改,这里面还分为两种
A,控制板上没有字库,微机发送的是显示的点阵信息,控制板接受后把信息存到带电池
的RAM中(也可用E2PROM,但速度很慢),这种的缺点是掉电池的RAM不太可靠,常常丢失信息
B,控制板上带字库,微机发送汉字的机器吗(内吗)即可,其他同上
四: 显示的控制
信息的发送可以有好多方式,根据采用器件的不同而不同,有的厂家采用374控制而不采
用595,那样的话直接写一个外部端口即可,374级连方式,(如果用1排374的话在传输中必须关
掉显示,显示字较多的话影响亮度,用2排374不必关掉显示但增加硬件成本),目前用的较少了
595的很长见,发送可以用传口,很简单,也可以用别的口模拟传口发送(因为传口还有可
能随时接受微机的信号),也可以采用传口复用(不过我不会,:)~~)
我采用的是用374+165向595发送数据,硬件比较复杂,但是在以后的显示花样中很好用!
特别是左右移位,爽极了!
提示一下:最近用双龙的90S8515发现很好,因为他还有一个SPI口,用来送595信号更爽!
速度可到3M,(12M晶体),强烈建议大家有这种芯片(靠,也不到双龙看到了会不会给点奖
励....)
五: 一些注意事项:
1: 显示时间,每行 2: 根据经验,89C51 12M晶体最大控制48个16*16点阵,再大的话可以提高晶体频率和优
化程序,(就是发送程序的时间最短)
3: 在显示的字比较多时,一定要注意发送子程序的代码效率,因为发送是一个循环,所以
循环体内的处理越快越好,大家现在大都用C51,更的注意,我可是吃过亏的!
大家看下面的例子:
if(hangno==0x10)hangno=0; //hangno为显示的行序号
for(i=0;i {
PORT1=*(addr+hangno*0x600+i);//我的汉字信息是0~600为第一行信息
//600~0c00为第二行信息...
PORT2=0x0ff;
}
每次发送32个字节(16个字),程序编译通过,没有问题,可是当显示64个汉字时(假设)显示就
乱了,后来改为
if(hangno==0x10)hangno=0; //hangno为显示的行序号
w=hangno*0x600;
for(i=0;i {
PORT1=*(addr+w+i);//我的汉字信息是0~600为第一行信息
//600~0c00为第二行信息...
PORT2=0x0ff;
}
就没有问题了,大家自己看看,就知道原因了,对把?
写了这么多,想到那些到那,很不系统,不过好累呀,我下两盘军旗放松放松,大家多提提意见,
这只是讲的小屏的控制方法(
感谢秋雨前辈!您辛苦了! [阿风] [3次] 01-8-11 下午 04:17:53
秋雨兄的字是字字珠玑,只是我等阿菜对于理论的东东很难理解,是否可是提供一个简单的电路和详细的解释,让俺们学习? [WALL] [3次] 01-8-11 下午 04:38:40
加入精华版了,非常感谢“秋雨”大侠无私的奉献。 [龙啸九天] [5次] 01-8-11 下午 04:49:51
非常感谢秋雨,很精彩! [will009] [2次] 01-8-11 下午 05:01:13
谢谢斑竹的夸奖,一点小经验,不足挂齿 [秋雨] [3次] 01-8-11 下午 08:23:44
太及时了,非常感谢。 [kk_npu] [2次] 01-8-11 下午 09:03:57
我期待很久了,再次感谢。 [龙啸九天] [1次] 01-8-11 下午 09:17:22
落后了,谁还用区位码输入?小显示屏一般用MCU+CPLD+232+遥控器,显示板用595(TI6B595)+CET4953(MOS型行驱动);大屏用FPGA通过显卡取数据,用FPGA完成扫描。... [oldwin] [22次] 01-8-12 上午 11:35:55
谢过秋雨前辈。小弟对你崇敬之情有如滔滔江水………………………………………………………………………………………………………………………………………………………………………………………………………………… [exdata] [2次] 01-8-12 下午 01:01:58
当然可以,用avr90s8515可以吗?我也是刚用,很好的! [秋雨] [8次] 01-8-12 下午 04:16:29
请教e2prom写的慢,读的也慢吗? [rechar] [4次] 01-8-12 下午 05:24:37
读写几乎差不多,写慢因为连续写不能超过叶字节数,读时没叶限制,只要你缓存够大。 [exdata] [9次] 01-8-12 下午 05:41:44
读写几乎差不多,写慢因为连续写不能超过叶字节数,读时没叶限制,只要你缓存够大。
28c系列的没有页的概念,读的速度不慢!你讲的是28f系列 [秋雨] [3次] 01-8-12 下午 06:09:25
28C系列EEPROM的确有页写功能,我用过了。 [中山子木] [3次] 01-8-13 上午 12:45:06
是吗?28c64有页功能吗?我可一直用28c64呀,页功能如何用?有资料吗? [秋雨] [3次] 01-8-13 上午 09:09:17
谢秋雨 [zhu_xinghua] [3次] 01-9-15 下午 03:16:59
谢过秋雨前辈。小弟对你崇敬之情有如滔滔江...............
能不能给张.sch图就美不胜收了。 16*16*16个字条屏。 fzzxh@21cn.com
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2001