2回答

3收藏

如何对 MSP430 的液晶模块的控制(网友西门吹猫贡献)

TI TI 4202 人阅读 | 2 人回复 | 2012-08-24

如何对 MSP430 的液晶模块的控制(网友西门吹猫贡献)

       上次看到有人在群里问MSP430自带的控制器,如何控制液晶。下面给大家讲讲430的LCD的控制器:
首先先说下液晶,液晶属于绝缘体,靠电场而非电流来改变显示状态,理论上是不耗电的。但LCD在结构上相当一个电容器(两个电极中间是绝缘的液晶),交流电加在电容两极仍会有充放电电流。扫描频率越高,耗电越大。一般的LCD屏电容造成的耗电在3~5uA左右,屏幕增大、显示位数增多都会导致增大。
//------------------------------------------------------------------------------------------------------//
//               MSP430F4270
//            -------------------------
//          /|\|               XIN|-
//           | |                  | 32kHz
//          --|RST         XOUT|-
//           |                   |
//           |                   |
//           |                S0 |   ----------
//           |                -  |--> | 4 3 2 1 |
//           |                S7 |   ----------
//           |             COM0|-----||||
//           |             COM1|------|||
//           |             COM2|-------||
//           |             COM3|--------|
//           |                   |
//-------------------------------------------------------------------------------------------------------------//
下面看下例程:
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD;             // 关闭看门狗
FLL_CTL0 |= XCAP18PF;                             //设置时钟为外部时钟
LCDACTL = LCDON + LCD4MUX + LCDFREQ_128;
                                                                            // LCDON :打开LCD控制器;LCD4MUX:选择4mux COM LCD;LCDFREQ_128:ACLK/128:频率高了后显示不清楚,但是频率低了后,显示清楚了,但是没有连续感。
LCDAPCTL0 = LCDS0 + LCDS4;                // 用了7段,
//LCDAVCTL1 = VLCD_0;                              // 这个在这里是没有用的,只有我们外部接外部电容的时候,他控制电荷泵的。形成压差,控制显示。
P5SEL = 0x1C;                                                 // 设置P5为第2功能,即LCD显示功能。

for( i = 0; i < 4; i ++)
{
    LCDMEM = 0;                                              // Clear LCD
}
    LCDMEM[0] = 0XF6;                     
//LCDMEM[0] = b4   b3   b2    b1   a4 a3 a2 a1
    LCDMEM[1] = 0XE8;                     
//LCDMEM[1] = g4   g3   g2    g1   f4   f3  f2  f1
    LCDMEM[2] = 0X2D;                       
//LCDMEM[2] = e4   e3   e2    e1   c4  c3 c2 c1
    LCDMEM[3] = 0X66;                     
//LCDMEM[3] = dp4 dp3 dp2 dp1 d4 d3 d2 d1
}
下图是我的液晶的资料:

我的硬件连接为
COM1   -  COM0  
    |             |      
    |             |     
COM4   -  COM3   
   A         -  S0   
   B         -  S1     
   F         -  S2
   G        -  S3
   C        -  S4
   E        -  S5
   D        -  S6   
DP1     -  S7  
但是上面的软件下载下去后,可以显示,但是显示的不是很清楚。然后我看了下data sheet,看下图:

上面我少配置了几个,跟据4270的接线图,我选择的是1/2 BIAS,而且分压要设置为外部分压,并将V5设置为接地。所以需要加下一句就可以了:
LCDAVCTL0 = LCD2B+LCDREXT + LCDR03EXT ;
这样LCD就可以很清楚的显示:

分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

aizhixi106

发表于 2013-4-25 22:39:35 | 只看该作者

呵呵 看到了这个帖子,想起我以前搞3段的液晶,比较难,但是还是用的汇编,唯一用汇编写的程序,当时还问过西门吹猫~~~
板凳

Hayasaky

发表于 2013-5-5 13:42:32 | 只看该作者

火箭板里面的2552芯片里面有没有液晶控制器啊
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条