FSL_TICS_ZP 发表于 2014-2-19 21:35:18

【经验分享】SLCD驱动LCD寄存器操作简介

本帖最后由 FSL_TICS_Robin 于 2014-7-18 14:14 编辑

SLCD驱动LCD寄存器操作简介         
    LCD的驱动不像LED,加上电压就可长期显示了。LCD驱动必须使用交流电压驱动才能保持稳定的显示,如果在LCD上加上稳定的直流电压,不但不能正常显示,时间久了还会损坏LCD。一般LCD由背电极和段电极组成,需要显示时,在背电极和段电极之间加上合适的交流电压(通常使用方波)。通常,为了节约驱动口,将多个背电极连在一起,形成公共背电极端:COM。另外,再将属于不同COM的段电极连接在一起,形成公共段电极端:SEG。当在某个COM和某个SEG之间加了足够的交流电压之后,就会将对应的段点亮(实际上是变黑)。在Kinetis 100MHz SLDC例程文档中,以SLCD模块驱动LCD七段数码管为例,解释了SLCD的工作原理,但对于例程中关于SLCD如何驱动TWRPI-SLCD的寄存器设置,相信很多网友还是一头雾水吧,不过没关系,在这篇经验分享中,我将就SLCD点亮TWRPI-SLCD字段中的飞思卡尔Logo的寄存器设置做简单的介绍,以便大伙能够理解。(废话不多说啊,先上图)
    图1为TWRPI-SLCD的原理图,图2为TWR-K40X256的SLCD TWRPI槽的引脚分布图,图3为TWRPI-SLCD的段码分布图。比较图1、2会得到如下的对应关系:


图1 TWRPI-SLCD的原理图

图 2 SLCD TWRPI槽的引脚分布图


图 3 SLCD TWRPI段码分布图
       假设SLCD选择工作于1/4 Duty模式,从图3可知COM1:LCD_P0、COM2:LCD_P1、COM3:LCD_P2、COM4:LCD_P3,SEG1:LCD_P20、SEG2:LCD_P21、SEG3:LCD_P22、SEG4:LCD_P12、
SEG5:LCD_P13、SEG6:LCD_P14、SEG7:LCD_P15。
   寄存器设置流程:
   首先,使能各个LCD_Pn,并将LCD_P0、LCD_P1 、LCD_P2、LCD_P3配置为COM。
LCD_PENL= 0x0070F00F;
LCD_BPENL = 0x0000000F;
       其次,设置LCD_WF3TO0 = 0x08040201;即 WF0=0x01、WF1=0x02、WF2=0x04、WF3=0x08,从而使得LCD_P0对应Phase A,LCD_P1对应Phase B,LCD_P2对应Phase C,LCD_P3对应Phase D。
    下一步,从图3可知,飞思卡尔Logo对应是P1段。只有在Phase D时, COM4与SEG7之间电压差等于V3值,P1即才可被点亮,所以设置WF15=0x08,LCD_WF15TO12 |= 0x08000000;
       附上没2.5s飞思卡尔Logo闪烁的例程,供大家参考。
    至于如何点亮冒号、百分号等其它字段,留给大伙自己思考啊,有问题的欢迎讨论。




PS:本帖可从飞思卡尔版块置顶帖:飞思卡尔Kinetis资料大本营的飞思卡尔论坛支持小组【经验分享】帖汇总链接进入。

FSL_TICS_ZJJ 发表于 2014-2-20 12:54:08

感谢楼主分享!
页: [1]
查看完整版本: 【经验分享】SLCD驱动LCD寄存器操作简介