This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

msp430f6638的lcd控制模块没输出

Other Parts Discussed in Thread: MSP430F6638

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);
    }
 
}

  • 你好,下面是一个例程供你参考,希望能帮到你。
    //******************************************************************************
    //   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
    }
  • 能不能发你的电路板原理图我看看??269962171@qq.com

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