![第7章液晶顯示接口_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/72147cbb-74d2-4738-b66c-75ad566ee583/72147cbb-74d2-4738-b66c-75ad566ee5831.gif)
![第7章液晶顯示接口_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/72147cbb-74d2-4738-b66c-75ad566ee583/72147cbb-74d2-4738-b66c-75ad566ee5832.gif)
![第7章液晶顯示接口_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/72147cbb-74d2-4738-b66c-75ad566ee583/72147cbb-74d2-4738-b66c-75ad566ee5833.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 7 章 液晶顯示接口技術(shù)應(yīng)用LCD 液晶顯示器是一種功耗極低的顯示器件,它廣泛應(yīng)用于便攜式電子產(chǎn)品中, 最常見的有如計(jì)算器、電子表、數(shù)字萬用表等。 LCD 液晶顯示器不僅省電,而且能夠 顯示大量的信息,如文字、曲線、圖形等,其顯示界面比數(shù)碼管有了質(zhì)的提高。近年 來,液晶顯示技術(shù)發(fā)展得很快,在單片機(jī)系統(tǒng)的開發(fā)過程中,LCD 液晶顯示器也可以作為常用的程序和電路模塊進(jìn)行整體設(shè)計(jì)。7.1LCD1602 顯示模塊LCD1602 屬于字符型液晶顯示模塊,專門用來顯示字母、數(shù)字、符號(hào)等,使用較為 廣泛。7.1.1 LCD 顯示器簡(jiǎn)介L(zhǎng)CD 顯示器因?yàn)轭愋?、用途不同,其性能、結(jié)構(gòu)也不相同,但其基本形態(tài)和
2、結(jié)構(gòu)卻大同小異。LCD顯示器作為輸出器件具有以下優(yōu)點(diǎn):1)低壓微功耗:工作電壓只有3V5V,工作電流只有幾個(gè) 卩A/cm2。因此它成為 便攜式和手持儀器儀表的顯示屏幕。2)體積小、重量輕: LCD 顯示器通過顯示屏上的電極控制液晶分子狀態(tài)達(dá)到顯 示目的,在重量上比相同顯示面積的傳統(tǒng)器件要輕的多。3)被動(dòng)顯示:液晶本身不發(fā)光,而是靠調(diào)節(jié)外界光進(jìn)行顯示。因此適合人的視 覺習(xí)慣,不會(huì)使人眼疲勞。4)顯示信息量大: LCD 顯示器其像素可以做得很小,相同面積上可容納更多信 息。5)易于彩色化。6)沒有電磁輻射:在其顯示期內(nèi)不會(huì)產(chǎn)生電磁輻射,對(duì)環(huán)境無污染,無害于人 體健康。 筆段型。筆段型是以長(zhǎng)條狀顯示
3、像素組成一位顯示。該類型主要用于數(shù)字顯 示,也可用于顯示西文字母或某些字符。這種段型顯示通常有六段、七段、八段、十 四段和十六段等,在形狀上總是圍繞數(shù)字 8 的結(jié)構(gòu)變化,其中以七段顯示最常用。它 廣泛應(yīng)用于電子表、數(shù)字儀表中。(2 字符型。字符型液晶顯示模塊是專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型 液晶顯示模塊。在電極圖形設(shè)計(jì)上它是由若干個(gè) 5X 8或5X11點(diǎn)陣組成,每一個(gè)點(diǎn)陣 顯示一個(gè)字符。這類模塊廣泛應(yīng)用于尋呼機(jī)、手機(jī)、電子筆記本等電子設(shè)備中。(3 點(diǎn)陣圖形型。點(diǎn)陣圖形型是在一平板上排列多行和多列,形成矩陣形式的晶 格點(diǎn),點(diǎn)的大小可根據(jù)顯示的清晰度來設(shè)計(jì)。這類液晶顯示器可廣泛應(yīng)用于圖形顯
4、 示,如游戲機(jī)、筆記本電腦和彩色電視等設(shè)備中。LCD還有一些其他的分類方法。按采采光方式可分為自然采光和背光源采光的LCD按LCD的顯示驅(qū)動(dòng)方式可分為靜態(tài)驅(qū)動(dòng)、動(dòng)態(tài)驅(qū)動(dòng)、雙頻驅(qū)動(dòng)的LCD按控制的安裝方式可分為含有控制器和不含控制器的 LCD含有控制器的LCD又稱為內(nèi)置式LCD字符型液晶顯示模塊LCD1602LCD1602內(nèi)置的模塊控制器都是 HD447801或其兼容品,1602表示可以顯示2行信 息,而每行顯示16位字符。1. LCD1602 管腳定義LCD1602通常有14條引腳,其中有8條數(shù)據(jù)線、3條控制線。當(dāng)與CPU相連時(shí), 通過送入數(shù)據(jù)和指令,就能使模塊正常工作,管腳排列和功能見表7-
5、1 o表7-1 LCD1602管腳功能引線符號(hào)名稱功能1Vss接地0V2VDD電路電源5V 10%3VEE液晶驅(qū)動(dòng)電壓從VDD分壓,控制顯示亮度4RS奇存器選擇信號(hào)H:數(shù)據(jù)寄存器,L :指令寄存器5R/W讀/寫信號(hào)H:讀;L :寫6E片選信號(hào)下降沿觸發(fā),鎖存數(shù)據(jù)714DB(DB7數(shù)據(jù)線數(shù)據(jù)傳輸2. LCD1602控制器內(nèi)部結(jié)構(gòu)控制器主要由指令寄存器IR、數(shù)據(jù)寄存器DR忙標(biāo)志BF、地址計(jì)數(shù)器AC DDRA、 CGROMCGRA以及時(shí)序發(fā)生電路組成。1 )指令寄存器vIR)和數(shù)據(jù)寄存器DR模塊內(nèi)部具有兩個(gè)8位寄存器:指令寄存器vIR)和數(shù)據(jù)寄存器DR。用戶可以 通過RS和R/W輸入信號(hào)的組合選擇指
6、定的寄存器,進(jìn)行相應(yīng)的操作。表 7-2中列出了 組合選擇方式。表7-2寄存器選擇表RSR/W操作00指令寄存器(IR寫入01忙標(biāo)志和地址計(jì)數(shù)器讀出10數(shù)據(jù)寄存器(DR寫入11數(shù)據(jù)寄存器讀出2 )忙標(biāo)志位BF忙標(biāo)志BF=1寸,表明模塊正在進(jìn)行內(nèi)部操作,此時(shí)不接受任何外部指令和數(shù)據(jù)。 當(dāng)RS=0 R/W=1以及E為高電平時(shí),BF輸出到DB7.每次操作之前最好先進(jìn)行狀態(tài)字檢 測(cè),只有在確認(rèn)BF=(之后,CP才能訪問模塊。3 )地址計(jì)數(shù)器ACAC地址計(jì)數(shù)器是DDRAME者CGRA的地址指針。隨著IR中指令碼的寫入,指令碼中 攜帶的地址信息自動(dòng)送入 AC中,并做出AC乍為DDRAM地址指針還是CGRA的
7、地址指針 的選擇。AC具有自動(dòng)加1或者減1的功能。當(dāng)數(shù)據(jù)寄存器DRWDDRAME者CGRA之間完成一次 數(shù)據(jù)傳送后,ACi動(dòng)會(huì)加1或減1。在RS=0只側(cè)二且丘為高電平時(shí),AC勺內(nèi)容送到DB4 DB04)顯示數(shù)據(jù)寄存器vDDRAMDDRAM存儲(chǔ)顯示字符的字符碼,其容量的大小決定著模塊最多可顯示的字符數(shù)目。LCD160有80個(gè)字節(jié)的DDRAM其地址和屏幕的對(duì)應(yīng)關(guān)系如下:字符列位置123383940DDRM第一行00H01H02H25H26H27H地址第二行40H41H42H65H66H67H如想要在LCD160屏幕的第一行第一列顯示一個(gè)字符“ A”,就要向DDRA的00H地 址寫入“A”字符的代碼
8、。雖然一行有40個(gè)地址,但是在1602中只使用前16個(gè),第二行 也一樣用前16個(gè)地址。5 )字符發(fā)生器CGROM在1602中,已經(jīng)內(nèi)置了 192個(gè)常用字符的字模,存于字符產(chǎn)生器 CGROM。表7-3中 列出了字符庫內(nèi)容、字符和字符碼的關(guān)系。表7-3 LCD1602標(biāo)準(zhǔn)字庫、高位低位0123456789ABCDEF0、1)0P、P一夕aP12)!1AQaq。了厶?q23)a2BRbrr3934)#3CScsj亍oo45)$4DTdt、工卜vaQ56)%5EUeu?才n(Tu67)&6FVfv、力二Hp藝78)7GWgw7Vgn81)8HXhxUL*x92)9IYiy丿兒JyA3)*JZjz工八j
9、千B4)+。Kk才口萬C5)Ll|v円D6)-=Mmn入y十ENAn3、nFS有定義。在CGRAM中,用戶可以生成自定義圖形字符的字模組??梢陨? X 8點(diǎn)陣的字符字模8組,相對(duì)應(yīng)的字符碼從CGROM00H07H范圍內(nèi)選擇。后面將詳細(xì)說明其使用 方法。3. LCD1602 指令系統(tǒng)因?yàn)镃PU可以直接訪問模塊內(nèi)部的IR和DR作為緩沖區(qū)域,IR和DR在模塊進(jìn)行 內(nèi)部操作之前,可以暫存來自 CPU的控制信息。這樣就給用戶在 CPU和外圍控制設(shè)備 的選擇上,增加了余地。模塊的內(nèi)部操作由來自CPU的RS R/W E以及數(shù)據(jù)信號(hào)DB決定,這些信號(hào)的組合形成了模塊的指令,共 11條。1 )清屏指令指令碼:
10、01H,格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001該指令完成下列功能:將空碼20H)寫入DDRAM的全部80個(gè)單元內(nèi);將地址指 針計(jì)數(shù)器AC清零,光標(biāo)或閃爍歸00H位;設(shè)置輸入方式參數(shù)I /D=1,即地址指針AC為自動(dòng)加一輸入方式。該指令多用于上電時(shí)或更新全屏顯示內(nèi)容時(shí)。在使用該指令之前要確認(rèn)DDRA的當(dāng)前內(nèi)容是否有用。2 )光標(biāo)歸位指令指令碼:02H,格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000010該指令將地址指針計(jì)數(shù)器 AC清零。執(zhí)行該指令的效果是:將光標(biāo)或閃爍位返回到 顯示屏的左上第一字符位上,即 DDRA
11、地址00H單元位置,這是因?yàn)楣鈽?biāo)和閃爍位都是 以地址指針計(jì)數(shù)器AC當(dāng)前值定位的。如果畫面已滾動(dòng),則撤消滾動(dòng)效果。3 )輸入方式設(shè)置指令指令碼:04H- 07H,格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DS該指令的功能在于設(shè)置了顯示字符的輸入方式,即在計(jì)算機(jī)讀/寫DDRA或CGRAM后,地址指針計(jì)數(shù)器 AC的修改方式,反映在顯示效果上,當(dāng)寫入一個(gè)字符后畫面或光 標(biāo)的移動(dòng)。該指令的兩個(gè)參數(shù)位1 /D和S確定了字符的輸入方式。I / D表示當(dāng)計(jì)算機(jī)讀/寫DDRAM或 CGRAM勺數(shù)據(jù)后,地址指針計(jì)數(shù)器 AC的修改 方式,因?yàn)楣鈽?biāo)位置也是由 AC值確定,所
12、以也是光標(biāo)移動(dòng)的方式。I / 4 0, AC為減1計(jì)數(shù)器,光標(biāo)左移一個(gè)字符位;I / 4 1, AC為加1計(jì)數(shù)器, 光標(biāo)右移一個(gè)字符位。S 表示在寫入字符時(shí),是否允許顯示畫面的滾動(dòng)。S = 0,禁止?jié)L動(dòng);S= 1,允許滾動(dòng)。4 )顯示狀態(tài)設(shè)置指令指令碼:08H- 0FH,格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCB該指令控制著畫面,光標(biāo)及閃爍的開關(guān)。該指令有三個(gè)狀態(tài)位D、C B,這三個(gè)狀態(tài)位分別控著畫面,光標(biāo)和閃爍的顯示狀態(tài)。D 為畫面顯示狀態(tài)位。當(dāng) D= 1時(shí)為開顯示;D= 0時(shí)為關(guān)顯示。注意關(guān)顯示僅是畫 面不出現(xiàn)顯示內(nèi)容,而DDRA內(nèi)容不變。這與清
13、屏指令截然不同。C 為光標(biāo)顯示狀態(tài)位。當(dāng)C= 1時(shí)為光標(biāo)顯示,C- 0時(shí)為光標(biāo)消失。光標(biāo)為底線形 式V5X 1點(diǎn)陣),出現(xiàn)在第八行或第十一行上。光標(biāo)的位置由地址指針計(jì)數(shù)器AC確定,并隨其變動(dòng)而移動(dòng)。當(dāng) AC值超出了畫面的顯示范圍,光標(biāo)將隨之消失。B 為閃爍顯示狀態(tài)位。當(dāng)B= l時(shí)為閃爍啟用;B= 0時(shí)為閃爍禁止。閃爍是指一個(gè)字符位交替進(jìn)行正常顯示態(tài)和全亮顯示態(tài),閃爍位置同光標(biāo)一樣受地址指針計(jì)數(shù)器AC的控制。5 )光標(biāo)或畫面滾動(dòng)指令指令格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000001S/CR/LXX執(zhí)行該指令將產(chǎn)生畫面或光標(biāo)向左或向右滾動(dòng)一個(gè)字符位。如果定時(shí)間隔地執(zhí)
14、行 該指令將產(chǎn)生畫面或光標(biāo)的平滑滾動(dòng)。畫面的滾動(dòng)是在一行內(nèi)連續(xù)循環(huán)進(jìn)行的,也就 是說一行的第一單元與最后一個(gè)單元連接起來,形成了閉環(huán)式的滾動(dòng)。當(dāng)未開光標(biāo)顯 示時(shí),執(zhí)行畫面滾動(dòng)指令時(shí)不修改地址指針計(jì)數(shù)器 AC值;有光標(biāo)顯示時(shí),因?yàn)閳?zhí)行任 意一條滾動(dòng)指令時(shí)都將使光標(biāo)產(chǎn)生位移,所以地址指針計(jì)數(shù)器AC都需要被修改。光標(biāo)的滾動(dòng)是在DDRAM內(nèi)全程進(jìn)行的,它不分是一行顯示還是兩行顯示。如果用光標(biāo)的指 針一一地址指針計(jì)數(shù)器AC加一和減一功能來解釋,就能理解光標(biāo)從第 1顯示位左移至 第80顯示位,或從第80顯示位右移至第1顯示位原理了。光標(biāo)的滾動(dòng)功能可以用于 搜尋需要修改的顯示字符。該指令有兩個(gè)參數(shù)位:S/C
15、為滾動(dòng)對(duì)象的選擇:S/C= l畫面滾動(dòng);S /C= 0光標(biāo)滾動(dòng)。R/L滾動(dòng)方向的選擇:R/L= l向右滾動(dòng);R/L= 0向左滾動(dòng)。該指令與輸入方式設(shè)置指令都可以產(chǎn)生光標(biāo)或畫面的滾動(dòng),區(qū)別在于該指令專用于滾動(dòng)功能,執(zhí)行一次,顯示呈現(xiàn)一次滾動(dòng)效果;而輸入方式設(shè)置指令僅是完成了一 種字符輸入方式的設(shè)置,僅在計(jì)算機(jī)對(duì) DDRA等進(jìn)行操作時(shí)才能產(chǎn)生滾動(dòng)的效果。6 )工作方式設(shè)置指令指令格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB000001DLNFXX該指令設(shè)置了控制器的工作方式,包括有控制器與計(jì)算機(jī)的接口形式和控制器顯 示驅(qū)動(dòng)的占空比系數(shù)等。該指令有三個(gè)參數(shù) DL,N和F.它們的作
16、用是:DL 設(shè)置控制器與計(jì)算機(jī)的接口形式。接口形式體現(xiàn)在數(shù)據(jù)總線長(zhǎng)度上。DL= 1設(shè)置數(shù)據(jù)總線為8位長(zhǎng)度,即DB7- DBO有效;DL= 0設(shè)置數(shù)據(jù)總線為 4位長(zhǎng)度,即 DB& DB4有效。在該方式下8位指令代碼和數(shù)據(jù)將按先高 4位后低4位的順序分兩次 傳輸。N 設(shè)置顯示的字符行數(shù)。N= 0為一行字符行;N= 1為兩行字符行。F 設(shè)置顯示字符的字體。F= 0為5X 7點(diǎn)陣字符體;F= 1為5 X 10點(diǎn)陣字符 體。該指令可以說是字符型液晶顯示控制器的初始化設(shè)置指令,也是唯一的軟件復(fù)位指 令。7) CGRAM地址設(shè)置指令 指令格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB000
17、01A5A4A3A2A1A0該指令將6位的CGRA地址寫入地址指針計(jì)數(shù)器 AC內(nèi),隨后計(jì)算機(jī)對(duì)數(shù)據(jù)的操作是對(duì)CGRA啲讀/寫操作。8 ) DDRAM地址設(shè)置指令 指令格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001A6A5A4A3A2A1A0該指令將7位的DDRA地址寫入地址指針計(jì)數(shù)器 AC內(nèi),隨后計(jì)算機(jī)對(duì)數(shù)據(jù)的操作是對(duì)DDRAM勺讀/寫操作。9)讀“忙”標(biāo)志和地址指針值指令指令格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB001BFAC6AC5AC4AC3AC2AC1AC0CPU對(duì)指令寄存器通道讀操作RS= 0,R/ W l )時(shí),將讀出此格式的“忙
18、”標(biāo)志BF值和7位地址指針計(jì)數(shù)器 AC的當(dāng)前值。BF值反映LCD1602的接口狀態(tài)。CPU在對(duì)LCD1602每次操作時(shí)首先都要讀 BF值判斷其當(dāng)前接口狀態(tài),僅有在 BF= 0時(shí)CPU才可 以對(duì)LCD1602操作。CPU 讀出的地址指針計(jì)數(shù)器 AC當(dāng)前值可能是DDRAM地址也可能是 CGRAM的地 址,這取決于最近一次計(jì)算機(jī)向 AC寫入的是哪類地址。10)寫數(shù)據(jù)指令 指令格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB010要寫入的數(shù)據(jù)D7D0CPU向數(shù)據(jù)寄存器通道寫入數(shù)據(jù),LCD1602根據(jù)當(dāng)前地址指針計(jì)數(shù)器 AC值的屬性 及數(shù)值將該數(shù)據(jù)送入相應(yīng)的存儲(chǔ)器內(nèi)的 AC所指的單元里。
19、如果AC值為DDRAM地址指 針,則認(rèn)為寫人的數(shù)據(jù)為字符代碼并進(jìn)入DDRAM內(nèi) AC所指的單元里;如果 AC值為CGRAI的地址指針,則認(rèn)為寫入的數(shù)據(jù)是自定義字符的字模數(shù)據(jù)并送入CGRAM內(nèi) AC所指的單元里。所以計(jì)算機(jī)在寫數(shù)據(jù)操作之前要先設(shè)置地址指針或人為的確認(rèn)地址指針 的屬性及數(shù)值。在寫入數(shù)據(jù)后地址指針計(jì)數(shù)器AC將根據(jù)最近設(shè)置的輸入方式自動(dòng)修改。由此可知,計(jì)算機(jī)在寫數(shù)據(jù)操作之前要作兩項(xiàng)工作,其一是設(shè)置或確認(rèn)地址計(jì)數(shù)器 AC值的屬性及數(shù)值,以保證所寫數(shù)據(jù)能夠正確到位;其二是設(shè)置或確認(rèn)輸入方式,以 保證連續(xù)寫入數(shù)據(jù)時(shí)AC值的修改方式符合要求。11)讀數(shù)據(jù)指令 指令格式為:RSR/WDB7DB6
20、DB5DB4DB3DB2DB1DB011要讀出的數(shù)據(jù)D7D0在LCD1602的內(nèi)部運(yùn)行時(shí)序的操作下,地址指針計(jì)數(shù)器 AC的每一次修改,包括新 的AC值的寫入,光標(biāo)滾動(dòng)位移所引起的 AC值的修改或由計(jì)算機(jī)讀寫數(shù)據(jù)操作后所產(chǎn) 生的AC值的修改,LCD1602都會(huì)把當(dāng)前AC所指單元的內(nèi)容送到接口部數(shù)據(jù)輸出寄存器 內(nèi),供計(jì)算機(jī)讀取。如果 AC值為DDRAMfc址指針,貝U認(rèn)為接口部數(shù)據(jù)輸出寄存器的數(shù) 據(jù)為DDRAM內(nèi) AC所指單元的字符代碼;如果 AC值為CGRAI的地址指針,則認(rèn)為數(shù)據(jù) 輸出寄存器的數(shù)據(jù)是CGRA內(nèi) AC所指單元的自定義字符的字模數(shù)據(jù)。計(jì)算機(jī)的讀數(shù)據(jù)是從數(shù)據(jù)寄存器通道中數(shù)據(jù)輸出寄存器
21、讀取當(dāng)前所存放的數(shù)據(jù)。 所以計(jì)算機(jī)在首次讀數(shù)據(jù)操作之前需要重新設(shè)置一次地址指針AC值,或用光標(biāo)滾動(dòng)指令將地址指針計(jì)數(shù)器AC值修改到所需的地址上,然后進(jìn)行的讀數(shù)據(jù)操作獲得所需的數(shù) 據(jù)。在讀取數(shù)據(jù)后地址指針計(jì)數(shù)器 AC將根據(jù)最近設(shè)置的輸入方式自動(dòng)修改。由此可知,計(jì)算機(jī)在讀數(shù)據(jù)操作之前要作兩項(xiàng)工作,其一是設(shè)立或確認(rèn)地址計(jì)數(shù)器 AC值的屬性及數(shù)值,以保證所讀數(shù)據(jù)的正確性;其二是設(shè)置或確認(rèn)輸入方式,以保證 連續(xù)讀取數(shù)據(jù)時(shí)AC值的修改方式符合要求。7.1.4 LCD1602模塊及其與單片機(jī)的連接LCD160模塊電路如圖7-1所示,與單片機(jī)的連接如圖7-2所示。1602211000800001234567D
22、DDDDDDDs NRRo113XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/INT0P1.3P3.3/INT1P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RDU1AT89C518-3 4 一5-8-F-斗-一D0D1D2D3D4D5D6D7R
23、S RWE圖7-1 LCD1602模塊電路圖 圖7-2 LCD1602與單片機(jī)的連接7.1.5 LCD1602顯示程序在圖7-2電路中,編寫程序,使LCD1602的第一行顯示“ ok ” ,第二行顯示 “ at89c51 ”。程序 vshixun7_1_1.c )清單如下:1. #in clude2. #in clude3. #defi ne uchar un sig ned char4. #defi ne uint un sig ned int5. #defi ne NOP _nop_(6. sbit RS = P2A4。/ 定義端口7. sbit RW = P2A5 。8. sbit EN
24、 = P2A6 。9. #defi ne DataPort P010. /*-mS延時(shí)函數(shù),含有輸入?yún)?shù) uchar t ,無返回值 */11. void DelayMs(ui nt t12. 13. uint i,j。14. for(i=t。i0。i-15. for(j=110。j0。j-。16. 17. /* 判忙函數(shù)*/18. void LCD_Check_Busy(void19. 20. while(121.22.DataPort= 0xFF 。23.RS=0 。24.RW=1 。25.EN=0 。26.NOP 。27.EN=1 。28.if(DataPort & 0x80 break
25、29.30.EN=0 。31.DelayMs(2 。32. 33. /* 寫入命令函數(shù) */34. void LCD_Write_Com(uchar com35. 36. LCD_Check_Busy( 。37. RS=0 。38. RW=0 。39. DataPort= com 。40. EN=1 。41. NOP 。42. EN=0 。43. 44. /* 寫入數(shù)據(jù)函數(shù) */45. void LCD_Write_Data(uchar Data46. 47. LCD_Check_Busy( 。48. RS=1 。49. RW=0 。50. DataPort= Data 。51. EN=1 。
26、52. NOP 。53. EN=0 。54. 55. /* 顯示字符串函數(shù) */56. void LCD_Write_String(uchar x,uchar y,uchar *s57. 58. if (y = 059. LCD_Write_Com(0x80 + x 。 / 表示第一行60 else LCD_Write_Com(0xC0 + x。 / 表示第二行61. while (*s62. 63. LCD_Write_Data( *s 。64. s + 。65. 66. 67. /* 顯示字符函數(shù) */68. void LCD_Write_Char(uchar x,uchar y,ucha
27、r Data69. 70. if (y = 071. LCD_Write_Com(0x80 + x 。72. else LCD_Write_Com(0xC0 + x 。73. LCD_Write_Data( Data 。74. 75. /* 初始化函數(shù) */76. void LCD_Init(void77. 78. LCD_Write_Com(0x01 。79. LCD_Write_Com(0x38 。80. LCD_Write_Com(0x0e 。81. LCD_Write_Com(0x06 。 /* 顯示光標(biāo)移動(dòng)設(shè)置 */82. 83. /* 主函數(shù) */84. void main(voi
28、d85. 86. LCD_Init( 。87. LCD_Write_Char(7,0,o。88. LCD_Write_Char(8,0,k。89. LCD_Write_String(1,1,at89c51 。90. while(1 。91. 程序的第 2行包含頭文件 intrins.h 的目的是需要使用短延時(shí)函數(shù) _nop_( 。單片機(jī)在對(duì)LCD160操作前應(yīng)確定其為空閑狀態(tài),即需要讀取“ BF標(biāo)志為0。程序的第12 32行為判忙函數(shù),此時(shí)需要RS= 0, RWI,第28行讀取LCD1602勺狀態(tài)并判斷BF為0不 忙)時(shí)退出while循環(huán),否則一直等待到不忙為止。相對(duì)來講,LCD1602勺運(yùn)行
29、速度小于CPU勺運(yùn)行速度,所以為使 LCD160有充分的時(shí)間響應(yīng)CPU勺命令,程序的第31行延 時(shí)。程序的5566行為顯示字符串函數(shù),和 6774行的顯示字符函數(shù)類似。顯示字符 串函數(shù)有三個(gè)參數(shù),分別是需要顯示的字符串指針*s ;確定顯示位置的x和y。其中y確定在第幾行顯示,取值為0或1; x確定在該行的第幾個(gè)位置顯示。因?yàn)?LCD160顯示的 第一行DDRAM址為0x000x27,所以使用“ 0x80+x”指令碼確定DDRAM址 59行);LCD160顯示的第二行DDRAM址為0x400x67,使用“ 0xc0+x”指令碼確定DDRAM址 60行)。6165行將待顯示的字符串寫到指定的 DD
30、RA位置,即在指定位置顯示相應(yīng) 的內(nèi)容,直到字符串結(jié)束。程序的第89行調(diào)用顯示字符串函數(shù),調(diào)用時(shí)將字符串“at89c51 ”的首地址傳遞給*s,同時(shí)確定該字符串的顯示位置從第二行的第二個(gè)字符 開始。顯示字符串函數(shù)具有通用性,如在主程序中使用語句“LCD_Write_String(4,1,hello word 。” 調(diào)用該函數(shù),貝U LCD1602勺第二行第四個(gè) 字符位置開始將顯示hello word 。LCD160在使用前一般需要進(jìn)行初始化,程序的第 86行調(diào)用初始化函數(shù),而程序的 第7582行為初始化函數(shù)。主要是清屏 78行),設(shè)置數(shù)據(jù)總線為8位長(zhǎng)度、兩行字符 行和5 X 7點(diǎn)陣字符體79行
31、),開顯示、光標(biāo)顯示但不閃爍 80行),設(shè)置光標(biāo)自動(dòng)右 移一個(gè)字符位、禁止畫面的滾動(dòng)80行)。7.1.6 LCD1602顯示自定義字符在圖7-2電路中,編寫程序,使LCD1602的第一行顯示“temperature ”,第二行 顯示“ at89c51 ”。從LCD1602的CGRO標(biāo)準(zhǔn)字庫表上可以看到,在表的最左邊是一列 可以允許用戶自定義的CGRAJM從上往下有16個(gè)字節(jié),實(shí)際只有8個(gè)字節(jié)可用。它的 字符碼是00H-07H這8個(gè)地址,表的下面還有8個(gè)字節(jié),但因?yàn)镃GRAI的字符碼規(guī)定 最低3位為有效地址,D7D4全為零,因此CGRA的字符碼最后三位為000111共8 個(gè)。要向這八個(gè)自定義字符
32、寫入字模,首先利用設(shè)置CGRAM6址指令設(shè)定下一個(gè)要存入數(shù)據(jù)的CGRAI的地址。CGRA地址設(shè)置指令格式為:RSR/WDB7DB6DB5DB4DB3DB2DB1DB00001A5A4A3A2A1A0該指令將6位的CGRA地址寫入地址指針計(jì)數(shù)器 AC內(nèi),隨后計(jì)算機(jī)對(duì)數(shù)據(jù)的操作 是對(duì)CGRA啲讀/寫操作。這個(gè)指令數(shù)據(jù)的高2位已固定為01,后面的6位是地址數(shù)據(jù)。在6位地址數(shù)據(jù)中,高3位就表示這8個(gè)自定義字符,最后的3位是字模數(shù)據(jù)的8個(gè)地址。例如第一個(gè)自定義字 符的字模地址為01000000-01000111/八個(gè)地址。要使00H位置存入“C”的字模碼,則需要先設(shè)置CGRA地址為01000000B再依
33、次存入以下數(shù)據(jù)地址數(shù)據(jù)圖示0100000000010000oooooooo0100000100000110ooooooo0100001000001001ooooooo0 1 0 00 0 1 100001000oooooooo0100010000001000ooooooo0100010100001001ooooooo0100011000000110oooooooo01000111o如果要想顯示這8個(gè)用戶自定義的字符,操作方法和顯示 CGRO的一樣,先設(shè)置DDRAM位置,再向 DDRAMI入字符碼。如要顯示CGRAM勺第一個(gè)自定義字符,就向DDRA寫入字符碼00H,如果要顯示第8個(gè)就寫入字符碼0
34、8耳程序vshixun7_1_2.c )清單如下:1. #in clude2. #in clude3. #defi ne uchar un sig ned char4. #defi ne uint un sig ned int5. #defi ne NOP _nop_(6. sbit RS = P2A4。/ 定義端口7. sbit RW = P2A5 。8. sbit EN =卩2八6 。9. #defi ne DataPort P010. uchar code tab=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00。11. /*-mS延時(shí)函數(shù),含有輸入?yún)?shù) u
35、char t ,無返回值 */12. void DelayMs(uchar t 。13. /* 判忙函數(shù)*/14. void LCD_Check_Busy(void 。15. /*-寫入命令函數(shù)*/16. void LCD_Write_Com(uchar com 。17. /* 寫入數(shù)據(jù)函數(shù)*/18. void LCD_Write_Data(uchar Data 。19. /* 顯示字符串函數(shù)*/20. void LCD_Write_Stri ng(uchar x,uchar y,uchar *s。21. /* 顯示字符函數(shù)*/22. void LCD_Write_Char(uchar x,u
36、char y,uchar Data23. /*初始化函數(shù)*/24. void LCDni t(void25. /*主函數(shù)*/26. void main(v oid27. 28. uchar i 。29. LCD_I ni t(。30. LCD_Write_Com(0x40。/ 設(shè)置 CGRAM址31. for(i=0 。i32. LCD_Write_Data(tabi 。33. LCD_Write_Stri ng(3,0,temperature 。34. LCD_Write_Stri ng(7,1,2535. LCD_Write_Char(9,1,0x0036. while(1 。37. 注意
37、,程序shixun7_1_2.c不完整,對(duì)于在程序shixun7_1_1.c中使用過的函數(shù), 只是進(jìn)行了聲明,而沒有定義。作業(yè)1. LCD1602內(nèi)部結(jié)構(gòu)包含哪幾部分?各部分作用分別是什么?2. LCD1602有多少條指令?各指令的格式及功能是什么?3. 在圖7-2所示電路中顯示自己名字的漢語拼音,要求第一行顯示姓,第二行顯 示名。4. 編寫出“工人”的顯示字模,并在LCDk顯示出來。7.2 LCD12864顯示模塊LCD12864是采用內(nèi)置控制器、不帶字庫的圖形點(diǎn)陣液晶顯示模塊,點(diǎn)陣數(shù)為128X 64??赏瓿蓤D形顯示,也可以顯示 8X4個(gè)(16 X 16點(diǎn)陣漢字。7.2.1 LCD12864
38、液晶模塊的外部接口LCD12864液晶模塊對(duì)外有20個(gè)引腳,各引腳作用見表7-4。表7-4 LCD12864液晶模塊引腳功能管腳號(hào)管腳名稱電壓值管腳功能描述1VSS0電源地2VDD5.0V電源電壓3V00V 15V液晶顯示器驅(qū)動(dòng)負(fù)電壓4D/IH/LD/I= H 表示DB7DB0為顯示數(shù)據(jù);D/I= L 表示DB7DB0為顯示指令數(shù)據(jù)5R/WH/LR/W= H數(shù)據(jù)被讀到DB7DB0R/W= L數(shù)據(jù)被寫到IR或DR6EH/LR/W= L E 信號(hào)下降沿鎖存 DB7DB0;R/W= H E= H DDRAM 數(shù)據(jù)讀至U DB7DB0714DB(DB7H/L數(shù)據(jù)線15CS1H/LH:選擇芯片(右半屏
39、信號(hào)16CS2H/LH:選擇心片(左半屏 信號(hào)17RETH/L復(fù)位信號(hào),低電平復(fù)位18VEE-10VLCD驅(qū)動(dòng)負(fù)電壓19ELAC背光板電源20ELAC背光板電源模塊內(nèi)自帶-10V負(fù)壓用于LCD的驅(qū)動(dòng)電壓。722 LCD12864模塊內(nèi)部結(jié)構(gòu)LCD12864液晶模塊中液晶屏顯示區(qū)為128X 64點(diǎn)陣,如圖7-3所示,每8個(gè)像素 行組成1頁字符行),整個(gè)顯示區(qū)共分為 8頁;顯示區(qū)的左半?yún)^(qū)64列受CS2控制器 驅(qū)動(dòng),右半?yún)^(qū)64列受CS1控制器驅(qū)動(dòng)。CS2=1CS1=1Y016263016263行號(hào)ZDB0DB0DB0DB0DB0DB0DB0DB0DB0DB00X=0DB7DB7DB7DB7DB7DB
40、7DB7DB7DB7DB77DB0DB0DB0DB0DB0DB0DB0DB0DB0DB056X=7DB7DB7DB7DB7DB7DB7DB7DB7DB7DB763圖7-3 LCD12864液晶顯示區(qū)示意圖模塊主要含有以下主要功能器件,了解如下器件有利于對(duì)LCD模塊的編程1. 指令寄存器(IRIR是用于寄存指令碼,與數(shù)據(jù)寄存器數(shù)據(jù)相對(duì)應(yīng),當(dāng)D/I=0時(shí)在E信號(hào)下降沿的作用下指令碼寫入IR2. 數(shù)據(jù)寄存器(DRDR用于寄存數(shù)據(jù),與指令寄存器寄存指令相對(duì)應(yīng),當(dāng)D/l=1時(shí)在該下降沿作用下,圖形顯示數(shù)據(jù)寫入 DR或在E信號(hào)高電平作用下,由 DR讀到DB7- DB0數(shù)據(jù)總 線,DR和DDRAM之間的數(shù)據(jù)
41、傳輸是模塊內(nèi)部自動(dòng)執(zhí)行的。3. 忙標(biāo)志BFBF標(biāo)志提供內(nèi)部工作情況,BF=1表示模塊在內(nèi)部操作,此時(shí)模塊不接受外部指 令和數(shù)據(jù);BF=O時(shí)模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù)。利用STATUS READ指令可以將BF讀到數(shù)據(jù)總線從而檢驗(yàn)?zāi)K之工作狀態(tài)。4. 顯示控制觸發(fā)器DFF用于模塊屏幕顯示開和關(guān)的控制,DFF=1為開顯示,DDRAM勺內(nèi)容就顯示在屏幕上; DFF=O為關(guān)顯示。DDF的狀態(tài)是指令 DISPLAY ON/OFFffi RST信號(hào)控制的。5. XY地址計(jì)數(shù)器XY地址計(jì)數(shù)器是一個(gè)9位計(jì)數(shù)器,3位是X地址計(jì)數(shù)器,低6位為丫地址計(jì)數(shù) 器。XY地址計(jì)數(shù)器實(shí)際上是作為 DDRAM勺地址
42、指針,X地址計(jì)數(shù)器為DDRAM勺頁指 針,Y地址計(jì)數(shù)器為DDRAM勺Y地址指針。X地址計(jì)數(shù)器沒有計(jì)數(shù)功能,只能用指令設(shè)置。Y地址計(jì)數(shù)器具有循環(huán)計(jì)數(shù)功能,各顯示數(shù)據(jù)寫入后丫地址自動(dòng)加1,Y地址指針從0到63。6. 顯示數(shù)據(jù)RAM DDRAMDDRAM是存儲(chǔ)圖形顯示數(shù)據(jù)的,數(shù)據(jù)為 1表示顯示選擇,數(shù)據(jù)為 0表示顯示非選 擇。7. Z地址計(jì)數(shù)器Z地址計(jì)數(shù)器是一個(gè)6位計(jì)數(shù)器,此計(jì)數(shù)器具備循環(huán)計(jì)數(shù)功能,用于顯示行掃描 同步。當(dāng)一行掃描完成后,此地址計(jì)數(shù)器自動(dòng)加1,指向下一行掃描數(shù)據(jù),RST復(fù)位后Z地址計(jì)數(shù)器為0。Z地址計(jì)數(shù)器可以用指令 DISPLAY START LINE預(yù)置,因此顯示屏幕的起始行就由
43、此指令控制,即DDRAM勺數(shù)據(jù)從哪一行開始顯示在屏幕的第一行。此模塊的DDRAM64行,屏幕可以循環(huán)滾動(dòng)顯示64行。7.2.3 LCD12864模塊指令說明LCD12864模塊共有7條指令,簡(jiǎn)述如下。1.顯示開關(guān)控制(DISPLAY ON/OFF代碼R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0形式000011111DD=1:開顯示(DISPLAY ON意即顯示器進(jìn)行各種顯示操作;D=0:關(guān)顯示(DISPLAY OFF意即不能對(duì)顯示器可以進(jìn)行各種顯示操作2.設(shè)置顯示起始行它規(guī)定了顯示屏上最頂一行所對(duì)應(yīng)的顯示存儲(chǔ)器的行地址。如果定時(shí)間隔地、等 間距地修改 代碼R/WD/IDB7DB
44、6DB5DB4DB3DB2DB1DB0形式00BUSY0ON/OFFRSTA3A2A1A0當(dāng)R/W=1 D/I=0時(shí),在E信號(hào)為H的作用下,狀態(tài)數(shù)據(jù)分別輸出到數(shù)據(jù)總線 DB& DB0的相應(yīng)位。ON/OFF表示DFF觸發(fā)器的狀態(tài)。RST=1表示內(nèi)部正在初始化,此時(shí)組件不接受任何指令和數(shù)據(jù)。6.寫顯示數(shù)據(jù)(WRITE DISPLAY DATE代碼R/WD/1DB7DB6DB5DB4DB3DB2DB1DB0形式01D7D6D5D4D3D2D1D0D7D0為顯示數(shù)據(jù),此指令把D7D0寫入相應(yīng)的DDRAM單元,Y地指針自動(dòng)加7)讀顯示數(shù)據(jù)(READ DISPLAY DATE代碼R/WD/IDB7DB6D
45、B5DB4DB3DB2DB1DB0形式11D7D6D5D4D3D2D1D01。此指令把DDRAM勺內(nèi)容D7D0讀到數(shù)據(jù)總線DB& DBQ 丫地址指針自動(dòng)加17.2.4 LCD12864 顯示編程LCD12864與單片機(jī)的連接如圖7-4所示,編寫程序,在第一行顯示“你好!請(qǐng)選 擇”,第二行顯示“ 1進(jìn)入游戲”,第三行顯示“ 2.萬年歷”。U119 r卜XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EA
46、P2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/INT0-P1.3P3.3/INTP1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WR-P1.7P3.7/RD-1812AT89C5142930-RP1RESPACK-8393/3534333221222326F24253 4 5 6 7 8 9LCD12864cp 21-uov-HCOR7BD6bd5bd4bd3BD2bd1BDOBDE W ID圖7-4 LCD12864與單片機(jī)的接口電路圖 程序vshixun7_2_1.c )清單如下:#in elude #def
47、i ne uchar un sig ned char#defi ne uint un sig ned int#define DataPort P0sbit p_csl=P2A4。sbit p_csr=P2A3。sbit p_di=P2A2。sbit p_rw=P2A1。sbit p e=P2A。sbit p_rst=P2A7uchar code HZ1,HZ2,HZ3,HZ4,HZ5,HZ6 uchar code HZ7,HZ8,HZ9,HZ10。uchar code HZ11,HZ12,HZ13。uchar code Ez/*函數(shù)聲明void delay(uint k void wcode(uchar com,uchar csl,uchar csrvoid wdata(uchar num,uchar csl,uchar csr void set_statrline(uchar i。void set_xy(uchar x,uchar y void dison_off(uchar onf void reset( 。void lcd_init(void 。void lw(uchar x,uchar y,uchar dd。 / 寫數(shù)據(jù)函數(shù)void disp_HZ(uchar xx,uchar yy,uchar fb,uchar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 焊接銷釘行業(yè)深度研究報(bào)告
- 新藥進(jìn)院申請(qǐng)書
- 2024-2025年中國(guó)網(wǎng)絡(luò)視頻市場(chǎng)供需預(yù)測(cè)及投資戰(zhàn)略研究咨詢報(bào)告
- 利息低合同范例
- 2025年度環(huán)保型建筑材料研發(fā)合作合同
- 專利權(quán)合同范本
- 保險(xiǎn)債權(quán)轉(zhuǎn)讓合同范例
- 公寓經(jīng)營(yíng)餐飲合同范本
- 農(nóng)民轉(zhuǎn)賣房屋合同范本
- bot模式運(yùn)營(yíng)合同范本
- 鋰硫電池介紹
- (高職)旅游景區(qū)服務(wù)與管理電子課件(全套)
- DB50∕T 959-2019 營(yíng)運(yùn)高速公路施工管理規(guī)范
- 人教版一年級(jí)下學(xué)期數(shù)學(xué)第5單元試卷《認(rèn)識(shí)人民幣》試題3
- RBA培訓(xùn)教材系列02RBA商業(yè)道德政策培訓(xùn)針對(duì)員工
- 高中研究性課題-------食品添加劑
- T∕CNFAGS 3-2021 三聚氰胺單位產(chǎn)品消耗限額
- 弟子規(guī)全文拼音版打印版
- 變電站設(shè)備驗(yàn)收管理標(biāo)準(zhǔn)規(guī)范
- 鍋爐房危害告知卡
- NPI流程管理分解
評(píng)論
0/150
提交評(píng)論