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的寄存器设置做简单的介绍,以便大伙能够理解。(废话不多说啊,先上图)
0
|
|
|
|
图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
|
|
| LCD6
| LCD_P21
| LCD7
| LCD_P22
| LCD8
|
| LCD9
| LCD_P13
| LCD10
| LCD_P14
| LCD11
| LCD_P15
|
图1 TWRPI-SLCD的原理图
[size=0.83em]4.jpg (72.17 KB, 下载次数: 1)
下载附件
2014-2-19 21:40 上传
图 3 SLCD TWRPI段码分布图
|
|
|
|
|
假设SLCD选择工作于1/4 Duty模式,从图3可知COM1CD_P0、COM2CD_P1、COM3CD_P2、COM4CD_P3,SEG1{:10:}CD_P20、SEG2{:10:}CD_P21、SEG3{:10:}CD_P22、SEG4{:10:}CD_P12、
SEG5{:10:}CD_P13、SEG6{:10:}CD_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闪烁的例程,供大家参考。
至于如何点亮冒号、百分号等其它字段,留给大伙自己思考啊,有问题的欢迎讨论。
|
|
|
|
|