本帖最后由 FSL_TICS_Jeremy 于 2014-2-27 11:46 编辑
SLCD驱动LCD寄存器操作简介
在K30与K40都集成了低功耗的段式LCD控制器,最多可产生44个段信号和8个公共端信号。LCD的驱动不像LED,在K加上电压就可长期显示了。LCD驱动必须使用交流电压驱动才能保持稳定的显示,如果在LCD上加上稳定的直流电压,不但不能正常显示,时间久了还会损坏LCD。一般LCD由背电极和段电极组成,需要显示时,在背电极和段电极之间加上合适的交流电压(通常使用方波)。通常,为了节约驱动口,将多个背电极连在一起,形成公共背电极端:COM。另外,再将属于不同COM的段电极连接在一起,形成公共段电极端:SEG。当在某个COM和某个SEG之间加了足够的交流电压之后,就会将对应的段点亮(实际上是变黑)。在Kinetis 100MHz SLDC例程文档中,以SLCD模块驱动LCD七段数码管为例,解释了SLCD的工作原理,但对于例程中关于SLCD如何驱动[url=]TWRPI-SLCD[/url]的寄存器设置,相信很多网友还是一头雾水吧,不过没关系,在这篇经验分享中,我将就SLCD点亮TWRPI-SLCD字段中的飞思卡尔**的寄存器设置做简单的介绍,以便大伙能够理解。(废话不多说啊,先上图)
图1为TWRPI-SLCD的原理图,图2为TWR-K40X256的SLCD TWRPI槽的引脚分布图,图3为TWRPI-SLCD的段码分布图。比较图1、2会得到如下的对应关系:
引脚名称
| 功能 | LCD1 | LCD_P0 | LCD2 | LCD_P1 | LCD3 | LCD_P2 | LCD4 | LCD_P3 | LCD5 | LCD_P20 | LCD6 | LCD_P21 | LCD7 | LCD_P22 | LCD8 | LCD_P12 | LCD9 |
LCD_P13
| LCD10 | LCD_P14 | LCD11 | LCD_P15 |
图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、 SEG3: 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可知,飞思卡尔**对应是P1段。只有在Phase D时, COM4与SEG7之间电压差等于V3值,P1即才可被点亮,所以设置WF15=0x08,LCD_WF15TO12 |= 0x08000000;
附上没2.5s飞思卡尔**闪烁的例程,供大家参考。
至于如何点亮冒号、百分号等其它字段,留给大伙自己思考啊,有问题的欢迎讨论。
|