圖形點陣式液晶顯示模塊與51單片機的接口設(shè)計
馬 成 何培祥 李慶東 引 言 液晶作為一種顯示器件,以其特有的優(yōu)勢正廣泛應用于儀器、儀表、電子設(shè)備等低功耗產(chǎn)品中。以往的測控儀器的顯示部分大都采用led式液晶顯示屏進行參數(shù)設(shè)定和結(jié)果顯示,其顯示信息量少、形式單一、人機交互性差、操作人員要求較高。而液晶顯示器(lcd)具有功耗低、體積小、質(zhì)量輕、超薄和可編程驅(qū)動等其他顯示方式無法比擬的優(yōu)點,不僅可以顯示數(shù)字、字符,還可以顯示各種圖形、曲線、及漢字,并且可實現(xiàn)屏幕上下左右滾動、動畫、閃爍、文本特征顯示等功能;人機界面更加友好,使用操作也更加靈活、方便,使其日益成為智能儀器儀表和測試設(shè)備的首選顯示器件。本文在介紹以st7920為驅(qū)動器的wgm-12832液晶顯示模塊的引腳、結(jié)構(gòu)、功能的基礎(chǔ)上,詳述了與at89s51單片機的硬件接口電路及接口軟件編程方法。 1 wgm-12832結(jié)構(gòu)特點及操作 1.1 點陣式液晶顯示器wgm-12832簡介 wgm-12832是內(nèi)置st7920控制器的128×32點陣式液晶顯示器,通過對st7920控制器的編程可以實現(xiàn)液晶顯示器的各種應用。wgm-12832具有如下特點:(1)可以顯示數(shù)字、字母、特殊字符、圖形、曲線和漢字;(2)顯示內(nèi)容為128(列)×32(行)點,全屏幕點陣,可顯示2行漢字,每行8個字;(3)ic內(nèi)帶8 139個16×16點陣中文字庫,126個16×8字母符號,并提供4個16×16點陣的自定義字功能;(4)與cpu接口采用串行控制方式;(5)功耗低,最大工作功耗15 mw。 wgm-12832模塊主要硬件結(jié)構(gòu)框圖如圖1所示。 wgm-12832共有7個外接引腳,其采用串口發(fā)送指令和數(shù)據(jù),優(yōu)點在于滿足顯示目的的同時,占用很少的cpu引腳資源。因此,在很多低端cpu的引腳較少時,也能驅(qū)動wgm-12832液晶,滿足了不同微系統(tǒng)的需求。 1.2 wgm-12832控制指令 wgm-12832共有2個指令集:基本指令集和擴充指令集。基本指令集包括了對液晶wgm-12832的基本操作,如判斷控制器是否為忙、清除顯示、設(shè)定顯示的地址、寫數(shù)據(jù)和讀數(shù)據(jù)等。而擴充指令集則在基本指令集的基礎(chǔ)上最大限度地滿足了現(xiàn)實的顯示需要。比如:能夠設(shè)置睡眠模式,滿足低功耗的需求;可以設(shè)置圖形顯示,更進一步使顯示變得多樣化,提供更人性化的交互方式。單片機對wgm-12832的操作原理為:單片機先確認st7920內(nèi)部處于非“忙”狀態(tài)。即讀取bf位,當bf為0時,st7920才可接收新的指令。如果在送指令前不檢查bf位,那么在前一條指令和這條指令中間必須延遲一段較長的時間,確保前一條指令執(zhí)行完。在操作時,st7920在單片機的時鐘信號的控制下,通過數(shù)據(jù)線傳送給st7920,當st7920成功接收到數(shù)據(jù)后,轉(zhuǎn)入內(nèi)部時鐘控制,封鎖i/o口緩沖器,置“忙”標志。st7920根據(jù)接收數(shù)據(jù)中的rw和rs位判斷所接收到的是數(shù)據(jù)、指令、還是所要顯示的內(nèi)容,并進行相應的處理。處理完成后,撤消i/o口緩沖器的封鎖,“忙”標志清零。在寫入數(shù)據(jù)到ram中時,每個ram的位址都可以連續(xù)寫入2個位元的資料(2 b),當寫人第二個字節(jié)時,位址計數(shù)器(ac)的值就會自動加1,即在連續(xù)寫入內(nèi)容時,只需要設(shè)定開始的位址,并連續(xù)寫入數(shù)據(jù)就能達到目的。因為st7920是能控制128×64點陣的驅(qū)動芯片,wgm-12832只用了st7920資源的1/2。在使用上需要注意,ddram位址中的88 h~8 fh和98 h~9 fh中的內(nèi)容是不能顯示出來的。位址80h~87h和90h~97h的內(nèi)容會被分別顯示在第1行和第2行。 2 單片機與wgm-12832液晶的接口電路 at89s51和液晶wgm-12832模塊的接口電路如圖2所示。由于wgm-12832采用串口通信,外接引腳較少,與單片機連接采用直接連接的方法,即用i/o口直接與lcd數(shù)據(jù)線和控制線相連,其特點是簡單、直觀、操作方便。在此電路中,采用軟件模擬液晶的時序,達到正確顯示的目的。 3 軟件編程 對wgm-12832的軟件編程采用franklin 51語言開發(fā),主要包括兩部分,一部分是給液晶寫指令,另一部分是給液晶寫數(shù)據(jù)