找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16249|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

LCD1602顯示初始化 為什么0x38命令要寫很多遍?延時是為什么?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:187249 發(fā)表于 2017-5-28 13:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
LCD初始化程序我看到的兩種形式:

  • void lcd_init()
  • {
  • lcd_wcmd(0x38);
  • DelayMs(5);
  • lcd_wcmd(0x38);
  • DelayMs(5);
  • lcd_wcmd(0x38);
  • DelayMs(5);
  • lcd_wcmd(0x38);    //8位數(shù)據(jù),雙行顯示,5*7點陣
  • lcd_wcmd(0x08);    //顯示關(guān)閉,無光標(biāo),光標(biāo)不顯示
  • lcd_wcmd(0x01);    //清顯示
  • lcd_wcmd(0x06);    //光標(biāo)右移
  • DelayMs(5);
  • lcd_wcmd(0x0c);    //開顯示,有光標(biāo),光標(biāo)閃爍
  • }



  • void lcd_init(void)        //LCD初始化設(shè)定
  • {
  •                 lcd_wcmd(0x38);        //設(shè)置顯示格式為:16*2行顯示,5*7點陣,8位數(shù)據(jù)接口
  •                 delay(1);
  •                 lcd_wcmd(0x0c);//0x0f--顯示開關(guān)設(shè)置,顯示光標(biāo)并閃爍
  •                 delay(1);
  •                 lcd_wcmd(0x06);//0x06--讀寫后指針加1
  •                 delay(1);
  •                 lcd_wcmd(0x01);        // 清除LCD顯示內(nèi)容
第二個程序中的延時:
  • void delay(uchar ms)
  • {
  •         uchar i;
  •                 while(ms--)
  •                         {
  •                                 for(i=0;i<120;i++);
  •                         }
  • }


請問這兩種初始化程序有什么不同,第一個程序中為什么0x38命令要寫很多遍?初始化程序中加延時是為什么?謝謝大家。ǔ绦蚨际窃谡搲幸粋大神半年前上傳的,怕聯(lián)系不到先在這里問問大家。)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2017-5-29 07:16 | 只看該作者
1602有時反映不過來, 為了保險吧。。。。三次兩次都行
寫多少次不是單片機(jī)或者C語言決定的,是由液晶屏的資料決定的,液晶屏內(nèi)部也有一個MCU控制,它的操作指令是出廠就定好了的,不同廠家的屏它的指令也可能會不一樣。

初始化時需要加點延時,
是 時序圖 沒讀到位 就認(rèn)為延時沒必要 在時序上 時間觀念比較強(qiáng)

你說的每送數(shù)據(jù)后,是每送一個BIT ,還是一個BYTE ,還是整個數(shù)據(jù)包,?如果是每個數(shù)據(jù)包后要延時 ,那看你的LCD 要求的了,是否收一個數(shù)據(jù)包后要延時才可以收第二個,本來這個延時是不合理的了,也不應(yīng)該的了。你可以把延時去掉看看,結(jié)果是如何,在具體分析一下,為什么這樣的了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表