<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 自制單片機(jī)之六……LCD12864的驅(qū)動

          自制單片機(jī)之六……LCD12864的驅(qū)動

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

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

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

          2.讀操作時序

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



          關(guān)鍵詞: 單片機(jī)LCD12864驅(qū)

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();