LCD1602液晶顯示總結(jié)_第1頁
LCD1602液晶顯示總結(jié)_第2頁
LCD1602液晶顯示總結(jié)_第3頁
LCD1602液晶顯示總結(jié)_第4頁
LCD1602液晶顯示總結(jié)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、LCD1602液晶顯示應用總結(jié)一、1602里面儲存器有三種:CGROM、CGRAM、DDRAMCGROM保留了廠家生產(chǎn)時固化在LCM中的點陣型顯示數(shù)據(jù);CGRAM是留給用戶自己定義點陣型顯示數(shù)據(jù)的;DDRAM則是和顯示屏的內(nèi)容對應的。1602內(nèi)部的DDRAM有80字節(jié),而顯示屏上只有2行16列,共32個字符,所以二者不完整一一對應。默認狀況下,顯示屏上第一行的內(nèi)容對應DDRAM中80H到8FH的內(nèi)容,第二行的內(nèi)容對應DDRAM中C0H到CFH的內(nèi)容。DDRAM中90H到A7H、D0H到E7H的內(nèi)容是不顯示在顯示屏上的,可是在轉(zhuǎn)動屏幕的狀況下,這些內(nèi)容便可能被滾動顯示出來了。注:這里列舉的DDR

2、AM的地點正確來說應當是DDRAM地點+80H以后的值,因為在向數(shù)據(jù)總線寫數(shù)據(jù)的時候,命令字的最高位老是為1。DDRAM(DisplayDataRAM)就是顯示數(shù)據(jù)RAM,用來存放待顯示的字符代碼。共80個字節(jié),其地點和屏幕的對應關(guān)系以下:DDRAM相當于計算機的顯存,我們?yōu)榱嗽谄聊簧巷@示字符,就把字符代碼送入顯存,這樣該字符就能夠顯示在屏幕上了。相同LCD1602共有80個字節(jié)的顯存,即DDRAM。但LCD1602的顯示屏幕只有162大小,所以,其實不是全部寫入DDRAM的字符代碼都能在屏幕上顯示出來,只有寫在上圖所示范圍內(nèi)的字符才能夠顯示出來,寫在范圍外的字符不可以顯示出來。這樣,我們在程

3、序中能夠利用下邊的“光標或顯示挪動指令”使字符慢慢挪動到可見的顯示范圍內(nèi),看到字符的挪動成效。為了在液晶屏幕上顯示字符,就把字符代碼送入DDRAM。比如,假如想在屏幕左上角顯示字符A,那么就把字符A的字符代碼41H寫入DDRAM的00H地點處即可。至于怎么寫入,后邊會有說明。那么為何把字符代碼寫入DDRAM,就能夠在相應地點顯示這個代碼的字符呢?我們知道,LCD1602是一種字符點陣顯示器,為了顯示一種字符的字形,一定要有這個字符的字模數(shù)據(jù),什么叫字符的字模數(shù)據(jù),看看下邊的這個圖就理解了:的字模上圖的左側(cè)就是字符A的字模數(shù)據(jù),右側(cè)就是將左側(cè)數(shù)據(jù)用“”代表0,用“”代表1。進而顯示出A這個字形。

4、從下邊的圖能夠看出,字符A的高4位是0100,低4位是0001,合在一同就是01000001b,即41H。它恰巧與該字符的ASCII碼一致,這樣就給了我們很大的方便,我們能夠在PC上使用P2=A這樣的語法。編譯后,正好是這個字符的字符代碼。在LCD1602模塊上固化了字模儲存器,就是CGROM和CGRAM,HD44780內(nèi)置了192個常用字符的字模,存于字符產(chǎn)生器CGROM(CharacterGeneratorROM)中,此外還有8個同意用戶自定義的字符產(chǎn)生RAM,稱為CGRAM(CharacterGeneratorRAM)。下列圖(字模表)說了然CGROM和CGRAM與字符的對應關(guān)系。從RO

5、M和RAM的名字我們也能夠知道,ROM是早已固化在LCD1602模塊中的,只好讀??;而RAM是可讀寫的。也就是說,假如只要要在屏幕上顯示已存在于CGROM中的字符,那么只須在DDRAM中寫入它的字符代碼就能夠了;但假如要顯示CGROM中沒有的字符,比方攝氏溫標的符號,那么就只有先在CGRAM中定義,而后再在DDRAM中寫入這個自定義字符的字符代碼即可。和CGROM中固化的字符不一樣,CGRAM中自己沒有字符,所以要在DDRAM中寫入某個CGROM不存在的字符,一定在CGRAM中先定義后使用。程序退出后CGRAM中定義的字符也不復存在,下次使用時,一定從頭定義。上邊這個圖(如圖10)說明的是58

6、點陣和510點陣字符的字形和光標的地點。先來說58點陣,它有8行5列。那么定義這樣一個字符需要8個字節(jié),每個字節(jié)的前3個位沒有被使用。比如,定義攝氏溫標的符號0 x10,0 x06,0 x09,0 x08,0 x08,0 x09,0 x06,0 x00。設置CGRAM地點指令上邊這個圖說明的是設置CGRAM地點指令。從這個指令的格式中我們能夠看出,它共有aaaaaa這6位,一共能夠表示64個地點,即64個字節(jié)。一個58點陣字符共占用8個字節(jié),那么這64個字節(jié)一共能夠自定義8個字符。也就是說,上邊這個圖的6位地點中的DB5DB4DB3用來表示8個自定義的字符,DB2DB1DB0用來表示每個字符的

7、8個字節(jié)。這DB5DB4DB3所表示的8個自定義字符(0-7)就是要寫入DDRAM中的字符代碼。我們知道,在CGRAM中只好定義8個自定義字符,也就是只有07這8個字符代碼,但在下邊的這個表(如圖12)中一共有16個字符代碼(0000b-1111b)。實質(zhì)上,以下圖,它只好表示8個自定義字符(0000b=1000b,0001b=1001b挨次類推)。也就是說,寫入DDRAM中的字符代碼0和字符代碼8是同一個自定義字符。510點陣每個字符共占用16個字節(jié)的空間,所以CGRAM中只好定義4個這樣的自定義字符。那么怎樣在CGRAM中自定義字符呢?在上邊的介紹中,我們知道有一個設置CGRAM地點指令,

8、同寫DDRAM指令相像,只須設置好某個自定義字符的字模數(shù)據(jù),而后依據(jù)上邊介紹的方法,設置好CGRAM地點,挨次寫入這個字模數(shù)據(jù)即可。我們在后邊的例子中再進行說明。二、1602使用三條控制線:EN、RW、RS。此中EN起到近似片選和時鐘線的作用,RW和RS指示了讀、寫的方向和內(nèi)容。在讀數(shù)據(jù)(或許Busy標記)時期,EN線一定保持高電平;而在寫指令(或許數(shù)據(jù))過程中,EN線上一定送出一個正脈沖。RW、RS的組合一共有四種狀況,分別對應四種操作:RS0、RW0表示向LCD寫入指令。RS0、RW1表示讀取Busy標記。RS1、RW0表示向LCD寫入數(shù)據(jù)。RS1、RW1表示從LCD讀取數(shù)據(jù)。三、LCD1

9、602引腳定義:引腳號符號引腳說明引腳號符號引腳說明1VSS電源地9D2數(shù)據(jù)端口2VDD電源正極10D3數(shù)據(jù)端口3V0偏壓信號11D4數(shù)據(jù)端口4RS命令/數(shù)據(jù)12D5數(shù)據(jù)端口5RW讀/寫13D6數(shù)據(jù)端口6E脈沖使能14D7數(shù)據(jù)端口7D0數(shù)據(jù)端口15A背光正極8D1數(shù)據(jù)端口16K背光負極*說明:1、VSS接電源地2、VDD接+5V3、V0是液晶顯示的偏壓信號,可接10K的3296精細電位器?;蚴窍嗤柚档腞M065/RM063信號的藍白可調(diào)電阻。4、RS是命令/數(shù)據(jù)選擇引腳,接單片機的此中一個I/O口。當RS=0,選擇指令模式;RS=1,選擇數(shù)據(jù)模式。5、RW為讀/寫模式選擇引腳,接單片機的一個

10、I/O口,RW=0寫,向1602寫數(shù)據(jù)或是指令。RW=1讀,從1602讀取數(shù)據(jù)或是狀態(tài),假如是不需要進行讀取操作,能夠直接此位接Vss。6、E,LCD1602履行命令的使能信號,接單片機的一個I/O口。7、D0D7:LCD1602的并行數(shù)據(jù)輸入/輸出端口,能夠接單片機的隨意一個的8位的I/O端口(P0P3),假如是接P0口的話要接一個8位的上拉電阻。當應用4線并行驅(qū)動模式的時候,只要接4個并行的I/O端口。8、A:背光正極,能夠接一個1047的限流電阻接到VDD。9、K:背光負極,接VSS。四、LCD1602的基本操作:1、讀狀態(tài):RS=0,RW=1,E=高脈沖。輸出:D0D7為狀態(tài)字。2、讀

11、數(shù)據(jù):RS=1,RW=1,E=高脈沖。輸出:D0D7為數(shù)據(jù)。3、寫指令:RS=0,RW=0,E=高脈沖。輸出:無4、寫數(shù)據(jù):RS=1,RW=0,E=高脈沖。輸出:無。讀操作時序?qū)懖僮鲿r序時序時間參數(shù)五、LCD1602液晶顯示屏指令:1、工作方式設置指令:(一般0 x38):不關(guān)懷,也就是說這個位是0或1都能夠,一般取0。DL:設置數(shù)據(jù)接口位數(shù)。DL=1:8位數(shù)據(jù)接口(D7D0)。DL=0:4位數(shù)據(jù)接口(D7D4)。N=0:一行顯示。N=1:兩行顯示。F=0:58點陣字符。F=1:510點陣字符。說明:因為是寫指令字,所以RS和RW都是0。LCD1602只好用并行方式驅(qū)動,不可以用串行方式驅(qū)動。

12、而并行方式又能夠選擇8位數(shù)據(jù)接口或4位數(shù)據(jù)接口。這里我們選擇8位數(shù)據(jù)接口(D7D0)。我們的設置是8位數(shù)據(jù)接口,兩行顯示,58點陣,即0b00111000也就是0 x38。(注意:NF是10或11的成效是相同的,都是兩行58點陣。因為它不可以以兩行510點陣方式進行顯示,換句話說,這里用0 x38或0 x3c是相同的)。2、顯示開關(guān)控制指令(一般0 x0c)D=1:顯示開,D=0:顯示關(guān)。C=1:光標顯示,C=0:光標不顯示。B=1:光標閃耀,B=0:光標不閃耀。說明:這里的設置是顯示開,不顯示光標,光標不閃耀,設置字為0 x0c。3進入模式設置指令:I/D=1:寫入新數(shù)據(jù)后光標右移。I/D=

13、0:寫入新數(shù)據(jù)后光標左移。S=1:顯示挪動。S=0:顯示不挪動。說明:這里的設置是0 x06。4光標或顯示挪動指令:說明:在需要進行整屏挪動時,這個指令特別實用,能夠?qū)崿F(xiàn)屏幕的轉(zhuǎn)動顯示成效。初始化時不使用這個指令。5清屏指令:說明:消除屏幕顯示內(nèi)容。光標返回屏幕左上角。履行這個指令時需要一準時間。6光標歸位指令:說明:光標返回屏幕左上角,它不改變屏幕顯示內(nèi)容。7設置CGRAM地點指令:說明:這個指令在上邊已經(jīng)介紹過。用法在后邊例子中說明。8設置DDRAM地點指令:說明:這個指令用于設置DDRAM地點。在對DDRAM進行讀寫以前,第一要設置DDRAM地點,而后才能進行讀寫。前面我們說過,DDRA

14、M就是LCD1602的顯示存儲器。我們要在它上邊進行顯示,就要把要顯示的字符寫入DDRAM。相同,我們想知道DDRAM某個地點上有什么字符,也要先設置DDRAM地點,而后將它讀出到單片機。9讀忙信號和地點計數(shù)器AC:說明:這個指令用來讀取LCD1602狀態(tài)。關(guān)于單片機來說,LCD1602屬于慢速設施。當單片機向其發(fā)送一個指令后,它將去履行這個指令。這時假如單片機再次發(fā)送下一條指令,因為LCD1602速度較慢,前一條指令還未履行完成,它將不接受這新的指令,致使新的指令丟掉。所以這條讀忙指令能夠用來判斷LCD1602能否忙,可否接收單片機發(fā)來的指令。當BF=1,表示LCD1602正忙,不可以接受單

15、片機的指令;當BF=0,表示LCD1602安閑,能夠接收單片機的指令。RS=0,表示是指令;RW=1,表示是讀取。這條指令還有一個副產(chǎn)品:即能夠獲得地點記數(shù)器AC的值(addresscounter)。LCD1602保護了一個地點計數(shù)器AC,用來記錄下一次讀寫CGRAM或DDRAM的地點。需要重申的是:這條指令我一次也沒有履行成功。好多網(wǎng)友仿佛也是這樣。幸虧我們有此外的方法,也就是延時。經(jīng)過查察每條指令的履行時間,再經(jīng)過一些試驗,能夠確立指令的延時。這樣就能夠在上一條指令履行完成后再履行下一條指令了。10寫數(shù)據(jù)到CGRAM或DDRAM指令:說明:RS=1,數(shù)據(jù);RW=0,寫。指令履行時,要在DB

16、7DB0上先設置好要寫入的數(shù)據(jù),而后履行寫命令。11從CGRAM或DDRAM讀數(shù)據(jù)指令:說明:RS=1,數(shù)據(jù);RW=1,讀。先設置好CGRAM或DDRAM的地點,而后履行讀取命令。數(shù)據(jù)就被讀入后DB7DB0。五、1602LCD的一般初始化(復位)過程?延時15mS?寫指令38H(不檢測忙信號)?延時5mS?寫指令38H(不檢測忙信號)?延時5mS?寫指令38H(不檢測忙信號)?此后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號?寫指令38H:顯示模式設置?寫指令08H:顯示封閉?寫指令01H:顯示清屏?寫指令06H:顯示光標挪動設置?寫指令0CH:顯示開及光標設置七、實例:下邊我們就以一個實例來結(jié)

17、束這篇文章。先介紹一下背景:單片機最小系統(tǒng)(擴大了外面RAM62256)。采納STC89C52RC,晶振。以58點陣,162行,8位數(shù)據(jù)端口。第一在第一行顯示“IloveMCU!”,第二行顯示“LCD1602Test!”。延時一段時間,清屏。而后在第一行顯示自定義字符:攝氏溫標標記。第二行顯示圓周率(pai)標記。再延時一段時間,清屏。最后在第一行顯示“Welcometomyblog!”,顯示方式是從屏幕右邊移入,左面移出,循環(huán)往復。/File1#ifndef_ZHANGTYPE_H_#define_ZHANGTYPE_H_#defineuint8unsignedchar#defineuint

18、16unsignedshortint#defineuint32unsignedlongint#defineint8signedchar#defineint16signedshortint#defineint32signedlongint#defineuint64unsignedlonglongint#defineint64signedlonglongint#endif/File2#ifndef_FUN_H_#define_FUN_H_#include#includevoidDelay(uint16time);#endif/File3#includevoidDelay(uint16time)wh

19、ile(time-);/File4#ifndef_1602_H_#define_1602_H_#include#include/變量種類#include/常用函數(shù)#defineSETMODE0 x38/16*2顯示,5*7點陣,8位數(shù)據(jù)接口#defineDISOPEN0 x0C/顯示開,不顯示光標,光標不閃耀#defineDISMODE0 x06/讀寫字符后地點加1,屏顯不挪動#defineSETADDR0 x80/設置數(shù)據(jù)地點指針初始值#defineCLEAR0 x01/清屏,數(shù)據(jù)指針清零#defineRET0 x02/回車,數(shù)據(jù)指針清零#definePORTP2/I/O口sbitRS=P1

20、0;sbitRW=P11;sbitE=P12;voidInit1602(void);/初始化1602voidWrite1602_Com(uint8com);/寫命令voidWrite1602_Dat(uint8dat);/寫數(shù)據(jù)voidCheckBusy(void);/檢查忙voidWrite1602_One_Dat(uint8X,uint8Y,uint8dat);/寫一個數(shù)據(jù)voidWrite1602_Str(uint8addr,uint8length,uint8*pbuf);/寫一個數(shù)據(jù)串#endif/File5#includevoidWrite1602_Com(uint8com)E=0;

21、RS=0;Delay(50);RW=0;/命令延時寫Delay(50);PORT=com;/端口賦值Delay(50);E=1;/高脈沖Delay(50);E=0;voidWrite1602_Dat(uint8dat)E=0;RS=1;/數(shù)據(jù)Delay(50);/延時RW=0;/寫Delay(50);PORT=dat;/端口賦值Delay(50);E=1;/高脈沖Delay(50);E=0;voidCheckBusy(void)uint8temp;RS=0;RW=1;/命令讀E=0;while(1)PORT=0 xFF;E=1;/temp=PORT;E=0;if(temp&0 x80)=0)b

22、reak;/端口為輸入高脈沖檢查BF位能否為0voidInit1602(void)Write1602_Com(SETMODE);/模式設置Delay(500);Write1602_Com(DISOPEN);/顯示設置Delay(500);Write1602_Com(DISMODE);/顯示模式Delay(500);Write1602_Com(CLEAR);/清屏Delay(500);voidWrite1602_One_Dat(uint8x,uint8y,uint8dat)x&=0 x0f;y&=0 x01;if(y)x|=0 x40;x|=0 x80;Write1602_Com(x);Write1602_Dat(dat);voidWrite1602_Str(uint8addr,uint8length,uint8*pbuf)uint8i;Write1602_Com(addr);for(i=0;iWrite1602_Dat(pbufi);/File6*名稱:主文件功能:測試日期:2014/09/09*/#include#includeuint8codehot8=/攝氏溫度字模0 x10,0 x06,0 x09,0 x08,0 x08,0 x09,0 x06,0 x00;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論