第三章 LCD 的介紹
3.2 LCD 硬體說明
● 多種控制指令如清除顯示器,游標歸位 ( Cursor Home ) ,顯 示器關閉/開啟,游標關閉/開啟、字元閃爍,游標移位、顯示移 位等等。
3.2 LCD 硬體說明
下表為文字型 LCD 接腳說明
- 38 -
欄位 接腳符號 方向 名稱及功能
( Instruction Register ) ;若輸入”0”,
做讀取動作則可讀取忙碌旗標 ( Busy flag ) DB4~DB7 有用到,DB0~DB3 不必連接。
(1) 暫存器 ( Registers ) ,: LCD 共有兩個八位元暫存器,即指令
(3) 位址計數器 ( Address Counter , AC ) ,位址計數器可產生 DD
20H~7FH 與 ASCII 相同,A0H~DFH 為日文字型,E0H~FFH 為 32 個 5*10 字型。所以,可看出字元碼並不連續,有些碼沒用到。
(6) 字元產生器 RAM ( Character Generator RAM , CG RAM ) ,使 用者可自行設計任意的 5*7 點矩陣字型,字型輸入資料先寫入 CG RAM ,再將對應的字元碼寫入 DD RAM ,就可以顯示字型了。 CG RAM 共有 64 個 bytes ,每個字型佔用 8 個 bytes ,對應 00H~07H 八個 字元碼,即 CG RAM 的 0~7 bytes 對應字元碼 00H,8~15 bytes 對 應字元碼 01H ,依此類推。若未設計字型,則 CG RAM 可由使用者 自由運用。
(7) 時序產生器 ( Timing Generator ) ,供應 DD RAM , CG RAM , 及 CG ROM 內部運作之時序信號。
(8) 游標/閃爍控制器 ( Cursor / Blink Controller ) ,用來產生一 個游標和一個閃爍的字元,顯示在 DD RAM 目前位址所指的顯示位 置,游標為字元下的一條橫線。
(9) 並列對串列轉換器 ( Parallel-to-Serial Converter ) ,將 CG ROM 或 CG RAM 中讀出的並列資料轉成串列資料送到顯示驅動器 ( display driver ) 。
(10) 偏壓產生器 ( Blias Voltage Generator ) ,用來產生液晶顯示 器 ( LCD ) 顯示時所需的偏壓準位。
(11) LCD 驅動器 ( LCD Driver ) ,此電路接收顯示資料,時序信號 和偏壓來產生共用背景顯示及各段顯示信號。
(12) LCD 面板 ( LCD Panel ) ,點矩陣液晶顯示面板,有一列 16 字,
兩列 16 字,兩列 20 字及兩列 40 字等種類。字元與字元間有一個點 距離的間隙。
3.3 暫存器及指令碼說明
下表為 LCD 指令控制碼一覽表
- 41 -
位元值
6 寫
要由使用者所設定位址是 CG RAM 位址或 DD RAM 位址決定 ( 第 7 或第 8 項 ) 。
右邊一行為每個指令的執行時間 ( Execution time ) ,此為使 用者每一次讀寫 LCD 暫存器後要等待的時間,因為 LCD 控制器本身 接收一個指令後,在內部做處理及運算,需要花費時間,此時間過後 CPU 才可再下另一 LCD 控制指令,否則會被忽略。各指令說明如下:
(1)清除顯示器 ( Display clear ) ,將 DD RAM 內資料皆填入空白 碼 ( space code ) 20H 。位址計數器清為零。若顯示移位過,也 會恢復原始位置。執行此指令,使所有顯示消失,游標及字元閃爍 位置移到左上角。指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1
(2)顯示/游標歸位 ( Display/Cursor Home ) ,位址計數器清為零,
顯示恢復原始位置,游標移到左上角。 DD RAM 中資料無影響。指 令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 1 X (3)進入模式設定 ( Entry Mode Set ) ,指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 I/D S
I/D:位址計數器遞增 ( I/D=1 ) 或遞減 ( I/D=0 ) ,每讀寫 DD RAM 中字元碼一次則位址計數器加一或減一。游標顯示之位置亦同時向右 ( I/D=1 ) 或向左 ( I/D=0 ) 移一個位置。讀寫 CG RAM 時亦相同 效果。
S:當 S=1 ,寫入一個字元碼到 DD RAM 時,整個顯示幕向左 ( I/D=1 ) 或向右 ( I/D=0 ) 移一格位置,而游標仍停留在相對的顯示位置。
當 S=0 ,顯示幕不移動。寫入 CG RAM 時,顯示幕不移動。
(4)顯示啟/閉 (Display ON/OFF ) ,指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B
D ( Display ) :當 D=1,顯示幕開啟 ( turn on ) 。當 D=0,顯 示幕關閉 ( turn off ) ,顯示資料仍保存在 DD RAM 中。
C ( Cursor ) :當 C=1,游標被顯示在位址計數器所指的位置上。
當 C=0,游標不會出現。游標是在 5*8 矩陣的第 8 列五個點構成,餘 5*7 點為字型。對 5*10 之字型則在第 11 列的五個點構成。
B ( Blink ) :當 B=1,在游標位置的字元會閃爍,閃爍方式為所有 5*8 的點 ( 含游標 ) 變黑 409.6ms ,然後字元出現 409.6ms ,如 此交替顯示所有點及字元而成閃爍現象。
(5)顯示/游標歸位 ( Display/Cursor Shift ) ,顯示幕和/或游標被 向右或向左移動。對於雙列顯示器游標會從第一列的第 40 個位置移 到第二列的第一個位置,但移到第二列第 40 個位置後不會歸回原 點,而是移到第二列第一個位置。指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 S/C R/L X X S/C R/L
0 0 游標向左移 ( AC ← AC-1 ) 0 1 游標向右移 ( AC ← AC+1 ) 1 0 整個顯示幕和游標向左移 1 1 整個顯示幕和游標向右移
(6)功能設定 ( Function Set ) ,此指令一定要在所有其他指令碼之 前。指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 DL N F X X
DL ( Data Length ) :選擇介面資料長度, DL=1 為 2-bit 資料轉 移 ( Transfer ) , DL=0 為 4-bit 資料轉移。使用 4-bit 資料轉 移時,一個完整字元資料要讀或寫兩次。
F ( Font ) : F=1,5*10 點矩陣。 F=0,5*7 點矩陣。
- 45 -
N ( Number of display line ) :選擇顯示之列數為雙列或單列, N=0 表單列 ( Single line ) 。 N=1 表示雙列 ( dual line ) ,若單 列顯示器以雙列定址方式仍要選 N=1。
(7)字元產生器 RAM 位址設定 ( CG RAM Address Set ) ,可將 CG RAM 位址載入位址計數器中,位址由 6 個位元所組成。指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 1 A A A A A A
A:Address bit
(8)顯示資料 RAM 位址設定 ( DD RAM Address Set ) ,可將 DD RAM 位址載入位址計數器中,位址由 7 個位元所組成。指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 A A A A A A A
A:Address bit (9)忙碌旗標/位址計數器讀取 ( Busy flag/Address Counter
Read ) ,指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 BF A A A A A A A
A:Address bit
BF=1,表示 LCD 正在執行內部運作,並且不接受新的指令。 BF 可 由 RS=0 時讀取位元 7 得到旗標狀態,BF=0 才可輸入下一指令。
AC ( Address Counter ) 可產生 DD RAM 及 CG RAM 之位址。位址 值及選擇哪一個 RAM 可一次寫入指令暫存器決定之。
(10)字元產生器 RAM /顯示資料 RAM 的資料寫入 ( CG RAM / DD RAM Data Write ) ,資料是寫入 CG RAM 還是 DD RAM 中的哪一個位址,
皆由先前所下的位址設定指令決定。指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 0 D D D D D D D D
D:Data bit
(11)字元產生器 RAM /顯示資料 RAM 的資料讀取 ( CG RAM / DD RAM Data Read ) ,資料是由 CG RAM 還是 DD RAM 中的哪一個位址讀 出,皆由先前所下的位址設定指令決定,與寫入類似。讀或寫資料 都會使位址自動加一或減一。指令碼為:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 1 D D D D D D D D
D:Data bit 3.4 軟體規畫
要令 LCD 顯示文字,首先要寫入指令暫存器 ( IR ) 規劃 LCD 各 項功能、模式,接著將字元碼 ( ASCII )寫入資料暫存器 ( DR ) 移 入 DD RAM 中,即可顯示字元。適當地在每個指令後加些延遲,大於 LCD 指令控制表內所列之執行時間,這樣可省卻測試忙碌旗標 ( BF ) 之 動作。下圖為軟體流程:
POWER ON RESET 或 Instruction RESET
↓
顯示 DD RAM 字元 3.5 LCD 重置及初始化
LCD 有一個內部重置電路 ( Internal Reset Circuit ) ,只要 電源電壓 ( VDD 腳 ) 在 10ms 內上升到 4.5V 以上,即可產生 Power
- 47 -
ON Reset ,並做 LCD 初始化工作如下: ( 初始化時 BF=1, VDD 達 3.5V 後約延續 10msec , BF 才降為 0 ) 。
● 清除顯示 ( Clear Display )
● 功能設定, DL=1, N=0, F=0•8 位元介面,單列顯示,5*7 點矩陣字形。
● 顯示關閉, D=0, C=0, B=0。顯示幕、游標,閃爍功能關閉。
● 進入模式, I/D=1, S=0。遞增模式,顯示幕不移動。
第四章 實作
□ 單晶片可以使用 89C51 系列晶片及 LO51 晶片(ISP 型 8051 晶片)
□使用 LO51 晶片可以擴充簡易 ICE 模擬器功能
□使用 LO51 晶片免燒錄,免 ICE 可由串列介面下載程式碼來執行
□一組 4X4 鍵盤輸入
□ 壓電喇叭或一般喇叭輸出
□ 含文字型 LCD 介面(16X2)
□ 含斷電資料保存介面 93C46
□ 1 組 5V 繼電器界面 連接座:
J0 2P MOLAX 腳座 +9V/GND 電源輸入 - 48 -
J1 2P MOLAX 腳座 +5V/GND 電源輸入 J2 7X2 LCD 母座
J3 8P 母座 連接 4X4 鍵盤
J4 20X2 多功能 I/O 擴充接腳,有 3 種功能:
功能 : 20X2 排針座,經由 40 PIN 排線可以擴充簡易 ICE 模擬器功 能。當做簡易 ICE 模擬器功能時,原先在 IO51 板上的硬體 零件會造成負載效應,查看電路圖,取下必要的 IC, 才能 經由 40 PIN 排線送出標準的 8051 控制信號。
J0 9V DC 接頭 中間為 +9V 零件表
積體電路 IC: IC 座 編號 規格
LCD 16X2 文字型 LCD U1 ISP LO64 40P IC 座 U2 7660 8P IC 座 U3 DA08 16P IC 座 U4 7805 加散熱片
電容 : 電解電容有極性(長腳為正),陶瓷電容無極性 - 49 -
C1 10 uF 陶瓷電容 C2 10 uF 陶瓷電容 C3 100 uF 電解電容 C4 100 uF 電解電容 C5 100 uF 電解電容
電晶體 : Q1、Q2 2SC945 X4 有極性 (底視圖 由左至右 ECB) 二極體 : D1、D2 LED X2 有極性(長腳為正)
其他 :
X1 石英振盪晶體 11.0592 MHz RY1 5V 繼電器
SW1 4 P 按鍵開關 BZ 壓電喇叭 4X4 鍵盤
基本知識如下:
LCD 是插在 J2 7X2 LCD 母座上。
J3 8P 母座用來連接 4X4 鍵盤
8051 控制板 DIY 不動作時,常見的問題有以下幾種:
□ 8051 不動作
□ 零件接腳極性方向插錯
□焊接不良
- 50 -
8051 要動作,基本電路(以下 6 接腳)要接對
<1>8051 接腳 40 電源是否接 5V
<2>8051 接腳 20 接地是否接地
<3>8051 接腳 18 19 是否接石英震盪晶體
<4>8051 接腳 31 EA 是否接 5V
<5>8051 接腳 9 重置是否接對
□準備必要電源及串列介面傳輸線
接著要自備 +5v 電源或是 +9V 電源 或是 9V 直流電源(350 mA) 接頭中間為正。
□ 如何觀察原始程式 :
以文書處理器查看 PA.ASM。
□ 如何執行程式 : 1.準備一 +5V 電源。
2.經由 2 PIN 電線接至 J1 接點(紅色+5V,黑色接地) 3 .打開電源,工作 LED 閃爍,表示開機正常。
4.原定密碼為 "1234"。
5.按 B 鍵 : 檢查密碼輸入,輸入 4 位密碼,若正確則繼電器開啟約 2 秒後關閉,表示打開門鎖,若密碼比對錯惡則警報響起。
- 51 -
7.按 A 鍵 : 輸入新的 4 位密碼,關機後資料可以永久保存。
□ 組譯有錯時怎辦 :
組譯有錯時會自動跳出批次檔,而結束程式執行,可以文書處理器 查看檔案,看看到底錯在那邊。
第五章 總結
5.1 實驗心得
在這個專題裡遇到許多困難,首先在於如何推動這 8051 晶片,書 上提到需要 5V 的電源可是在各個電子專賣店裡總是找不到 5V 的電源 供應器,更別說是 1.5V 的電池了怎麼樣也串不到 5V,在參考了許多書 與詢問同學後,發現有一種藉由 9V 的電源供應器、7805 跟 5V 穩壓 IC,
才完成了自制 5V 電源,對於燒 IC 為了不必要的損失,決定使用 89C51 可重覆燒錄,也對 8051 這個 IC 更了解了,也深深感到這個 IC 其強大 的功能。雖然這只是一個小小的專題,不過我相信若是在這個小小的 基礎上,繼續研究的話,以後或許會有更深的發現。
5.2 問題討論
Q1:程式如何燒錄進IC?
Ans:這是我準備將程式燒進8051時所遇到的問題,向器材室 詢問得知,器材室有一台8051之IC燒錄器可供借用,而由 於89C51較易於重覆燒錄,因此我決定用89C51來燒錄 程式,軟體的取得是從網站上下載。一開始以為燒錄失敗,後來 才知道是燒錄時間極短,且線路接觸不良(麵包板),與程式有小 bug 導致失敗,經過重覆測試,終於燒錄成功,並且完成測試。
Q2 為何使用89C51要用石英振盪器?
Ans:石英振盪器主要的目的是要產生脈波,產生所需工作頻率讓 89C51產生動作
Q3:CD為何無法做動態顯示?
Ans:測試數個動態顯示的程式仍舊無法做動態顯示,因此推斷因 為非繪圖型LCD,因此無法做動態顯示。
Q4:為何無法連續兩次接收資料?
Ans:電路不穩,是因為電壓不夠,因此只要換過新的電池,問題 即解決。
Q5:為何LCD顯示跳動的很厲害?
Ans:程式出錯,經 debug 過後再做顯示,問題就消失了。
- 53 -
5.3 參考資料:
鄧錦城,8051 單晶片實作寶典,P.1~P.206、P.397~P.427,松崗電腦 圖書資料股份有限公司,八十一年九月出版。
偉林資訊,單晶片微電腦-8051/52 原理與應用,P.10~P.95,松崗電 腦圖書資料股份有限公司,八十年十月出版。
王信福,MCS-51 單晶片微電腦專題製作,P.1-3~P.1-17、
王信福,MCS-51 單晶片微電腦專題製作,P.1-3~P.1-17、