3分钟了解LCD1602液晶显示屏的使用
1.簡介
作為各類單片機實物設計的常用顯示屏,LCD1602是一種專門用于顯示字母、數字、符號等點陣式LCD,其1602是指LCD顯示的內容為16X2,即可以顯示兩行,每行16個字符(1個漢字占用2個字符)。
?
2.?硬件參數
(1)LCD1602主要技術參數
-
顯示容量:16×2個字符
-
芯片工作電壓:4.5—5.5V
-
工作電流:2.0mA(5.0V)
-
模塊最佳工作電壓:5.0V
-
字符尺寸:2.95×4.35(W×H)mm
?
?
(2)引腳定義
LCD1602引腳主要有邏輯電源引腳VDD,VSS;背光帶電源引腳BLA,BLK;數據引腳D0-D7、RS、R/W、EN;偏壓信號引腳VL;其中:
-
VL引腳:為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度;
-
RS引腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器
-
R/W引腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。
-
EN引腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。
?
(3)電路圖
其中可調電阻P用于調整顯示器的對比度。電阻R作為限流電阻,防止過流燒壞顯示屏背光。
?
3.?控制程序
LCD1602顯示屏控制程序簡化下來,也相對簡單,只需要實現寫數據、寫指令、初始化三個控制函數即可實現對LCD1602的控制。(寫操作一般不用,這里就省略不說)
(1)寫操作時序
要實現下面的寫數據和寫指令函數,都是以寫操作時序來進行編程,實現有效的控制;其中,可以通過寫時序和RS引腳的定義,寫數據和寫指令的區別在于RS引腳的電平;RS為高電平時,寫數據;RS為低電平時,寫指令。
(2)寫數據函數
//寫數據 void write_data(uchar date) {LCDRS=1;P0=date;LCDdelay(5);LCDEN=1;LCDdelay(5);LCDEN=0; }?
(3)寫指令函數
//寫命令 void write_com(uchar com) {LCDRS=0;P0=com;LCDdelay(5);LCDEN=1;LCDdelay(5);LCDEN=0; }?
(4)初始化函數
LCD1602初始化需要做以下設置:
a.設置寫操作:R/W設為低電平;
b.屏幕設置模式:寫指令38H;
c.打開顯示,關閉光標:寫指令0CH;
d.設置顯示光標移動位置:寫指令06H;
e.設置字符顯示位置:寫指令(字符顯示的起始位置);
void Init1602() {uchar i=0;LCDRW = 0;write_com(0x38);//屏幕初始化write_com(0x0c);//打開顯示 無光標 無光標閃爍write_com(0x06);//當讀或寫一個字符是指針后一一位write_com(0x01);//清屏write_com(0x80);//設置位置 }注:由于對LCD1602進行控制時不需要實現讀操作,所以R/W在初始化后恒為低電平(或者此引腳直接對地短路)。
?
4.?顯示字符
要在LCD1602上顯示特定的字符,實際上就是對LCD1602的DDRAM上寫入對應的數據,顯示屏便顯示你想要的字符。
(1)DDRAM地址映射圖
從RAM可以看出來,是讀的意思,地址與顯示位置如下,每行40個地址,1602只用到前16個,共兩行,對應關系如圖:?
根據寫指令格式,由于地址為7位,在寫入地址時,第8位恒為1,如圖:
當我們想在指定位置寫入內容時,要先指定地址,如在第一行第一位寫入,地址位是00H,再加上DB7的1,即80H(0010000000),第二行第一位是40H,再加上DB7的1,即C0H(0011000000),依次類推。
比如要在第1行第3位寫入“HELLO WOLRD”,即先寫入地址,再寫入數據:
write_com(0x40+0); //第1行第3位 write_com(‘H’); write_com(‘O’); ..... write_com(‘D’);如果是寫在第2行第2位:
write_com(0x40+0x80+2); //第2行第2位//數據與上面一樣(2)顯示函數
為了程序的簡潔與方便,我們將顯示程序整合成一個顯示函數:
?????
void Display_1602(uchar x,uchar y,uchar *str){ unsigned char addr; if (y == 0) { addr = 0x00 + x; //第一行的x位置顯示 } else { addr = 0x40 + x; //第二行x的位置顯示 } write_com(addr + 0x80); while (*str != '\0') { write_data(*str++); }}????? 要實現上面顯示就比較簡單:
第1行第3位顯示“HELLO WOLRD”:
Display_1602(3,1,”HELLO WOLRD”);第2行第2位顯示“HELLO WOLRD”:
Display_1602(2,2,”HELLO WOLRD”);?
需要更多關于LCD1602資料
關注微信公眾號“小亮的物聯網之路”
?
?
總結
以上是生活随笔為你收集整理的3分钟了解LCD1602液晶显示屏的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [ProblemSolving]ut下载
- 下一篇: php100网站怎么了