基于MSP430单片机的液晶LCD048应用程序

2008年11月02日 21:11    MSP430
关键词: LCD048 , MSP430 , 单片机 , 液晶 , 应用程序
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[ i]=0;
}


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

}
欢迎分享本文,转载请保留出处:http://www.eechina.com/thread-2872-1-1.html     【打印本页】
您需要登录后才可以发表评论 登录 | 立即注册

相关在线工具

相关文章

相关视频演示

厂商推荐


关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备11013910号 | 京公网安备11010502021702
回顶部