求高手指点!LaunchPad点1602的LCD没有反应
[复制链接]
我用的是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 编辑 ]
|