LCD1602液晶显示模块学习笔记
生活随笔
收集整理的這篇文章主要介紹了
LCD1602液晶显示模块学习笔记
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
LCD1602液晶顯示模塊
- 一、初識(shí)LCD602
- 1.1.實(shí)物圖
- 1.2.引腳圖
- 1.3.引腳功能說(shuō)明
- 二、顯示位置
- 三、顯示內(nèi)容
- 四、指令集
- 五、工作時(shí)序
- 5.1.寫(xiě)操作時(shí)序
- 5.2.讀操作時(shí)序
- 六、編程思路
- 6.1.寫(xiě)數(shù)據(jù)
- 6.2.寫(xiě)指令
- 6.3.初始化
- 6.4.讀數(shù)據(jù)(讀忙信號(hào))
聲明:本文僅供學(xué)習(xí)交流,部分資料來(lái)源于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系刪除!
一、初識(shí)LCD602
LCD1602(Liquid Crystal Display), 每行可顯示16個(gè)字符共2行。
1.1.實(shí)物圖
1.2.引腳圖
1.3.引腳功能說(shuō)明
Vss:電源接地。
VDD:電源正極。
VL:液晶顯示偏壓。可以接0~5V調(diào)節(jié)屏幕的對(duì)比度,電壓越高對(duì)比度越低,對(duì)比度越高顯示效果越鮮艷。
RS:數(shù)據(jù)/命令選擇端。RS=1時(shí)選擇數(shù)據(jù)寄存器,RS=0時(shí)選擇指令寄存器。
RW:讀寫(xiě)選擇端。RW=1時(shí)讀操作(讀取LCD內(nèi)數(shù)據(jù)),RW=0時(shí)寫(xiě)操作(向LCD寫(xiě)入數(shù)據(jù))。
E:使能信號(hào)。當(dāng)E為下降沿(從高電平到低電平)時(shí)LCD執(zhí)行寫(xiě)入的指令。
D0~D7:8位雙向數(shù)據(jù)總線。
A:背光源正極
K:背光源負(fù)極
二、顯示位置
- LCD1602內(nèi)置了一個(gè)80字節(jié)的DDRAM,用來(lái)寄存需要顯示的內(nèi)容。CGROM存放了160個(gè)不同的字符圖形,下面會(huì)有詳細(xì)介紹。
- DDRAM雖然可以存放80個(gè)顯示地址,但是LCD1602每行只能顯示前16個(gè)地址上的字符,一般只會(huì)用到每行的前16個(gè)地址。
- 如果想要在第一行第二列顯示字符’A’,該怎么選擇這個(gè)地址呢?
這里有一個(gè)容易出錯(cuò)的點(diǎn),第一行第二列的地址是01H,A的代碼為41H。這時(shí)我們向DDRAM的01H寫(xiě)入數(shù)據(jù)41H時(shí),并不能得到想要的效果。選擇顯示位置時(shí)需要在01H的基礎(chǔ)上加上80H,因?yàn)橄駾DRAM寫(xiě)入數(shù)據(jù)時(shí),數(shù)據(jù)總線最高位DB7始終保持為1。這里可以參考指令集中的指令8。
三、顯示內(nèi)容
- LCD1602內(nèi)置一個(gè)字符存儲(chǔ)器CGROM,存放了192個(gè)點(diǎn)陣字符圖形。
- 這些字符的二進(jìn)制代碼與計(jì)算機(jī)中的大多一致,我們?cè)谟肅語(yǔ)言編程時(shí)也可以直接寫(xiě)P0=‘A’.
四、指令集
- LCD1602內(nèi)部控制器共有11條控制指令,讀/寫(xiě)操作、屏幕、光標(biāo)操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的,通過(guò)DB7~DB0的8位數(shù)據(jù)傳輸數(shù)據(jù)和指令。
1、清屏指令。
功能:清除DDRAM(清顯示)和AC值(光標(biāo)復(fù)位)
2、光標(biāo)復(fù)位指令。
功能:AC值設(shè)為00H(光標(biāo)復(fù)位),DDRAM內(nèi)容不變。
3、輸入模式設(shè)置指令。
功能:I/D用來(lái)控制DDRAM地址+1或-1,SH用來(lái)控制顯示畫(huà)面左移或右移。
I/D=1時(shí),光標(biāo)右移且DDRAM地址+1。
I/D=0時(shí),光標(biāo)左移且DDRAM地址-1。
讀操作時(shí)或SH=0時(shí)顯示不移位。
寫(xiě)操作且SH=1時(shí),如果I/D=1,顯示左移,I/D=0,顯示右移
4、顯示開(kāi)關(guān)控制指令。
功能:D控制顯示開(kāi)關(guān),C控制光標(biāo)開(kāi)關(guān),B控制光標(biāo)閃爍。
D=1 顯示開(kāi) D=0 顯示關(guān)
C=1 光標(biāo)開(kāi) C=0 光標(biāo)關(guān)
B=1 光標(biāo)閃爍 B=0 光標(biāo)靜止
5、光標(biāo)、畫(huà)面位移指令。
功能:S/C=1選擇屏幕,S/C=0選擇光標(biāo)。
R/L=1右移,R/L=0左移。
二者分別為
00:光標(biāo)左移,AC值-1
01:光標(biāo)右移,AC值+1
10:屏幕左移,光標(biāo)不動(dòng)
11:屏幕右移,光標(biāo)不動(dòng)
6、功能設(shè)置指令。
功能:選擇數(shù)據(jù)總線位數(shù)、顯示行數(shù)以及點(diǎn)陣大小。
DL控制數(shù)據(jù)線位數(shù),N控制顯示行數(shù),F控制點(diǎn)陣大小。
DL=1選擇8位數(shù)據(jù)線,N=1選擇2行顯示,F=1選擇511點(diǎn)陣。
DL=0選擇4位數(shù)據(jù)線,N=0選擇1行顯示,F=0選擇58點(diǎn)陣。
7、CGRAM地址設(shè)置指令。
功能:用戶自定義字符。
8、DDRAM地址設(shè)置指令。
功能:告訴DDRAM在哪個(gè)位置顯示字符。
注意DB7始終為1,無(wú)論要顯示什么字符DB7位都要保持為1。
即起始地址 = 00H+1000 0000(80H)
9、讀忙信號(hào)及AC值。
功能:當(dāng)BF=1,不能接收數(shù)據(jù)或指令。
BF=0,可以接收數(shù)據(jù)或指令
10、寫(xiě)數(shù)據(jù)。
功能:RS=0 RW=0 E=下降沿 DB7~DB0=指令。
RS=1 RW=0 E=下降沿 DB7~DB0=數(shù)據(jù)。
11、讀數(shù)據(jù)。
功能:RS=0 RW=1 E=1 讀狀態(tài),RS=1 RW=1 E=1 讀數(shù)據(jù)
當(dāng)RS和RW都為1時(shí)可以讀忙信號(hào)。
五、工作時(shí)序
5.1.寫(xiě)操作時(shí)序
5.2.讀操作時(shí)序
六、編程思路
6.1.寫(xiě)數(shù)據(jù)
write_data(unsigned char show_data){read_busy_flag() // 判忙RS = 1; // RS為高電平,選擇數(shù)據(jù)寄存器RW = 0; // RW為低電平,寫(xiě)操作E = 0; // E使能端拉低Px = show_data; // 將數(shù)據(jù)賦給8位數(shù)據(jù)總線DB0-DB7,這里的Px為L(zhǎng)CD上8位數(shù)據(jù)總線所連接的單片機(jī)IO端口delay(); // 延時(shí)E = 1; // 使能端拉高delay(); // 延時(shí)E = 0; // 使能端拉低,下降沿有效,數(shù)據(jù)寫(xiě)入DDRAM}6.2.寫(xiě)指令
write_cmd(unsigned char cmd){read_busy_flag(); // 判忙RS = 0; // RS為高電平,選擇指令寄存器RW = 0; // RW為低電平,寫(xiě)操作Px = cmd; // 將指令賦給8位數(shù)據(jù)總線DB0-DB7delay(); // 延時(shí)E = 1; // 使能端拉高delay(); // 延時(shí)E = 0; // 使能端拉低,下降沿有效。}6.3.初始化
lcd_init(){write_cmd(0x06) // 指令5,屏幕不動(dòng),地址+1write_cmd(0x38); // 指令6,16*2,5*8點(diǎn)陣8位數(shù)據(jù)write_cmd(0x0c); // 指令4,顯示開(kāi)光標(biāo)關(guān)write_cmd(0x01); // 指令1,清屏}6.4.讀數(shù)據(jù)(讀忙信號(hào))
read_busy_flag(){unsigned char flag; // flag為L(zhǎng)CD狀態(tài)標(biāo)志Px = 0xFF; // 給8位數(shù)據(jù)總線賦值11111111RS = 0; // 選擇指令寄存器,讀取LCD狀態(tài)字RW = 1; // 讀操作do{E = 1; // 使能端拉高flag = Px; // 讀取LCD狀態(tài)E = 0; // 使能端拉低} while(flag & 0x80); // 如果DB7依然為1,表示忙,直到DB7為0時(shí)跳出}總結(jié)
以上是生活随笔為你收集整理的LCD1602液晶显示模块学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OSPF虚链路
- 下一篇: AMM终极笔记——五大类无常损失解决方案