日常生活中常见到段码式液晶屏幕。它有普通的数码管的特征,又有点阵LCD的特征,固定的图形,省成本而又好看。全新的GD32F190系列5V宽电压高抗噪Cortex-M3内核MCU,内置了段码式LCD控制器可直接驱动256(8×32)个段码以实现高质量、高对比度的液晶显示。那么,我们就来一起了解一下!
段码式液晶屏的重要参数:工作电压、占空比、偏压比。这三个参数非常重要,必须都要满足。
段码式液晶屏的驱动方式:根据 LCD 驱动原理可知,LCD像素点上只能加上AC电压,LCD显示器的对比度由COM脚上的电压值减去SEG脚上的电压值决定,当这个电压差大于LCD的饱和电压就能打开像素点,小于LCD阈值电压就能关闭像素点。
不要以为用MCU来驱动就认为段码LCD是直流驱动的,其实,段码屏是交流驱动,就是用矩形波、正弦波来驱动。段码屏主要有两种引脚:COM和SEG,跟数码管很像。通常,为了节约驱动口,将多个背电极连在一起,形成公共背电极端:COM。另外,再将属于不同COM的段电极连接在一起,形成公共段电极端:SEG。当在某个COM和某个SEG之间加了足够的交流电压之后,就会将对应的段点亮(实际上是变黑)。但是,压差必须是交替变化,例如第一时刻是正向的3V,那么第二时刻必须是反向的3V。注意一点,如果在LCD加上稳定的直流电压,不但不能正常显示,时间久了还会损坏LCD。
还有两个重要的参数,分别是占空比(Duty) 和偏置(Bias)。由于段码屏一般是采用时分动态扫描的驱动模式,在此模式下,每个COM的有效选通时间与整个扫描周期的比值即占空比(Duty)是固定的,等于1/COM数。由于LCD的SEG/COM的驱动波形为模拟信号,而各档模拟电压相对于LCD输出的最高电压的比例就称为偏置,而一般来讲,Bias是以最低一档与输出最高电压的比值来表示。
还需要建立一个缓冲区,当需要修改显示字符时,就修改缓冲区中的内容。为了显示字符,需要事先把需要显示的字符按照SEG和COM的分布,制作成数据保存起来, 需要显示时,就把它复制到显示缓冲区中对应的位置去。另外,由于输入的参数是字符的ASCII码, 因此还需要将ASCII码转换为对应的字符图案的索引值。使用一个专门的函数来完成这些转换和填充缓冲区,在需要修改显示数据时,就调用该函数。
GD32F190 MCU内置的LCD驱动器就通过自动产生SEG和COM交流电压信号来直接驱动段码式LCD显示。该驱动器可以驱动单色液晶显示器(LCD),这是一种由若干段(像素或完整的符号)构成的,有可见和不可见两种状态的显示屏。LCD驱动器支持最大32个SEG和8个COM。
GD32F190 MCU内置LCD驱动器主要特性
可配置帧率
单个SEG或所有SEG的闪烁
支持静态、1/2、1/3、1/4、1/6和1/8占空比
支持1/2、1/3和1/4偏置
双路缓冲器可多达8x32位寄存器来存储LCD_DATAx
对比度也可通过配置死区时间来调整
VLCDrail解耦能力
我们简单介绍一下LCD驱动器的结构原理。LCD控制器里面的时钟发生器可以从输入时钟产生LCD时钟,LCD时钟可以驱动闪烁控制和SEG/COM驱动器。闪烁控制可以产生闪烁频率和闪烁像素,SEG/COM驱动器可产生SEG和COM信号输送到ANALOG矩阵,且ANALOG矩阵可实现SEG和COM电压。
GD32F190 MCU的LCD REG寄存器就是LCD控制器的寄存器,包括LCD_CTLR、LCD_CFGR、LCD_SFR、LCD_ICR和LCD_DATAx五个寄存器,它们可通过APB总线配置,且可使CPU产生中断。LCD控制器也支持闪烁功能。闪烁模式可通过LCD_CFGR寄存器中的BLKM位来控制,以允许在SEG和COM上闪烁单个段或所有段。
对于GD32F190Cx (LQFP48封装)和GD32F190Rx (LQFP64封装)来说,内置LCD控制器既可以选择由MCU内部电荷泵供电也可以选择由P1脚引入外部电源供电。特别提示无论哪种供电方式,都需要在P1脚连接一个0.1uF~1uF的滤波电容。如下图所示: