//Logo Image
作者:蔡宗成(2002-02-01);推薦:徐業良(2002-02-04)

單晶片實習-LCD顯示控制

一般而言,用於單晶片的人機介面通常是LED燈、喇叭等,只能輸出普通的訊號,而LCD顯示器便能輸出文字、數字等,讓使用者與內建單晶片設備之間的溝通更為人性化。本文介紹使用單晶片PIC16F877的類比輸入功能,讀取外界電壓訊號,並將電壓訊號輸出至LCD顯示器上,成為一台簡易的自製電表。類比輸入功能請參閱「單晶片實習-類比數位轉換」。

1.     LCD顯示器原理簡介

市售LCD顯示器有許多規格與樣式,可以顯示中文、英文、數字與圖片等,有16字×1列、20字×2列等不同樣式,而LCD顯示器的主要特性如下:

(1)   工作電壓為+5V,可調整顯示亮度。

(2)   內建震盪電路、重置電路。

(3)   提供字元閃爍、游標閃爍、移位顯示與清除顯示等多種內建功能。

(4)   共有80個位元組的顯示用資料RAM

(5)   1605×7點矩陣字型的字元產生器ROM

(6)   可自行定義85×7點矩陣字型的字元產生器RAM

1為本實習所使用的LCD顯示器外觀與接腳位置,為16字×2列英數型LCD顯示器,總共有16支接腳,VddVss5V正電源與地線接腳,Vo為控制LCD顯示器的對比,可加裝可變電阻來控制LCD螢幕的明暗程度,RS用來讀取、寫入LCD內的暫存器資料,R/W控制寫入、讀取的動作,E是致能控制線,B0~B7為雙向的資料匯流排,用來傳送資料,也就是一次可傳送8個位元,本實習電路是以4位元模式與LCD顯示器溝通,只使用B4~B7接腳。

接腳

符號

說明

接腳

符號

說明

1

Vss

接地

9

B2

資料匯流排Bit 2

2

Vdd

電源輸入

10

B3

資料匯流排Bit 3

3

Vo

對比調整

11

B4

資料匯流排Bit 4

4

RS

暫存器選擇控制線

12

B5

資料匯流排Bit 5

5

R/W

讀寫控制線

13

B6

資料匯流排Bit 6

6

E

致能控制線

14

B7

資料匯流排Bit 7

7

B0

資料匯流排Bit 0

15

LED+

背光控制線

8

B1

資料匯流排Bit 1

16

LED-

背光控制線

1. LCD顯示器外觀與接腳說明

2. LCD顯示控制電路

本實習使用PIC16F877控制LCD顯示器產生字母、數字等訊號,圖2為單晶片與LCD電路圖,使用單晶片PortB-4~PortB-7作為資料傳送、接收腳位,PortB-0連接LCD致能控制線,PortB-1連接暫存器選擇控制線,PortB-2連接讀寫控制線,單晶片接腳與LCD的對應關係是依照CCS軟體所提供的LCD函數庫所定義,使用者可依照本身硬體需求,更改接腳定義。

2. 單晶片與LCD連接電路

如圖2所示,加裝10K可變電阻可調整LCD對比效果,以工作電壓5V而言,Vo的輸入電壓約在0.5~1.0V左右,可設計成讓使用者自行調整,而Vo的電壓範圍會影響LCD的顯示效果,避免太亮或太暗。單晶片除了使用PortB中的腳位外,還需要其它基本電路,相關內容請參閱「單晶片實習-PIC16F877單晶片原理簡介」。

3LCD顯示控制程式,以C語言撰寫,引用相關包含檔(include)與設定內建功能,其中最重要的是CCS所提供的LCD.c函數庫,使用時非常方便,只要注意檔案內容所定義的接腳位置,即可設計符合需求的LCD顯示程式。LCD.c函數庫將控制LCD接腳、傳送資料等功能包含成類似C語言語法,但程式內容過多,請自行參閱該檔案內容。

3. LCD顯示控制程式

LCD顯示控制程式同樣必須包含一些內建功能檔案,相關用法與說明請參閱「單晶片實習-數位輸出應用」或是CCS使用手冊,程式分為兩個部分,第一部分為類比電壓輸入程式,從Channel-0(RA1)讀取電壓訊號,經過浮點數運算,轉成實際電壓值後,存入指定變數。第二部分為引用LCD.c檔案所提供的指令-lcd_putc(),將電壓值輸出顯示在LCD螢幕上。以下說明相關指令用法:

lcd_init()

lcd_init()LCD.c所提供的指令,用以初始化LCD的相關設定、接腳定義等。

printf(fname,cstring,values…)

printfCCS內建指令,基本用法可將字串、數字透過RS-232顯示在電腦螢幕上,也可顯示在LCD螢幕上,必須指定所要顯示的資料型態、格式等。

lcd_putc(c)

lcd_putc(c)LCD.c所提供的指令,用法類似printf(),不僅可顯示指定資料,也可控制LCD顯示螢幕的清除指令,或是換行指令等。

lcd_gotoxy(x,y)

lcd_gotoxy(x,y)LCD.c所提供的指令,雖然沒有使用在本實習程式上,但是用法相當方便,可控制顯示資料的位置,x值為1~16y值為1~2,也就是本實習所使用的16字×2列的規格座標。

lcd_getc(x,y)

lcd_getc(x,y)LCD.c所提供的指令,用來讀取x,y位置的資料。

由於CCS軟體將LCD的相關設定包含成一個檔案,只要在程式裡適當引用,即可快速開發所需要的產品,此方法也就是所謂的副程式用法,讓不同的主程式可以引用同一個副程式,減少程式設計時間與流程。LCD顯示器可說是一個相當人性化的介面,可以顯示全部的英文與數字,有些甚至可以顯示中文字體,只需要少數的I/O控制接點,成本低廉,在產品的人機介面應用上可說非常方便與受歡迎。