單片機應用技術(經典項目化案例式新形態(tài)活頁教材)第5版 課件 p135-2-4.5.3 字符型LCD液晶顯示器的應用_第1頁
單片機應用技術(經典項目化案例式新形態(tài)活頁教材)第5版 課件 p135-2-4.5.3 字符型LCD液晶顯示器的應用_第2頁
單片機應用技術(經典項目化案例式新形態(tài)活頁教材)第5版 課件 p135-2-4.5.3 字符型LCD液晶顯示器的應用_第3頁
單片機應用技術(經典項目化案例式新形態(tài)活頁教材)第5版 課件 p135-2-4.5.3 字符型LCD液晶顯示器的應用_第4頁
單片機應用技術(經典項目化案例式新形態(tài)活頁教材)第5版 課件 p135-2-4.5.3 字符型LCD液晶顯示器的應用_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

4.5.3字符型LCD液晶顯示器的應用《單片機應用技術(C語言版)》深圳職業(yè)技術學院

12345678910111213141516VSSVDDVOLCD模塊DB0DB1DB3DB2DB5DB4DB7DB6AKRSR/WERSR/W操作00寫命令操作(初始化、光標定位等)01讀狀態(tài)操作(讀忙標志)10寫數據操作(要顯示的內容)11讀數據操作(可以把顯示存儲區(qū)中的數據反讀出來)使能端E引腳下降沿時執(zhí)行操作四種操作三種常用寫命令操作是指給液晶模塊寫入命令字,也就是指令字。讀狀態(tài)操作用來讀入液晶模塊的忙標志。寫數據操作用來給液晶模塊寫入顯示的數據。RSR/W操作00寫命令操作(初始化、光標定位等)01讀狀態(tài)操作(讀忙標志)10寫數據操作(要顯示的內容)11讀數據操作(可以把顯示存儲區(qū)中的數據反讀出來)RS=0;R/W=1;E下降沿unsignedcharlcd_r_start()//8位數據線連接方式{unsignedchars;RW=1; //RW=1,RS=0,讀LCD狀態(tài)

delayus();RS=0;delayus();E=1; //E端時序

delayus();

s=LCD_DB; //從LCD的數據口讀狀態(tài)

delayus();E=0;delayus();RW=0;delayus();

return(s); //返回讀取的LCD狀態(tài)字}讀狀態(tài)函數i=lcd_r_start();//調用讀狀態(tài)函數,讀取LCD狀態(tài)字D7D6D5D4D3D2D1D0BFBF=1:表示LCD正在忙

BF=0:表示LCD不忙do{

i=lcd_r_start();

//調用讀狀態(tài)函數,讀取LCD狀態(tài)字

i&=0x80;//采用與操作屏蔽掉低7位

delayms(1);

//延時

}while(i!=0);

//LCD忙,繼續(xù)查詢,否則退出循環(huán)查詢忙狀態(tài)程序段voidlcd_w_cmd(unsignedcharcom)//8位數據線連接方式{unsignedchari;

do{//查LCD忙操作

i=lcd_r_start(); //調用讀狀態(tài)字函數

i=i&0x80;//與操作屏蔽掉低7位

delayms(1);}while(i!=0); //LCD忙,繼續(xù)查詢,否則退出循環(huán)

RW=0;delayus();RS=0;

//RW=0,RS=0,寫LCD命令字

delayus();E=1;

//E端時序

delayus();LCD_DB=com; //將com中的命令字寫入LCD數據口

delayus();E=0;delayus();RW=1;delayms(50);}寫命令函數寫數據操作:RS=1;R/W=0;E下降沿voidlcd_w_dat(unsignedchardat)//8位數據線連接方式{unsignedchari;

do{//查LCD忙操作

i=lcd_r_start(); //調用讀狀態(tài)字函數

i=i&0x80;//與操作屏蔽掉低7位

delayms(1);}while(i!=0); //LCD忙,繼續(xù)查詢,否則退出循環(huán)

RW=0;delayus();RS=0; //RW=0,RS=0,寫LCD命令字

delayus();E=1; //E端時序

delayus();LCD_DB=dat; //將com中的命令字寫入LCD數據口

delayus();E=0;delayus();RW=1;delayms(50);}寫數據函數寫命令操作是指給LCD寫入命令字。寫數據是指寫入要顯示的字符voidlcd_w_cmd(unsignedcharcmd);//cmd為要寫入的命令字編號指令名稱控制信號命令字RSR/D7D6D5D4D3D2D1D01清屏00000000012歸home位000000001×3輸入方式設置00000001I/DS4顯示狀態(tài)設置0000001DCB5光標畫面滾動000001S/CR/L××6工作方式設置00001DLNF××7CGRAM地址設置0001A5A4A3A2A1A08DDRAM地址設置001A6A5A4A3A2A1A09讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC01602LCD模塊常用指令表lcd_w_cmd(0x01);//LCD清屏,同時光標定位在第1行,第1列LCD清屏命令字在LCD模塊上指定光標位置,也就是下一個要顯示字符的位置在哪里。編號指令名稱控制信號命令字RSR/D7D6D5D4D3D2D1D01清屏00000000012歸home位000000001×3輸入方式設置00000001I/DS4顯示狀態(tài)設置0000001DCB5光標畫面滾動000001S/CR/L××6工作方式設置00001DLNF××7CGRAM地址設置0001A5A4A3A2A1A08DDRAM地址設置001A6A5A4A3A2A1A09讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC01602LCD模塊常用指令表

列行123456789101112131415161808182838485868788898A8B8C8D8E8F2C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF光標位置與相應命令字(1)表中命令字以十六進制形式給出,該命令字就是與LCD顯示位置相對應的DDRAM地址。(2)第一行和第二行的命令字是不連續(xù)的。lcd_w_cmd(0x84);//光標定位在第1行第5列光標畫面滾動命令字可以設置LCD上畫面滾動效果編號指令名稱控制信號命令字RSR/D7D6D5D4D3D2D1D01清屏00000000012歸home位000000001×3輸入方式設置00000001I/DS4顯示狀態(tài)設置0000001DCB5光標畫面滾動000001S/CR/L××6工作方式設置00001DLNF××7CGRAM地址設置0001A5A4A3A2A1A08DDRAM地址設置001A6A5A4A3A2A1A09讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC01602LCD模塊常用指令表CGRAM地址設置可以讓我們自己編寫要顯示的字形編號指令名稱控制信號命令字RSR/D7D6D5D4D3D2D1D01清屏00000000012歸home位000000001×3輸入方式設置00000001I/DS4顯示狀態(tài)設置0000001DCB5光標畫面滾動000001S/CR/L××6工作方式設置00001DLNF××7CGRAM地址設置0001A5A4A3A2A1A08DDRAM地址設置001A6A5A4A3A2A1A09讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC01602LCD模塊常用指令表歸位命令可以使得光標返回到第一行第一列編號指令名稱控制信號命令字RSR/D7D6D5D4D3D2D1D01清屏00000000012歸home位000000001×3輸入方式設置00000001I/DS4顯示狀態(tài)設置0000001DCB5光標畫面滾動000001S/CR/L××6工作方式設置00001DLNF××7CGRAM地址設置0001A5A4A3A2A1A08DDRAM地址設置001A6A5A4A3A2A1A09讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC01602LCD模塊常用指令表LCD初始工作方式設置顯示狀態(tài)設置清屏返回輸入方式設置001DLNF00DL:設置LCD的連接方式;DL=1:8位、DL=0:4位;N:設置LCD顯示的行數;N=1:2行、N=0:1行F:用來設置LCD字符顯示的點陣;F=1:5×10、F=0:5×7例:設置數據位數8位,2行顯示,5×7點陣字符00111000lcd_w_cmd(0x38);//數據位數8位

//2行顯示,5×7點陣字符化工作方式設置LCD初始工作方式設置顯示狀態(tài)設置清屏返回輸入方式設置00001DCBD:整體顯示開關,D=1,表示開顯示,D=0,表示關顯示C:光標開關,C=1,表示有光標顯示,C=0,表示沒有光標顯示B:控制光標是否閃爍,B=1,光標閃爍,B=0,光標不閃爍例如:設置開顯示,沒有光標,光標位字符不閃爍

00001100lcd_w_cmd(0x38);//開顯示,沒有光標,光標位字符不閃爍化顯示狀態(tài)設置試一試:寫出設置開顯示,有光標,光標位字符閃爍的命令字是什么呢?LCD初始工作方式設置顯示狀態(tài)設置清屏返回輸入方式設置lcd_w_cmd(0x01);//LCD清屏,同時光標定位在第1行,第1列化清屏命令LCD初始化工作方式設置顯示狀態(tài)設置清屏返回輸入方式設置000001I/DSI/D:光標移動方向設置,I/D=1:增量方式右移、I/D=0:減量方式左移S:控制屏幕上所有文字是否移動,S=1:移位、S=0:不移位例如:設置光標增量方式右移,顯示字符不移動

00000110lcd_w_cmd(0x06);//光標增量方式右移,顯示字符不移動輸入方式設置LCD初始工作方式設置顯示狀態(tài)設置清屏返回輸入方式設置化//函數名:lcd_init//函數功能:lcd初始化

//形式參數:無//返回值:無voidlcd_init(){lcd_w_cmd(0x3c);//設置工作方式lcd_w_cmd(0x0e);//設置光標lcd_w_cmd(0x01);//清屏lcd_w_cmd(0x06);//設置輸入方式}初始化函數一般一個獨立的模塊包括兩個文件1)頭文件,它里面定義所有液晶顯示需要的預定義和函數聲明;2)c程序源文件,液晶顯示所需要的函數。模塊化程序設計工程主函數模塊main.c液晶顯示模塊lcd.hlcd.c/*************lcd.h**********/sbitRS=P2^6;//P2.6sbitRW=P2^5;//P2.5sbitE=P2^7; //P2.7#defineLCD_DBP0控制接口定義/***********************lcd.h**************************/sbitRS=P2^6;//P2.6sbitRW=P2^5;//P2.5sbitE=P2^7; //P2.7#defineLCD_DBP0externunsignedcharlcd_r_start();//讀狀態(tài)函數externvoidlcd_w_cmd(unsignedcharcom);//寫命令字函數externvoidlcd_w_dat(unsignedchardat);//寫數據函數externvoidlcd_init(); //LCD初始化函數externvoiddelayms(unsignedinti);//可控延時函數externvoiddelayus(); //延時函數,5個機器周期Lcd.h在C語言中,修飾符extern用在變量或者函數的聲明前,用來說明這個變量/函數是在別處定義的,要在此處引用或調用。/******************************lcd.c**************************/#include<regx51.h>#include<lcd.h>#include<INTRINS.H>//庫函數頭文件,代碼中引用了_nop_()函數

Lcd.cunsignedcharlcd_r_start()//8位數據線連接方式{unsignedchars;RW=1; //RW=1,RS=0,讀LCD狀態(tài)

delayus();RS=0;delayus();E=1; //E端時序

delayus();

s=LCD_DB; //從LCD的數據口讀狀態(tài)

delayus();E=0;delayus();RW=0;delayus();

return(s); //返回讀取的LCD狀態(tài)字}讀狀態(tài)函數voidlcd_w_cmd(unsignedcharcom)//8位數據線連接方式{unsignedchari;

do{//查LCD忙操作

i=lcd_r_start(); //調用讀狀態(tài)字函數

i=i&0x80;//與操作屏蔽掉低7位

delayms(1);}while(i!=0); //LCD忙,繼續(xù)查詢,否則退出循環(huán)

RW=0;delayus();RS=0;

//RW=0,RS=0,寫LCD命令字

delayus();E=1;

//E端時序

delayus();LCD_DB=com; //將com中的命令字寫入LCD數據口

delayus();E=0;delayus();RW=1;delayms(50);}寫命令函數voidlcd_w_cmd(unsignedcharcom)//8位數據線連接方式{unsignedchari;

do{//查LCD忙操作

i=lcd_r_start(); //調用讀狀態(tài)字函數

i=i&0x80;//與

溫馨提示

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

評論

0/150

提交評論