• 沒有找到結果。

LCD 硬體說明

在文檔中 8051應用-電子密碼鎖 (頁 44-0)

第三章 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、

在文檔中 8051應用-電子密碼鎖 (頁 44-0)

相關文件