《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 智能电表段式液晶驱动的设计与实现
智能电表段式液晶驱动的设计与实现
来源:微型机与应用2013年第13期
张步幸
(天津工业大学 电气工程与自动化学院,天津 300387)
摘要: 首先阐述段式液晶屏的驱动原理,然后介绍利用MSP430F149单片机的管脚直接对多路寻址液晶显示器件驱动的硬件原理和程序,实现了无专用驱动芯片的液晶显示,减少了带段式液晶产品驱动芯片的费用。本设计驱动电路性能稳定、成本低廉,是理想的人机界面实现方式。
Abstract:
Key words :

摘  要: 首先阐述段式液晶屏的驱动原理,然后介绍利用MSP430F149单片机的管脚直接对多路寻址液晶显示器件驱动的硬件原理和程序,实现了无专用驱动芯片的液晶显示,减少了带段式液晶产品驱动芯片的费用。本设计驱动电路性能稳定、成本低廉,是理想的人机界面实现方式。
关键词: MSP430;多路寻址;直接驱动;段式液晶屏

 自从20世纪60年代末第一台LCD液晶显示器诞生以来,液晶显示技术在短短的40多年里得到了飞速的发展。显示器作为人机交互的关键部分,现已成为嵌入式设备中不可缺少的外围接口器件之一。由于控制段式液晶显示器的驱动时序复杂,因而相应的驱动芯片应运而生,但是液晶屏的驱动芯片价格昂贵且耗电量大,很多产品价格令用户难以接受。本文在智能电表设计方案中采用TI公司具有三态输出功能、超低功耗的MSP430F149单片机作为主控芯片,同时直接对多路寻址液晶器件进行驱动,既起到了控制其他模块的正常运行又驱动了液晶屏的显示,减少了驱动芯片的费用,设计电路工作稳定、成本低,具有一定的推广价值。
1 笔段式LCD的结构及显示原理
1.1 笔段式LCD的结构

 笔段式液晶显示器是指以长条状显示像素组成一位显示类型的液晶显示器件,简称段式液晶显示器件。它主要用于显示数字,或类似数字的段码型显示。段式液晶显示器件的驱动分为两类:一类是静态驱动;另一类是动态驱动[1]。因为段式动态液晶显示器件寻址路数一般不超过4路,故动态驱动又被称为多路寻址驱动。方案中的多路寻址驱动液晶显示器件引脚排布如表1所示。

1.2 笔段式LCD的显示原理
 LCD工作原理不同于LED,加上电压(LED实际上是电流驱动)就可以长期显示。LCD必须使用交流电压驱动才能保持稳定的显示,如果在LCD上加上稳定的直流电压,不但不能正常显示,时间久了还会损坏LCD。一段LCD由背电极和段电极组成,在两个板极之间充满着液态液晶体,驱动信号分别加在背电极与段电极上。在显示时,驱动信号幅度大(大于液晶的显示阈值),熄灭时,驱动信号幅度小。它熄灭时驱动信号幅度与显示时的幅度之比称为该显示器的“偏置”。例如:1/3偏置(简称1/3B)是指它熄灭时驱动信号幅度与显示的幅度之比为1:3。要想让它显示就使用一个幅度大的信号,熄灭则加一个幅度小的信号。在一个显示周期内各段轮流显示,其中每个段的显示时间与显示周期总时间之比称为显示占空比。例如:4个段码连在一起的液晶显示器,其显示占空比是1/4(简称I/4D)[2]。此外,液晶显示器还有其他参数,如最佳视角。例如:最佳视角为30°的称为6点钟;最佳视角为90°的称为12点钟等。
2 笔段式LCD驱动设计
 方案中采用的LCD,有4个COM,32个SEG。要想某一SEG显示时,需要在对应的SEG和COM之间加上足够的交流电压。COM驱动使用了两个I/O口控制两个电阻进行分压,输出电压有0 V、1/3Vcc、2/3Vcc、Vcc。SEG驱动使用了两个电阻进行分压,输出电压为1/2Vcc。当不想让某位显示时,就将它的SEG端电压设置为1/2Vcc(通过设置I/O口为高阻态来完成)同时COM端电压设置为1/3Vcc或者2/3Vcc,这样加在对应的SEG和COM之间的电压只有1/6Vcc,不足以点亮对应的SEG。需要显示的,就将COM电压设置为0或者1,这样SEG电压跟COM电压相反的段就被点亮了。通过定期扫描每个COM,即可稳定地在LCD上显示需要的字段了。但是如果使用100%的时间都驱动的话,会造成对比度太高,甚至出现不该显示的地方也显示了。因此在显示一段时间后,就将COM和SEG都设置为低,以关闭它的显示,降低对比度。通过调节关闭时间的长短(PWM),可以调节对比度[3]。在图1中,使用了50%固定的占空比。COM为低电平时点亮叫做正亮,COM为高电平时点亮叫做负亮。扫描每个COM分成4个阶段:正亮,关闭,负亮,关闭[4]。因此对于方案中LCD驱动,总共有16种状态,每个COM都有上面所说的4种状态。每隔2 ms就切换一次状态,整个扫描周期为2×16=32 ms,肉眼感觉不到闪烁。驱动时序如图1所示。

3 软件实现
3.1 程序流程图

 显示程序流程图如图2所示。


3.2 显示子程序设计
 液晶显示器的工作频率范围一般在25 Hz到数百赫兹之间,因为用普通单片机驱动液晶显示器没有硬件支持,驱动波形只能通过软件编程实现,所以选用较低的工作频率,减少软件的开销。
 在编写程序中定义一个二维数组来储存要显示内容的数据。当有显示请求时,将相应的数据放入该二维数组中,调用显示函数即可,COM1的扫描程序如下。
void display()
  { P1DIR=a[0][0]; P2DIR=a[0][1];P3DIR=a[0][2];//正亮
     P4DIR=a[0][3];P5DIR=a[0][4];P6DIR=0x0f;
     P1OUT=a[0][0];P2OUT=a[0][1];P3OUT=a[0][5];
     P4OUT=a[0][3];P5OUT=a[0][4];P6OUT=0x00;
     delay_ms(2);
     P1DIR=0xf0;P2DIR=0xff;P3DIR=0xff;//关闭
     P4DIR=0xff;P5DIR=0xff;P6DIR=0x0f;
     P1OUT=0x00;P2OUT=0x00;P3OUT=0x00;
     P4OUT=0x00;P5OUT=0x00;P6OUT=0x00;
     delay_ms(2));
     P1DIR=a[0][0];P2DIR=a[0][1];P3DIR=a[0][2];
//反亮
     P4DIR=a[0][3];P5DIR=a[0][4];P6DIR=0x0f;
     P1OUT |=~a[0][0];P2OUT |=~a[0][1];P3OUT |=~a[0][5];
     P4OUT |=~a[0][3];P5OUT |=~a[0][4];P6OUT |=~0x00;
     delay_ms(2);
     P1DIR=0xf0;P2DIR=0xff;P3DIR=0xff;//关闭
     P4DIR=0xff;P5DIR=0xff;P6DIR=0x0f;
     P1OUT=0x00;P2OUT=0x00;P3OUT=0x00;
     P4OUT=0x00;P5OUT=0x00;P6OUT=0x00;
     delay_ms(2);
     ……
}
其他3个COM端口扫描程序与此类似。
4 实验结果及分析
4.1 实验结果

 当用户电表出现剩余金额不足时,用户会收到电表发送的金额不足提醒,驱动显示效果如图3(a)所示。用户也可以通过手持设备向电表发送查询命令查询电表当前数据,比如用户发送查询上月用电量信息,电表自动唤醒,并显示相应的查询结果,显示效果如图3(b)所示。

 

 

4.2 实验分析
 采用上述方法驱动液晶屏的显示,需要注意两点。首先,由于不是静态显示,因此4个周期中每个周期应该控制在12 ms以下,如果周期设置太大,会导致需要显示的段会不停闪烁,从而影响显示质量。因此设置的频率不能少于25 Hz,这样肉眼才无法察觉闪烁。
 其次,由于采集的数据不是一位,而是多位,在动态显示的过程中无法简单地一一判断每一位的显示状态,会造成程序冗长,因此有必要在进行显示前对采集的数据进行处理,以减少在显示子函数中的运算,通过一个二维数组作为数据库,记录每一段的亮与灭的状态。在显示过程中直接读取该二维数组所记录的值来对液晶屏点亮。
 对于计量仪表来说,显示技术是十分重要的。本论文中分析了智能电表中专用笔段式液晶屏的显示原理,给出了驱动设计的方法以及有关利用MSP430单片机I/O口直接驱动笔段式液晶显示屏的C语言程序。直接驱动LCD显示的方法可以减少笔段式液晶显示因需要专门的驱动芯片而增加的功耗和产品成本,在单片机I/O口充裕的条件下,是一种理想的人机界面实现方式,具有一定的意义。
参考文献
[1] 王鹏,马波,邵仕泉,等.基于51单片机的段式液晶的显示器的驱动设计[J].西南民族大学学报·自然科学版,2011,37(5):243-246.
[2] 程秀平,刘忠超.基于单片机的VRAM型彩色液晶驱动设计[J].电子与封装,2011(1):41-43.
[3] 万盛国,刘凯,李芳.基于CPLD的液晶显示驱动模块的设计[J].中国制造业信息化,2010(13):55-57.
[4] 薛旭,乔毅,吴化柱.浅谈一种基于ATmega48段式液晶显示器的驱动方法[J].应用技术,2007(11):91-92.

此内容为AET网站原创,未经授权禁止转载。