段码屏中的每个段,都填充了一种特殊的液态晶体。在电场的作用下,晶体的排列方向会发生扭转,因而改变其透光性,从而可以看到显示的内容。
要使得晶体发生扭转,必须使得电极两端的电压差大于一定的阈值,才可以显示内容。通常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产生中断的时间间隔,以便达到较佳的显示效果。