//Logo Image
作者:蔡宗成(2005-05-26);推薦:徐業良(2005-05-27)

單晶片實習-使用I2C與串列式LCD溝通應用簡介

一般應用在單晶片的LCD顯示器,其控制接腳多達16支(電源線、地線、讀寫控制、致能控制、8bit資料匯流排等),屬於平行匯流排裝置。LK162-12是具有I2C界面的串列式LCD顯示器,只要使用兩條線,便可傳輸資料到此串列式LCD上顯示[http://www.matrixorbital.com/files/LK162-12.pdf]。本文使用PIC_PROTO作為I2CMaster,串列式LCD作為Slave,使用I2C界面溝通,包括硬體設定、範例程式、及應用實例。

1.     串列式LCD硬體簡介

1為串列式LCD外觀,與一般LCD顯示器不同的是,串列式LCD增加一層控制面板,上有一塊PIC16C63A單晶片,使得具有I2C溝通界面,也可透過RS232界面傳輸資料,並可連接矩陣鍵盤輸入資料。

1. 串列式LCD外觀

串列式LCD的基本特性如下:

(1)       16×2列英數型顯示器

(2)       RS232溝通傳輸速率可達19.2Kbps

(3)       I2C溝通傳輸速率可達100Kbps

(4)       背光、對比可由指令輸入控制

(5)       I2CSlave位址為0x50

(6)       電源供應4.75~5.25Vdc9mA(背光時需要115mA

(7)       體積尺寸80.0mm(L)×36.0mm(W)×27.5mm(T)

2為串列式LCDI2C接腳,Vin供應+5VSCL連接PIC_PROTORC3SDA連接PIC_PROTORC4GND地線共接。PIC_PROTOI2C連接位置如圖3,已有+5V電源與地線電路設計。PIC_PROTO在此I2C應用上是作為Master,所以RP4要焊接2.2k的提升電阻,如圖4

2. 串列式LCDI2C接腳

3. PIC_PROTOI2C位置

4. PIC_PROTORP4提升電阻

2.     串列式LCDI2C溝通指令

此串列式LCD提供許多I2C溝通指令,本文介紹部份溝通指令如表1,可用來控制游標位置、背光顯示與對比等,其餘控制指令請參閱產品使用手冊。

1. 串列式LCD部份控制指令

指令

輸入參數

說明

Set cursor position

254 71 [col] [row]

控制游標到指定行與列
col = 1~16
row = 1~2

Send cursor home

254 72

控制游標回到原點

Underline cursor on

254 74

顯示底線

Clear Display

254 88

清除顯示螢幕內容

Set Contrast

254 80 [contrast]

設定顯示螢幕對比
contrast = 0~255

Backlight On

254 66 [minutes]

設定背光顯示一設定時間
minutes = 0
則持續背光

Backlight Off

254 70

關閉背光

Set I2C Address

254 51 [address]

內建0x50
寫入位址為偶數值
讀取位址為奇數值

以控制串列式LCD的游標位置為例,PIC_PROTOI2C指令說明如下:

2. 控制游標位置範例

i2c_start();
i2c_write(0x50);
i2c_write(254);
i2c_write(71);
i2c_write(5);
i2c_write(1);
i2c_stop();

初始化I2C通訊
Master
寫入Slave
寫入254參數
寫入71參數
寫入行參數5
寫入列參數1
結束I2C通訊

3.     I2C應用範例

5PIC_PROTOI2C應用範例,行數1~4是函數庫引用與設定,行數5是定義串列式LCDI2C位址為0x50,行數7~8為定義電壓變數值,行數10~62是根據表1的控制指令設計副程式,可簡化主程式行數且較易除錯。使用者可根據設計需求增加控制副程式。

行數64~70是字串顯示副程式,將要顯示在LCD螢幕的資料放在SLCD_puts(字串)裡,“\n”代表換行。

行數72~88是主程式main,行數74PIC_PROTO初始化指令,接著進入while迴圈,執行Clear_display()副程式以清除LCD螢幕,執行Send_cursor_home()副程式使游標歸位,接著讀取電壓值存入ad_0變數,經過浮點數轉換存入ad變數,然後使用CCS內建指令printf,利用其轉向功能,將ad變數轉向代入SLCD_puts()副程式裡,行數84是直接執行SLCD_puts()副程式,將“I am superman!”字串顯示在第二行。

5(a). PIC_PROTOI2C應用範例

5(b). PIC_PROTOI2C應用範例