TI中文支持网
TI专业的中文技术问题搜集分享网站

msp430f6638的lcd控制模块没输出

ti的专家,您好。我现在使用的msp430f6638的lcd控制模块,电源使用的是内部电荷泵,LCDM寄存器的value是正确的,寄存器设置也是按用户手册上来的,但是发现相应的s0-s8管脚没有输出。  我可以确定电路连接是对的,确定lcd屏是好的。    下面贴出我的初始化代码,附件是LCD_B各个控制寄存器的值

void Init_LCD()
{
  P5SEL|=BIT3+BIT4+BIT5; //COM 1~3
  P9SEL=0xFF;       //SEG 0~7
  P8SEL|=BIT7;      //SEG 8 
  LCDBCTL0=LCDDIV_15+LCDPRE_2+LCD4MUX; 

  LCDBPCTL0=0x1FF;          

  LCDBMEMCTL=LCDCLRM; 

    LCDBCTL0|= LCDON;     } 

char LCD_Display(char Digit,char Location)
{
  if (Digit>16) return(0);    

    else    {
      LCDMEM[Location]=LCD_Tab[Digit];
      return(1);
    }
 }

Leon Yan:

你好,下面是一个例程供你参考,希望能帮到你。

//******************************************************************************
//   MSP430F673x Demo – LCD_C, Alternates Between Two Strings
//
//   Description: The LCD blinks on a WDT interrupt, showing two different
//                character strings on the LCD.
//                ACLK = REF0 = 32Khz, MCLK = SMCLK = DCO = Default
//
//                MSP430F673x
//             —————–
//         /|\|                 |
//          | |                 |
//          –|RST              |
//            |                 |    TI LCD
//            |              S0 |     —————–
//            |               – |–> | + 7 6 5 4 3 2 1 |
//            |             S11 |     —————–
//            |             COM0|—–||||
//            |             COM1|——|||
//            |             COM2|——-||
//            |             COM3|——–|
//            |                 |
//
//
//  W. Goh
//  Texas Instruments Inc.
//  January 2011
//  Built with CCS Version: 5.1.0 and IAR Embedded Workbench Version: 5.40.1
//******************************************************************************
#include <msp430.h>

// LCD Segment Mapping
const unsigned int LCD_Char_Map[] =
{
    BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7,                // '0' or 'O'
    BIT5 | BIT6,                                            // '1' or 'I'
    BIT0 | BIT1 | BIT3 | BIT4 | BIT6 | BIT7,                // '2' or 'Z'
    BIT0 | BIT1 | BIT4 | BIT5 | BIT6 | BIT7,                // '3'
    BIT0 | BIT1 | BIT2 | BIT5 | BIT6,                       // '4' or 'y'
    BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT7,                // '5' or 'S'
    BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT7,         // '6' or 'b'
    BIT5 | BIT6 | BIT7,                                     // '7'
    BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7,  // '8' or 'B'
    BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT6 | BIT7,         // '9' or 'g'
    BIT2 | BIT3 | BIT5 | BIT6 | BITD | BITF,                // 'M'        10
    BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT7,                // 'S'        11
    BIT0 | BIT1 | BIT2 | BIT3 | BIT6 |BIT7                  // 'P'        12
};

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;               // Stop WDT

    // Setup LCD_C
    // LCD_FREQ = ACLK/32/2, LCD Mux 4, turn on LCD
    // LCD_BLK_FREQ = ACLK/512
    LCDCCTL0 =  LCDDIV_31 | LCDPRE_1 | LCD4MUX | LCDON;

    //Charge pump generated internally at 2.96V, external bias (V2-V4) generation
    //Internal reference for charge pump
    LCDCVCTL = LCDCPEN | VLCD_2_96;
    REFCTL0 &= ~REFMSTR;

    LCDCPCTL0 = 0x0FFF;                     //Select LCD Segments 0-11
    LCDCPCTL1 = 0x0000;                     //

    //LCD Memory
    LCDM1 = (unsigned char) (LCD_Char_Map[10] & 0xFF);          // M – Lower byte
    LCDM2 = (unsigned char) ((LCD_Char_Map[10] >> 8) & 0xFF);   // M – Upper byte
    LCDM3 = (unsigned char) (LCD_Char_Map[11] & 0xFF);          // S – Lower byte
    LCDM4 = (unsigned char) ((LCD_Char_Map[11] >> 8) & 0xFF);   // S – Upper byte
    LCDM5 = (unsigned char) (LCD_Char_Map[12] & 0xFF);          // P – Lower byte
    LCDM6 = (unsigned char) ((LCD_Char_Map[12] >> 8) & 0xFF);   // P – Upper byte

    // Blink Memory
    LCDBM1 = (unsigned char) (LCD_Char_Map[4] & 0xFF);          // 4 – Lower byte
    LCDBM2 = (unsigned char) ((LCD_Char_Map[4] >> 8) & 0xFF);   // 4 – Upper byte
    LCDBM3 = (unsigned char) (LCD_Char_Map[3] & 0xFF);          // 3 – Lower byte
    LCDBM4 = (unsigned char) ((LCD_Char_Map[3] >> 8) & 0xFF);   // 3 – Upper byte
    LCDBM5 = (unsigned char) (LCD_Char_Map[0] & 0xFF);          // 0 – Lower byte
    LCDBM6 = (unsigned char) ((LCD_Char_Map[0] >> 8) & 0xFF);   // 0 – Upper byte

    // Setup WDT
    WDTCTL = WDT_ADLY_1000;                 // WDT 1000ms, ACLK, interval timer
    SFRIE1 |= WDTIE;                        // Enable WDT interrupt

    __bis_SR_register(LPM0_bits | GIE);     // Enter LPM3 w/ interrupt
}

// Watchdog Timer interrupt service routine
#pragma vector = WDT_VECTOR
__interrupt void watchdog_timer(void)
{
    LCDCMEMCTL ^= LCDDISP;                  // Change LCD character string
}

3523291:

能不能发你的电路板原理图我看看??269962171@qq.com

yffy:

就是发上来原理图看看,估计是硬件问题,输出你用什么测量的

 

赞(0)
未经允许不得转载:TI中文支持网 » msp430f6638的lcd控制模块没输出
分享到: 更多 (0)