版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目六
LCD1602顯示
原理及實(shí)現(xiàn)項(xiàng)目描述
數(shù)碼管顯示的內(nèi)容十分有限,只能顯示“0~9”的數(shù)字及幾個簡單的字母,當(dāng)要顯示文字、圖形或輸出信息量比較大時用數(shù)碼管無法滿足要求,必須采用液晶顯示器來實(shí)現(xiàn)。本項(xiàng)目利用LCD1602顯示“Hello!”、“Goodmorning!”等字樣,并顯示項(xiàng)目四所設(shè)計的實(shí)時時鐘。
液晶顯示器的基本知識6.1.11602字符型液晶顯示模塊(LCM)的基本組成 LCM1602液晶點(diǎn)陣字符顯示器用5×7點(diǎn)陣圖形來顯示西文字符。單片機(jī)通過寫控制方式訪問并驅(qū)動控制器來實(shí)現(xiàn)對顯示屏的控制。 1602液晶,可以顯示2行,每行16個西文字符。它的工作電壓是4.5V~5.5V,在設(shè)計電路的時候,直接按照5V系統(tǒng)設(shè)計,但是保證5V系統(tǒng)最低不能低于4.5V。在5V工作電壓下測量它的工作電流是2mA,注意,這個2mA僅僅是指液晶,而它的黃綠背光都是用LED做的,所以功耗不會太小的,一二十毫安還是有的。
液晶顯示器的基本知識6.1.2LCM1602字符型液晶顯示器引腳及功能管腳編號名稱方向功能操作1VSS電源電源接地0V2VDD電源電源正極+5V3VL電源LCD亮度調(diào)整電壓輸入電壓越低,屏幕越亮4RS輸入寄存器選擇信號1=選擇數(shù)據(jù)寄存器0=選擇指令寄存器5R/W輸入Read/Write1=Read/讀取0=Write/寫入6E輸入LCD/響應(yīng)信號1=響應(yīng)LCD0=禁用LCD7~10DB0~DB3輸入/輸出低四位總線可用4bit輸入數(shù)據(jù)、命令及地址11~14DB4~DB7輸入/輸出高四位總線配合DB0~DB3的8位輸入數(shù)據(jù)、命令及地址15LED+輸入背光源正極+5V16LED-輸入背光源負(fù)極0V
液晶顯示器的基本知識
液晶的電源1腳2腳以及背光電源15腳16腳,接+5V和地。 3腳叫做液晶顯示偏壓信號,3腳就是用來調(diào)整顯示的黑點(diǎn)和不顯示的之間的對比度,調(diào)整好了對比度,就可以讓顯示更加清晰一些。 4腳是數(shù)據(jù)命令選擇端。對于液晶,有時候我們要發(fā)送一些命令,讓它實(shí)現(xiàn)我們想要的一些狀態(tài),有時候我們要發(fā)給它一些數(shù)據(jù),讓它顯示出來,液晶就通過這個引腳來判斷接收到的是命令還是數(shù)據(jù),這個引腳我們接到了ADDR0上,通過跳線帽和P1.0連接在一起。大家注意學(xué)會讀手冊,看到這個引腳描述里:數(shù)據(jù)/命令選擇端,而后跟了括號(H/L),他的意思就是當(dāng)這個引腳是H(High)高電平的時候,是數(shù)據(jù),當(dāng)這個引腳是L(Low)低電平的時候,是命令。
液晶顯示器的基本知識 5腳和4腳用法類似,功能是讀寫選擇端。液晶本身內(nèi)部有RAM,實(shí)際上我們送給液晶的命令或者數(shù)據(jù),液晶需要先保存在緩存里,然后再寫到內(nèi)部的寄存器或者RAM中,這個就需要一定的時間。所以我們進(jìn)行讀寫操作之前,首先要讀一下液晶當(dāng)前狀態(tài),是不是在“忙”,如果不忙,我們可以讀寫數(shù)據(jù),如果在“忙”,我們就需要等待液晶忙完了,再進(jìn)行操作。 6腳是使能信號,液晶的讀寫命令和數(shù)據(jù),都要靠它才能正常讀寫。 7到14引腳就是8個數(shù)據(jù)引腳了,我們就是通過這8個引腳讀寫數(shù)據(jù)和命令的。我們統(tǒng)一接到了P0口上。
液晶顯示器的基本知識
液晶顯示器的基本知識6.1.3LCD指令碼工作說明
用單片機(jī)來控制LCD模塊,方法十分方便。LCD模塊其內(nèi)部可以看成兩組寄存器,一個為指令寄存器IR,另一個為數(shù)據(jù)寄存器DR,由RS引腳來控制。所有對指令寄存器或數(shù)據(jù)寄存器的存取均需檢查LCD內(nèi)部的忙碌標(biāo)志BF的狀態(tài),此標(biāo)志用來告知LCD內(nèi)部正在工作,并不允許接收任何控制命令。而此位的檢查可以令RS=0,用讀取DB7來加以判斷。當(dāng)DB7為0時,才可以寫入指令寄存器或數(shù)據(jù)寄存器。LCD控制器共有11種指令,LCD指令碼控制表下表所示。
液晶顯示器的基本知識序號指令操作RSR/WDB7DB6DB5DB4DB3DB2DB1DB01清除顯示屏000000000×2光標(biāo)回到原點(diǎn)000000001×3進(jìn)入模式設(shè)定00000001I/DS4顯示ON/OFF0000001DCB5顯示/光標(biāo)移位000001S/CR/L××6功能設(shè)定00001DLNF××7設(shè)定字符發(fā)生器(CGRAM)地址
0001A5A4A3A2A1A08設(shè)置(DDRAM)顯示地址001A6A5A4A3A2A1A09忙碌標(biāo)志位BF01BFD6D5D4D3D2D1D010寫入數(shù)據(jù)寄存器(顯示數(shù)據(jù))10D7D6D5D4D3D2D1D011讀取數(shù)據(jù)寄存器11D7D6D5D4D3D2D1D0
液晶顯示器的基本知識1602內(nèi)部RAM結(jié)構(gòu)圖
第一行的地址是0x00H到0x27,第二行的地址從0x40到0x67,其中第一行0x00到0x0F是與液晶上第一行16個字符顯示位置相對應(yīng)的,第二行0x40到0x4F是與第二行16個字符顯示位置相對應(yīng)的。而每行都多出來一部分,是為了顯示移動字幕設(shè)置的。1602字符液晶是顯示字符的,因此它跟ASCII字符表是對應(yīng)的。
液晶顯示器的基本知識
與單片機(jī)寄存器的用法類似,1602液晶在使用的時候,我們首先要進(jìn)行初始的功能配置,1602液晶有以下幾個指令需要了解。①顯示模式設(shè)置。
寫指令0x38,設(shè)置16Х2顯示,5Х7點(diǎn)陣,8位數(shù)據(jù)接口。這條指令對我們這個液晶來說是固定的,必須寫0x38,大家仔細(xì)看會發(fā)現(xiàn)我們的液晶實(shí)際上內(nèi)部點(diǎn)陣是5Х8的,還有一些1602液晶還兼容串行通信,用2個IO口即可,但是速度慢,我們這個液晶就是固定的0x38模式。
液晶顯示器的基本知識②顯示開/關(guān)以及光標(biāo)設(shè)置指令。
這里有2條指令,第一條指令,一個字節(jié)中8位,其中高5位是固定的0b00001,低3位我們分別用DCB從高到低表示,D=1表示開顯示,D=0表示關(guān)顯示;C=1表示顯示光標(biāo),C=0表示不顯示光標(biāo);B=1表示光標(biāo)閃爍,B=0表示光標(biāo)不閃爍。
第二條指令,高6位是固定的0b000001,低2位我們分別用NS從高到低表示,其中N=1表示讀或者寫一個字符后,指針自動加1,光標(biāo)自動加1,N=0表示讀或者寫一個字符后指針自動減1,光標(biāo)自動減1;S=1表示寫一個字符后,整屏顯示左移(N=1)或右移(N=0),以達(dá)到光標(biāo)不移動而屏幕移動的效果,如同我們的計算器輸入一樣的效果,而S=0表示寫一個字符后,整屏顯示不移動。
液晶顯示器的基本知識③清屏指令。
固定的,寫入0x01表示顯示清屏,其中包含了數(shù)據(jù)指針清零,所有的顯示清零。寫入0x02則僅僅是數(shù)據(jù)指針清零,顯示不清零。④RAM地址設(shè)置指令
該指令碼的最高位為1,低7位為RAM的地址,RAM地址與液晶上字符的關(guān)系如圖6.3所示。通常,我們在讀寫數(shù)據(jù)之前都要先設(shè)置好地址,然后再進(jìn)行數(shù)據(jù)的讀寫操作。
液晶顯示器的基本知識6.1.4LCD控制器接口時序說明
液晶有一個狀態(tài)字字節(jié),我們通過讀取這個狀態(tài)字的內(nèi)容,就可以知道1602液晶的一些內(nèi)部情況。
這個狀態(tài)字節(jié)有8個位,最高位表示了當(dāng)前液晶是不是“忙”,如果這個位是1表示液晶正“忙”,禁止我們讀寫數(shù)據(jù)或者命令,如果是0,則可以進(jìn)行讀寫。而低7位就表示了當(dāng)前數(shù)據(jù)地址指針的位置。
液晶顯示器的基本知識 1602的基本操作時序,一共有4個,我們這里要做1602液晶的程序,因此先把用到的總線接口做一個統(tǒng)一聲明:#defineLCD1602_DBP0sbitLCD1602_RS=P1^0;sbitLCD1602_RW=P1^1;sbitLCD1602_E=P1^5;①讀狀態(tài):RS=L,R/W=H,E=H。這是個很簡單的邏輯,就是說,我們直接寫LCD1602_DB=0xFF;LCD1602_RS=0;LCD1602_RW=1;LCD1602_E=1;sta=LCD1602_DB;
液晶顯示器的基本知識②讀數(shù)據(jù):RS=H,R/W=L,E=H。這個邏輯也很簡單,但是讀數(shù)據(jù)不常用,大家了解一下就可以了,這里就不詳細(xì)解釋了。③寫指令:RS=L,R/W=L,D0~D7=指令碼,E=高脈沖。④寫數(shù)據(jù):RS=H,R/W=L,D0~D7=數(shù)據(jù),E=高脈沖。
液晶顯示器的基本知識6.1.5LCD初始化設(shè)置(1)初始化設(shè)置
①顯示器清屏
②顯示器開/關(guān)及光標(biāo)設(shè)置
③顯示光標(biāo)移動設(shè)置(2)數(shù)據(jù)控制
控制器內(nèi)部設(shè)有一個數(shù)據(jù)地址指針,用戶可通過它們來訪問內(nèi)部全部80字節(jié)RAM。
①數(shù)據(jù)指針設(shè)置,數(shù)據(jù)地址指針:80H+地址碼(00H~27H,40H~67H)
②讀數(shù)據(jù):
③寫數(shù)據(jù):
源程序編寫
用單片機(jī)的定時器功能設(shè)計電子時鐘在第四章已經(jīng)做了詳細(xì)介紹,此項(xiàng)目將數(shù)碼管顯示換為LCD顯示,要注意的是LCD1602自帶了ASCII字符庫,如果要顯示數(shù)字,需先將數(shù)字轉(zhuǎn)換為ASCII字符(ASCII字符表見附錄A),源程序如下:#include<reg52.h>#defineucharunsignedchar#defineLCD1602_DBP0sbitLCD1602_RS=P1^0;sbitLCD1602_RW=P1^1;sbitLCD1602_E=P1^5;voidInitLcd1602();voidLcdShowStr(ucharx,uchary,uchar*str);voidLcdShowDat(ucharx,uchary,uchardat);ucharcnt=0;//定義一個計數(shù)變量,記錄T0溢出次數(shù)ucharsec=0,min=0,hour=0;
源程序編寫voidmain(){ uchartemp; ucharstr[]="Goodmorning!"; TMOD=0x01;//設(shè)置T0為模式1 TH0=0x4C; TL0=0x00; //50ms定時 IE=0x82; //允許T0中斷 TR0=1;//啟動T0 InitLcd1602(); LcdShowStr(2,0,str); while(1) { temp=hour/10; temp+=0x30; //將待顯示的數(shù)字轉(zhuǎn)換成ASCII碼,再送1602的顯示RAM LcdShowDat(4,1,temp); temp=hour%10;
源程序編寫 temp+=0x30; LcdShowDat(5,1,temp); temp=0x3A; //0x3A是":"的ASCII碼 LcdShowDat(6,1,temp); temp=min/10; temp+=0x30; LcdShowDat(7,1,temp); temp=min%10; temp+=0x30; LcdShowDat(8,1,temp); temp=0x3A; LcdShowDat(9,1,temp); temp=sec/10; temp+=0x30; LcdShowDat(10,1,temp); temp=sec%10; temp+=0x30; LcdShowDat(11,1,temp); }}
源程序編寫/*等待液晶準(zhǔn)備好*/voidLcdWaitReady(){ ucharsta; LCD1602_DB=0xFF; LCD1602_RS=0; LCD1602_RW=1; do { LCD1602_E=1; sta=LCD1602_DB;//讀取狀態(tài)字 LCD1602_E=0; }while(sta&0x80);//bit7=1表示液晶正忙,重復(fù)檢測直到其等于0為止}
源程序編寫/*向LCD1602液晶寫入一字節(jié)命令,cmd為待寫入命令值*/voidLcdWriteCmd(ucharcmd){ LcdWaitReady(); LCD1602_RS=0; LCD1602_RW=0; LCD1602_DB=cmd; LCD1602_E=1; LCD1602_E=0;}
源程序編寫/*向LCD1602液晶寫入一字節(jié)數(shù)據(jù),cmd為待寫入數(shù)據(jù)值*/voidLcdWriteDat(uchardat){ LcdWaitReady(); LCD1602_RS=1; LCD1602_RW=0; LCD1602_DB=dat; LCD1602_E=1; LCD1602_E=0;}
源程序編寫/*設(shè)置顯示RAM起始地址,(x,y)-對應(yīng)屏幕上的字符坐標(biāo)*/voidLcdSetCursor(ucharx,uchary){ ucharaddr; if(y==0) //由輸入的屏幕坐標(biāo)計算顯示RAM的地址 addr=0x00+x; //第一行字符地址從0x00起始 else addr=0x40+x; //第二行字符地址從0x40起始 LcdWriteCmd(addr|0x80);//設(shè)置RAM地址}/*在液晶上顯示字符串,(x,y)-對應(yīng)屏幕上的起始坐標(biāo),*/voidLcdShowStr(ucharx,uchary,uchar*str){ LcdSetCursor(x,y); //設(shè)置起始地址 while(*st
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度木制玩具設(shè)計與制造木工分包合同范本4篇
- 2025年度內(nèi)墻膩?zhàn)邮┕ぜ夹g(shù)培訓(xùn)與推廣合同2篇
- 二零二五年度全國連鎖培訓(xùn)學(xué)校股權(quán)合作框架合同
- 課題申報參考:岷江流域西南官話語法內(nèi)部差異及歷史演變研究
- 2025版二零二五年度教育信息化項(xiàng)目實(shí)施合同范本3篇
- 二零二五年度工業(yè)用地面積調(diào)整補(bǔ)充合同4篇
- 二零二五年度農(nóng)民工就業(yè)創(chuàng)業(yè)扶持政策合作協(xié)議2篇
- 2025年度國產(chǎn)嬰幼兒奶粉品牌全國分銷合同4篇
- 基于大數(shù)據(jù)分析的2025年度農(nóng)產(chǎn)品市場需求預(yù)測合同2篇
- 二零二五年度住宅室內(nèi)軟裝搭配合同4篇
- 小紅書違禁詞清單(2024年)
- 《社區(qū)康復(fù)》課件-第三章 社區(qū)康復(fù)的實(shí)施
- 胰島素注射的護(hù)理
- 云南省普通高中學(xué)生綜合素質(zhì)評價-基本素質(zhì)評價表
- 2024年消防產(chǎn)品項(xiàng)目營銷策劃方案
- 聞道課件播放器
- 03軸流式壓氣機(jī)b特性
- 五星級酒店收入測算f
- 大數(shù)據(jù)與人工智能ppt
- 人教版八年級下冊第一單元英語Unit1 單元設(shè)計
- GB/T 9109.5-2017石油和液體石油產(chǎn)品動態(tài)計量第5部分:油量計算
評論
0/150
提交評論