微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 为啥,LCD显示不出来

为啥,LCD显示不出来

时间:10-02 整理:3721RD 点击:
LCD.h如图
init.h如图
.c 文件中main函数中如图
哪里有问题




感觉你的语句有问题   好久没写12864并行的程序啦   
bit lcd_busy()
{                          
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    delayNOP();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result);
}
void lcd_wcmd(uchar cmd)
{                          
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();
    _nop_();
    P0 = cmd;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;  
}
void lcd_wdat(uchar dat)
{                          
   while(lcd_busy());
    LCD_RS = 1;
    LCD_RW = 0;
    LCD_EN = 0;
    P0 = dat;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;
}
void lcd_init()
{
    LCD_PSB = 1;         //并口方式
   
    lcd_wcmd(0x34);      //扩充指令操作
    delay(5);
    lcd_wcmd(0x30);      //基本指令操作
    delay(5);
    lcd_wcmd(0x0C);      //显示开,关光标
    delay(5);
    lcd_wcmd(0x01);      //清除LCD的显示内容
    delay(5);
}
void lcd_pos(uchar X,uchar Y)        //确定显示位置
{                          
   uchar  pos;
   if (X==0)
     {X=0x80;}
   else if (X==1)
     {X=0x90;}
   else if (X==2)
     {X=0x88;}
   else if (X==3)
     {X=0x98;}
   pos = X+Y ;  
   lcd_wcmd(pos);     //显示地址
}
你参考一下这个

不好意思,我这里没有12864这个显示屏,只有1602,没法验证你的建议,不过,还是谢谢你

很有可能是你的时序有问题,而检测程序是检查不出问题的,有条件的话可以用示波器看看你的时序是否正确。
有时候会因为MCU和晶振的不同,同一个程序运行的速度也不一样。对于LCD类显示元件而言,时序是很重要的,等待的时间和操作的时间不在它规定范围内是无法显示出来的!
遇到此类问题,第一个要想到时序是否正确,如果时序正确还是没显示则再考虑是不是程序问题,如果程序也没问题,那就再检查硬件。
以上是我个人的经验,希望对你有用。

小手一抖,经验到手

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top