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:
就是发上来原理图看看,估计是硬件问题,输出你用什么测量的
TI中文支持网



