[原创] 【MSP430共享】 MSP430学习心得三---LCD

hangsky   2011-9-6 22:31 楼主

概述

TI公司MSP430系列单片机是一种超低功耗的混合信号控制器,其中包括一系列器件,它们针对不用的应用由不同的模块组成。其中FLASH系列使高效电子系统变得轻巧,FLASH存储器也具有很强的灵活性。同时为了在低频率振荡器的驱动下得到较高的稳定频率,某些MSP430器件上使用了锁频技术FLL或增强型锁频环技术FLL+。如MSP430F425的时钟模块中使用了FLL+技术,这样可以得到稳定的频率。

液晶驱动

    MSP430器件上的液晶显示器的控制/驱动将简化液晶显示器的显示。不同型号的液晶驱动能力不同,我们采用 MSP430的F42X系列,有128段驱动能力。

液晶的驱动有4种方法:静态,2MUX或1/2占空比,3MUX或1/3占空比, 4MUX或1/4占空比。对于不同系列、不同型号的液晶驱动原理,控制方法都是一样的,不同点在于驱动液晶段数不一样,或可显示信息的多少不一样。我们采用4MUX,这种方式也最简单。

其中需要注意以下两点:

    (1)液晶的偏压。由于液晶驱动使用交流电压,所以必须根据液晶的工作模MSP430进行偏压设置,具体的操作是:STATIC模式下,R33开路,R03-R23接地,2MUX模式下,分别在R33、R13以及R13、R03之间接上10K的电阻;3/4MUX模式下,分别在R33、R23之间,R23、R13以及R13、R03之间接上10K的电阻,这样就能保证COM0-COM3出来供给液晶块的电压符合要求。  

    (2)频率的设置。MSP430有三种时钟ACLK(辅助时钟)、MCLK(主时钟)、SMCLK(子时钟),其中液晶的驱动频率FCLK来自ACLK。在XTIN和XTOUT之间接上振荡频率为32KHz的晶振,Fclk可以根据需要选为1024Hz、512Hz、256Hz、128Hz等。由FRFQ0和FRFQ1的设置可以满足不同液晶对频率的要求,其中Flcd=2*MUX(rate)*F(framing)。

    例如:采用3MUX,已知F(framing)=100Hz-30Hz,

    由F(LCD)=2*MUX(rate)*F(framing)=6*F(framing),

    可知F(LCD)=180Hz-600Hz。可选择的F(LCD)为1024Hz、512Hz、256Hz、128Hz,所以F(LCD)=32K/128=256Hz,所以FRFQ0=1、FRFQ1=0。

    在以上两点做好的基础上,我们只要把要输出的数字所对应的代码输出到MSP430的显存就可以显示。实验中如液晶抖动,可适当提高液晶的驱动频率。如液晶亮度不够,应适当调整偏压电阻的大小。

    在驱动电路中,液晶可以等效为电容。两个电极分别为公共极与段极。公共极由CMOn信号驱动,段极由SEGn信号驱动。由此可以得到4种驱动方法。

    (1)静态驱动:使用一个引脚作为液晶公共端COM0,而每一段段极需要另一个引脚驱动。

    (2)2MUX驱动:使用两个引脚作为液晶公共端COM0、COM1每两段段极需要另一引脚驱动。

    (3)3MUX驱动:使用三个引脚作为液晶公共端COM0、COM1、COM2,每3段段极需要另一引脚驱动。

    (4)4MUX驱动:使用4个引脚作为液晶公共端COM0、COM1、COM2,每4段段极需要另一引脚驱动。

    LCD048的资料

    显示“123456”程序

#include  <msp430x42x.h>

const char digit[10] =
{

0x7B,  // "0"    LCD segments a+b+c+d+e+f    lcd= lsd048
0x12,  // "1"
0x4F,  // "2"
0x1F,  // "3"
0x36,  // "4"
0x3D,  // "5"
0x7D,  // "6"
0x13,  // "7"
0x7F,  // "8"
0x3F   // "9"
};
char *LCD=LCDMEM;


void main(void)
{
  int i;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  FLL_CTL0 |= XCAP14PF;                     // Configure load caps
  for (i = 0; i < 10000; i++);           // Delay for 32 kHz crystal to

  LCDCTL = 0x03d;                            // 4-Mux LCD, segments S0-S15
  BTCTL  = BTFRFQ1;                         // Set freqLCD = ACLK/128
 
 for (i=0;i<6;i++)
 {
   LCD=0;
 }


    for(i=1;i<7;i++)
      LCD=digit;

}

补充:采用4MUX方式,相应的段顺序为:HEFCDGBA。显示1~9见上述程序,显示A~F:

      0x77,  // "A"
      0x7c,  // "B"
      0x69,  // "C"
      0x5e,  // "D"
      0x6d,  // "E"
      0x65   // "F"


回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复