#include "msp430X54X.h"
#define RS_H P9OUT |=BIT0 //数据
#define RS_L P9OUT &=~BIT0 //命令
#define RW_H P9OUT |=BIT1 //读
#define RW_L P9OUT &=~BIT1 //写
#define EN_H P9OUT |=BIT2
#define EN_L P9OUT&=~BIT2
#define PSB_H P9OUT |=BIT3//并行
#define PBS_L P9OUT &=~BIT3//串行
#define RST_H P9OUT |=BIT4
#define RST_L P9OUT &=~BIT4
#define P8_DIR P8DIR //方向寄存器
#define LCD_DATE_IN P8IN//数据输入
#define LCD_DATE_OUT P8OUT
#define uint unsigned int
#define uchar unsigned char
unsigned char i,flage,date;
/**************************
忙检测
RS=0 命令
R/W=1 读取
E=0
忙检测,检测内部是否忙,所以是命令,读取
*/
void mangjiance(void)//忙检测
{
char flage;
RS_L;
RW_H;
EN_L;
flage =LCD_DATE_IN;
while(flage&0x80);//判断是否忙检测,若果为1 忙,否则不忙,跳出
P8DIR=0Xff;//设置P8为输出
}
/*************************
写指令
RS=0 命令
R/W=0 写命令
E=0
E=1 是靠脉冲来发的
****************************/
void write_command(uchar date)
{
mangjiance();
RS_L;
RW_L;
EN_L;
LCD_DATE_OUT =date;
EN_H;
EN_L;
}
/*************************
写数据
RS=1 数据
R/W=0 写数据
E=0
E=1 是靠脉冲来发送数据的
****************************/
void write_data(uchar date)
{
mangjiance();
RS_H;
RW_L;
EN_L;
LCD_DATE_OUT =date;
EN_H;
EN_L;
}
/*************************
初始化
****************************/
void LCD_init(void)
{
PSB_H; //并行
RS_L;
RW_L;
EN_L;
write_command(0x30);//基本指令操作
write_command(0x01);//清零
write_command(0x0c);//显示开,关光标
}
void write_zifu(uchar *s)
{
uchar zhi;
zhi=*s;
while(*s!='0')
{
write_data(zhi);
zhi=*(++s);
}
}
void disply()
{
write_zifu("yes i do");
}
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
void LCD_init();
P9DIR=0X0F;
P8DIR=0XFF;
while(1)
{
write_command(0x80);
void disply();
}
}求教,为什么没有显示呢