嵌入式系統(tǒng)原理與設計 課件 第十講 LCD_第1頁
嵌入式系統(tǒng)原理與設計 課件 第十講 LCD_第2頁
嵌入式系統(tǒng)原理與設計 課件 第十講 LCD_第3頁
嵌入式系統(tǒng)原理與設計 課件 第十講 LCD_第4頁
嵌入式系統(tǒng)原理與設計 課件 第十講 LCD_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1單片機與嵌入式系統(tǒng)第十講本次課主要內(nèi)容第二章單片機原理(八)2常見單片機外設(二)的應用初步!單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用31.本次課的目標熟悉1602液晶,并能夠?qū)ζ溥M行編程應用。能根據(jù)外設的時序圖,使用單片機對其控制。4單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用52.液晶顯示器概述液晶顯示器簡稱LCD(LiquidCrystalDiodes)是利用液晶經(jīng)過處理后能夠改變光線傳輸方向的特性,達到顯示字符或者圖形的目的。其特點是體積小、重量輕、功耗極低、顯示內(nèi)容豐富等,在單片機應用系統(tǒng)中有著日益廣泛的應用。67

在實際應用中,用戶很少直接設計LCD顯示器驅(qū)動接口,一般是直接使用LCD顯示模塊LCM。

LCM是把LCD顯示屏、背景光源、線路板和驅(qū)動集成電路等部件構造成一個整體,作為一個獨立部件使用。其特點是功能較強、易于控制、接口簡單,在單片機系統(tǒng)中應用較多。LCM一般帶有內(nèi)部顯示RAM和字符發(fā)生器,只要輸入ASCII碼就可以進行顯示。8

9單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用103.1602液晶顯示模塊概述1602字符型液晶模塊是一種用5x7點陣圖形來顯示字符的液晶顯示器。1602可以顯示2行、每行顯示16個ASCII字符,并且可以自定義圖形,只需要寫入相對應字符的ASCII碼就可以顯示,使用上相對數(shù)碼管更能顯示豐富的信息。1112目前市面上的字符型液晶絕大多數(shù)是基于HD44780

液晶控制芯片的,所以控制原理是完全相同的,為HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。13HD44780內(nèi)置了192個常用字符,存于字符產(chǎn)生器CGROM(CharacterGeneratorROM)中,另外還有幾個允許用戶自定義的字符產(chǎn)生RAM,稱為CGRAM(CharacterGeneratorRAM)。1415除了CGROM和CGRAM外,LCD內(nèi)部還有一個DDRAM(DisplayDataRAM),用于存放待顯示內(nèi)容,LCD控制器的指令系統(tǒng)規(guī)定,在送待顯示字符代碼的指令之前,先要送DDRAM的地址(即待顯示的字符顯示位置)。16如:要在第1行第2列寫入字符“A”,這時先寫入第1行第2列對應的DDRAM的地址:01H,然后再往DDRAM中寫入“A”的字符碼。DDRAM的內(nèi)容對應于把要顯示的字符地址,而DDRAM的地址就對應于顯示字符的位置。17單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用184.1602液晶顯示模塊管腳定義LCD1602采用標準的16腳接口:第1腳:VSS為地電源;第2腳:VDD接5V正電源;

19第3腳:Vo為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,使用時可以通過一個10K的電位器調(diào)整對比度;第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器;20第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15~16腳:空腳21單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用225.1602液晶顯示模塊和單片機接口23單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用246.單片機對1602的四種操作模式D0~D7端為8位數(shù)據(jù)口,進行數(shù)據(jù)傳送,而RS、R/W、E端則配合可以做出不同的操作,對1602進行操作主要有四種,如下:1、讀狀態(tài),輸入:RS=L,RW=H,E=H。輸出:D0~D7=狀態(tài)字2、寫指令,輸入:RS=L,RW=L,D0~D7=指令,E=高脈沖(1->0)。輸出:無253、讀數(shù)據(jù),輸入:RS=H,RW=H,E=H。輸出:D0~D7=數(shù)據(jù)4、寫數(shù)據(jù),輸入:RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖(1->0)。輸出:無26液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。276.1讀操作時序28ABRS則根據(jù)讀的內(nèi)容(狀態(tài)或數(shù)據(jù))置為1或0在A位置,E置為0,經(jīng)過tD時間后,E置為1,可以在數(shù)據(jù)口讀到正確的數(shù)據(jù)讀數(shù)階段指令1:讀操作時序29如何將這一過程用語言描述?根據(jù)RS狀態(tài),分為:讀狀態(tài)、讀數(shù)據(jù)。指令1:讀操作時序30讀數(shù)據(jù)的語言描述核心步驟1:設置RS為對數(shù)據(jù)操作功能;核心步驟2:設置RW為讀功能;核心步驟3:設置E為低;核心步驟4:延時;核心步驟5:設置E為高;核心步驟6:讀出數(shù)據(jù);核心步驟7:E恢復為0;31指令1:讀操作時序讀數(shù)據(jù)的語言描述核心步驟1:設置RS為對數(shù)據(jù)操作功能;核心步驟2:設置RW為讀功能;核心步驟3:設置E為低;核心步驟4:延時;核心步驟5:設置E為高;核心步驟6:讀出數(shù)據(jù);核心步驟7:E恢復為0;uchar

LCD_Read_Data(void){ucharTemp;LCD_RS=1;LCD_RW=1;LCD_E=0;

LCD_Delay(5);LCD_E=1;Temp=LCD_DATA;LCD_E=0;return(Temp);}指令1:讀操作時序32讀狀態(tài)的語言描述核心步驟1:設置RS為對狀態(tài)操作功能;(通過指令寄存器完成)核心步驟2:設置RW為讀功能;核心步驟3:設置E為低;核心步驟4:延時;核心步驟5:設置E為高;核心步驟6:讀出數(shù)據(jù);核心步驟7:E恢復為0;33指令1:讀操作時序讀狀態(tài)的語言描述核心步驟1:設置RS為對狀態(tài)操作功能;核心步驟2:設置RW為讀功能;核心步驟3:設置E為低;核心步驟4:延時;核心步驟5:設置E為高;核心步驟6:讀出數(shù)據(jù);核心步驟7:E恢復為0;uchar

LCD_Check_Busy(void){uchartemp;LCD_DATA=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;

LCD_Delay(5);LCD_E=1;while(LCD_DATA&0x80);temp=LCD_DATA;

LCD_E=0;return(temp);}1602LCD狀態(tài)字34注意:每次對控制器進行讀寫之前,都必須進行讀寫檢測,確保STA7為0.問題:如何根據(jù)上圖,確定LCD是否處于“忙狀態(tài)”?根據(jù)STA7的值,為1時忙。如何編程實現(xiàn):遇忙等待?while((Busy_Check()&0x80)==0x80);35非常重要!6.2寫操作時序36CD在進行寫操作的時候,RW要置為0,RS根據(jù)寫的內(nèi)容不同(指令或數(shù)據(jù))置為1或0。注意C和D兩根線,RW置低后,延時一段時間,E才能置為1,再延時,E置0時將數(shù)據(jù)寫入。指令2:寫操作時序37如何編寫寫指令程序?Step1:檢查LCD狀態(tài)是否為忙?遇忙等待!Step2:RS為高還是為低?選擇指令寄存器,因此為低!Step3:RW為寫操作Step4:使能信號置為0Step5:延時Step6:使能信號置為1Step7:使能信號置為0Step8:寫入指令指令2:寫操作時序38CDStep1:檢查LCD狀態(tài)是否為忙?遇忙等待!Step2:RS為低Step3:RW為寫操作Step4:使能信號置為0Step5:延時Step6:使能信號置為1Step7:使能信號置為0Step8:寫入指令voidLCD_Write_Cmd(ucharcmd,BusyC){if(BusyC)LCD_Check_Busy();LCD_DATA=cmd;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_Delay(5);LCD_E=1;}指令2:寫操作時序39如何編寫寫數(shù)據(jù)程序?Step1:檢查LCD狀態(tài)是否為忙?遇忙等待!Step2:RS為高還是為低?選擇數(shù)據(jù)寄存器,因此為高!Step3:RW為寫操作Step4:E置為0Step5:延時Step6:E置為1Step7:E置為0Step8:寫入數(shù)據(jù)指令2:寫操作時序40CDStep1:檢查LCD狀態(tài)是否為忙?遇忙等待!Step2:RS為高Step3:RW為寫操作Step4:E置為0Step5:延時Step6:E置為1Step7:E置為0Step8:寫入數(shù)據(jù)voidLCD_Write_Data(uchardat){LCD_Check_Busy();LCD_DATA=dat;LCD_RS=1;LCD_RW=0;LCD_E=0;LCD_Delay(5);LCD_E=1;LCD_E=0;}單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用417.1602LCD內(nèi)部顯示存儲器要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。通過指令碼來實現(xiàn)控制:42指令碼功能80H+地址碼(0~27H,40~67H)設置數(shù)據(jù)地址指針問題:根據(jù)這兩個表格,若需要在第一行的位置1處顯示數(shù)據(jù),需要向LCD寫入什么指令?LCD_Write_Cmd(0x80,1);如果要在第二行位置1處寫入呢?LCD_Write_Cmd(0xC0,1);43指令碼功能80H+地址碼(0~27H,40~67H)設置數(shù)據(jù)地址指針從地址碼范圍(0~27H,40~67H)可知,LCD控制器的內(nèi)部RAM緩沖區(qū)大小為80×8位。但每行只能顯示16個字。44如果希望在LCD的某一特定位置顯示某一特定字符,一般要遵循“先指定地址,后寫入內(nèi)容”的原則;45演示:Project4在第一行第一個位置顯示’a’LCD_Write_Cmd(0x80,1);LCD_Write_Data('a');在第一行第一、二個位置顯示’ab’LCD_Write_Cmd(0x80,1);LCD_Write_Data('a');LCD_Write_Cmd(0x81,1);LCD_Write_Data(‘b');46在第二行第一個位置顯示’b’LCD_Write_Cmd(0xC0,1);LCD_Write_Data(‘b');在第一行第一個位置開始顯示’ab’,在第二行第一個字符開始顯示’cd’。LCD_Write_Cmd(0x80,1);LCD_Write_Data('a');LCD_Write_Cmd(0x81,1);LCD_Write_Data(‘b');LCD_Write_Cmd(0xC0,1);LCD_Write_Data(‘c');LCD_Write_Cmd(0xC1,1);LCD_Write_Data(‘d');47如何實現(xiàn)更多的控制?光標是否顯示光標是否閃動清屏只顯示一行關閉與打開如何實現(xiàn)屏幕滾動如何更簡化操作……48通過特殊指令完成!單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用498.1602LCD指令8.1顯示功能設置8.2顯示開關及光標設置8.3清屏8.4設定顯示屏或光標移動方向指令8.5AC值控制及屏幕移動設置8.6光標歸位指令8.7指令小結(jié)及編程技巧8.8綜合實驗508.1顯示功能設置設定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。51功能設定指令功能:設定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。DL:DL=0數(shù)據(jù)總線為4位;DL=1數(shù)據(jù)總線為8位N:

N=0顯示1行;N=

1顯示2行F:F=05×7點陣/每字符;F=15×10點陣/每字符52問題:如果需要設置為:16×2顯示,5×7點陣,8位數(shù)據(jù)接口。寫什么指令?DL=1;N=1;F=0;因此:寫入指令:0x38常用:如何用C語言實現(xiàn)?LCD_Write_Cmd(0x38,1);

53實現(xiàn):寫指令38H:顯示模式設置8.2顯示開關及光標設置控制顯示器開/關、光標顯示/關閉以及光標是否閃爍。54顯示開關控制指令功能:控制顯示器開/關、光標顯示/關閉以及光標是否閃爍。D:D=0顯示功能關;D=1顯示功能開C:C=0無光標;C=1有光標B:B=0光標不閃爍;B=

1光標閃爍55問題:如果需要關閉顯示。寫什么指令?D=0;C=0;B=0;因此:寫入指令:0x08LCD_Write_Cmd(0x08,1);//顯示關閉顯示開關控制指令功能:控制顯示器開/關、光標顯示/關閉以及光標是否閃爍。D:

D=0顯示功能關;D=

1顯示功能開C:

C=0無光標;C=

1有光標B:B=0光標不閃爍;B=

1光標閃爍56問題:如果需要打開顯示。且不需要光標。寫什么指令?D=1;C=0;B=0;因此:寫入指令:0x0CLCD_Write_Cmd(0x0C,1);//顯示開不需要光標演示:Project2(Proteus

Keil)(1)使LCD顯示閃爍的光標LCD_Write_Cmd(0x0F,1);//顯示閃爍的光標(2)不顯示光標LCD_Write_Cmd(0x0C,1);//不顯示光標(3)顯示不閃爍的光標LCD_Write_Cmd(0x0E,1);//顯示不閃爍的光標57(4)在第一行第一個位置顯示’a’,同時顯示閃爍的光標LCD_Write_Cmd(0x0F,1);//顯示閃爍的光標LCD_Write_Cmd(0x80,1);LCD_Write_Data('a');58(5)在第一行第一個位置顯示’a’,同時顯示閃爍的光標。顯示一段時間后,關閉LCDLCD_Write_Cmd(0x0F,1);//顯示閃爍的光標LCD_Write_Cmd(0x80,1);LCD_Write_Data('a');LCD_Delay(1000);LCD_Write_Cmd(0x08,1);598.3清屏清除所顯示的內(nèi)容,但光標不會清除60清屏指令。<1>清除液晶顯示器,即將DDRAM的內(nèi)容全部填入"空白"的ASCII碼20H;<2>光標歸位,即將光標撤回液晶顯示屏的左上方;<3>將地址計數(shù)器(AC)的值設為0。61問題:如果需要清屏。寫什么指令?寫入指令:0x01LCD_Write_Cmd(0x01,1);//顯示清屏演示:(6)在第一行第一個位置顯示’a’,同時顯示閃爍的光標。顯示一段時間后,清屏LCD_Write_Cmd(0x0F,1);//顯示閃爍的光標LCD_Write_Cmd(0x80,1);LCD_Write_Data('a');LCD_Delay(1000);LCD_Write_Cmd(0x01,1);628.4設定顯示屏或光標移動方向指令設定每次定入1位數(shù)據(jù)后光標的移位方向,并且設定每次寫入的一個字符是否移動。63進入模式設置指令功能:設定每次定入1位數(shù)據(jù)后光標的移位方向,并且設定每次寫入的一個字符是否移動。ID=1:當讀或?qū)懸粋€字符后地址指針加1,且光標加1;ID=0:當讀或?qū)懸粋€字符后地址指針減1,且光標減1;S=1:當寫一個字符,正屏顯示左移(ID=1)或右移(ID=0),以得到光標不移動而屏幕移動的效果。S=0:當寫一個字符時,整屏顯示不移動。64問題:如果需要寫入新數(shù)據(jù)后光標右移但顯示屏不移動。寫什么指令?寫入指令:0x06LCD_Write_Cmd(0x06,1);//顯示光標移動設置演示:Project3(1)在LCD的第一行,顯示26個英文字母。for(i=0;i<=25;i++){ LCD_Write_Cmd(0x80+i,1); LCD_Write_Data(‘A'+i); LCD_Delay(200);}65由于一行最多顯示16個,后續(xù)的字母無法顯示(2)在剛剛的演示基礎上,添加滾屏控制,當超過16個字符時,屏幕自動左移,最新出現(xiàn)的字符在最右邊一個。I/D1=寫入新數(shù)據(jù)后光標右移S1=寫入新數(shù)據(jù)后顯示屏整體右移1個字符66if(i>=15)LCD_Write_Cmd(0x07,1);8.5AC值控制及屏幕移動設置使光標移位或使整個顯示屏幕移位。67初始化完成后,如果希望在LCD的某一特定位置顯示某一特定字符,一般要遵循“先指定地址,后寫入內(nèi)容”的原則;但如果希望在LCD上顯示一串連續(xù)的字符(如單詞等),并不需要每次寫字符碼之前都指定一次地址,這是因為液晶控制模塊中有一個計數(shù)器叫地址計數(shù)器AC(AddressCounter)。68AC地址計數(shù)器的作用是負責記錄寫入DDRAM數(shù)據(jù)的地址,或從DDRAM讀出數(shù)據(jù)的地址。該計數(shù)器的作用不僅僅是“寫入”和“讀出”地址,它還能根據(jù)用戶的設定自動進行修改。69設定顯示屏或光標移動方向指令功能:使光標移位或使整個顯示屏幕移位。00:光標左移1格,且AC值減101:光標右移1格,且AC值加110:顯示器上字符全部左移一格,但光標不動(可用于查看屏幕上顯示不到的字符)11:顯示器上字符全部右移一格,但光標不動70問題:如果根據(jù)本指令,簡化剛剛的設計,使得每次不必再寫地址?寫入指令:0x14

LCD_Write_Cmd(0x14,1);演示:Project1(Proteus

Keil)LCD_Write_Cmd(0x0F,1);

LCD_Write_Cmd(0x14,1);

LCD_Write_Cmd(0x80,1);for(i=0;i<=25;i++){ //LCD_Write_Cmd(0x80+i,1); if(i>=15)LCD_Write_Cmd(0x07,1);

LCD_Write_Data('A'+i);

LCD_Delay(200);}718.6光標歸位指令光標歸位指令<1>把光標撤回到顯示器的左上方;<2>把地址計數(shù)器(AC)的值設置為0;<3>保持DDRAM的內(nèi)容不變。72在剛剛例子上,加入LCD_Write_Cmd(0x02,1);語句,會出現(xiàn)什么現(xiàn)象?光標回到A的位置演示:Project1(Proteus

KEIL)738.7指令小結(jié)及編程技巧在將E置高電平前,先設置好RS和R/W信號,在E上升沿到來之前,準備好寫入的命令字或數(shù)據(jù)。只需在適當?shù)牡胤郊由涎訒r,就可以滿足要求了。74使能位E對執(zhí)行LCD指令起著關鍵作用,E有兩個有效狀態(tài),高電平(1)和下降沿(1→0)。當E為高電平時,如果R/W為0,則LCD從單片機讀入指令或者數(shù)據(jù);如果R/W為1,則單片機可以從LCD中讀出狀態(tài)字(BF忙狀態(tài))和地址。而E的下降沿指示寫入LCD指令或數(shù)據(jù)。758.8綜合實驗在LCD的第一行輸出A~Z,之后,通過兩個按鍵,其中一個控制顯示左移,另一個控制顯示右移。顯示效果(演示:Project5)76分析:10:顯示器上字符全部左移一格,但光標不動(可用于查看屏幕上顯示不到的字符)11:顯示器上字符全部右移一格,但光標不動77如何實現(xiàn)?顯示部分參見前面例子添加兩個中斷,一個用于左移,一個用于右移。voidExternal_Interrupt_0()interrupt0{LCD_Write_Cmd(0x18,1);}voidExternal_Interrupt_1()interrupt2{LCD_Write_Cmd(0x1C,1);}78(演示:Project5)單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用799.1602LCD的初始化LCD工作之前,必須進行初始化,且遵照廠商提供的初始化過程。8081voidLCD_Init(void){//三次顯示模式設置,不檢測忙信號LCD_Write_Cmd(0x38,0);

LCD_Delay(5);

LCD_Write_Cmd(0x38,0);

LCD_Delay(5);

LCD_Write_Cmd(0x38,0);

LCD_Delay(5);82

LCD_Write_Cmd(0x38,1); //顯示模式設置,開始要求檢測忙信號:8位、2行、5X7點陣

LCD_Write_Cmd(0x08,1);//關閉顯示

LCD_Write_Cmd(0x01,1); //清屏

LCD_Write_Cmd(0x06,1); //顯示光標移動設置:文字不動,光標自動右移

LCD_Write_Cmd(0x0C,1);//顯示開及光標設置:光標關、光標不閃爍}單片機原理(八)1.本次課的目標2.液晶顯示器概述3.1602液晶顯示模塊概述4.1602液晶顯示模塊管腳定義5.1602液晶顯示模塊和單片機接口6.單片機對1602的四種操作模式7.1602LCD內(nèi)部顯示存儲器8.1602LCD指令9.1602LCD的初始化10.1602LCD綜合應用8310.1602LCD綜合應用8410.1LCD顯示字符串LCD顯示字符串的幾種方法可以采用逐個先寫地址、再寫數(shù)據(jù)的方法可以設定AC自動累加,先寫初始地址,再逐個寫數(shù)據(jù)的方法可以在上述基礎上,編寫字符串顯示子函數(shù)85voidLCDShowString(ucharx,uchary,uchar*str){ uchari=0; if(y==0)LCD_Write_Cmd(0x80+x,1); //y=0在第一行顯示字符

if(y==1)LCD_Write_Cmd(0xC0+x,1); //y=1在第二行顯示字符

for(i=0;i<16;i++) { LCD_Write_Data(str[i]);//開始寫數(shù)據(jù),地址指針根據(jù)設置,可自動加1 }}86實驗:在1602LCD第一行上顯示字符串“WelcomtoN.U.D.T.”。第二行上顯示“75265914@”如何利用剛剛定義的LCDShowString函數(shù)?87(演示:Project7)ucharcodeschool_name[]={"WelcometoNUDT!"};ucharcodeemail[]={"75265914@"};LCDShowString(0,0, school_name);LCDShowString(0,1, email);8810.21602LCD顯示時鐘顯示如圖所顯示的時鐘89設計思路:設定變量:uchar

LCD_Dis[]="TIME:00:00:00";時、分、秒計時,將計時結(jié)果轉(zhuǎn)換到變量中;Format(uchar

SecondCount,uchar

MinuteCount,uchar

HourCount,uchar*a)將變量顯示到LCD上。90//主函數(shù):執(zhí)行累加,生成時、分、秒while(1) { SecondCount++; if(SecondCount>=60) { MinuteCount++; SecondCount=SecondCount%60; if(MinuteCount>=60) { HourCount++; HourCount=HourCount%24; MinuteCount=MinuteCount%60; } } Format(SecondCount,MinuteCount,HourCount,LCD_Dis); LCDShowString(0,1,LCD_Dis); DdelayX1ms(1000); }}91//Format函數(shù):將時分秒轉(zhuǎn)換為字符串voidFormat(uchar

SecondCount,uchar

MinuteCount,uchar

HourCount,uchar*a){ a[8]=HourCount/10+0x30;a[9]=HourCount%10

溫馨提示

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

評論

0/150

提交評論