• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 關于1602液晶顯示器的一些經驗

    關于1602液晶顯示器的一些經驗

    作者: 時間:2012-09-18 來源:網絡 收藏
    今天開始復習了液晶顯示!我的天啊!感覺像是重新學一樣,好多東西都忘了,看來以后還要練習的非常熟練才行,*一時的努力在短時間內學的東西是記不太久的!更不要說熟練應用了!

    說說今天的總結!雖然開始有些吃力,但是也不至于想以前那樣看著視頻一步一步來!今天寫液晶程序是找了兩個例子,自己看著1602的PDF資料。開始時看了看程序然后自己看著時序圖寫,但是卻怎么出不來結果,對比著例子一點點的嘗試著修改,終于發現原來是一個小小的延時問題,也就是在往數據端口輸進指令或數據后要有個小小的延時。但是看時序圖上卻是EN端電平已經降下去了,數據口還在賦值,而實際上卻是賦值后差不多要個5毫秒的延時,具體原因不明白!

    關于液晶的問題,我看的一個例程是用的,我看著頭暈,老是轉不過來。其實在我看來就能顯示那幾個字符而已,自己就算掰著手指查也不會出錯吧!所以好不如直接控制來的爽快!特別注意的是,只要你讓那個位置的字符顯示,就一定要給你賦值,那怕是一個空格,那也算是一個字符,否則會出現亂碼!

    再說一下控制液晶的驅動程序(暫且稱其為驅動程序吧,反正是控制液晶的)!其實控制這種小液晶很簡單!給它的初始化函數(也就是告訴它:小弟,你要開始工作了),給它做做準備,具體函數按照配套PDF資料寫就行!再有個就是發送指令的函數。首先給RS賦值,RS=0,當MPU進行寫模塊操作,指向指令寄存器,當MPU進行讀模塊操作,指向地址計數器。RS=1,無論MPU讀操作還是寫操作,均指向數據寄存器。再給RW賦值,賦值為1是寫操作,為0是讀操作。然后就是EN端了,其實因為數據是在EN下降沿才會把命令或數據讀進,所以就先拉高它,然后往數據口送指令,現在是最關鍵的,你一定要讓它稍微有個延時,例如5 毫秒!然后令EN=0!好了,這就完成了指令輸入!至于數據輸入函數,格式同指令輸入函數一樣,只是RS賦值不一樣而已!至于什么指令控制什么功能,自己查查配套資料就行了!另外還有一個檢查繁忙問題,只是.....暫時不會用,我把繁忙檢查寫進程序中,它竟然罷工!現在自己的水平就是寫個小程序實現個小功能,檢查繁忙暫時用不到,以后再說吧!

    附一自己寫的液晶驅動函數!其中dat為液晶數據進口!

    void del(uint i)
    {
    char j;
    for(;i>0;i--)
    for(j=125;j>0;j--);
    }

    void writecom(uchar com)
    {
    rs=0;
    rw=0;
    en=1;
    dat=com;
    del(5);
    en=0;

    }
    void writedat(uchar da)
    {
    rs=1;
    rw=0;
    en=1;
    dat=da;
    del(5);
    en=0;
    }

    void init()
    { del(15);
    writecom(0x38);
    del(5);
    writecom(0x38);
    del(5);
    writecom(0x38);
    del(10);
    writecom(0x08);
    writecom(0x0e);
    writecom(0x06);
    writecom(0x0c);
    writecom(0x80);


    }

    led顯示器相關文章:led顯示器原理




    評論


    技術專區

    關閉
    主站蜘蛛池模板: 桃园县| 潢川县| 阳朔县| 军事| 洛川县| 南陵县| 锦州市| 巴林左旗| 卢湾区| 西盟| 惠东县| 阿荣旗| 乐业县| 沽源县| 渑池县| 梨树县| 绵竹市| 阿城市| 潼南县| 牡丹江市| 饶平县| 册亨县| 奎屯市| 弥勒县| 宕昌县| 上栗县| 西华县| 景宁| 噶尔县| 邵东县| 菏泽市| 洛扎县| 托克托县| 疏勒县| 大埔县| 南阳市| 同江市| 调兵山市| 兴隆县| 瑞丽市| 延津县|