Silicon Labs 的 EFM32TG、EFM32G、EFM32LG、EFM32GG、EFM32WG都是带有低功耗段码LCD驱动器的MCU,最大支持8x24段数显示,可以很方便的对这些显示屏进行控制。但有时由于应用特殊,并不需要驱动段数很多的段码屏,例如电量显示板的应用中,就只需要驱动图中的5个黑色部分来分别指示20%、40%、60%、80%、100%的电量。若从上述的EFM32系列当中选择,功能上,完成可以实现,但是性价比不高,做出的产品没有价格优势。那么,有没有一种方法可以不用LCD驱动器,用更简单的EFM8系列的单片机来驱动这类 段码屏呢?
要从段码屏显示原理说起……
段码屏中的每个段,都填充了一种特殊的液态晶体。在电场的作用下,晶体的排列方向会发生扭转,因而改变其透光性,从而可以看到显示的内容。该过程示意图如图3所示。
图3:液晶屏显示原理
要使得晶体发生扭转,必须使得电极两端的电压差大于一定的阈值,才可以显示内容。通常LCD段码屏有三个参数:工作电压、Duty(对应COM数)和BIAS(偏压,对应阈值),比如,3.3V、1/4 Duty、1/3 BIAS表示LCD的工作电压为3.3V,有4个COM,阈值大约是1.1V(3.3/3=1.1)。实际使用中,为保证显示效果良好,通常给电极两端加的电压差接近LCD的工作电压;若要不显示,通常给电极两端加的电压差接近0V。需要特别注意的是,液晶分子是需要用交流信号来驱动的,万万不可将直流电压长时间的加在电极两端,否则,会影响液晶分子的电气化学特性,引起显示效果模糊,使用寿命减少的后果,其破坏性不可恢复。
了解了以上原理后,我们要点亮某个段时,只需要保证给其电极两端加的电压差为3.3V(如COM1=3.3V,SEG1=0V),并且间隔合适的时间,将这两极的电压反转输出(如COM1=0V,SEG1=3.3V);不点亮某个段时,只需要保证给其电极两端加的电压差为0V(如COM1=3.3V,SEG1=3.3V),并且间隔合适的时间,将这两极的电压反转输出(如COM1=0V,SEG1=0V)。
要实现这样的操作,就需要主频快、计时准、功耗低的MCU。笔者曾经用Silicon Labs的EFM8SB10F8单片机成功实现了对电量指示段码屏的操作。EFM8SB10F8最高可达25MHz主频,完全能够胜任快速翻转IO的操作;16位的Timer可以精确的保持合适的时间间隔,使段码屏达到良好的显示效果;该MCU内置了24MHz高精度振荡器,精度可达±2%,为Timer提供了精确基准的同时,也可以省掉外部晶振,降低产品成本;休眠时最低可达0.6μA,极大的延长了产品的待机时间。
硬件上,电路的设计也变得十分装简单,详见图4;软件上,驱动段码屏的核心代码也不复杂,详见图5。使用时,只需要在Timer中断函数里面调用该驱动代码的API函数,即可点亮段码屏。若显示的图像颜色比较浅,可适当延长Timer产生中断的时间间隔,以便达到较佳的显示效果。
图4:硬件电路示意图
图5:驱动段码屏的核心代码
晶拓是苏州启普微电子有限公司旗下LCD液晶屏 品牌,在仪器仪表、医疗器械、工业控制、门禁系统、母婴电器、农业工具、智能小家电等领域占有较大的市场份额,公司十年如一日的经营始终秉乘着“以品质求生存,以创新求发展”,诚信为本的经营理念,真诚希望与您共创美好明天。 咨询热线:400-0512-060