跟我學51單片機(七)——LCD1602液晶顯示模塊
如圖2 所示,1602 液晶的控制管腳都接到了單片機管腳上,前文提到,在功能設置指令中可以將液晶設為8 位數據接口和4 位數據接口,圖中采用的是8位的數據接口,當然也可以當四位數據接口來用。液晶電源正端接5V,負端接地,背光正端接5V,負端接地。此外,液晶的偏壓管腳(VO)接到一個電位器的中間抽頭,電位器的兩端分別接5V 和地,這樣就可通過調節電位器來實現對1602 液晶對比度的調節。經實驗測試,筆者手里的1602 液晶的偏壓管腳的電壓調節到0.3~0.4V 時對比度效果最好,也可以將該管腳通過一個1k 的電阻下拉到地。讀者可以自己實踐測試。
圖2 1602液晶與單片機的連接圖
三、程序設計
在對1602 液晶設計程序前,我們先看下其讀寫時序圖,從圖3 和圖4 可以看出,1602 液晶的讀寫操作時序可總結成表4 所示。
圖3 1602液晶讀操作的時序圖
圖4 1602液晶寫操作的時序圖
對照時序,我們可以很容易的寫出驅動液晶的各個子函數,如下所示。
寫命令函數:向寄存器寫入控制字
參數:command - 控制字
void LCD_en_command(unsigned char command)
{
LCD_delay(); // 延時一段時間
LCD1602_RW=LOW; // 寫命令時,R/W 為低電平
LCD1602_RS=LOW; // 寫入指令,RS 為低電平
LCD1602_EN=HIGH; // 置高使能線
LCDIO=command; // 接收命令字并送到數據總線上
LCD1602_EN=LOW; // 在使能線的下降沿寫入數據
}
寫數據函數:向寄存器寫入數據
參數:dat - 待要顯示數據
void LCD_en_dat(unsigned char dat)
{
LCD_delay(); // 延時一段時間
LCD1602_RW=LOW; // 寫指令時,R/W 為低電平
LCD1602_RS=LOW; // 寫入數據,RS 為高電平
LCD1602_EN=HIGH; // 置高使能線
LCDIO=dat; // 接收數據并送到數據總線上
LCD1602_EN=LOW; // 在使能線的下降沿寫入數據
}
紅外遙控器相關文章:紅外遙控器原理
評論