新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 自制單片機之六……LCD12864的驅動

        自制單片機之六……LCD12864的驅動

        作者: 時間:2016-11-13 來源:網絡 收藏
        LCD12864驅動
        LCD12864在市面上主要分為兩種,一種是采用st7920控制器的,它一般帶有中文字庫字模,價格略高一點。另一種是采用KS0108控制器,它只是點陣模式,不帶字庫。很可惜,我的這塊就是KS0108控制器不帶漢字庫的,不過不打算用它專門顯示文本,也就無所謂了。
        LCD12864模塊的20個引腳定義如下:
        1。Vss 邏輯電源
        2。VDD 邏輯電源正 5v
        3。V0  LCD驅動電壓
        4。RS  數據/指令選擇:高電平為數據,低電平為指令
        5。R/W 讀/寫選擇:高電平為讀數據,低電平為寫數據
        6。E  讀寫使能,高電平有效,下降沿鎖定數據
        7。DB0 數據輸入輸出引腳
        8。DB1 數據輸入輸出引腳
        9。DB2 數據輸入輸出引腳
        10。DB3 數據輸入輸出引腳
        11。DB4 數據輸入輸出引腳
        12。DB5 數據輸入輸出引腳
        13。DB6 數據輸入輸出引腳
        14。DB7 數據輸入輸出引腳
        15。CS1 片選擇號,低電平時選擇前64列
        16。CS2 片選擇號,低電平時選擇后64列
        17。RET 復位信號,低電平有效。
        18。VEE 輸出-15v電源給V0提供驅動電源
        19。A  背光電源LED正極
        20。K  背光電源LED負極
        具體電路圖如下:
        制做如下:
        接口說明:
        裝上12864
        具體的電路還是兩個電阻。一個背光限流電阻。一個液晶驅動電壓調節電阻。背光電阻還是任何時候在19、20腳與電源之間串上個100歐電位器接上電源。調節電位器到合適亮度。具體值最好是到調試完程序能夠正常顯示后再將阻值確定換成固定電阻。液晶驅動電壓的調整在數據線、電源線接好的前提下是在Vee(-15v)和地之間接一個電位器。中間接V0,通過調節電位器來調節V0上的電壓。當V0上為-15V時為全暗(液晶顯示為全黑)。當V0為0V時為全亮。調節電位器使屏幕從全暗剛好變到亮時,便可進行程序的調試。待屏幕顯示正常后,進行對比度的細調,然后測量這兩邊的阻值在地和V0之間、V0和Vee之間換成兩個固定電阻焊上就好了。注意在V0的電壓是在一個很小的范圍有效。我的就是在-2.2——-2.5這個范圍。仔細調節V0和地之間的電阻使V0上的電壓在2.3V。
        更換為固定電阻后的裝配圖:
        下面說說具體的驅動:
        先來了解一下LCD12864的內部控制結構:見圖
        可以看出12864屏是分為左、右兩塊控制的。所有對屏幕的操作要受片選CS1、CS2來控制。
        我們再來看一看對屏幕操作數據與屏幕點陣的排布關系:見下圖。

        從上圖可以看出數據按字節在屏幕上是豎向排列的。上方為低位,下方為高位。因此在橫向上(也就是Y)就一共是128列數據。分為CS1和CS2兩個64列來寫入。在豎方向上(也就是X)一字節數據顯示8個點,豎向64個點分為8個字節,稱做8頁(X=0-7)。了解這些后我們就知道要滿屏顯示一張圖就要從y=0…127、X=0…7一共寫128×8=1024個字節的數據。同樣在AT89S51中存一張圖就要1024個字節的空間。
        好!下面我們來了解對LCD12864進行操作的一些指令。
        下面對上圖的指作解釋:
        1.顯示開關控制(DISPLAY ON/OFF)
        D=1:開顯示(DISPLAY ON) 意即顯示器可以進行各種顯示操作
        D=0:關顯示(DISPLAY OFF) 意即不能對顯示器進行各種顯示操作
        2.設置顯示起始行(DISPLAY START LINE)
        前面在Z地址計數器一節已經描述了顯示起始行是由Z地址計數器控制的。A5~A0 6位地址自動送入Z地址計數器,起始行的地址可以是0~63的任意一行。
        例如: 選擇A5~A0是62,則起始行與DDRAM行的對應關系如下:
        DDRAM 行:62 63 0 1 2 3 ·················28 29
        屏幕顯示行: 1 2 3 4 5 6················· 31 32
        3.設置頁地址(SET PAGE “X ADDRESS”)
        所謂頁地址就是DDRAM的行地址,8行為一頁,模塊共64行即8頁,A2~A0表示0~7頁。讀寫數據對地址沒有影響,頁地址由本指令或RST信號改變復位后頁地址為0。頁地址與DDRAM的對應關系見DDRAM地址表。
        4.設置Y地址(SET Y ADDRESS)
        此指令的作用是將A5~A0送入Y地址計數器,作為DDRAM的Y地址指針。在對DDRA M進行讀寫操作后,Y地址指針自動加1,指向下一個DDRAM單元。

        5.讀狀態(STATUS READ)
        當R/W=1 D/I=0時,在E信號為“H”的作用下,狀態分別輸出到數據總線(DB7~DB0)的相應位。
        BF: 前面已敘述過(見BF標志位一節)。
        ON/OFF: 表示DFF觸發器的狀態(見DFF觸發器一節)。
        RST: RST=1表示內部正在初始化,此時組件不接受任何指令和數據。
        6.寫顯示數據(WRITE DISPLAY DATE)
        D7~D0為顯示數據,此指令把D7~D0寫入相應的DDRAM單元,Y地址指針自動加1。
        7.讀顯示數據(READ DISPLAY DATE)
        此指令把DDRAM的內容D7~D0讀到數據總線DB7~DB0,Y地址指針自動加1。
        再帖一下接口時序圖
        1.寫操作時序

        2.讀操作時序

        時序參數表:
        又帖了這么多指令呀時序圖什么的,看了就頭暈。我也和你一樣不愛看這些枯燥的東西。
        下面實際寫些程序讓屏幕亮起來。
        運行:
        不要走開哦!我會不斷補全的。。。



        關鍵詞: 單片機LCD12864驅

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 获嘉县| 衡阳市| 阿巴嘎旗| 大悟县| 龙口市| 内江市| 顺义区| 长葛市| 永平县| 原平市| 句容市| 乌拉特中旗| 桃江县| 鹤壁市| 石台县| 临清市| 乌拉特后旗| 蕲春县| 孙吴县| 盐池县| 隆子县| 文昌市| 泰州市| 兴文县| 桐城市| 张掖市| 江都市| 广南县| 河北省| 揭东县| 乌拉特中旗| 新邵县| 稻城县| 包头市| 蕉岭县| 钦州市| 商水县| 高州市| 田阳县| 麻城市| 福州市|