zhongxia2009 发表于 2011-11-19 01:09:50

12864的问题

void writecom(uchar com)//写命令
{
uchar lcdtemp=0;
RS_L;
RW_H;
LCD_IN;
do
{
    EN_H;
    _NOP();
    lcdtemp=LCD2MCU_Data;
    EN_L;
}
while(lcdtemp & 0x80);//判断忙
LCD_OUT;
RW_L;
MCU2LCD_Data=com;
EN_H;
_NOP();
EN_L;
}

void writebyte(uchar dat)//写数据函数
{
uchar lcdtemp=0;
RS_L;
RW_H;
LCD_IN;
do
{
    EN_H;
    _NOP();
    lcdtemp=LCD2MCU_Data;
    EN_L;
}
while(lcdtemp & 0x80);
LCD_OUT;
RW_L;
RS_H;
MCU2LCD_Data=dat;
EN_H;
_NOP();
EN_L;
}

void init()//初始化
{
P2DIR=0X07;
delay_50ms(4);
writecom(0x30);
delay_50us(6);
writecom(0x02);
delay_50us(6);
writecom(0x0c);
delay_50us(6);
writecom(0x01);
delay_50us(6);
writecom(0x06);
delay_50us(6);
writecom(0x80);
}



void main()
{
WDTCTL = WDTPW + WDTHOLD;
init();
writecom(0x90);
writebyte(0x55);
LPM4;
}
麻烦哪位大侠看看哪里出错了啊,用的YB12864ZB模块液晶,3.3V电源,屏幕上什么都没有啊,

zhongxia2009 发表于 2011-11-19 12:52:45

各位,这程序有木有问题呀,液晶背后贴的说是5V的,但我看说明书.3.3V也是可以的呀,为嘛就是不显示,逻辑分析仪显示时序是对的

duandiyinfen 发表于 2011-11-27 00:46:23

//**********************************************************
//函数名称:LCD12864_Write(uchar cmdordata,uchar Data)
//函数功能:写数据或命令道LCD12864                
//形式参数:uchar cmdordata,uchar Data
//行参说明:命令或者数据
//返回参数:无
//使用说明:传送数据或者命令,当cmdordata=0是,传送命令,当cmdordata=1,传送数据.
//**********************************************************
void LCD12864_Write(unsigned char cmdordata,unsigned char Data)//传送数据或者命令,当cmdordata=0是,传送命令,当cmdordata=1,传送数据.
{
      LCD12864WaitForReady();
        LCD_CLR_EN;
        LCD_CLR_RW;
        if(cmdordata == 0)
        {
                LCD_CLR_RS;
        }
        else
        {
                LCD_SET_RS;
        }      
        LCD12864_Data_POUT = Data;
      LCD_SET_EN;       
        LCD_CLR_EN;
}
//**********************************************************
//函数名称:LCD12864_Read(void)
//函数功能:从LCD12864中读取数据               
//形式参数:无
//行参说明:无
//返回参数:读取的数据
//使用说明:无
//**********************************************************
uchar LCD12864_Read(void)
{
        uchar data;
      LCD12864WaitForReady();
        LCD12864_SetReadData;
        LCD_SET_RS;
        LCD_SET_RW;
        LCD_SET_EN;
      Delayus(1);
      data = LCD12864_Data_PIN;
        LCD_CLR_EN;
        LCD12864_SetWriteData;
        return data;
}
这个是我以前写过的430F2618的,都能正常读写的
这是主函数中测试的代码:
WDTCTL = WDTPW + WDTHOLD;
unsigned charReadOldH,ReadOldL;
P5DIR |= 0x10;
P5SEL |= 0x10;//用的是P5口
P3DIR = 0xFF;//控制口
LCD12864_Init();
LCD12864_Clear();
LCD12864_ClearDDRAM();

LCD12864_Write(COMMAND,0x80);
LCD12864_Read();
ReadOldH = LCD12864_Read();
ReadOldL = LCD12864_Read();
LCD12864_Write(COMMAND,0x86);
LCD12864_Write(DATA,ReadOldH);
LCD12864_Write(DATA,ReadOldL);
while(1);

jiangjunzhiku 发表于 2011-12-1 20:27:02

你发这样的问题估计不会有人回答你,你应该将出问题的某段给出来,并说明运行的现象。

jiangjunzhiku 发表于 2011-12-1 20:27:47

你的程序语言,命名方式不规范

dongweitai 发表于 2011-12-8 09:22:32

回复【2楼】duandiyinfen
-----------------------------------------------------------------------

这个程序我曾经写过类似的,应该错不了!
页: [1]
查看完整版本: 12864的问题