资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。中文字符显示系统设计 1. 汉字LED显示屏的工作原理一般我们使用点阵显示汉字是用16*16的点阵宋体字库。所谓16*16, 是指每个汉字在纵、 横各16点的区域内显示, 也就是说需要用四个8*8点阵组合成一个16*16点阵。如图所示, 要显示的”你”则相应的点就要亮。由于点阵在列线上是低电平有效, 而在航线上市高电平有效, 因此以动态扫描方式显示汉字的方法有两种: 第一种方法是字模数据送到列线再扫描行线, 例如要显示”你”的话, 它的位代码信息要取反, 即所有列送( 1111,0xf7,0x7f) , 而第一行送1信号, 然后第一行送0; 再送第二行要显示的数据( 1111, 0xf7,0x7f) , 而第二行送1信号。以此类推, 只要每行数据显示时间的间隔够短, 利用人眼的视觉暂停作用, 这样送16次数据扫描完16行后就会看到一个”你”字; 第二种方法是字模信号送到行线上再扫描列线也是同样的道理。同样以”你”字来说明, 16行上送( 0000, 0x00,0x00)而第一列送”0”。同样扫描第二列。当行线上送了16次数据而列线扫描了16次后一个”你”字也就显示出来了。任意时间只有一行施加高压有效信号, 其余各行均为低压有效信号。列施加对应该行的数据信号, 低压有效, 以8*8LED点阵列显示器为例说明字符显示原理, 8行顺序扫描结束后, 将完成一帧字符的显示。一帧扫描结束后, 行扫描从第一行重新开始, 周而复始, 若列数据保持不变, 则显示静态字符。反之, 若列数据发生变化, 则显示内容将发生变化, 如果保持前后帧内容的连贯性, 就能够显示动态字符。不论显示图形还是文字, 只要控制其组成这些图形或文字的各个点所对应的LED器件的发光, 就能够得到我们想要的显示结果, 显示的方法有静态驱动显示和动态扫描显示两种。同时控制各个发光点亮灭的方法称为静态驱动显示方式, 这种现实方法需要扩展单片机的端口, 设计出来的实物体积很大, 因此, 在设计时常采用动态扫描显示方法。动态扫描的意思简单地说就是逐行轮流点亮, 这样各列就能够公用一个列驱动器。就16*16的点阵来说, 把同一行所有的LED的阳极连在一起, 把同一列所有的LED的阴极连在一起, 经过单片机送出对应第一行LED亮灭的数据给锁存器锁存, 选通第一行并使其点亮一定时间, 然后熄灭; 再送出第二行数据并锁存, 选通第二行使其点亮相同的时间, 然后熄灭。依此类推, 点亮第16行后, 又重新点亮第一行, 重复循环。若这样循环的速度足够快( 每秒24次以上) , 就能看到显示屏上稳定的图形了。采用动态扫描方式进行显示时, 每行有一个行驱动器, 各行的同名列共用一个列驱动器。显示数据一般存储在单片机的存储器中。显示时要把一行中各列的数据都传送到相应的列驱动器上去, 从控制电路到列驱动器的数据传输能够采用并行方式或串行方式。采用并行方式时, 从控制电路到列驱动器的线路量最大, 相应的硬件数目多。当列数很多时, 并行传输的方案是不可取的。而采用串行传输, 控制电路能够只用一根信号线, 将列数据一位一位的传入列驱动器, 在硬件方面无疑是十分经济的。可是, 当串行输出的数据较长时, 数据按顺序一位一位的传输给列驱动器, 这样传送全部的数据就需要较长的时间, 从而使LED点亮的时间缩短, 影响字体的显示亮度。解决这个问题的方法是采用重叠处理的方法, 即引入移位寄存器, 在显示本行各列数据的同时, 传送下一行的列数据。它既能实现串入并出的移位动能, 又具有并行锁存的功能。这样, 数据经过串行输入口送入并经过并行锁存器进行显示的同时。再进行动态扫描方式显示汉字时, 要注意以下几个方面。1) 汉字字模提取可用来提取点阵汉字字模软件的软件很多, 如”汉字字库”、 ”字模提取”、 ”点阵字库软件”等, 有的软件能够对不满意的自摸进行修改。2) 点亮时间为使在点阵显示屏上显示的内容没有闪烁感, 点亮一屏的频率要大于24Hz, 那么点亮一行的时间就要小于1.5ms。时间太短就会对亮度造成影响。这个时间的长度先能够取一个大概的值( 如1ms) , 再对实际电路进行观察, 如果闪烁感很强就减小每行的点亮时间; 如果感到亮度不足就适当增加每行点亮的时间。这样重复调节使得效果最佳。3) 驱动能力点阵显示屏的连接方式, 以4个字的点阵为例, 共阳极连接的一行就有4*16=64个LED管。假设每个管子在点亮时的电流为15mA, 那么一行全点亮时的最大电流为64*15=960mA。这就要求点阵的驱动能力不能低于这个值。行使用译码电阻加达林顿三极管来驱动。4) 单片机接口为有效扩展单片机的I/O口资源, 列采用74HC138或74HC154进行扫描, 行采用串行输入数据, 首选74HC595。74HC595具有输出锁存功能, 可有效防止移位时LED的闪烁于重影。或用74HC154, 但输出时会有重影。在74HC154输出端另加锁存器也可防止重影, 不过电路比较复杂。2. 硬件电路设计3. 软件设计#includeiom16v.h#define uint unsigned int#define uchar unsigned charuchar display32= 0x00,0x00,0x1F,0xE0,0x12,0x40,0x12,0x40, 0x12,0x40,0x12,0x40,0xFF,0xFC,0x12,0x42, 0x12,0x42,0x12,0x42,0x12,0x42,0x3F,0xE2, 0x10,0x02,0x00,0x0E,0x00,0x00,0x00,0x00, 0x01,0x00,0x01,0x00,0x41,0x00,0x41,0x00, 0x41,0x00,0x41,0x02,0x41,0x01,0x47,0xFE, 0x45,0x00,0x49,0x00,0x51,0x00,0x61,0x00, 0x01,0x00,0x03,0x00,0x01,0x00,0x00,0x00, 0x00,0x04,0x20,0x04,0x20,0x04,0x20,0x04, 0x20,0x04,0x20,0x04,0x20,0x04,0x3F,0xFC, 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04, 0x60,0x04,0x20,0x0C,0x00,0x04,0x00,0x00, 0x24,0x10,0x24,0x60,0x25,0x80,0x7F,0xFF, 0xC5,0x00,0x44,0xC2,0x04,0x82,0x7E,0x92, 0x42,0x92,0x42,0x92,0x42,0xFE,0x42,0x92, 0x42,0xB2,0xFE,0x96,0x40,0x82,0x00,0x00, 0x02,0x20,0x0C,0x20,0x88,0x20,0x69,0x20, 0x09,0x20,0x09,0x22,0x89,0x21,0x69,0x7E, 0x09,0x60,0x09,0xA0,0x19,0x20,0x28,0x20, 0xC8,0x20,0x0A,0x60,0x0C,0x20,0x00,0x00, 0x00,0x00,0x7F,0xFF,0x44,0x20,0x5A,0x10, 0x69,0xE1,0x30,0x81,0x24,0x82,0x24,0x8C, 0xA4,0xF0,0x64,0x80,0x24,0xFC,0x2C,0x82, 0x25,0x82,0x28,0x82,0x30,0x0E,0x00,0x00,; void Sendbyte_H(uchar bb,uchar aa) uchar j;for(j=0;j8;j+)PORTB&=(12); if(aa&0x01) PORTB|=(10);else PORTB&=(10); PORTB|=(1=1; for(j=0;j8;j+) PORTB&=(12); if(bb&0x01) PORTB|=(10);else PORTB&=(10); PORTB|=(1=1; PORTB&=(11);PORTB|=(11);PORTB|=(10);void HC154_L(void) uint i,r,k,m,t; DDRB=0XFF;DDRC=0XFF;PORTB&=(13);while(1) for(m=0;m4;m+) for(i=0,r=k;i16;i+,r+) PORTC=i;Sendbyte_H(display02*r),(display02*r+1); for(t=0;t100;t+); Sendbyte_H(0x00,0x00); for(t=0;t80)k=0; void main(void)HC154_L();4. 系统调试5项目总结经过本项目的学习对16*16液晶显示的显示原理, 对四个8*8液晶显示器件的连接方法, 以及本项目的编程原理的组合都有很大的认识和理解, 能够更好的使用16*16液晶显示器显示各种文字符号。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号