大家好,今天使用自制板子驱动8COM 段式液晶。选用L0~L23为液晶驱动脚,其中L8~L15为COM,
其他都正常,唯有L20~L23对应段不显示,用示波器测量对应管脚(L20~L23)为矩形波,但是低电平位1.2V、
高电平位2.3V,其他管脚的波形是正常的;使用另一个没有焊接液晶屏的线路板实验,现象是相同的。
请问这是为什么呢?是不是我程序设置那里不对呢。
PS:程序是从TI 提供的示例代码更改过去的。
#include <msp430.h>
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
P4SEL0 |= BIT1 | BIT2; // P4.2~P4.1: crystal pins
do
{
CSCTL7 &= ~(XT1OFFG | DCOFFG); // Clear XT1 and DCO fault flag
SFRIFG1 &= ~OFIFG;
}while (SFRIFG1 & OFIFG); // Test oscillator fault flag
CSCTL6 = (CSCTL6 & ~(XT1DRIVE_3)) | XT1DRIVE_2; // Higher drive strength and current consumption for XT1 oscillator
// P8OUT |= BIT3; // P8DIR |= BIT3; PM5CTL0 &= ~LOCKLPM5;
// Configure LCD pins
SYSCFG2 |= LCDPCTL; // R13/R23/R33/LCDCAP0/LCDCAP1 pins selected
LCDPCTL0 = 0xFFFF;
LCDPCTL1 = 0x00FF;
LCDPCTL2 = 0x0000; // L0~L23 pins selected
LCDCTL0 = LCDSSEL_0 | LCDDIV_7; // flcd ref freq is xtclk
LCDVCTL = LCDCPEN | LCDREFEN | VLCD_12 | (LCDCPFSEL0 | LCDCPFSEL1 | LCDCPFSEL2 | LCDCPFSEL3);
LCDMEMCTL |= LCDCLRM;
LCDCSSEL0 = 0xFF00; // Configure COMs and SEGs
LCDCSSEL1 = 0x0000; // L8-L15
LCDCSSEL2 = 0x0000;
LCDM15=0X01; //COM0
LCDM14=0X02; //COM1
LCDM13=0X04; //COM2
LCDM12=0X08; //COM3
LCDM11=0X10; //COM4
LCDM10=0X20; //COM5
LCDM9 =0X40; //COM6
LCDM8 =0X80; //COM7
LCDMEM[0] = 0XFF;
LCDMEM[1] = 0XFF;
LCDMEM[2] = 0XFF;
LCDMEM[3] = 0X0F;
LCDMEM[4] = 0XFF;
LCDMEM[5] = 0XFF;
LCDMEM[6] = 0XFF;
LCDMEM[7] = 0XFF;
LCDMEM[19] = 0XFF;
LCDMEM[18] = 0XFF;
LCDMEM[17] = 0XFF;
LCDMEM[16] = 0XFF;
LCDMEM[20] = 0XFF; // ? 对应段 不显示
LCDMEM[21] = 0XFF; // ?对应段 不显示
LCDMEM[22] = 0XFF; // ?对应段 不显示
LCDMEM[23] = 0XFF; // ?对应段 不显示
LCDCTL0 |= LCD8MUX | LCDON; // display on
while (1) {
}
}
Maka Luo:
LCDMEM[0] = 0XFF;LCDMEM[1] = 0XFF;LCDMEM[2] = 0XFF;LCDMEM[3] = 0X0F;LCDMEM[4] = 0XFF;LCDMEM[5] = 0XFF;LCDMEM[6] = 0XFF;LCDMEM[7] = 0XFF;
LCDMEM[19] = 0XFF;LCDMEM[18] = 0XFF;LCDMEM[17] = 0XFF;LCDMEM[16] = 0XFF;
LCDMEM[20] = 0XFF; // ? 对应段 不显示LCDMEM[21] = 0XFF; // ?对应段 不显示LCDMEM[22] = 0XFF; // ?对应段 不显示LCDMEM[23] = 0XFF; // ?对应段 不显示
参见user guide Table 16-9. LCD Memory Registers for 5-Mux to 8-Mux Modes(1) (2)
去对应写LCDMEM的值
如果需要验证硬件,可以将所有MEM的值写入FF
灰小子:
LCDMEM[3] = 0X0F ???
martin wang:
回复 Maka Luo:
问题解决了吗?我也遇到同样的问题了,能否交流下,qq:916922155