1602液晶显示乱码

2019-07-16 01:33发布

写了一个用1602液晶显示时钟、闹钟、温度程序,为什么单片机上电后先显示乱码,过一会儿才显示正常,为什么啊?我的程序有6k多,会是因为程序太大,51单片机执行慢了的原因吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
那低头一笑的温
1楼-- · 2019-07-16 06:40
液晶显示器初始化后,会首先显示数据缓存里的数据,所以初始化1602之后,要紧接着马上清缓存。
37395482
2楼-- · 2019-07-16 07:19
 精彩回答 2  元偷偷看……
a583488081
3楼-- · 2019-07-16 09:03
清缓存就是把所有的全部清0
那低头一笑的温
4楼-- · 2019-07-16 09:10
清缓存不是清屏,是把空格符写进所有1602的显示缓存中,让屏幕全屏显示空格,也就是把 ' ' 写进32位显示中去
37395482
5楼-- · 2019-07-16 09:27
那低头一笑的温 发表于 2013-4-10 18:06
清缓存不是清屏,是把空格符写进所有1602的显示缓存中,让屏幕全屏显示空格,也就是把 ' ' 写进32位显示中 ...

void LCD_Init(void)
{
   LCD_Write_Com(0x38);    /*显示模式设置*/
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38);  
   LCD_Write_Com(0x08);    /*显示关闭*/
   LCD_Write_Com(0x01);    /*显示清屏*/
   LCD_Write_Com(0x06);    /*显示光标移动设置*/
   DelayMs(5);
   LCD_Write_Com(0x0C);    /*显示开及光标设置*/
   }

这是我的液晶初始化函数,你能看下有什么问题吗?
清除缓存,全屏显示空格,难道还要写如下命令吗?  
LCD_Write_Com(0x80);for(i=0;i<16;i++) LCD_Write_Data(' ');
LCD_Write_Com(0xc0);for(i=0;i<16;i++)  LCD_Write_Data(' ');
求大神赐教啊!
那低头一笑的温
6楼-- · 2019-07-16 10:37
是的, LCD_Init()之后,要加上
LCD_Write_Com(0x80);for(i=0;i<16;i++) LCD_Write_Data(' ');
LCD_Write_Com(0xc0);for(i=0;i<16;i++)  LCD_Write_Data(' ');
清缓存,也就是显示全屏空格,你也可以把这个定义成一个清显示的函数,以后会用到的:
#defined   LCD_CLEAR_FIRST_LINE      0
#defined   LCD_CLEAR_SECOND_LINE   1
#defined   LCD_CLEAR_ALL_LINE          2

void LCD_Clear(unsinged char   ClearLine)
{
      switch(ClearLine)
      {
              case  LCD_CLEAR_FIRST_LINE:
                        LCD_Write_Com(0x80);for(i=0;i<16;i++) LCD_Write_Data(' ');
                        break;
             case   LCD_CLEAR_SECOND_LINE :
                        LCD_Write_Com(0xc0);for(i=0;i<16;i++)  LCD_Write_Data(' ');
                        break;
             case  LCD_CLEAR_ALL_LINE:
                        LCD_Write_Com(0x80);for(i=0;i<16;i++) LCD_Write_Data(' ');
                        LCD_Write_Com(0xc0);for(i=0;i<16;i++)  LCD_Write_Data(' ');
                        break;
             default:
                       break;
         }
}

一周热门 更多>