LCD1602液晶顯示屏
LCD ( Liquid Crystal Display 的簡稱)液晶顯示器。能夠同時顯示16x2,32個字符,是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。
LCD1602液晶顯示器是廣泛使用的一種字符型液晶顯示模塊。它是由字符型液晶顯示屏(LCD)、控制驅動主電路HD44780及其擴展驅動電路HD44100,以及少量電阻、電容元件和結構件等裝配在PCB板上而組成。該顯示屏的優(yōu)點是耗電量低、體積小、輻射低。
LCD1602主要用來顯示數(shù)字、字母、圖形以及少量自定義字符。可以顯示2行16個字符,擁有16個引腳,其中8位數(shù)據(jù)總線D0-D7,和RS、R/W、EN三個控制端口,工作電壓為5V,并且?guī)в凶址麑Ρ榷日{(diào)節(jié)V0和背光源AK。
注:
我們所用的LCD屏的命名,基本都是按照其分辨率來進行命名的 比如lcd1602 就是分辨率為16×2 lcd12864 就是分辨率為128×64
LCD1602主要參數(shù)
顯示字符:16×2個字符
工作電壓:4.5~5V
工作電流:2.0mA
工作溫度:-20°C~70°C
模塊最佳工作電壓:5.0V
單個字符尺寸2.95×4.35(W×Hmm)
引腳:16腳
LCD發(fā)光原理
首先要知道:
液晶:液晶是液態(tài)晶體,是一種幾乎透明的物質,是不能發(fā)光的
光源:LCD屏幕的光來自于屏幕最下面的背光板發(fā)出的光源
偏光片:一種鏡片,只有特定方向的光線(垂直偏振光)才能通過,而其它方向的光線不能通過
兩塊偏光片的柵欄角度相互垂直時光線就完全無法通過
液晶的物理特性是:液晶控制光線通過的程度是由加在液晶上的電壓強弱來控制的。當通電時導通,排列變的有秩序,使光線容易通過,光的路徑不改變;不通電時排列混亂,阻止光線通過,改變光的路徑。
LCD屏幕的組成:
上偏光片,和下偏光片,使背光源的光只能通過下偏光片,不能通過下偏光片
彩色濾光片:不同強度的光經(jīng)過紅綠藍三色濾光片之后,會形成各種各樣的顏色
液晶層:通過通電方式來控制液晶的分子排列,從而改變背光源發(fā)出的光的路徑,如果通電則不改變路徑,光不能通過上偏光片,如果不通電則改變光的路徑,光可以通過上偏光片,從而進行顯示。
TFT基板:排列有序的薄膜晶體管,每一個薄膜晶體管都可以調(diào)整其電壓,從而使單個晶體管范圍內(nèi)液晶進行不同的亮度和顏色顯示,也就是我們說的像素點
背光源:提供均勻的背景光源
也就是說:如果想要LCD屏幕不顯示,那么只需要背光源的光不穿過上偏光片即可,如果需要LCD屏幕顯示字符,需要背光源的光穿過上偏光片,而是否能穿過上偏光片,需要看液晶層的分子排列,而液晶層的分子排列,是由加在液晶上的電壓強弱來控制的,
也就是最后我們只需要控制每個像素點的電壓,就可以達到LCD屏幕顯示的效果。這樣就可以通過不同區(qū)域的電壓控制使液體水晶重新排列來顯示出各種圖形圖像以及字符。
LCD和OLED區(qū)別:
LCD ( Liquid Crystal Display 的簡稱)液晶顯示器。
OLED(Organic Light-Emitting Diode, OLED)本質是LED發(fā)光二極管,當兩端加上正向電壓,半導體中的載流子發(fā)生復合引起光子發(fā)射而產(chǎn)生光,又稱為有機電激光顯示。
簡單地說,LCD與LED是兩種不同的顯示技術,LCD是由液態(tài)晶體組成的顯示屏,而LED則是由發(fā)光二極管組成的顯示屏。本質區(qū)別二是LCD需要背光源才能亮,OLED是發(fā)光二極管自發(fā)光,不需要額外的光源.
LCD1602引腳接線:
各引腳的功能介紹如下:
引腳1(VSS/GND)::地引腳
引腳2(VDD/VCC):電源引腳
引腳3(VL):液晶顯示器對比度引腳,接正電源時對比度最弱,接地時對比度最高,使用時可以通過外接一個電位器調(diào)整其對比度。
引腳4(RS):寄存器選擇腳,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。
引腳5(R/W):讀(read)/寫(write)信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或顯示地址;當RS為低電平,R/W為高電平時,可以讀忙信號;當RS為高電平,R/W為低電平時,可以寫入數(shù)據(jù)。
引腳6(E):使能端,當E端由高電平跳變?yōu)榈碗娖綍r,液晶模塊執(zhí)行命令。
引腳7-14(D0~D7):8位雙向數(shù)據(jù)線 用于單片機向1602寫入數(shù)據(jù)和從1602讀取數(shù)據(jù)
引腳15:背光源正極
引腳16:背光源負極
LCD1602共16個管腳,但分類很好分類,
其中一個VCC和GND用于給1602供電,
一個VCC和GND用于給背光源供電,
剩下三個功能引腳:RS(數(shù)據(jù)命令選擇端),R/W(讀寫選擇端),E(使能信號),
還有8個D0~D7分別為8位雙向數(shù)據(jù)線傳輸數(shù)據(jù)。
RS為寄存器選擇,高電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器。
R/W為讀寫選擇,高電平進行讀操作,低電平進行寫操作。
E端為使能端,后面和時序聯(lián)系在一起。
LCD1602的RAM地址映射及標準字庫表
LCD1602,總共顯示為16行2列,對應著32個RAM地址,在使用的時候,需要在哪個位置顯示,就寫入對應的RAM地址,然后再寫入需要的字符,對應就會顯示該字符。
液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示LCD此時不忙,這時才能寫指令和數(shù)據(jù),否則此指令失效。要顯示字符時要先輸入顯示字符地址(寫指令),也就是告訴模塊在,哪里顯示字符,然后再寫入需要顯示的字符(寫數(shù)據(jù)),才能夠正常顯示字符
下圖是1602的內(nèi)部顯示地址
一共32個地址,對應2行16列
標準字庫表(CGROM):
這個ROM中固化了一些我們常用的ASCII字符以及部分日文字符的點陣數(shù)據(jù),需要寫入那個字符,就直接設置對應進制碼就可以,比如大寫的字母A,代碼是0100 0001(41H) 與ASCII碼一致。也就是表中的ASCII碼字符的地址和實際的ASCII碼字符是一樣的
LCD1602讀寫操作
LCD1602分為讀操作和寫操作
其中讀操作可以分為讀狀態(tài)和讀數(shù)據(jù),寫操作可以分為寫指令和寫數(shù)據(jù)。
讀狀態(tài):讀取LCD引腳狀態(tài),返回為狀態(tài)字,D0-D6為當前LCD數(shù)據(jù)指針的地址 D7為是否允許讀寫操作(即檢查LCD是否處于忙狀態(tài))
讀數(shù)據(jù):讀取D0-07內(nèi)的數(shù)據(jù)
寫指令:寫入LCD的控制指令,比如清屏,顯示開關等
寫數(shù)據(jù):寫入需要顯示的數(shù)據(jù),比方說要顯示字符a,就寫入0100 0001(41H)
以51單片機為例,D0-D7接到P0口 RW RW EN接到任意兩個口
讀寫操作的時序圖如下:
讀操作時序:
寫操作時序:
我們來分析一下時序圖,當我們要寫指令的時候,RS置為低電平,RW置為低電平,EN置為低電平,然后將指令數(shù)據(jù)送到數(shù)據(jù)口D0~D7,延時tsp1,讓1602準備接收數(shù)據(jù),這時候將EN拉高,產(chǎn)生一個上升沿,這時候指令就開始寫入LCD,延時一段時間,將EN置低電平。
當我們要寫數(shù)據(jù)的時候,RS置為高電平,RW置為低電平,EN置為低電平,然后將指令數(shù)據(jù)送到數(shù)據(jù)口D0~D7,延時tsp1,讓1602準備接收數(shù)據(jù),這時候將EN拉高,產(chǎn)生一個上升沿,這時候數(shù)據(jù)就開始寫入LCD,延時一段時間,將EN置低電平。
我們以51單片機為例,D0-D7接到P0口上,RW RW EN任意三個引腳,則寫指令和寫數(shù)據(jù)代碼如下:
寫指令:
/*********************************************************/
// 1602液晶寫命令函數(shù),cmd就是要寫入的命令
/*********************************************************/
void LcdWriteCmd(uchar cmd)
{
LcdRs_P = 0; //選擇寫指令
LcdRw_P = 0; //選擇寫
LcdEn_P = 0; //E使能拉低
P0=cmd; //把指令送入P0
DelayMs(2); //延時一小會兒,讓1602準備接收數(shù)據(jù)
LcdEn_P = 1; //使能線電平變化上升沿,命令送入1602的8位數(shù)據(jù)口
DelayMs(2);//延時,讓數(shù)據(jù)發(fā)送
LcdEn_P = 0;//使能線拉低
}
寫數(shù)據(jù):
/*********************************************************/
// 1602液晶寫數(shù)據(jù)函數(shù),dat就是要寫入的數(shù)據(jù)
/*********************************************************/
void LcdWriteData(uchar dat)
{
LcdRs_P = 1; //選擇寫數(shù)據(jù)
LcdRw_P = 0; //選擇寫
LcdEn_P = 0; //E使能拉低
P0=dat; //把數(shù)據(jù)送入P0
DelayMs(2); //延時一小會兒,讓1602準備接收數(shù)據(jù)
LcdEn_P = 1; //使能線電平變化上升沿,命令送入1602的8位數(shù)據(jù)口
DelayMs(2);//延時,讓數(shù)據(jù)發(fā)送
LcdEn_P = 0;//使能線拉低
}
LCD1602的指令操作
LCD1602一共有11條指令,下面我們一一解讀,
1602液晶模塊的讀寫操作,屏幕和光標的操作都是通過指令來實現(xiàn)的。(1為高電平,0為低電平)
指令1:清顯示,指令碼01H,
功能:
光標復位到地址00H位置,
LCD顯示DDRAM的內(nèi)容全部寫入” “的ASCII碼20H
指令2:光標復位,光標返回到地址00H
功能:
光標復位到地址00H位置
LCD顯示DDRAM的內(nèi)容不變
指令3:光標和顯示位置設置
功能:
I/D,寫入新數(shù)據(jù)后光標移動方向,高電平右移,低電平左移,
S:寫入新數(shù)據(jù)后顯示屏字符是否整體左移或右移一個字符,高電平表示有效,低電平表示無效
指令4:顯示開關控制
功能:
D(Dispaly):控制整體的顯示開與關,高電平表示開顯示屏,低電平表示關顯示屏
C(Cursor):控制光標的開與關,高電平表示有光標,低電平表示無光標
B(Blink):控制光標是否閃爍,高電平閃爍,低電平不閃爍
指令5:光標或顯示移位
SC=0,RL=0 :光標左移
SC=0,RL=1 : 光標右移
SC=1,RL=0時,字符和光標都左移
SC=1,RL=1時字符和光標都右移
指令6:功能設置命令
DL:DL=1代表數(shù)據(jù)長度為8位,DL=0代表數(shù)據(jù)長度為4位
N:低電平時只有一行可以顯示,高電平時兩行都可以顯示,
F:低電平時一個字符大小為5X7的點陣字符,高電平時一個字符大小為5X10的點陣字符。
指令7:CGRAM地址設置
功能:
LCD1602的CGRAM可以設置存儲自定義字符,它共有6位,一共可以表示64個地址,即64個字節(jié)。一個5×8點陣字符共占用8個字節(jié),那么這64個字節(jié)一共可以自定義8個字符。
指令8:DDRAM地址設置
指定DDRAM地址
指令9:讀忙信號和光標地址
BF:忙標志位,高電平表示忙,此時模塊不能接收命令或數(shù)據(jù),如果為低電平表示不忙
指令10:寫數(shù)據(jù)到CGRAM或DDRAM指令
指令11·:從CGRAM或DDRAM讀數(shù)據(jù)指令
功能:
讀取DDRAM或CGRAM中的內(nèi)容
LCD初始化
LCD初始化的過程,也就是對LCD進行寫指令的過程,具體的指令如下:
寫指令38H:162顯示,57點陣,8位數(shù)據(jù)口 (指令6)
寫指令0CH:開啟顯示屏,關光標,光標不閃爍 (指令4)
寫指令0x06:顯示地址地址加1,即寫一個數(shù)據(jù)后,顯示位置右移一位 (指令3)
寫指令01H:顯示清屏
/*********************************************************/
// 1602液晶功能初始化
/*********************************************************/
void LcdInit()
{
LcdWriteCmd(0x38); // 16*2顯示,5*7點陣,8位數(shù)據(jù)口
LcdWriteCmd(0x0C); // 開顯示,不顯示光標
LcdWriteCmd(0x06); // 地址加1,當寫入數(shù)據(jù)后光標右移
LcdWriteCmd(0x01); // 清屏
}
LCD寫地址
其實本質也就是指令8,只不過我們在寫的時候,最高位D7是要求必須要為1 ,也就是實際是7位地址
比方說我們想要寫入第二行第一列,那么地址是40H(0100 0000),是不是直接寫就行了呢?,顯然是不行的,因為最高位D7不是1.所以需要加上一個80H(1000 0000),也就是實際寫入的為40H(0100 0000)+80H(1000 0000)=C0H(1100 0000)
那這樣子的話,第一行起始地址就是(1000 0000)80H,第二行起始地址是(1100 0000)C0H
代碼如下:
/*********************************************************/
// 液晶光標定位函數(shù)
/*********************************************************/
void LcdGotoXY(uchar line,uchar column)
{
// 第一行
if(line==0)
LcdWriteCmd(0x80+column);
// 第二行
if(line==1)
LcdWriteCmd(0x80+0x40+column);
}
LCD寫數(shù)據(jù)
這個就相對比較簡單,直接用一個指針,判斷字符是否結束,然后寫入數(shù)據(jù)就可以
/*********************************************************/
// 液晶輸出字符串函數(shù)
/*********************************************************/
void LcdPrintStr(uchar *str)
{
while(*str!='?')
LcdWriteData(*str++);
}
代碼及使用實例:
功能:LCD1602英文顯示字符
代碼如下:
#include
#include
#define uchar unsigned char// 以后unsigned char就可以用uchar代替
#define uint unsigned int// 以后unsigned int 就可以用uint 代替
sbit LcdRs_P = P1^1;// 1602液晶的RS管腳
sbit LcdRw_P = P1^2;// 1602液晶的RW管腳
sbit LcdEn_P = P1^3;// 1602液晶的EN管腳
/*********************************************************/
// 毫秒級的延時函數(shù),time是要延時的毫秒數(shù)
/*********************************************************/
void DelayMs(uint time)
{
uint i,j;
for(i=0;i
-
傳感器
+關注
關注
2560文章
52154瀏覽量
761411 -
液晶
+關注
關注
6文章
613瀏覽量
70137 -
顯示屏
+關注
關注
28文章
4561瀏覽量
75668 -
LCD1602
+關注
關注
14文章
607瀏覽量
53186
原文標題:【常用傳感器】LCD1602液晶工作原理詳解及例程代碼
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦

#硬聲創(chuàng)作季 LCD1602液晶顯示屏工作原理講解
怎樣使用單片機去控制LCD1602液晶顯示屏顯示時間等信息
lcd1602顯示原理,LCD1602液晶顯示器的分類有哪些?
使用51單片機設計液晶顯示屏LCD1602顯示的計算器程序免費下載

lcd1602液晶顯示屏介紹_lcd1602引腳功能
LCD1602顯示屏的資料合集免費下載

評論