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

    EEPW首頁 > 嵌入式系統 > 設計應用 > LCD1602液晶顯示完全資料

    LCD1602液晶顯示完全資料

    作者: 時間:2012-10-31 來源:網絡 收藏

    一、關于

    在編寫程序前,我們必須了解其手冊上一些非常重要的信息,如果這些信息不能理解透徹,編程可能會遇到或多或少的問題,在此先大致歸納幾點。

    1.管腳:

    1602共16個管腳,但是編程用到的主要管腳不過三個,分別為:RS(數據命令選擇端),R/W(讀寫選擇端),E(使能信號);以后編程便主要圍繞這三個管腳展開進行初始化,寫命令,寫數據。

    以下具體闡述這三個管腳:

    RS為選擇,高電平選擇數據,低電平選擇指令。

    R/W為讀寫選擇,高電平進行讀操作,低電平進行寫操作。

    E端為使能端,后面和時序聯系在一起。

    除此外,D0~D7分別為8位雙向數據線。

    2.操作時序:
      

    RS
    R/W
    操作說明
    0
    0
    寫入指令碼D0~D7
    0
    1
    讀取輸出的D0~D7狀態字
    1
    0
    寫入數據D0~D7
    1
    1
    D0~D7讀取數據

    注:關于E=H脈沖——開始時初始化E為0,然后置E為1,再清0.

    讀取狀態字時,注意D7位,D7=1,禁止讀寫操作;D7=0,允許讀寫操作;

    所以對控制器每次進行讀寫操作前,必須進行讀寫檢測。(即后面的讀忙子程序)

    3.指令集:

    LCD_1602 初始化指令小結:

    0x38 設置16*2顯示,5*7點陣,8位數據接口

    0x01 清屏

    0x0F 開顯示,顯示光標,光標閃爍

    0x08 只開顯示

    0x0e 開顯示,顯示光標,光標不閃爍

    0x0c 開顯示,不顯示光標

    0x06 地址加1,當寫入數據的時候光標右移

    0x02 地址計數器AC=0;(此時地址為0x80) 光標歸原點,但是DDRAM中斷內容不變

    0x18 光標和顯示一起向左移動

    4.顯示地址:

    點擊瀏覽下一頁

    內部RAM顯示緩沖區地址的映射圖,00~0F、40~4F分別對應LCD1602的上下兩行的每一個字符,只要往對應的RAM地址寫入要顯示字符的ASCII代碼,就可以顯示出來。

    5.讀寫時序:

    時序圖1602手冊中有,這里不引用了。時序圖很重要,編程就是根據時序圖設置寄存器,讓LCD工作。

    二、LCD1602程序編寫流程:

    LCD1602在了解完以上信息后便可以編寫,這里我們把程序分為以下幾步:

    1.定義LCD1602管腳,包括RS,R/W,E。這里定義是指這些管腳分別接在單片機哪些I/O口上。

    現舉例如下:

    sbit EN=P3^4;

    sbit RS=P3^5;

    sbit RW=P3^6;

    2.顯示初始化,在這一步進行初始化及設置顯示模式等操作,包括以下步驟:

    設置顯示方式
    延時
    清理顯示緩存
    設置顯示模式
    通常推薦的初始化過程如下:

    延時15ms

    寫指令38H

    延時5ms

    寫指令38H

    延時5ms

    寫指令38H

    延時5ms

    注:以上寫38H指令可以看情況省略1~2步

    (以上都不檢測忙信號)

    (以下都要檢測忙信號)

    寫指令38H

    寫指令08H 關閉顯示

    寫指令01H 顯示清屏

    寫指令06H 光標移動設置

    寫指令0cH 顯示開及光標設置

    3.設置顯示地址(寫顯示字符的位置)。

    4.寫顯示字符的數據。

    三、LCD1602各子程序模塊及主程序編寫:

    現在按照上面編寫程序的流程,給出各子程序模塊及主程序的例子。

    1.頭文件,宏定義,定義管腳等:

    #includereg52.h>

    #include string.h>

    #define uchar unsigned char

    #define uint unsigned int

    sbit EN=P3^4;

    sbit RS=P3^5;

    sbit RW=P3^6;

    uchar code table0[]={"QQ:545699636"}; //此條語句為顯示字符串時定義的字符串數組

    2.LCD1602基本初始化子程序:

    void LCD1602()

    {

    EN=0;

    RS=1;

    RW=1;

    P0=0xff; //這里P0為與LCD D0~D7相連的I/O口

    }


    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 文昌市| 祁东县| 上思县| 农安县| 东丽区| 色达县| 吉首市| 社会| 乌拉特中旗| 舞阳县| 台山市| 滕州市| 朝阳县| 洞头县| 彰化市| 清河县| 温州市| 温泉县| 胶州市| 高台县| 眉山市| 杨浦区| 茶陵县| 中江县| 娱乐| 兰坪| 扎囊县| 寿光市| 汤原县| 杨浦区| 寿阳县| 犍为县| 罗田县| 东丽区| 南靖县| 通道| 日照市| 华坪县| 青河县| 海阳市| 陆丰市|