我用的是1602的屏,资料如附件;
按手册如下连接:
p1.0-p1.6 连 LCD的 7-14(DB0-DB7)
P2.0 连 LCD的 6脚 (EN)
P2.1 连 LCD的 4脚 (RS)
无论LCD的GND和VCC连不连到Launchpad上都没有反应
代码参考常见泽兄的如下:
#include <msp430g2452.h>
unsigned char table1[]="EE-LaunchPad";
unsigned char num;
void delay_1ms(void)
{
unsigned int i;
for (i=0;i<1140;i++);
}
/*****************************************
*
* N ms延时函数
*
****************************************/
void delay_nms(unsigned int n)
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}
void write_com(unsigned int com)
{
//lcdrs = 0;
P2OUT&= 0xfd; //1111 1101 P2.1为低电平
P1OUT = com; // 放到LCD里面的数据
delay_nms(5);
//lcden = 1;
P2OUT|= 0x01; //0000 0001
delay_nms(5);
P2OUT&= 0xfe; //1111 1110
}
void write_dat(unsigned int dat)
{
//lcdrs = 1;
P2OUT |= 0x03;
P1OUT = dat;
delay_nms(5);
//lcden=1;
P2OUT|= 0x01;
delay_nms(5);
// lcden=0;
P2OUT&= 0xfe;
}
void init()
{
write_com(0x38); //0011 1000 1.3,1.4,1.5为输出高电平
write_com(0x0f); //P1OUT = 0000 1111
write_com(0x01) ; //0000 0001
write_com(0x06); //0000 0110
write_com(0x80); //1000 0000
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0xff; // P1.2 output: 1111 1111 P1口各位作为输出
P2DIR |= 0xff; //1111 1111 P2各口作为输出
init();
for(num=0;num<12;num++)
{
write_dat(table1[num]);
delay_nms(100);
}
while(1);
}
不知道问题出在哪!?求高手指点!!
[ 本帖最后由 wuyanyanke 于 2012-6-18 23:25 编辑 ]void write_dat(unsigned int dat)
{
//lcdrs = 1;
P2OUT |= 0x03;//改为P2OUT = 0x02;试试
P1OUT = dat;
delay_nms(5);
//lcden=1;
P2OUT|= 0x01;
delay_nms(5);
// lcden=0;
P2OUT&= 0xfe;
}
还有1602的RW信号呢?你直接把它接地了吗?