久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5871|回復: 5
打印 上一主題 下一主題
收起左側

一個關于LCD1602延時的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:692603 發表于 2020-2-12 22:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問一下各位大神,我看LCD1602的說明文檔上面寫的延時都是ns級別的,我用的單片機是12M晶振的,所以我在寫數據的時候沒有用延時,但是LCD上就顯示不出數據來,我加了延時之后,LCD上就有數據了,而且不同的延時,LCD上顯示的數據還不同,這是怎么回事?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:235200 發表于 2020-2-13 13:26 | 只看該作者
是傳送數據的時序不符合,特別是應答的時序
回復

使用道具 舉報

板凳
ID:692603 發表于 2020-2-13 20:56 | 只看該作者
csmyldl 發表于 2020-2-13 13:26
是傳送數據的時序不符合,特別是應答的時序

我是按照教程上面寫的,但是我看LCD1602的說明文檔上面寫的ns,所以我就想應該可以不用延時,于是我就用短的延時和長的延時分別對比了一下,發現有很大差異
回復

使用道具 舉報

地板
ID:476390 發表于 2020-2-14 13:41 | 只看該作者
應該是時序問題,傳一個驗證過的程序給你參考。程序中用NOP短延時你也可以去掉或加長延時測試。
void LCMInit(void) //LCM初始化
{
        WriteCommandLCM(0x38,1); //顯示模式設置,開始要求每次檢測忙信號 設置8位格式,2行,5*7
        WriteCommandLCM(0x3c,1); //顯示模式設置,開始要求每次檢測忙信號 設置8位格式,2行,5*10

//4         顯示開/關控制         0 0 0 0   1 D C B         D=0關顯示  D=1開顯示  C=0無光標   C=1有光標   B=0光標不閃爍                B=1光標閃爍

        WriteCommandLCM(0x08,1); //顯示關
        WriteCommandLCM(0x06,1); //顯示光標移動設置 不移位
        WriteCommandLCM(0x0E,1); //顯示開、有光標、光標不閃爍
        WriteCommandLCM(0x01,1); //清除屏幕顯示
}

//寫數據
void WriteDataLCM(unsigned char WDLCM)
{
        ReadStatusLCM(); //檢測忙
        LCM_Data = WDLCM;
        LCM_RS = 1;
        LCM_RW = 0;

        LCM_E = 0;
        _nop_();_nop_();_nop_();//延時
        LCM_E = 1;
}

//寫指令
void WriteCommandLCM(unsigned char WCLCM, bit BuysC) //BuysC為0時忽略忙檢測
{
        if (BuysC==1){ ReadStatusLCM();} //根據需要檢測忙
        LCM_Data = WCLCM;
        LCM_RS = 0;
        LCM_RW = 0;

        LCM_E = 0;
        _nop_();_nop_();_nop_();//延時
        LCM_E = 1;
}

//讀數據
unsigned char ReadDataLCM(void)
{
        LCM_RS = 1;
        LCM_RW = 1;

        LCM_E = 0;
        _nop_();_nop_();_nop_();//延時
        LCM_E = 1;

        return(LCM_Data);
}


unsigned char ReadStatusLCM(void)// 讀狀態
{
        LCM_Data = 0xFF;
        LCM_RS = 0;
        LCM_RW = 1;

        LCM_E = 0;
        _nop_();_nop_();_nop_();//延時
        LCM_E = 1;

        while (LCM_Data & 0x80); //檢測忙信號  忙時一直等待
        return(LCM_Data);
}



//按指定位置顯示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
        unsigned char ListLength=0;

        Y &= 0x1;        //限制 X不能大于15
        X &= 0xF;        //限制 Y不能大于1

        while (DData[ListLength]!=0) //若到達字串尾則退出
          {
                   if (X <= 20) //X坐標應小于0xF
            {
                     DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符                    
            }
                X++;        ListLength++;
          }
}
//按指定位置顯示一個字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
        Y &= 0x1;        //限制 X不能大于15
        X &= 0xF;        //限制 Y不能大于1

        if (Y==1) { X |= 0x40; }//當要顯示第二行時地址碼+0x40;
        X |= 0x80; // 算出指令碼  寫入顯示地址時要求最高位D7恒定為高電平1

        WriteCommandLCM(X, 0); //這里不檢測忙信號,發送地址碼 X值>=0x80
        WriteDataLCM(DData);
}







//-----------------------------------------------------------------
//將8字節自定義字符的字模寫到CGRAM中
void write_pic(unsigned char add, unsigned char *pic_num)
{
        unsigned char i;

        add=add<<3;
        for(i=0;i<8;i++)
        {
                WriteCommandLCM(0x40|add+i,1); //D7D6=01  D5~D3顯示自定義字符時的字符號  D2~D0行號
                WriteDataLCM(*pic_num++);
        }
        ReadStatusLCM(); //檢測忙或延時一段時間  此行一定要,否則執行完立即顯示該字符時會不顯示
}
回復

使用道具 舉報

5#
ID:476390 發表于 2020-2-14 13:43 | 只看該作者
這是LCD1602使用總結
//讀狀態 輸入 RS=L,R/W=H,E=H  輸出 D0—D7=狀態字
//讀數據 輸入 RS=H,R/W=H,E=H  輸出 D0—D7=數據
//寫數據 輸入 RS=H,R/W=L,D0—D7=數據,E=高脈 沖 輸出 無
//寫指令 輸入 RS=L,R/W=L,D0—D7=指令碼,E=高 脈沖  輸出 無
//
//DDRAM-- 就是顯示數據RAM存放待顯示的字符代碼共80個字節
//CGROM-- 字模存儲器內置192個常用字符的字模
//CGRAM-- 自定義的字符產生RAM  字符代碼0~F 為用戶自定義字符圖形RAM

//1602液晶模塊內部的控制器共有11條控制指令,如表10-14所示:
//序號         指令                                         RS R/W         D7 D6 D5 D4 D3 D2 D1 D0
//1         清顯示                                         0         0         0 0 0 0 0 0 0 1                         執行時間1.64ms 清屏即將DDRAM全部填充為20H
//2         光標返回                                 0         0         0 0 0 0 0 0 1 *                         執行時間1.64ms 將光標定位到屏幕左上角
//3         置輸入模式                                 0         0         0 0 0 0 0 1 I/D S                         執行時間40us   I/D=0寫入數據后光標左移  I/D=1寫入數據后光標右移  S=0寫入數據后顯示屏不移動  S=1寫入數據后顯示屏右移1字符
//4         顯示開/關控制                         0         0        0 0 0 0 1 D C B                                執行時間40us   D=0關顯示  D=1開顯示  C=0無光標   C=1有光標   B=0光標不閃爍                B=1光標閃爍
//5         光標或字符移位                         0         0         0 0 0 1 S/C R/L * *                 執行時間40us   S/C R/L=00光標左移1格且AC減1         S/C R/L=01光標右移1格且AC加1 S/C R/L=10光標不動字符全部左移一格  S/C R/L=10光標不動字符全右移一格
//6         功能設定                                 0         0         0 0 1 DL N F * *                          執行時間40us   DL=0數據總線為4位 DL=1數據總線為8位 N=0顯示1行 N=1顯示2行 F=0時字符5*7點陣 F=1時字符5*10點陣
//7         置字符發生存貯器地址         0         0         0 1 字符發生存貯器地址                 執行時間40us   D5~D3顯示自定義字符時的字符號  D2~D0行號
//8         置數據存貯器地址                 0         0         1 顯示數據存貯器地址                 執行時間40us   設定一個要存入數據的DDRAM地址
//9         讀忙標志或地址                         0         1         BF 計數器地址                                 執行時間40us   BF=1表示液晶屏忙暫無法接收數據或命令
//10         寫數到CGRAM或DDRAM                 1         0         要寫的數據內容                                 執行時間40us   將數據寫入DDRAM或CGRAM
//11          從CGRAM或DDRAM讀數                 1         1         讀出的數據內容                                執行時間40us   讀取DDRAM或CGRAM中的內容
回復

使用道具 舉報

6#
ID:561669 發表于 2020-2-14 17:29 | 只看該作者
LCD1602模塊的時序圖決定了它的正常顯示,時序圖里有延時時間
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区二区三区久久久 | 男女羞羞视频在线观看 | 国产免费自拍 | www.久久久久久久久 | 午夜丁香视频在线观看 | 久久一及片 | 黄色毛片在线观看 | 最新中文字幕在线播放 | 亚洲九九 | 精品日本久久久久久久久久 | 国产乱码精品一区二区三区中文 | 日韩视频精品在线 | 亚洲国产成人精品在线 | 日韩视频区 | 亚洲精品视频免费看 | 国产人成精品一区二区三 | 日韩精品一区在线 | 精品国产一区二区三区免费 | 国产激情视频在线免费观看 | 国产一级视频在线观看 | 欧美国产亚洲一区二区 | 欧美激情一区二区三级高清视频 | 中文字幕一区二区三区乱码图片 | 欧美日韩视频 | 成人在线观看免费视频 | 精品日韩在线 | 久久成人综合 | 91精品久久久久久久久中文字幕 | 亚洲精品久久久一区二区三区 | 亚洲视频一区二区三区四区 | 草草视频在线播放 | 91社区在线观看 | 亚洲97 | 91精品国产自产在线老师啪 | 91视视频在线观看入口直接观看 | 国产免费一区二区三区最新6 | 中文在线一区二区 | 国产高清一区二区三区 | 欧美jizzhd精品欧美巨大免费 | 深夜福利亚洲 | 亚洲系列第一页 |