




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
LCD1602顯示屏的驅(qū)動(dòng)設(shè)■及例程一般來(lái)說(shuō),LCD1602有16條引腳,據(jù)說(shuō)還有14條引腳的,與16腳的相比缺少了背光電源A(15腳)和地線K(16腳)。我手里這塊LCD1602的型號(hào)是HJ1602A,是引腳號(hào)符號(hào)引腳說(shuō)明引腳號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)端口2VDD電源正極10D3數(shù)據(jù)端口3VO偏壓信號(hào)11D4數(shù)據(jù)端口4RS命令/數(shù)據(jù)12D5數(shù)據(jù)端口5RW讀/寫(xiě)13D6數(shù)據(jù)端口
6E使能14D7數(shù)據(jù)端口7D0數(shù)據(jù)端口15A背光正極8D1數(shù)據(jù)端口16K背光負(fù)極圖2它的16條弓|腳定義如下:對(duì)這個(gè)表的說(shuō)明:VSS接電源地。VDD接+5V。VO是液晶顯示的偏壓信號(hào),可接10K的3296精密電位器。或同樣阻值的RM065/RM063藍(lán)白可調(diào)電阻。見(jiàn)圖3。V0VDD|||,VSS10K圖3RS是命令/數(shù)據(jù)選擇引腳,接單片機(jī)的一個(gè)I/O,當(dāng)RS為低電平時(shí),選擇命令;當(dāng)RS為高電平時(shí),選擇數(shù)據(jù)。RW是讀/寫(xiě)選擇引腳,接單片機(jī)的一個(gè)I/O,當(dāng)RW為低電平時(shí),向LCD1602寫(xiě)入命令或數(shù)據(jù);當(dāng)RW為高電平時(shí),從LCD1602讀取狀態(tài)或數(shù)據(jù)。如果不需要進(jìn)行讀取操作,可以直接將其接VSS。E,執(zhí)行命令的使能引腳,接單片機(jī)的一個(gè)I/O。D0—D7,并行數(shù)據(jù)輸入/輸出引腳,可接單片機(jī)的P0—P3任意的8個(gè)I/O口。如果接P0口,P0口應(yīng)該接4.7K—10K的上拉電阻。如果是4線并行驅(qū)動(dòng),只須接4個(gè)I/O口。A背光正極,可接一個(gè)10—47歐的限流電阻到VDD。K背光負(fù)極,接VSS。見(jiàn)圖4所示。1OKI/RW01DOT7TJZX2ms~01圖4基本操作LCD1602的基本操作分為四種:1.讀狀態(tài):輸入RS=0,RW=1,E二高脈沖。輸出:D0—D7為狀態(tài)字。2?SS-替>Rsnl、Rwnl、sso-SIS^sow..替>Rsno、iHO、sso?"4?JIr]^m〔?>Rsnl'Rwno'En馴wxlosEE鬲。5二H5JIT]?奮枝馴SKngl6二g|6S3畫(huà)哪舞(君匝7二酎序卷數(shù)符號(hào)甄位烈試條件哥小值典書(shū)值最大值E信號(hào)底期匚.400IISISOns‘E上升泛,下降沿時(shí)間0V25ns境址邃立財(cái)誠(chéng)tSFl頊—ns引御E,RS.R.TT地址界持珂聞tHDi10Hfi我匿逢立財(cái)叵(建泉作)tp100ns亨陽(yáng)DBO^-DfiTtm?20ns散據(jù)跳立射同度瘴包tEP?ns數(shù)據(jù)堤持眈就[寫(xiě)噪作,tlKZ10ns圖7DDRAM、CGROM和CGRAMDDRAM(DisplayDataRAM)就是顯示數(shù)據(jù)RAM,用來(lái)寄存待顯示的字符代碼。共80個(gè)字節(jié),其地址和屏幕的對(duì)應(yīng)關(guān)系如下(如圖8):圖8DDRAM相當(dāng)于計(jì)算機(jī)的顯存,我們?yōu)榱嗽谄聊簧巷@示字符,就把字符代碼送入顯存,這樣該字符就可以顯示在屏幕上了。同樣LCD1602共有80個(gè)字節(jié)的顯存,即DDRAM。但LCD1602的顯示屏幕只有16x2大小,因此,并不是所有寫(xiě)入DDRAM的字符代碼都能在屏幕上顯示出來(lái),只有寫(xiě)在上圖所示范圍內(nèi)的字符才可以顯示出來(lái),寫(xiě)在范圍外的字符不能顯示出來(lái)。這樣,我們?cè)诔绦蛑锌梢岳孟旅娴?光標(biāo)或顯示移動(dòng)指令"使字符慢慢移動(dòng)到可見(jiàn)的顯示范圍內(nèi),看到字符的移動(dòng)效果。前面說(shuō)了,為了在液晶屏幕上顯示字符,就把字符代碼送入DDRAM。例如,如果想在屏幕左上角顯示字符’A',那么就把字符’A'的字符代碼41H寫(xiě)入DDRAM的00
H地址處即可。至于怎么寫(xiě)入,后面會(huì)有說(shuō)明。那么為什么把字符代碼寫(xiě)入DDRAM,就可以在相應(yīng)位置顯示這個(gè)代碼的字符呢?我們知道,LCD1602是一種字符點(diǎn)陣顯示器,為了顯示一種字符的字形,必須要有這個(gè)字符的字模數(shù)據(jù),什么叫字符的字模數(shù)據(jù),看看下面的這個(gè)圖就明白了(如圖9)。OOOHOOOH0111010001.0001.0001:1r.11000110001上圖的左邊就是字符’A'的字模數(shù)據(jù),右邊就是將左邊數(shù)據(jù)用"。"代表0,用"■”代表1。從而顯示出’A'這個(gè)字形。從下面的圖可以看出,字符’A'的高4位是0100,低4位是0001,合在一起就是01000001b,即41H。它恰好與該字符的ASCII碼一致,這樣就給了我們很大的方便,我們可以在PC上使用P2='A'OOOHOOOH編譯后,正好是這個(gè)字符的字符代碼。在LCD1602模塊上固化了字模存儲(chǔ)器,就是CGROM和CGRAM,HD44780內(nèi)置了192個(gè)常用字符的字模,存于字符產(chǎn)生器CGROM(CharacterGeneratorROM)中,另外還有8個(gè)允許用戶自定義的字符產(chǎn)生RAM,稱為CGRAM(CharacterGeneratorRAM)。下圖(如圖12)說(shuō)明了CGROM和CGRAM與字符的對(duì)應(yīng)關(guān)系。從ROM和RAM的名字我們也可以知道,ROM是早已固化在LCD1602模塊中的,只能讀?。欢鳵AM是可讀寫(xiě)的。也就是說(shuō),如果只需要在屏幕上顯示已存在于CGROM中的字符,那么只須在DDRAM中寫(xiě)入它的字符代碼就可以了;但如果要顯示CGROM中沒(méi)有的
字符,比如攝氏溫標(biāo)的符號(hào),那么就只有先在CGRAM中定義,然后再在DDRAM中寫(xiě)入這個(gè)自定義字符的字符代碼即可。和CGROM中固化的字符不同,CGRAM中本身沒(méi)有字符,所以要在DDRAM中寫(xiě)入某個(gè)CGROM不存在的字符,必須在CGRAM中先定義后使用。程序退出后CGRAM中定義的字符也不復(fù)存在,下次使用時(shí),必須重新定義。上面這個(gè)圖(如圖10)說(shuō)明的是5x8點(diǎn)陣和5x10點(diǎn)陣字符的字形和光標(biāo)的位置。先來(lái)說(shuō)5x8點(diǎn)陣,它有8行5列。那么定義這樣一個(gè)字符需要8個(gè)字節(jié),每個(gè)字節(jié)的前3個(gè)位沒(méi)有被使用。例如,定義攝氏溫標(biāo)的符號(hào)(0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}。圖11上面這個(gè)圖(如圖11)說(shuō)明的是設(shè)置CGRAM地址指令。從這個(gè)指令的格式中我們可以看出,它共有aaaaaa這6位,一共可以表示64個(gè)地址,即64個(gè)字節(jié)。一個(gè)5x8點(diǎn)陣字符共占用8個(gè)字節(jié),那么這64個(gè)字節(jié)一共可以自定義8個(gè)字符。也就是說(shuō),上面
這個(gè)圖的6位地址中的DB5DB4DB3用來(lái)表示8個(gè)自定義的字符,DB2DB1DB0用來(lái)表示每個(gè)字符的8個(gè)字節(jié)。這DB5DB4DB3所表示的8個(gè)自定義字符(0--7)就是要寫(xiě)入DDRAM中的字符代碼。我們知道,在CGRAM中只能定義8個(gè)自定義字符,也就是只有0—7這8個(gè)字符代碼,但在下面的這個(gè)表(如圖12)中一共有16個(gè)字符代碼(xxxx0000b--xxxx1111b)。實(shí)際上,如圖所示,它只能表示8個(gè)自定義字符(xxxX0000b=xxxx1000b,xxxx0001b=xxxx1001b依次類推)。也就是說(shuō),寫(xiě)入DDRAM中的字符代碼0和字符代碼8是同一個(gè)自定義字符。5x10點(diǎn)陣每個(gè)字符共占用16個(gè)字節(jié)的空間,所以CGRAM中只能定義4個(gè)這樣的自定義字符。那么如何在CGRAM中自定義字符呢?在上面的介紹中,我們知道有一個(gè)設(shè)置CGRAM地址指令,同寫(xiě)DDRAM指令相似,只須設(shè)置好某個(gè)自定義字符的字模數(shù)據(jù),然后按照上面介紹的方法,設(shè)置好CGRAM地址,依次寫(xiě)入這個(gè)字模數(shù)據(jù)即可。我們?cè)诤竺娴睦又性龠M(jìn)行說(shuō)明。
00G150011G100oiaiDili1000idoi10101011nw11mmomiXHglXlQ順F"p—y:lc<pKXgOOl1^11.1AQsB7|扣i-aqxxkxOOIQ牌II2RbrrY'H;ip6mimOOH(4)#3rScj。亍IxxxxGIOOi閔4DTdtMIF1ip丘.kaoOIO1曲尤5EUeu.leuWCKX-OHlJm&6FUfVJ]|Z:]pEKXKMOm(3:ij7GMgw7?gnwood00。<aHXhXdL』KKKKX1001)9IViy_OTJib-1y版勝10m0):JZjzT□|iUKXXX101I(4)+■K[k(才?t[AX^XHOO閩?<L¥1P:kakj1101(6:|M」Fl)3,看氣:XXKXl110.>NAn3tt'Ln^KX1111/0_0y7Bq.圖12LCD1602指令1.工作方式設(shè)置指令(如圖13)RSRWD"0B6海D64DB3DB2DB1DBDCtxfe0QDD1DLNFXX圖13x:不關(guān)心,也就是說(shuō)這個(gè)位是0或1都可以,一般取0。
DL:設(shè)置數(shù)據(jù)接口位數(shù)。DL=1:8位數(shù)據(jù)接口(D7—D0)。DL=0:4位數(shù)據(jù)接口(D7—D4)。N=0:一行顯示。N=1:兩行顯示。F=0:5x8點(diǎn)陣字符。F=1:5x10點(diǎn)陣字符。說(shuō)明:因?yàn)槭菍?xiě)指令字,所以RS和RW都是0。LCD1602只能用并行方式驅(qū)動(dòng),不能用串行方式驅(qū)動(dòng)。而并行方式又可以選擇8位數(shù)據(jù)接口或4位數(shù)據(jù)接口。這里我們選擇8位數(shù)據(jù)接口(D7—D0)。我們的設(shè)置是8位數(shù)據(jù)接口,兩行顯示,5x8點(diǎn)陣,即0b00111000也就是0x38。(注意:NF是10或11的效果是一樣的,都是兩行5x8點(diǎn)陣。因?yàn)樗荒芤詢尚?x10點(diǎn)陣方式進(jìn)行顯示,換句話說(shuō),這里用0x38或0x3c是—樣的)。2.顯示開(kāi)關(guān)控制指令(如圖14)圖14D=1:顯示開(kāi),D=0:顯示關(guān)。C=1:光標(biāo)顯示,C=0:光標(biāo)不顯示。B=1:光標(biāo)閃爍,B=0:光標(biāo)不閃爍。說(shuō)明:這里的設(shè)置是顯示開(kāi),不顯示光標(biāo),光標(biāo)不閃爍,設(shè)置字為0x0c。3.進(jìn)入模式設(shè)置指令(如圖15、16)圖15I/D=1:寫(xiě)入新數(shù)據(jù)后光標(biāo)右移。I/D=0:寫(xiě)入新數(shù)據(jù)后光標(biāo)左移。S=1:顯示移動(dòng)。S=0:顯示不移動(dòng)。S*11/D=1ItshiftsthedisplaytotheleftS=11JD=DIt的旭Lhedi^plavlotheriQht圖16說(shuō)明:這里的設(shè)置是0x06。4.光標(biāo)或顯示移動(dòng)指令(如圖17、18)
.設(shè)置CGRAM地址指令(如圖21)圖21說(shuō)明:這個(gè)指令在上面已經(jīng)介紹過(guò)。用法在后面例子中說(shuō)明。.設(shè)置DDRAM地址指令(如圖22)圖22說(shuō)明:這個(gè)指令用于設(shè)置DDRAM地址。在對(duì)DDRAM進(jìn)行讀寫(xiě)之前,首先要設(shè)置DDRAM地址,然后才能進(jìn)行讀寫(xiě)。前面我們說(shuō)過(guò),DDRAM就是LCD1602的顯示存儲(chǔ)器。我們要在它上面進(jìn)行顯示,就要把要顯示的字符寫(xiě)入DDRAM。同樣,我們想知道DDRAM某個(gè)地址上有什么字符,也要先設(shè)置DDRAM地址,然后將它讀出到單片機(jī)。.讀忙信號(hào)和地址計(jì)數(shù)器AC(如圖23)圖23說(shuō)明:這個(gè)指令用來(lái)讀取LCD1602狀態(tài)。對(duì)于單片機(jī)來(lái)說(shuō),LCD1602屬于慢速設(shè)備。當(dāng)單片機(jī)向其發(fā)送一個(gè)指令后,它將去執(zhí)行這個(gè)指令。這時(shí)如果單片機(jī)再次發(fā)送下一條指令,由于LCD1602速度較慢,前一條指令還未執(zhí)行完畢,它將不接受這新的指令,導(dǎo)致新的指令丟失。因此這條讀忙指令可以用來(lái)判斷LCD1602是否忙,能否接收單片機(jī)發(fā)來(lái)的指令。當(dāng)BF=1,表示LCD1602正忙,不能接受單片機(jī)的指令;當(dāng)BF=0,表示LCD1602空閑,可以接收單片機(jī)的指令。RS=0,表示是指令;RW=1,表示是讀取。這條指令還有一個(gè)副產(chǎn)品:即可以得到地址記數(shù)器AC的值(addresscounter)。LCD1602維護(hù)了一個(gè)地址計(jì)數(shù)器AC,用來(lái)記錄下一次讀寫(xiě)CGRAM或DDRAM的位置。需要強(qiáng)調(diào)的是:這條指令我一次也沒(méi)有執(zhí)行成功。很多網(wǎng)友似乎也是這樣。好在我們有另外的辦法,也就是延時(shí)。通過(guò)查看每條指令的執(zhí)行時(shí)間,再經(jīng)過(guò)一些試驗(yàn),可以確定指令的延時(shí)。這樣就可以在上一條指令執(zhí)行完畢后再執(zhí)行下一條指令了。.寫(xiě)數(shù)據(jù)到CGRAM或DDRAM指令(如圖24)圖24說(shuō)明:RS=1,數(shù)據(jù);RW=0,寫(xiě)。指令執(zhí)行時(shí),要在DB7—DB0上先設(shè)置好要寫(xiě)入的數(shù)據(jù),然后執(zhí)行寫(xiě)命令。.從CGRAM或DDRAM讀數(shù)據(jù)指令(如圖25)說(shuō)明:RS=1,數(shù)據(jù);RW=1,讀。先設(shè)置好CGRAM或DDRAM的地址,然后執(zhí)行讀取命令。數(shù)據(jù)就被讀入后DB7—DB0。五.實(shí)例下面我們就以一個(gè)實(shí)例來(lái)結(jié)束這篇文章。先介紹一下背景:?jiǎn)纹瑱C(jī)最小系統(tǒng)(擴(kuò)充了外部RAM62256)。采用STC89C52RC,晶振22.1184MHZ。以5x8點(diǎn)陣,16x2行,8位數(shù)據(jù)端口。首先在第一行顯示"IloveMCU!”,第二行顯示"LCD1602Test!"。延時(shí)一段時(shí)間,清屏。然后在第一行顯示自定義字符:攝氏溫標(biāo)標(biāo)志。第二行顯示圓周率(pai)標(biāo)志。再延時(shí)一段時(shí)間,清屏。最后在第一行顯示“Welcometomyblog!",顯示方式是從屏幕右面移入,左面移出。周而復(fù)始(如圖26)。11.2.3.4.5.6.7.8.9.10.圖26例程:#indude<reg52.h>^^^^J#include"./delay/delay.h"^[sbitRS=P2^4;|^^^^^MsbitRW=P2^^^^MsbitE=P2A6;^^^^J#defineLCD_WRITE_COMo|1112131415161718192。2122232425262728293。IQ.d-cdlwr-ie(uns-gnedcharbyil-puns-gnedcharf-ag)IIuIIRSn0-7口111LCDP。二klde-aylms(15)-3132333435363738394。4142434445464748495。51cd—w±eox3poLCD—WRITlmCOMW、^MH^^Nooia僭m嫡口、31令刖斗一cd—w±e(ox¥、LCD—WRITE—COI^^^^^^^^^^^^^^^Bde-aylms(一cd—w±e(oxl^lLCD—WRITE—COI^^^^^^^^^^^^^^^J一cd—w±e(ox¥、LCD—WRITE—COI^^^^^^^^^^^^^^^Bde-aylms(一cd—w±e(oxl^lLCD—WRITE—COI^^^^^^^^^^^^^^^J一cd—w±e(oxlglLCD—WRITE—COM^^^^^^^^^^^^^Bde-aylms(_cd—wr一一eloxlg、LCD—WRITllmCOM)7/^Al^l^lmIN-IDnl^lfiIDnl^、Hm斗愁de-ay—ms一cd—w±e(oxqc、LCD—WRITE—COM),EaIQ.dd-sl-cdlwr-lr-l-e(uns-gnedcharx、uns-gnedchary-uns-gnedcharunsignedchar-HpHf繆8..."....3';..■好52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.if(y==0)if(y==1)lcd_write(0x80+x,LCD
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土道路維修施工方案
- 湖北水幕噴泉施工方案
- 《 龍川別志(節(jié)選) 》
- 重慶公園綠化工程施工方案
- 屋面門窗修理施工方案
- 實(shí)驗(yàn)室通風(fēng)櫥裝修施工方案
- 2025年紙品用膠合作協(xié)議書(shū)
- 玻璃幕墻更換施工方案
- 2025年手持云臺(tái)項(xiàng)目建議書(shū)
- 醫(yī)療機(jī)構(gòu)水污染物排放的公眾參與與社會(huì)監(jiān)督
- DB50T 441-2012 渝菜 毛血旺烹飪技術(shù)規(guī)范
- 2024年05月富德生命人壽保險(xiǎn)股份有限公司招考筆試歷年參考題庫(kù)附帶答案詳解
- 醫(yī)防融合培訓(xùn)
- 高速鐵路設(shè)計(jì)規(guī)范
- 《電機(jī)能能效等級(jí)》課件
- 幼兒園課件之大班科學(xué)《四季的變化》
- 電商客服外包服務(wù)合同
- 影視拍攝現(xiàn)場(chǎng)突發(fā)安全事件應(yīng)急預(yù)案
- DB37T 5096-2017 建設(shè)工程項(xiàng)目管理咨詢規(guī)范
- 雙方同意小孩改姓名協(xié)議書(shū)(2篇)
- 2023年私募股權(quán)投資基金基礎(chǔ)知識(shí)真題模擬匯編(共824題)
評(píng)論
0/150
提交評(píng)論