[讨论] 关于MSP430F5438的液晶操作,求指导

沫沫律   2014-9-27 10:18 楼主

#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();
  }



}求教,为什么没有显示呢

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复