




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、LCD1602液晶顯示器簡介一概述液晶(LiquidCrystal)是一種高分子材料,因其特殊的物理、化學(xué)、光學(xué)特性,廣泛應(yīng)用輕薄顯示器上。液晶顯示器(LiquidCrystalDisplay,LCD)的主要原理是以電流刺激液晶分子產(chǎn)生點(diǎn)、線、面并配合背部燈管構(gòu)成畫面。各種型號的液晶通常是按照顯示字符的行數(shù)或液晶點(diǎn)陣的行、列數(shù)來命名。例如,1602表示每行顯示16個(gè)字符,一共可以顯示兩行。這類液晶通常稱為字符型液晶,只能顯示ASCII碼字符。12232表示液晶顯示畫面由122列、32行組成,共有122*32個(gè)點(diǎn)來顯示各種圖形。用戶可以通過程序控制這些點(diǎn)中任何一個(gè)點(diǎn)顯示或不顯示,從而構(gòu)成各種圖形
2、畫面。因此,12232稱為圖形型液晶。液晶體積小,功耗低,顯示操作簡單。但其有致命的弱點(diǎn),即使用溫度范圍很窄。通用型液晶工作溫度為0到+55攝氏度,存儲溫度為-20到+60攝氏度。二LCD160211602的外形尺寸(毫米)匚匚匚L05OO1.3C3ggcSiJf、l一1QOOOOOO0.Q75.073711602的外形尺寸(毫米)匚匚匚L05OO1.3C3ggcSiJf、l一1QOOOOOO0.Q75.07370p-251oooooooooqIS創(chuàng).5Rl.25?無背光9.5-5.5一-r*底那LED背光130-9.0一-r1.5-2主要技術(shù)參數(shù)顯示容量:16X2個(gè)字符芯片工作電壓:4.55
3、.5V工作電流:2.ChiAC5.OVJ模塊最陛工作電壓:5.OV字符尺寸:2.95X4.35XHnn 接口信號說明編號符號引腳說明媚號符號引腳說明1VSS電源地9D2Data1/C2VDD電源正極10D3Data1/C3VL液晶顯示偏壓信號11D4Data1/C4RS數(shù)據(jù)/命令選澤端(H/L)12D5Data1/C5R/W讀/寫選擇端(H/L)13DSData1/C6E使能信號14D7Data1/C1DODataI/O15BLA背光源正極8D1DataI/O16BLK背光源負(fù)輾讀狀態(tài)*寫指令:讀數(shù)據(jù)*寫數(shù)據(jù)*輸入:輸入;輸入:輸入:RS=_,RW=H,E=HRS=_,RW=L,DO讀狀態(tài)*寫
4、指令:讀數(shù)據(jù)*寫數(shù)據(jù)*輸入:輸入;輸入:輸入:RS=_,RW=H,E=HRS=_,RW=L,DOD?二指令碼,E二高脈沖RS=H,RW=H,E=HRS=H,RW=L,D0-D7=數(shù)捱,E二高脈沖輸出:輸出;輸出:輸出:D0-D7=U態(tài)字無D0-D7二數(shù)據(jù)無4RAM地址映射圖控制器內(nèi)部帶有80B的RAM緩沖區(qū)。對應(yīng)關(guān)系如下圖所示。LCDQCDID2C30105DGC7C8osQADCCD0EOFID274C4142434445464748494A4B4C4D4L4F507向圖中的000F、404F地址中的任意處寫入顯示數(shù)據(jù)時(shí),液晶可立即顯示出來;當(dāng)寫入到1027或5067地址時(shí),必須通過移屏指令
5、將他們一移入可顯示區(qū)域方可正常顯示。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個(gè)不同的點(diǎn)陣字符圖形,如下表所示。::;魚;,::;魚;,;空;;総進(jìn)翠A1這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。狀態(tài)字說明STA7STA3STA5BTA4BTA3BTA2STA1STADD?D6D5D4D3D2D1DOSTAO-6當(dāng)前效據(jù)t也址指針的數(shù)佶STA7讀寫接作便能1:攀.il0:允二說明:原則
6、上每次對控制器進(jìn)行讀寫操作前,都必須進(jìn)行讀寫檢測,確保STA7為0。實(shí)際上,由于單片機(jī)的操作速度慢于液晶控制器的反應(yīng)速度,因此可以不進(jìn)行檢測,或只進(jìn)行簡短的延時(shí)即可。指令說明1602液晶模塊內(nèi)部的控制器共有11條控制指令(1)顯示模式設(shè)置指令瑪功能0011100D設(shè)冒1GX2顯示5X7點(diǎn)陣,8位數(shù)搖接口2)2)顯示開/關(guān)及光標(biāo)設(shè)置指令瑪功能指令瑪D=1卄顯不;D=U關(guān)顯喬G=1昴示芳;版;0=0不昂看半版2_光標(biāo)I習(xí)爍;光標(biāo)不顯示N=1當(dāng)讀或?qū)懸徊纷址俚刂分羔樇?,光?biāo)加一N-D當(dāng)讀或?qū)懸粋€(gè)寧符后地址指計(jì)咸f旦光標(biāo)減一S=1當(dāng)寫一個(gè)字符”整屏顯示左移(N=l)或右移(N=0),以得到光標(biāo)不移動(dòng)
7、帀屏幕移動(dòng)肉戳果。S二0當(dāng)寫一個(gè)字符+整屏顯示不移動(dòng)數(shù)據(jù)指針設(shè)置指令碼功能80H+地址碼(0-27H,40H-67H)設(shè)置數(shù)據(jù)地址指針其它設(shè)置指令碼功能01H顯示清屏:1.數(shù)據(jù)指針清零,所有顯示清零02H顯示回車:1.數(shù)據(jù)指針清零控制接口時(shí)序說明時(shí)序參數(shù)時(shí)序參數(shù)苻號極限值單位測試條件最小值最丈值E信號周期to400-ns引腳EE朋門宣匱I50-nsEJ升沿/下隆沿時(shí)間tRftF-25ns地址建立時(shí)間商130-ns引卿二F3F.l地址保持時(shí)間二H1ID-ns數(shù)扌居建立時(shí)間(讀操作)to-1C0ns引腳DEED即數(shù)抵保持時(shí)間j丈操作二H:20-ns啟招建立時(shí)間(寫操作)L5F240_ns數(shù)搞尿持吋
8、間(寫操作)-HCSIO-ns讀操作時(shí)序?qū)懖僮鲿r(shí)序初始化過程1)延時(shí)15ms2)寫指令38H(不檢測忙信號)3)延時(shí)5ms4)寫指令38H(不檢測忙信號)5)延時(shí)5ms6)寫指令38H(不檢測忙信號)7)(以后每次寫指令、讀/寫數(shù)據(jù)操作之前均需檢測忙信號)8)寫指令38H:顯示模式設(shè)置9)寫指令08H:顯示關(guān)閉10)寫指令01H:顯示清屏11)寫指令06H:顯示光標(biāo)移動(dòng)設(shè)置12)寫指令OCH:顯示開及光標(biāo)設(shè)置三驅(qū)動(dòng)程序舉例1I/O方式驅(qū)動(dòng)程序3WLSS510P3P3陽R=ZO歐姆J/2WWBLKBLAUO9OWS3WLSS510P3P3陽R=ZO歐姆J/2WWBLKBLAUO9OWS程序如下:
9、/*=SMC1602A(16*2)l/O口線接線方式連接線圖:|LCM51|LCM51|LCM51|DB0P1.0|DB4P1.4|RWP2.0|DB1P1.1|DB5P1.5|RSP2.1|DB2P1.2|DB6P1.6|EP2.2|DB3P1.3|DB7P1.7|VLCD接1K電阻到GND|注:AT89S51使用12M晶體震蕩器=*/#includesbitLCM_RW=P2S;定義引腳sbitLCM_RS=P2A1;sbitLCM_E=P2A2;#defineLCM_DataP1#defineBusy0 x80/用于檢測LCM狀態(tài)字中的Busy標(biāo)識voidWriteDataLCM(uns
10、ignedcharWDLCM);voidWriteCommandLCM(unsignedcharWCLCM,BuysC);unsignedcharReadDataLCM(void);unsignedcharReadStatusLCM(void);voidLCMInit(void);voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);voidDelayms(unsignedi
11、ntn);voiddellay(unsignedinth);unsignedcharcodeblog_adr=EDNchina;unsignedcharcodeemail=;voidmain(void)/Delay400Ms();/啟動(dòng)等待,等LCM講入工作狀態(tài)LCMInit();/LCM初始化DisplayListChar(6,0,blog_adr);DisplayListChar(0,0,email);while(1);寫數(shù)據(jù)RS=H,RW=L,D0D7=數(shù)據(jù),E=高脈沖voidWriteDataLCM(unsignedcharWDLCM)dellay(100);LCM_E=0;LCM_R
12、S=1;LCM_RW=0;LCM_Data=WDLCM;/dellay(100);/短暫延時(shí),代替檢測忙狀態(tài)/ReadStatusLCM();/檢測忙LCM_E=1;LCM_E=0;寫指令RS=L,RW=L,D0D7=指令碼,E=高脈沖voidWriteCommandLCM(unsignedcharWCLCM,BuysC)/BuysC為0時(shí)忽略忙檢測/if(BuysC)ReadStatusLCM();/根據(jù)需要檢測忙dellay(100);/短暫延時(shí),代替檢測忙狀態(tài)LCM_E=0;LCM_RS=0;LCM_RW=0;LCM_Data=WCLCM;LCM_E=1;LCM_E=0;/讀數(shù)據(jù)RS=H
13、,RW=H,E=HunsignedcharReadDataLCM(void)LCM_RS=1;LCM_RW=1;LCM_E=1;return(LCM_Data);/讀狀態(tài)RS=L,RW=H,E=HunsignedcharReadStatusLCM(void)LCM_Data=0 xFF;LCM_RS=0;LCM_RW=1;LCM_E=1;/while(LCM_Data&Busy);/檢測忙信號return(LCM_Data);voidLCMInit(void)/LCM初始化LCM_Data=0;Delayms(15);WriteCommandLCM(0 x38,0);/三次顯示模式設(shè)置,不檢測
14、忙信號Delayms(5);WriteCommandLCM(0 x38,0);Delayms(5);WriteCommandLCM(0 x38,0);WriteCommandLCM(0 x38,1);/顯示模式設(shè)置,開始要求每次檢測忙信號WriteCommandLCM(0 x08,1);/關(guān)閉顯示W(wǎng)riteCommandLCM(0 x01,1);/顯示清屏WriteCommandLCM(0 x06,1);/顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCM(0 x0C,1);/顯示開及光標(biāo)設(shè)置/按指定位置顯示一個(gè)字符voidDisplayOneChar(unsignedcharX,unsigned
15、charY,unsignedcharDData)Y&=0 x1;X&=0 xF;/限制X不能大于15,Y不能大于1if(Y)X|=0 x40;當(dāng)要顯示第二行時(shí)地址碼+0 x40;X|=0 x80;/算出指令碼WriteCommandLCM(X,1);/這里不檢測忙信號,發(fā)送地址碼WriteDataLCM(DData);/按指定位置顯示一串字符voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData)unsignedcharListLength;ListLength=0;Y&=0 x1;X&=0 xF;/限制X不
16、能大于15,Y不能大于1while(DDataListLength0 x1f)/若到達(dá)字串尾則退出if(X0;j-)for(i=112;i0;i-);/*函數(shù)名稱:dellay*入口參數(shù):h(unsignedint型)*出口參數(shù):無*功能描述:短暫延時(shí),使用12MHz晶體,約0.01MS*/voiddellay(unsignedinth)while(h-);/0.01MS要注意的是在讀寫程序中,沒有用“檢測忙”,其實(shí)對于1602來說,沒有檢測忙信號對于實(shí)際來說還好,因?yàn)槌3R驗(yàn)闄z測忙,而使1602沒顯示(一直處于忙檢測中)“忙檢測”用一個(gè)小延時(shí)代替。對于LCM1602來說,讀寫時(shí)序最重要。LC
17、M1602寫操作時(shí)序?qū)憯?shù)據(jù)RS=H,RW=L,D0D7=數(shù)據(jù),E=高脈沖voidWriteDataLCM(unsignedcharWDLCM)dellay(100);/短暫延時(shí),代替檢測忙狀態(tài)LCM_E=0;LCM_RS=1;LCM_RW=0;LCM_Data=WDLCM;LCM_E=1;LCM_E=0;寫指令RS=L,RW=L,D0D7=指令碼,E=高脈沖voidWriteCommandLCM(unsignedcharWCLCM)dellay(100);/短暫延時(shí),代替檢測忙狀態(tài)LCM_E=0;LCM_RS=0;LCM_RW=0;LCM_Data=WCLCM;LCM_E=1;LCM_E=0;
18、上面兩個(gè)分別為寫數(shù)據(jù)函數(shù)和寫命令函數(shù),檢測忙已用小延時(shí)代替。其實(shí)這個(gè)時(shí)序好像不太嚴(yán)格,但要保證的是E高脈沖時(shí),寫的數(shù)據(jù)/命令是有效的。好像函數(shù)也可以寫成這樣:voidWriteCommandLCM(unsignedcharWCLCM)dellay(100);/短暫延時(shí),代替檢測忙狀態(tài)LCM_Data=WCLCM;LCM_RS=0;LCM_RW=0;LCM_E=0;dellay(100);LCM_E=1;/按指定位置顯示一串字符函數(shù)DisplayListChar的作用是在指定位置顯示一串字符,其中有一句“while(DDataListLength0 x1f)/若到達(dá)字串尾則退出”為什么要大于0
19、x20呢?unsignedcharcodeblog_adr=EDNchina;unsignedcharcodeemail=;用單引號”()括起來的字符為字符的ASCII碼值,而不是字符串。用雙引號”(shift+)括起來的一串字符,成為字符串常量。C編譯器會自動(dòng)地在字符末尾加上結(jié)束符O(NULL)(ASCII碼為0 x00也就是00H)。chara=“BeiJing”;chara=B,e,I,J,i,n,g,0;兩者是等價(jià)的,數(shù)組的每個(gè)元素為對應(yīng)字符的ASCII碼,如a3數(shù)組a的第四個(gè)元素是空格,則a3里面放著的是空格的ASCII碼0 x20。還要注意的是數(shù)組的元素?cái)?shù)目一定要比字符多一個(gè)。以便
20、C編譯器自動(dòng)在其后面加入結(jié)束符0??梢灾?ASCII碼為0 x00nASCII碼為0 x0A那知道為什么有這句了吧“while(DDataListLength0 x1F)/若到達(dá)字串尾則退出”因?yàn)榇笥? x1f才能顯示字符,小于和等于0 x1f的都是鍵盤控制符。當(dāng)然我們也可以檢測0(0 x00)“while(DDataListLength!=0)/檢測到字符串結(jié)束符則退出”2總線方式驅(qū)動(dòng)程序III.V48OWS;DB7E叭RsIII.V48OWS;DB7E叭Rs帕BLX亦I7LSQQJ-L&丄P=1OK*河陽IfDSRP23WL908LCM1602總線方式C51程序/*Lcd1602B.c*
21、#include#include#include/*=顯示字符串=*/voidLcdDisplayString(unsignedcharx,unsignedchary,unsignedchar*ptr)unsignedchari,l=0;while(ptrl31)l+;/for(i=0;il;i+)LcdDisplayChar(x+,y,ptri);if(x=16)x=0;yA=1;異或,第一行的話變第二行,第二行的話變第一行/*=顯示光標(biāo)定位=*/voidLocateXY(charposx,charposy)unsignedchartemp;temp=posx&0 x0f;/確保只選016個(gè)
22、格子posy&=0 x01;/確保不是在第一行就在第二行if(posy)temp|=0 x40;/在第二行的時(shí)候加40Htemp|=0 x80;/數(shù)據(jù)指針設(shè)置指令碼80H+地址碼(0-27H,40H-67H)LcdWriteCommand(temp,1);/*=按指定位置顯示數(shù)出一個(gè)字符=*/voidLcdDisplayChar(unsignedcharx,unsignedchary,unsignedcharWdata)LocateXY(x,y);/定位顯示地址LcdWriteData(Wdata);/寫字符/*=初始化程序,必須按照產(chǎn)品資料介紹的初始化過程進(jìn)行=*/voidLcdReset(
23、void)Delayms(400);/啟動(dòng)時(shí)必須的延時(shí),等待lcm進(jìn)入工作狀態(tài)LcdWriteCommand(0 x38,0);LcdWriteCommand(0 x38,0);Delayms(15);LcdWriteCommand(0 x38,0);Delayms(15);LcdWriteCommand(0 x38,0);Delayms(15);/顯示模式設(shè)置(不檢測忙信號)/共三次LcdWriteCommand(0 x38,1);LcdWriteCommand(0 x08,1);LcdWriteCommand(0 x38,1);LcdWriteCommand(0 x08,1);LcdWri
24、teCommand(0 x06,1);LcdWriteCommand(0 x0c,1);LcdClear();/顯示模式設(shè)置(以后均檢測忙信號)/顯示關(guān)閉/顯示光標(biāo)移動(dòng)設(shè)置/顯示開及光標(biāo)設(shè)置/*/*clear=*/voidLcdClear(void)LcdWriteCommand(0 x01,1);/顯示清屏/*=寫控制字符子程序:E=1RS=0RW=0=*/voidLcdWriteCommand(unsignedcharCMD,unsignedcharAttribC)AttribC=1檢查忙狀態(tài),AttribC=O不檢查忙狀態(tài)if(AttribC)while(Lcd1602StatusPor
25、t&Busy);/檢測忙信號?/busy=0 x80每次讀寫操作都要進(jìn)行讀寫檢測,確保SAT7=0Lcd1602CmdPort=CMD;/*=當(dāng)前位置寫字符子程序:E=1RS=1RW=0=*/voidLcdWriteData(chardataW)while(Lcd1602StatusPort&Busy);/檢測忙信號/busy=0 x80每次讀寫操作都要進(jìn)行讀寫檢測,確保SAT7=0Lcd1602WdataPort=dataW;精確微秒級延時(shí)(詳細(xì)可以參考我另一篇博文51單片機(jī)C51微秒級(ms)精確延時(shí))/*delay.h*/*delay.h*#include/forcrystal11.05
26、92MvoidDelayms(unsignedintn)unsignedinti,j;for(j=n;j0;j-)for(i=112;i0;i-);/*lcd1602b.h*/*lcd1602b.h*#ifndef_LCD1602B_H_#define_LCD1602B_H#defineLcd1602CmdPortXBYTE0 x8000/E=1RS=0RW=0/寫指令#defineLcd1602WdataPortXBYTE0 x8100/E=1RS=1RW=0/寫數(shù)據(jù)#defineLcd1602StatusPortXBYTE0 x8200/E=1RS=0RW=1/讀狀態(tài)#defineBusy
27、0 x80/busyexternvoidLcdClear(void);externvoidLcdWriteData(chardataW);externvoidLcdWriteCommand(unsignedcharCMD,unsignedcharAttribC);externvoidLcdReset(void);externvoidDisplay(unsignedchardd);externvoidLcdDisplayChar(unsignedcharx,unsignedchary,unsignedcharWdata);externvoidLcdDisplayString(unsignedch
28、arx,unsignedchary,unsignedchar*ptr);#endif其中要注意寫指令的地址0 x8000寫數(shù)據(jù)的地址0 x8100讀狀態(tài)的地址0 x8200這三個(gè)地址值是根據(jù)硬件電路連接確定的。/*absacc.h*/*absacc.h*#ifndef_ABSACC_H_#define_ABSACC_H#defineCBYTE(unsignedcharvolatilecode*)0)#defineDBYTE(unsignedcharvolatiledata*)0)#definePBYTE(unsignedcharvolatilepdata*)0)#defineXBYTE(unsignedcharvolatil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物醫(yī)藥產(chǎn)業(yè)發(fā)展藍(lán)皮書
- 商業(yè)保理融資居間合同
- 三農(nóng)產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型方案
- 可行性分析報(bào)告怎么寫
- 項(xiàng)目進(jìn)展會議記錄
- 醫(yī)院應(yīng)急預(yù)案評估手冊
- 電動(dòng)車充電樁數(shù)量
- 物流倉儲設(shè)施規(guī)劃與布局方案
- 涂料生產(chǎn)與涂裝作業(yè)指導(dǎo)書
- 商業(yè)太陽能光伏發(fā)電
- 2024年山東東營銀行招聘筆試真題
- XX公司親清伙伴計(jì)劃實(shí)施方案
- 2025年貴州貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 煤礦崗位標(biāo)準(zhǔn)化作業(yè)流程
- ISO9001_2016年[全套]質(zhì)量管理體系文件
- 正泰電器低壓電器選型手冊
- 黃河頌朗誦PPT
- 室內(nèi)電氣施工設(shè)計(jì)說明
- 各種中西藥特效外敷方藥
- FG-150螺旋洗砂機(jī)結(jié)構(gòu)設(shè)計(jì)和實(shí)現(xiàn)機(jī)械自動(dòng)化專業(yè)
- 獨(dú)立基礎(chǔ)施工方案(劉佳)
評論
0/150
提交評論