通過本系列部落格前幾篇文章的介紹,我們已經體驗過了許多傳感器元件,它們大多非常簡單,可以直接對其進行資料讀取或寫入,無需複雜的指令配置。本篇部落格,我們将介紹一個相對複雜的元件:LCD屏。當今大多數常見的電子裝置為了便于使用者操作,都會配備一塊LCD液晶顯示屏,使用者通過螢幕可以擷取到裝置的相關資訊友善使用。下面,我們将嘗試使用樹莓派來在LCD屏上展示資訊。
一、LCD 1602
LCD屏是Liquid Crystal Display的簡稱,即液晶顯示屏。LCD 1602是一種點陣式的給付型液晶顯示屏,其型号為1602本身也是有意義的,表示其可以顯示2行資訊,每行可以顯示16個字元。LCD1602最多可以顯示32個字元,價格上也并不昂貴,十幾元錢即可買到。LCD1602有16個引腳,如下圖所示:
LCD1602的16個引腳看上去很多,但實際上使用起來并不複雜,我們首先将上圖這些引腳的功能來介紹一下。
引腳1:接地引腳
引腳2:接5V電壓
引腳3:VE引腳為螢幕對比度調整引腳,接地時對比度最大,接正極電源時對比度最小。
引腳4:RS引腳為功能模式引腳(也被稱為寄存器選擇引腳),為其加高電平時為資料模式(存取螢幕展示的資料),為其加低電平時為指令模式(讀取指令)。
引腳5:RW引腳為讀寫模式引腳,為其加高電平時為讀操作,為其加低電平時為寫操作。
引腳6:Enable引腳,此引腳用來觸發動作,負跳變時進行資料處理或指令的執行。
引腳7-引腳14:這8個引腳為資料引腳,用來進行資料傳輸。
引腳15:背光電源引腳。
引腳16:背光接地引腳。
上面所介紹的引腳中,引腳1,引腳2,引腳15和引腳16比較好了解,其都是作為供電功能,無需程式設計操作。引腳3是一個單獨調增對比度功能的引腳,作用也相對獨立,無需複雜的指令操作。引腳4和引腳5是比較核心的兩個引腳,這兩個引腳的高低電平狀态組合共有4種,分别會将LCD1602設定為讀指令模式,寫指令模式,讀資料模式和寫資料模式。引腳6可以了解為一個觸發引腳,通過操作這個引腳的電平跳變來讓LCD1602執行具體的功能。引腳7-引腳14用來進行資料的存取或指令的存取。
現在請你務必将上面所介紹的内容完全了解,否則後面的内容可能會更加令你迷惑。對于LCD1206的讀資料模式和寫資料模式你應該沒有什麼疑惑,隻要通過引腳4和引腳5設定正确的模式後,再通過GPIO來寫和讀引腳7到引腳14的電平資料,即可得到一個8位的資料。我們核心需要了解的是指令模式,LCD1602的指令集如下:
上圖中的RS和R/W就是引腳4和引腳5,其控制模式,與指令本身無關,我們可以先不關心。從DB7到DB0是真正的指令部分。我們下面來逐一介紹。
1. 指令一:0000 0001
清屏指令,響應時間為1.53ms。
2.指令二:0000 001- (最後一位’-‘表示0和1都可以,不被關心)
光标歸位指令,執行後光标的位置會回到起點,但是資料寄存器中的資料不會清空。
3.指令三:0000 01[I/D][SH]
光标移動模式設定指令,I/D和SH兩個控制為光标或螢幕移動模式。
I/D設定為0:每次讀取一個字元後光标左移。
I/D設定為1:每次讀取一個字元後光标右移。
SH設定為0:螢幕不移動。
SH設定為1:螢幕移動,方向與I/D的設定一緻。
4.指令四:0000 1[D][C][B]
顯示模式設定指令,D,C,B這三個位分别設定主顯示功能,光标顯示功能,光标閃爍功能。
D:設定為0則關閉螢幕,設定為1開啟螢幕。
C:設定為0關閉光标,設定為1顯示光标。
B:設定為0光标不閃爍,設定為1光标閃爍。
5.指令五:0001 [S/C][R/L]--
設定光标和顯示屏移動方向。
S/C設定為0時,R/L設定為0則光标左移,RL設定為1時光标右移。
S/C設定為1時,R/L設定為0則顯示内容左移,R/L設定為1則顯示内容右移。
6.指令六:001[DL] [N][F]--
功能模式設定指令。
DL:設定為1時采用8位總線讀資料,設定為0時采用4位總線讀資料。
N:設定為0時是單行顯示模式,設定為1時是雙行顯示模式。
F:設定為0時為5*8的點陣字元,設定為1時為5*11的點陣字元。
7.指令七:01[A5][A4] [A3][A2][A1][A0]
設定下一個字元要顯示的位置。A5位設定要定位到的行,A0到A4位定位要顯示的位置,取值為0-16之間。
8.指令八:1[A6][A5][A4] [A3][A2][A1][A0]
資料寄存器位址設定。
了解了LD1602顯示屏上面的指令用法,我們就可以程式設計來控制顯示屏顯示的内容了。