跟我學51單片機(七)——LCD1602液晶顯示模塊
液晶初始化函數(shù):設置液晶的工作方式
void LCD_init(void)
{
delaylcd_nms(5);
LCD_en_com_nobusy(DATA_MODE);
// 延時5ms, 寫指令,不檢測忙信號
delaylcd_nms(5);
LCD_en_com_nobusy(DATA_MODE);
// 延時5ms, 寫指令,不檢測忙信號
delaylcd_nms(5);
LCD_en_com_nobusy(DATA_MODE);
// 延時5ms, 寫指令,不檢測忙信號
LCD_en_com(DATA_MODE);
// 設置為8位數(shù)據(jù)傳送模式
delaylcd_nms(5);
LCD_en_com(OPEN_SCREEN); // 開顯示
LCD_en_com(DISPLAY_ADDRESS); // 設置顯示地址
CLEARSCREEN; // 清屏
}
設置顯示坐標函數(shù):設置字符的顯示位置,行、列坐標
參數(shù): x -列坐標,y -行坐標
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == LINE1) // 判斷行
address = LINE1_HEAD + x; // 設置列坐標
else
address = LINE2_HEAD + x;
LCD_en_command(address); // 將地址寫入寄存器
}
寫字符函數(shù):向液晶寫一個字符
參數(shù):x -列坐標,y -行坐標,dat -將要顯示的字符數(shù)據(jù)
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y ); // 首先設置顯示坐標
LCD_en_dat(dat); // 寫數(shù)據(jù)
}
寫字符串函數(shù):向液晶寫入字符串
參數(shù):x -列坐標,y -行坐標,*s -將要顯示的字符串數(shù)據(jù)
void LCD_write_string(unsigned char x,unsigned char y,unsigned
char *s)
{
LCD_set_xy( x, y ); // 首先設置顯示坐標
while (*s) // 判斷是否結束
{
LCDIO=*s;// 循環(huán)調用寫數(shù)據(jù)函數(shù)
LCD_en_dat(*s);
s ++;
}
}
四、調試要點與實驗現(xiàn)象
接好硬件(特別是連接好1602 液晶),通過冷啟動方式將程序所生成的。hex 文件下載到單片機運行后,復位單片機,然后可在學習板上看到液晶的顯示的字符(如圖5 所示)。
圖5 1602液晶顯示界面
調試時應注意的是,因為液晶的內部顯示操作需要一定的時間,因此如果單片機在對1602 液晶寫操作時不進行讀忙操作,就應該延時足夠的時間(可用延時函數(shù))以讓液晶內部能夠接收命令或數(shù)據(jù),否則會讓液晶無法工作或者工作不正常。此外對于V0 管腳,作為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,因此可通過一個電位器實現(xiàn)對其的電壓調整,前文提到,將其調節(jié)到0.3~0.4V 時對比度效果最好。
五、總結
本講介紹了字符型液晶1602 的工作原理并給出了實例,通過該講,讀者可以了解和掌握51 單片機驅動1602 液晶的方法。下講將講述單片機驅動帶字庫的128X64 液晶,敬請期待。
紅外遙控器相關文章:紅外遙控器原理
評論