迈出基于HD44780的视频模式

2021-05-07 23:29:59

以下文档描述了通过使用同步更新方案和互补特殊字符在图形模式下驱动HD44780式的16x2字符LCD的潜在方法。此处介绍的本概念可以与最小硬件修改相结合,以重新启动20x4字符LCD作为图形显示器。

工业机械,测试设备和业余爱好项目中使用的性格液晶是流行的,长期存在,主要基于多个制造商的日立HD44780 - 型号控制器(+驱动程序):

显示面板由由控制器COM驱动的行组织,而列由控制器或辅助驱动器SEG线路驱动。

被动矩阵显示器的驱动方案取决于字符组和格式的排列(例如,5×8,5×10,5x11),但最常被认为是1:16多路复用,与1/5级别偏置。

下面的1:2多路复用方案(取自NXP PCF2119数据表)以更可靠的方式传达了这个想法。行和柱导体条带的连接处的STN像素看到差分交流波形。小幅度Don' t导致像素切换,并且在这种情况下,必须互补地生成帧对以创建零时间平均值(无DC分量)。

考虑到这一点,显示1:16多路复用和1/5偏置的显示器的定时可以被理解为通过所有16行循环,其中仅与COM1相关联的第一次时隙具有有助于小区切换的高电平。

虽然HD44780类似的控制器具有8位并行接口,但是指令解码和存储器访问逻辑似乎使得一个命令以270kHz标称时钟速度或10个时钟循环需要至少37μs。当执行写命令时,写入光标(指针)在后递增,因此至少有一个地址更新需要先于或遵循突发写入操作。编写16个连续字符成本至少170个时钟。填充8x2字符区域的成本至少为180个时钟,突出显示在200个时钟的单行驱动阶段的持续时间内的限制。

就组织而言,16x2,20x2和20x4液晶使用额外的驱动程序添加更多的列线,其遵循类似于上面讨论的偏置方案。下面的应用电路显示了最多20x4个字符的菊花链配置:

请注意,控制器本身只驱动8x2字符块。通过3线同步串行接口将所有剩余字符的像素数据传输到DAISENYCHARED驱动器IC。此后将通过将电阻从控制器插入数据(D)线路到第一个驱动程序来使用。电阻后连接的GPIO引脚用于双向相互作用。显示控制器使用电阻编程的内部振荡器,并注入数据与CL1,CL2或M同步。这只仅离开由控制器直接驱动的字符被接管以用于图形显示能力。

只需通过查看视频,人们从显示器中取出,可以观察到作为先决条件的撕裂。随着栏图更新,块在帧期间指示数据更新。

(资料来源:YouTube用户파코즈" 16x2液晶显示器,VU仪表,FFT频谱分析仪,IR接收器2,温度计")

2013年HEDELMAE LCD Megademo 2是在这篇文章时可能的不可值得注意的例子。图形内存访问的胃口可能是通过广泛的迷恋业余爱好者和Demoscene人在所有内容提供的多个自定义角色中可见控制器。将字符代码0x00. 0x07写入DDRAM,使用本良好的文档功能。然后,控制器从CGRAG获取像素数据,并使用类似于CGROM数据的数据。

所有其他角色都是在工厂中的屏蔽到CGROM中。通过从Display数据表中选择(例如,如下所示的Fordata FDDC1604),

在https://github.com/jazz-soft/char-lcd,友好提供带有HD44780-A02(欧洲标准字体)的图像:

虽然许多控制器制造商提供了具有特殊字符的多个CGROM变体(字体集),但有特殊字符,且#39; T 2 ^ 40不同的独特(128 GB)显示任意5x8像素块 - 不用说40位字符代码也可能代表像素信息本身。

如果可以在每行序列化之前换出一个字符,但是,可以从32个字符之一加载5x8像素角色的8个水平线中的每一个。这将5x8任意像素块的表示分布到连续选择的LUT字符中的8个。下图显示了所有LUT字符的占位符。忽略暗灰色区域,而相关线条以黑色/浅灰色绘制,描绘了所需的位模式。

因此,LUT由32x8(256)个字符代码组成,其中许多可以与现有字体集合匹配:

这些是完全匹配的,但遗漏了一些像素组合。幸运的是,仍有8个自定义字符可以补充CGROM Set。除了第一LUT线路之外,所有LUT行都具有< = 8个缺少的字符,因此可以通过复制来插入CGROM代码,并通过复制CGRow像素。追捧5像素的组合到相应的Y位置。这些是从A02字体集(具有一些艺术许可证的自定义字符(以及相同y位置的5像素线)可互换):

最上面的线条手动选择作为折衷以最大限度地减少虚假陈述错误。然后改进的lut变成了

以下LUT示例描绘了5x8图形内容如何映射到序列中显示的8个lut字符,其中仅使用一行来构思LCD面板上的out。

LUT代码需要写入DDRAM的顺序由COM线路排序到面板。

要调查是否有一个机会窗口,可以将LUT代码写入DDRAM并定期重置DDRAM光标并与位模式生成重置,下面介绍来自HD44780数据表的功能框图的还原部分。

" IR(指令寄存器)只能从MPU写入。",接口是微处理器,除了用于(微)处理器

在执行命令期间忙碌处于活动状态,忽略忙碌==活动时发出的新指令

DDRAM地址来自指令解码器,而不是来自定时发生器。 8位数据总线必须由MPU(或指令解码器)控制。

4位线位置(0..7为5x8字符,0..10对于5x11)需要来自定时发生器,因为存储器输出仅朝向串行器5位宽。

需要同步定时发生器和MPU,以确保将数据传输到串行器单元中的适当相位。有些箭头相当令人尴尬。越熟悉"重置"信号并不指向任何内容,暗示它连接到多个块。两个"指令解码器"箭头具有未指定的位宽,但它们'重新1位宽(不适合地址数据到计数器)。因此,基本上存在多条线路被路由到定时发生器块,允许操作重置定时发生器。希望显示开/关触发这样的重置。

关于指令解码器输出和互连的实际功能或存在,其他数据表甚至更清晰。也许一个骰子射击将有助于澄清。

这导致相信并行/串行转换器单元也被缓冲,并且部分由MPU /指令解码器控制。根据地址计数器(< 16),使用CGROM 5位数据而不是CGROM 5位数据。此外,DDRAM读数的顺序取决于存储在MPU中的显示布局,因此MPU连​​续涉及加载DDRAM数据。

需要将序列化器填充每行的新数据,因为在CGROM / CGROM访问期间已经发生的线路选择,并且没有复制完整的CGROM / CGROM 2D映像。功能框图显示了连接到串行器的40位移位寄存器。奇怪的是,"并行/串行转换器"具有40位宽的输出总线,因此它基本上存储了从CGROM / CGROM加载的八个5位值。

最大大小为80显示的字符,每个显示5x8像素,总共3200像素。除以最大16个COM线路,每条线必须具有200像素。这个数字以上显示为" 200时钟"在1:16多路复用方案中驱动其中一个COM线。因此,在没有测量的情况下,可以导出串行器以全振荡器频率计时。序列化器似乎是合理的,然后序列化器将连续运行,但只有在显示器较小时才会送入一部分时间。

我们现在还知道MPU有5个时钟周期,使CGROM / CGROM数据进入并联/串行转换器的并行缓冲区,并且对于20x4显示,序列化器数据加载必须连续运行。

因此,当一个数据将其写入DDRAM时,MPU是在传输数据时的两倍。时间明智,人们需要在内部阅读地址或后面开始写作。假设指令或数据写入操作需要11个时钟,可以写入和处理16个LUT字符+ 1指令字节,解锁16x2 * 5 * 8图形模式。那个' s 80x16(1280)像素,给予或采取。

还应注意到,当将自己限制在8x2字符块和1/16多路复用时,DDRAM 0x00。0x07和0x40 .. x047也可以直接填充定制Chracters 0 .. 7.而不是在DDRAM中更改字符代码,写操作可以更新相应的自定义字符线中的CGROM模式,创建完整的像素访问。第二组行(COM8..15)在CGROM行0,1,...再次启动,使自定义字符成为一个即时视频缓冲器。

由段驱动程序驱动的所有字符当然是通过串行接口访问的。

此外,当将数据注入达到菊花链的扩展驱动程序时,只需要写入8个字符+ 1命令字节,进一步放松时机和创建"软件"同步。后者依赖于假设显示开/关命令在定时发生器中重置行计数器。 HD44780类似的控制器为抖动和无偏移操作提供外部时钟选项,但为扩展驱动程序CL1,CL2,M和D线路添加电线似乎更有用。无论如何,时序似乎对RC振荡器精度依赖于RC振荡器精度,甚至使其成为一种侵入性修改,它正在奖励到20x4字符图形模式的途径。

通过将4K7电阻放置在主控制器和第一辅助驱动器之间的D线路上,可以在双向I / O的驱动器侧连接GPIO。然后可以在将GPIO切换到推挽模式之前将CGROM或自定义字符读取,然后将GPIO切换到Pumpl-Pull模式之前,以PPIO为像素数据源。

将像素数据仅为扩展驱动程序呈现为扩展驱动程序,并使用它们用于行驾驶,似乎是1985年左右的产品现实,如下面的图片由AVRFreaks用户ossi证据共享:

因此,在改变现代显示器的情况下,真的应该在道德上载有我们的对像素数据喷射同步到控制器提供的时钟。