總結(jié)資料_1602顯示方法__第1頁
總結(jié)資料_1602顯示方法__第2頁
總結(jié)資料_1602顯示方法__第3頁
總結(jié)資料_1602顯示方法__第4頁
總結(jié)資料_1602顯示方法__第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1602顯示方法先寫指令構(gòu)成LCD初始化。(RS端為低電平,RW端為低電平,為選擇指令寄存器)1. 第一個(gè)指令功能設(shè)定指令指令功能指令編碼/USRSR/WDB7DB6DB5DB4DB3DB2DB1DB0功能設(shè)定00001DLNFXX功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的情況如下:2. 第二個(gè)指令顯示開關(guān)控制指令3. 第三個(gè)指令進(jìn)入模式設(shè)置指令4. 第四個(gè)指令清屏指令這些指令就構(gòu)成了 LCD的初始化。5. 寫數(shù)據(jù) (RS端為高電平,RW端為低電平,為選擇數(shù)據(jù)寄存器)6. 使能端E,通過使能端的電平變化把指令送入(忙檢測(cè)用延時(shí)來代替)7. 注意點(diǎn):(在寫字符顯示位置時(shí),因?yàn)閷懭腼@示地

2、址時(shí)要求最高位D7恒定為高電平1所以實(shí) 際寫入的數(shù)據(jù)應(yīng)該是01000000B (40H) +B(80H)00000001B (00H) + B(80H)一.最簡(jiǎn)單的顯示方法:最直接把要顯示的內(nèi)容寫在數(shù)組里,程序開始led初始化,寫字符顯示位置指令,然 后根據(jù)顯示的字符所占的位數(shù),寫個(gè)for循環(huán)語句,放入數(shù)據(jù)函數(shù),這樣就可以在指 定位置開始顯示要顯示的內(nèi)容。程序如卞:#include/*程序中沒有用到忙檢測(cè),而是用的是延時(shí)函數(shù)來替代忙檢測(cè)*/#define uchar unsigned char #define uint unsigned intuchar code table=HLCD 160

3、2A;要顯示的內(nèi)容 1 放入 tableuchar code tablel=Hzheng zhibin1;/要顯示的內(nèi)容放入 tablelsbit rs=P0A7;/數(shù)據(jù)、指令選擇控制線sbit rw=P0A6;/讀寫信號(hào)控制線sbit en=P0A5;/使能信號(hào)端void delay(uint a)延時(shí)函數(shù)uchar b;while(a-)for(b=5000;b0;b-);void lcd_wcom(uchar com)寫指令函數(shù)rs=O;選擇指令寄存器rw=0;選擇寫操作P2=com;把指令送入P2 1 1delay(lOO);延時(shí)一小會(huì),讓1602準(zhǔn)備接受數(shù)據(jù)en=l;使用端電平變化,

4、把指令送入1602delay(lOO);en=0;void lcd_wdat(uchar dat) 寫數(shù)據(jù)函數(shù)rs=l;選擇數(shù)據(jù)寄存器rw=0;選擇寫操作P2=dat;把要顯示的數(shù)據(jù)送入P2 Hdelay(lOO); /延時(shí)一小會(huì),讓1602準(zhǔn)備接受數(shù)據(jù)en=l;使用端電平變化,把數(shù)據(jù)送入1602delay(lOO);en=0;void lcdjnit() /1602 初始化Icd_wcom(0x38); 選擇8位數(shù)據(jù)總線,雙列顯示,5*7字形lcd_wcom(0x0c); 開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍Icd_wcom(0x06); 顯示地址遞增,即寫一個(gè)數(shù)據(jù)后,顯示位置右移一位Icd_wc

5、om(0x01); 清屏void main() 主函數(shù)uchar n,m;lcd_init(); 初始化Icd_wcom(0x80+0x04); 顯示地址設(shè)為84H,上排第4位for(n=0;n9;n+) 將table中的數(shù)據(jù)依次寫入1602顯示lcd_wdat(tablen);delay(lOO);Icd_wcom(0x80+0x42); 重新設(shè)定顯示地址為0xc4,即下排第3位for(m=0;m12;m+) 將tablel中的數(shù)據(jù)依次寫入1602顯示lcd_wdat(tablelm);delay(lOO);while(l);二.滾動(dòng)的顯示方法:之前設(shè)定步驟一樣,只是在某些指令做更改,如果要

6、使字符向右或向左滾動(dòng)的話,在初 始化中的第三指令(進(jìn)入模式設(shè)置指令)要根據(jù)實(shí)際情況做更改調(diào)整。然后在完整的程 序后添加一個(gè)指令函數(shù),就是添加(設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令)使產(chǎn)生滾動(dòng)效果。添加指令為:設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令1. 如果要顯現(xiàn)顯示屏整體右移就是滾動(dòng)效呆,如果沒把初始化函數(shù)中的第三條(進(jìn)入 模式設(shè)置指令)指令做更改調(diào)整,顯示效呆會(huì)變成開始沒滾動(dòng)效果,等所有字符都 顯示出來后,才整體的向右移,產(chǎn)生滾動(dòng)效果。就是把第三指令改為(寫入新數(shù)據(jù) 后顯示屏整體右移1個(gè)字)。然后在完整的程序中主函數(shù)中最后面添加一個(gè)(設(shè)定 顯示屏或光標(biāo)移動(dòng)方向指令)指令,就可以顯示向右滾動(dòng)的效果了。2. 如果

7、要顯示向左滾動(dòng)的效果,在之前初始化函數(shù)中的第三條(進(jìn)入模式設(shè)置指令) 指令中選擇(寫入新數(shù)據(jù)后顯示屏不移動(dòng))指令,然后在完整的程序中主函數(shù)中最 后面添加一個(gè)(設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令)指令,就可以顯示向右滾動(dòng)的效 果了。向右滾動(dòng)程序:#include/*程序中沒有用到忙檢測(cè),而是用的是延時(shí)函數(shù)來替代忙檢測(cè)*/#define uchar unsigned char#define uint unsigned intuchar code table=nLCD 1602A;要顯示的內(nèi)容 1 放入 tableuchar code tablel=Hzheng zhibin11;要顯示的內(nèi)容放入 tab

8、lelsbit rs=P0A7;/數(shù)據(jù)、指令選擇控制線sbit rw=P0A6;/讀寫信號(hào)控制線sbit en=P0A5;/使能信號(hào)端void delay(uint a) 延時(shí)函數(shù)uchar b,c;while(a-)for( b=5000; b0; b-)for(c=5000;c0;c-);void lcd_wcom(uchar com)寫指令函數(shù)rs=O;選擇指令寄存器rw=0;選擇寫操作P2=com;把指令送入P2 1 1delay(l);延時(shí)一小會(huì),讓1602準(zhǔn)備接受數(shù)據(jù)en=l;使用端電平變化,把指令送入1602delay(l);en=0;Icd_wdat(tablen);delay

9、(l);lcd_wcom(0x80+0x40); 重新設(shè)定顯示地址為0xc4,即下排第3位 for(m=0;m12;m+) 將tablel中的數(shù)據(jù)依次寫入1602顯示 lcd_wdat(tablelm);delay(l);for(d=0;d37;d+)(添加滾動(dòng)的指令)lcd_wcom(0xlc);顯示器上字符全部右移一格,但光標(biāo)不動(dòng)delay(50);向左滾動(dòng)的程序:#include/*程序中沒有用到忙檢測(cè),而是用的是延時(shí)函數(shù)來替代忙檢測(cè)*/#define uchar unsigned char#define uint unsigned intuchar code table=LCD 160

10、2A;要顯示的內(nèi)容 1 放入 tableuchar code tablel=zheng zhibin;要顯示的內(nèi)容放入 tablelsbit rs=P0A7;/數(shù)據(jù)、指令選擇控制線sbit rw=P0A6;/讀寫信號(hào)控制線 sbit en=P0A5;/使能信號(hào)端 void delay(uint a)延時(shí)函數(shù)uchar b,c;while(a-)for(b=5000;b0;b-) for(c=5000;c0;c-);void lcd_wcom(uchar com)寫指令函數(shù)rs=O;選擇指令寄存器rw=0;選擇寫操作P2=com;把指令送入P2 1 1delay(l);延時(shí)一小會(huì),讓1602準(zhǔn)備

11、接受數(shù)據(jù)en=l;使用端電平變化,把指令送入1602delay(l);en=0;void lcd_wdat(uchar dat) 寫數(shù)據(jù)函數(shù)rs=l;選擇數(shù)據(jù)寄存器rw=0;選擇寫操作P2=dat;把要顯示的數(shù)據(jù)送入P2 I Idelay;延時(shí)一小會(huì),讓1602準(zhǔn)備接受數(shù)據(jù)en=l;使用端電平變化,把數(shù)據(jù)送入1602delay(l);en=0;void Icdjnitf) /1602 初始化Icd_wcom(0x38); 選擇8位數(shù)據(jù)總線,雙列顯示,5*7字形 lcd_wcom(0x0c); 開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍 lcd_wco m (0x04); /光標(biāo)左移,顯示屏不移動(dòng)Icd_w

12、com(0x01); 清屏void main() 主函數(shù)uchar n,m,d;while(l)Icdjnitf); 初始化Icd_wcom(0x80+0x0f); 顯示地址設(shè)為84H,上排第4位 for(n=0;n9;n+) 將table中的數(shù)據(jù)依次寫入1602顯示 lcd_wdat(tablen);delay(l);Icd_wcom(0x80+0x4f); 重新設(shè)定顯示地址為0xc4,即I、排第3位for(m=0;m12;m+) 將tablel中的數(shù)據(jù)依次寫入1602顯示lcd_wdat(tablelm);delay(l);for(d=0;d37;d+)(添加滾動(dòng)的指令)Icd_wcom(

13、0xl8); 顯示器上字符全部左移一格,但光標(biāo)不動(dòng)delay(50);三任意字符顯示:1602中內(nèi)部有個(gè)存儲(chǔ)器CGROM;CGRAM中有一個(gè)可以供用戶自義定的CGRAM,我們從 CGROM表上可以看到,在表的最左邊是一列可以允許用戶自定義的CGRAM,從上往 下看著是16個(gè),實(shí)際只有8個(gè)字節(jié)可用。它的字符碼是00000000-00000111這 8個(gè)地址,表的下面還有8個(gè)字節(jié),但因?yàn)檫@個(gè)CGRAM的字符碼規(guī)定0 2位為地址, 3位無效,4-7全為零。因此CGRAM的字符碼只有最后三位能用也就是8個(gè)字節(jié)了。 等效為0000X111, X為無效位,最后三位為000-11 i共8個(gè)。就可以顯示這8

14、個(gè)用戶自定義的字符了??梢燥@示任意字符圖案。(其實(shí)1602每個(gè)顯示格是由5*7或 5*10的點(diǎn)陣顯示的,所以可以自己定義什么圖案或者字符,然后依次寫出顯示圖案或 字符的代碼,就可以顯示了)。具體方法就是在程序主函數(shù)中初始化LCD后寫個(gè)寫個(gè) 設(shè)定CGRAM的地址的指令,然后利用(CGRAM或DDRAM讀出數(shù)據(jù)的指令)指令在將 代碼寫入CGRAM中,在設(shè)定顯示位置,然后顯示,就可以了。指令:顯示任意字符程序:(在0x4f的地方顯示字母C) 從這個(gè)指令可以看出指令數(shù)據(jù)的高2位已固定是01,只有后面的6位是地址數(shù)據(jù),而 這6位中的高3位就表示這八個(gè)自定義字符,最后的3位就是字模數(shù)據(jù)的八個(gè)地址了。 例如

15、第一個(gè)自定義字符的字模地址為01000000-01000111八個(gè)地址。我們向這8個(gè)字 節(jié)寫入字模數(shù)據(jù),讓它能顯示出“。C”#include/*程序中沒有用到忙檢測(cè),而是用的是延時(shí)函數(shù)來替代忙檢測(cè)*/#define uchar unsigned char#define uint unsigned intuchar code table=0x10,0x06,0x09,0x0&0x0&0x09,0x06,0x00 / 字符 C 字;sbit rs=P0A7;/數(shù)據(jù)、指令選擇控制線sbit rw=P0A6;/讀寫信號(hào)控制線sbit en=P0A5;/使能信號(hào)端void delay(uint a) 延

16、時(shí)函數(shù)uchar bzc;while(a-)for(b=500;b0;b-)for(c=500;c0;c-);rs=O;選擇指令寄存器rw=0;選擇寫操作P2=com;把指令送入P2 1 1delay(l);延時(shí)一小會(huì),讓1602準(zhǔn)備接受數(shù)據(jù)en=l;使用端電平變化,把指令送入1602delay(l);en=O;void lcd_wdat(uchar dat) 寫數(shù)據(jù)函數(shù)rs=l;選擇數(shù)據(jù)寄存器rw=0;選擇坷操作P2=dat;把要顯示的數(shù)據(jù)送入P2 1 1delay;延時(shí)一小會(huì),讓1602準(zhǔn)備接受數(shù)據(jù)en=l;使用端電平變化,把數(shù)據(jù)送入1602delay(l); en=0;void ledn

17、it()/1602初始化Icd_wcom(0x38); 選擇8位數(shù)據(jù)總線,雙列顯示,5*7字形 lcd_wcom(0x0c); 開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍 Icd_wcom(0x06); 光標(biāo)左移,顯示屏不移動(dòng)void main() 主函數(shù)uchar nzm;lcd_init(); 初始化Icd_wcom(0x40); 設(shè)定CGRAM地址(地址從指令表中看出(CGRAM或DDRAM讀岀數(shù)據(jù)的指令)for(n=0;n8;n+) 將 C 字代碼寫入 CGRAM 中l(wèi)cd_wdat(tablen);delay(l);Icd_wcom(0x80+0x4f); /設(shè)置 C 字的位置for(m=0;m

18、l;m+)lcd_wdat(m);while(l);多個(gè)自定義字符的寫法:利用CGRAM內(nèi)置8個(gè)寄存器CGRAM地址:01000000 0x40首地址,代表字模數(shù)據(jù)從第一行開放入01000001 0x41從第二行開始,上一行空出來01000010 0x42010000110x4301000100 0x4401000101 0x4501000110 0x4601000111 0x47Icd_wcom(0x80); 設(shè)置字符顯示位置第一行第一個(gè)位置設(shè)置顯示地址,然后發(fā)送數(shù)據(jù) lcd_wdat(0x00); 給1602發(fā)送字符數(shù)據(jù) 顯示CIcd_wcom(0x81);lcd_wdat(0x01); / 顯示“一,Icd_wcom(0x82);lcd_wdat(0x02);顯示,二,四.顯示CGROM寄存器中的字符:CGROM寄存器表中的每個(gè)字符都有著自己的地址顯示出字符的方法就是在程序里主函數(shù)里,LCD初始化后,寫顯示位置指令,然后直接 在數(shù)據(jù)函數(shù)中寫字符地址就可以了。顯 示 CGROM 寄 存 器 中 的 字 符 程 序:#include/*程序中沒有用到忙檢測(cè),而是用的是延時(shí)函數(shù)來替

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論