LCD1602指令集(11個)
1、清屏指令(clear display) RS=0 ,R/w=0, 01H
功能:清除液晶顯示器,即將DDRAM中的內容全部填入20H(空白字符)
光標撤回顯示屏左上方
將地址計數器(AC)設為0,
光標移動方向為從左向右,並且DDRAM的自增量為1(I/D=1).


2、光標歸位指令(Return Home)RS=0 ,R/w=0, 0000_001X
功能:將地址計數器(AC)設為00H,
DDRAM內容保持不變,光標移至左上腳


3、進入模式設置指令(Entry Mode Set)
功能: 設 定 每 次 定 入 1 位 數據 后 光 標 移 位 方 向 並且設 定 次 寫 入 一 個 字符是 否移動 。
I/D = 0 光標左移,DDRAM地址自增1 I/D = 1 光標右移,DDRAM地址自增1 (當從CGRAM中讀取或寫入數據時,CGRAM操作與DDRAM相同)
SH = 0 且 DDRAM是讀操作(CGRAM讀或寫),整個屏幕不移動
SH = 1 且 DDRAM是寫操作,整個屏幕移動,移動方向由I/D決定


4、顯示開關控制(Display ON/OFF Control)
功能: D = 1 , 顯示功能開 D = 0 , 顯示功能關,但是DDRAM中的數據依然保留
C = 1 , 有光標 C = 0 , 沒有光標
B = 1 , 光標閃爍 B = 0 , 光標不閃爍


5、設置顯示屏或光標移動方向的指令
功能:整屏的移動或光標移動
S/C =0 R/L =0 光標左移 ,地址計數器減1(即顯示內容和光標一起左移)
S/C =0 R/L =1 光標右移 ,地址計數器加1(即顯示內容和光標一起右移)
S/C =1 R/L =0 顯示內容左移 ,光標不移動
S/C =1 R/L =1 顯示內容右移 ,光標不移動


6、功能設定指令
功能:設定數據總線位數、顯示的行數及字形。
DL=1 ,數據總線是8位 DL=0 ,數據總線是4位
N =0 ,顯示一行 N=1 ,顯示兩行
F =0 , 5*8 點陣/字符 F=1 ,5*11點陣/字符


7、設定 CGRAM地址指令
功能:設定下一個要存入數據的CGRAM地址
DB5DB4DB3為字符號,即將顯示該字符用到的字符地址
DB2DB1DB0為行號


補充理解:在芯片中內置了192個常用字符的字模,存於CGROM(character generate ROM)中,還有8個允許用戶自定義字符(也就是可以顯示八個中文字)的RAM,也就是CGRAM。具體描述為下圖:


當輸入的地址是41H時,顯示字符A.
由上圖可知:
我想將自定義的一個漢子或圖形放在第六個CGRAM中,所以可以確定字符碼就為101(字符碼000-->111),
所以 DB5DB4DB3 = 101
因此CGRAM的地址設置為01101X'X'X
這是要輸入字符5的過程(原理如下圖所示)
01101000 0x07
01101001 0x10
.................
01101111 0x00


8、設置DDRAM地址

DDRAM的地址與顯示屏對照關系(N=LOW)



9、讀取忙信號或AC地址指令
如果BF=1 忙碌,無法接收數據或指令
BF=0可以接收數據、指令
讀取地址計數器的內容


10、向DDRAM或CGRAM寫入數據
寫指令 輸 入 : RS=L , RW=L , E= 下 降沿脈沖 , DB0 ~ DB7= 指令 碼
寫數據 輸 入 : RS=H , RW=L , E= 下 降沿脈沖 , DB0 ~ DB7= 數據


11、從DDRAM或者CGRAM讀數據
讀狀態 輸 入 : RS=L , RW=H , E=H 輸出: DB0 ~ DB7= 狀態字
讀數據 輸 入 : RS=H , RW=H , E=H 輸出: DB0 ~ DB7= 數據

