液晶顯示模塊編程_第1頁
液晶顯示模塊編程_第2頁
液晶顯示模塊編程_第3頁
液晶顯示模塊編程_第4頁
液晶顯示模塊編程_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、void INITIAL0ADCON1=OX87;TRISA3=0;TRISB0=0;TRISE=0X00;讀液晶顯示器狀態(tài)子程序void LCDSTA10while(l) TRISD=OXFF;RBO=1;RA3=0:REO=1;RE1=O; if(RD7=0) break;第15章液晶顯示模塊編程15. 2.2 MG-12232模塊的編程下面以圖15.1的接口電路為例。液晶顯示區(qū)域分成E1邊和E2邊,下面只含E1 邊的程序(表 15.1 中 El=l, E2=0), E2 邊(表 15.1 中 E1=O, E2=l)類推。在系統(tǒng)程序的初始化部分,應(yīng)對程序中用到的寄存器和臨時變量作說明,如:

2、unsigned charTRANS;unsignedcharPAGEADD:存放頁地址寄存器unsignedcharPAGENUM:存放總頁數(shù)寄存器unsignedcharCLMSUM;存放總列數(shù)寄存器unsignedcharCLMADD:存放列地址寄存器unsignedcharWRITE:/存放顯示數(shù)據(jù)寄存器unsignedcharrow;存放顯示起始行寄存器unsignedchari, k:通用寄存器系統(tǒng)各口的輸入輸出狀態(tài)初始化子程序設(shè)置PORTA 口和PORTE 口為數(shù)字I/O 口設(shè)置液晶的4個控制腳為輸出設(shè)置D 口為輸入/El=l/E2=0/R/W=/A0=0為忙狀態(tài),則繼續(xù)等待其為

3、空閑/對液晶顯示器發(fā)指令子程序(指令保存在TRANS寄存器中) void TRANS 1()LCDSTA10;TRISD=0X00;判斷液晶是否為忙 置D 口為輸出RBO=1;RA3=0:REO=O:RE1=O:PORTD=TRANS:RBO=O:REO=1;/El=l/E2=0R/W=0/A0=0需要寫入的命令字送入數(shù)據(jù)線/E1=O寫入指令R/W=/對液晶顯示器寫數(shù)據(jù)子程序(數(shù)據(jù)保存在WRITE寄存器中) void WRITE IQDISOFF1Q:/關(guān)顯不El/送出控制命令/判斷液晶是否為空閑設(shè)置D 口為輸入/El=l/E2=0R/W=/A0=0/如果液晶沒被關(guān)閉,則繼續(xù)關(guān)TRANS=CL

4、MADD;TRANS 1();LCDSTA10; TRISD=0X00;RB0=l; E1=1RA3=0: /E2=0RE0=0; RAV=0RE1=1; /A0=l PORTD=WRITE;RB0=0: CLMADD+;REO=1;開El顯示子程序void DISP1Q while(l)TRANS=0XAF:TRANS 1();LCDSTA10; TRISD=OXFF;RB0=l;RA3=0:REO=1;RE1=O; if(RD5=0) break;設(shè)置列地址/查詢液晶是否為空閑/D 口為輸出/需要寫入的數(shù)據(jù)放入D 口/El=0,寫入數(shù)據(jù)列地址加1/R/W=/El邊清屏子程序void CLE

5、AR 1()PAGEADD=0xB8;設(shè)置頁地址代碼for(PAGENUM=0X04: PAGENUM>0; PAGENUM-) TRANS=PAGEADD:TRANS 1():CLMADD=0x00;設(shè)置起始列foi(CLMSUM=0X50; CLMSUM>0; CLMSUM-) LCD STA1();判斷液晶是否為空閑WRITE=0X00;WRITE10;寫入OOH以清屏/頁號增1PAGEADD+:/關(guān)El顯示子程序void DISOFF1Qwlule(l)TRANS=OXAE:/發(fā)出控制命令/判斷液晶是否為空閑/D 口設(shè)置為輸入/El=l/E2=0R/W=/A0=0如果液晶沒

6、被關(guān)閉,則繼續(xù)關(guān)TRANS 1():LCDSTA1(); TRISD=OXFF;RBO=1;RA3=0;REO=1;RE1=O: if(RD5=l) break;有了以上的通用子程序,就可以構(gòu)造出各種顯示程序,如字符、漢字、曲線等。 執(zhí)行這些程序前,必須對液晶進(jìn)行初始化。初始化的順序?yàn)椋宏P(guān)顯示一正常顯示驅(qū)動 設(shè)置一占空比設(shè)置一復(fù)位一ADC選擇一清屏一開顯示,程序如下:/E1邊初始化voidled 1()TRANS=0XA4:TRANS 1(); TRANS=0XA9:TRANS 1();TRANS=0XE2;TRANS 1(); TRANS=OXAO:TRANS 1();CLEAR1Q;LCD

7、STA1O:DISP1O;/靜態(tài)顯示驅(qū)動/發(fā)出控制命令占空比為1/32/發(fā)出控制命令復(fù)位/發(fā)出控制命令/ADC選擇正常輸出/發(fā)出控制命令清屏/判斷液晶是否為空閑/開顯示15.4程序清單下面給出一個己經(jīng)在模板上調(diào)試通過的程序。注意在調(diào)試該程序時,需把模板 上的J9跳針短接。# include<pic.h>該程序用于液晶顯示功能的演示/運(yùn)行程序后,液晶上顯示”電流有效值”和”電壓有效值”字樣系統(tǒng)總的初始化子程序unsignedcharunsignedcharunsignedcharunsignedcharunsignedcharunsignedcharunsignedcharunsig

8、nedcharTRANS:PAGE ADD: 存放頁地址寄存器 PAGENUM; 存放總頁數(shù)寄存器 CLMSUM; 存放總列數(shù)寄存器 CLMADD; 存放列地址寄存器 WRITE; /存放顯示數(shù)據(jù)寄存器 row;存放顯示起始行寄存器1, k;通用寄存器t chaitable192=0X00, 0XF8, 0X48, 0X48, 0X48, 0X48,0X48,0X48,0X48,OXFC,0X08,0X00,0X00,0X00,0X00,0X07,0X02,0X02,0X02,0X02,0X3F,0X42,0X42,0X42,0X42,0X47,0X40,0X70,0X00,0X00,/” 電

9、”0X00,0X00,OXFE,0X02,0X82,0X82,0X82,0X82,OXFE,0X82,0X82,0X82,0XC3,0X82,0X00,0X00,0X40,0X30,OXOF,0X40,0X40,0X40,0X40,0X40,0X7F,0X40,0X42,0X44,0X4C,0X60,0X40,0X00,/”壓“0X04,0X04,0X04,0X84,0XE4,0X3C,0X27,0X24,0X24,0X24,0X24,0XF4,0X24,0X06,0X04 ,0X00,OXFF, 0X48,0X4 , 0X2 , 0X1 , 0X0 , OXFF, 0X9, 0X9 , 0X

10、9,0X9 , 0X49, 0X89, 0X7F, 0X0, 0X0, 0X0 , 0X0,/”有”0X88, 0X48, 0XB8, 0X9, OXA, 0X98, 0X2C , 0X48, 0X20, OXDO, 0X1F, 0X10, 0X10, 0XF8, 0X10 , 0X0, 0X40, 0X20, 0X18, 0X5, 0X2, OXD, 0X30 , 0X80, 0X80, 0X41, 0X36, 0X8, 0X37, OXCO, 0X40 , 0X0,/”效”0X80, 0X40, 0X20, 0XF8, 0X7, 0X4, 0XE4, 0XA4, 0XA4, OXBF, 0

11、XA4, 0XA4, 0XF6, 0X24, 0X0 , 0X0, 0X0, 0X0, 0X0, OXFF, 0X40, 0X40, 0X7F, 0X4A,0X4A, 0X4A, 0X4A, 0X4A, 0X7F, 0X40, 0X40 , 0X0, /”值” 0X10, 0X22, 0X64, OXC, 0X80, 0X44, 0X44, 0X64,0X55, 0X4E, 0X44, 0X54, 0X66, 0XC4, 0X0, 0X0,0X4, 0X4, OXFE, 0X1, 0X0, 0X80, 0X40, 0X3F,0X0, OXFF, 0X0, 0X3F, 0X40, 0X40, 0

12、X70, 0X0;系統(tǒng)各口的輸入輸出狀態(tài)初始化子程序void INITIAL()ADCON1=OX87;TRISA3=0;TRISBO=O; TRISE=OXOO:讀液晶顯示器狀態(tài)子程序void LCDSTA1Qwhile(l)TRISD=OXFF;RBO=1;RA3=0:REO=1;RE1=O; if(RD7=0) break;設(shè)置PORTA 口和PORTE 口為數(shù)字I/O 口設(shè)置液晶的4個控制腳為輸出設(shè)置D 口為輸入/El=l/E2=0R/W=/A0=0為忙狀態(tài),則繼續(xù)等待其為空閑對液晶顯示器發(fā)指令子程序(指令保存在TRANS寄存器中)voidTRANS 1()LCDSTAIQ;TRISD

13、=0X00;判斷液晶是否為忙/7D 口為輸出RBO=1;/El=lRA3=0:/E2=0REO=O;/RW=ORE1=O:/A0=0PORTD=TRANS:需要寫入的命令字送入數(shù)據(jù)線RBO=O:/E1=O寫入指令REO=1;R/W=1對液晶顯示器寫數(shù)據(jù)子程序(數(shù)據(jù)保存在WRITE寄存器中)voidWRITE 10lTRANS=CLMADD;設(shè)置列地址TRANS 1();LCDSTA1Q;/查詢液晶是否為空閑TRISD=0X00;/D 口為輸出RBO=1;/El=lRA3=0:/E2=0RE0=0;/RW=0RE1=1;/A0=lPORTD=WRITE;/需要寫入的數(shù)據(jù)放入D 口RB0=0;E1

14、=O,寫入數(shù)據(jù)CLMADD+;列地址加1REO=1;R/W=1開E1顯示子程序voidDISP1Qjwhile(l) TRANS=OXAF:TRANS 1();/送出控制命令LCDSTA1Q;/判斷液晶是否為空閑TRISD=OXFF;設(shè)置D 口為輸入RBO=1;/El=lRA3=0:/E2=0REO=1;R/W=RE1=O;/A0=0if(RD5=0) break;/如果液晶沒被關(guān)閉,/E1邊清屏子程序voidCLEAR 1()PAGEADD=0xB8;設(shè)置頁地址代碼foi(PAGENUM=0X04: PAGENUM>0; PAGENUM-) TRANS=PAGEADD;TRANS 1(

15、);CLMADD=0x00; for(CLMSUM=0X50;LCDSTAIQ; WRITE=0X00;WRITE10;PAGEADD+:/關(guān)El顯示子程序void DISOFFIQ設(shè)置起始列CLMSUM>0: CLMSUM-) /判斷液晶是否為空閑寫入OOH以清屏/頁號增1while(l) TRANS=OXAE; TRANS 1(); LCDSTA1(); TRISD=OXFF; RBO=1; RA3=0: REO=1; RE1=O; if(RD5=l) /El邊初始化 void led 1()break;/發(fā)出控制命令/判斷液晶是否為空閑/D 口設(shè)置為輸入/El=l/E2=0R/W=

16、/A0=0/如果液晶沒被關(guān)閉,則繼續(xù)關(guān)DISOFFIO;TRANS=0XA4:TRANS 1();TRANS=0XA9:TRANS 1();TRANS=0XE2;TRANS 1();/關(guān)顯不El /靜態(tài)顯示驅(qū)動 /發(fā)出控制命令 占空比為1/32 /發(fā)出控制命令 復(fù)位/發(fā)出控制命令/ADC選擇正常輸出/發(fā)出控制命令清屏/判斷液晶是否為空閑/開顯示TRANS=OXAO: TRANS 1(); CLEAR1Q; LCDSTA1O; DISP1O;/E2邊的處理部分讀液晶顯示器狀態(tài)子程序void LCDSTA2Q設(shè)置D 口為輸入/El=0/E2=lR/W=/A0=0為忙狀態(tài),則繼續(xù)等待其為空閑whil

17、e(l) TRISD=OXFF; RB0=0:RA3=1;REO=1;RE1=O; if(RD7=0) break;對液晶顯示器發(fā)指令子程序指令保存在TRANS寄存器中void TRANS2QLCDSTA2();判斷液晶是否為忙TRISD=0X00;/D 口為輸出RB0=0:/El=0RA3=1;/E2=lRE0=0;/RW=0RE1=O:/A0=0PORTD=TRANS:需要寫入的命令字送入數(shù)據(jù)線RA3=0:/E2=0寫入指令REO=1;R/W=1/對液晶顯示器寫數(shù)據(jù)子程序(數(shù)據(jù)保存在WRITE寄存器中)void WRITE2QTRANS=CLMADD;TRANS2Q;LCDSTA2Q;TR

18、ISD=0X00;RB0=0;設(shè)置列地址/查詢液晶是否為空閑/D 口為輸出/El=0RA3=1;REO=O;RE1=1;PORTD=WRITE;RA3=0:CLMADD+;REO=1;開E2顯示子程序void DISP2Qwhile(l) TRANS=OXAF:TRANS2Q;LCDSTA2();TRISD=OXFF;RB0=0:RA3=1;REO=1;RE1=O; if(RD5=0) break;/E2邊清屏子程序void CLEAR2QPAGEADD=OxB &/E2=l/RW=0/A0=l/需要寫入的數(shù)據(jù)放入D 口/E2=0,寫入數(shù)據(jù)列地址加1R/W=/送出控制命令/判斷液晶是否

19、為空閑設(shè)置D 口為輸入/El=0/E2=lR/W=/A0=0如果液晶沒被關(guān)閉,則繼續(xù)關(guān)設(shè)置頁地址代碼foi(PAGENUM=0X04: PAGENUM>0; PAGENUM-) TRANS=PAGEADD;TRANS2Q;CLMADD=0x00;設(shè)置起始列foi(CLMSUM=0X50; CLMSUM>0: CLMSUM-) LCDSTA2Q;/判斷液晶是否為空閑WRITE=OXO0;WRITE20;PAGEADD+;關(guān)E2顯示子程序?qū)懭?0H以清屏/頁號增1void DISOFF2Qwlule(l) TRANS=OXAE;TRANS2Q;/發(fā)出控制命令LCDSTA2();/判斷液

20、晶是否為空閑TRISD=OXFF:/D 口設(shè)置為輸入RB0=0:/El=0RA3=1;/E2=lREO=1;R/W=RE1=O:/A0=0if(RD5=l) break;/如果液晶沒被關(guān)閉,則繼續(xù)關(guān)/E2邊初始化void lcd2()DISOFF2Q;TRANS=0XA4:TRANS2Q;TRANS=0XA9:TRANS2Q:TRANS=0XE2;TRANS2Q:TRANS=0XA0:TRANS2Q:CLEAR2Q:LCDSTA2Q;DISP2Q;/關(guān)顯不El/靜態(tài)顯示驅(qū)動/發(fā)出控制命令占空比為1/32/發(fā)出控制命令復(fù)位/發(fā)出控制命令/ADC選擇正常輸出/發(fā)出控制命令清屏/判斷液晶是否為空閑/

21、開顯示/LCD的E1邊顯示函數(shù),調(diào)用一次該函數(shù),則在相應(yīng)的位置顯示相應(yīng)的字void dis 1()TRANS=iow:TRANS 1();TRANS=PAGEADD;i=i*32;TRANS 1();/i變成數(shù)組指示指針foi(k=0: k<16; k-H-)WRITE=tablei十k ;/查得需要顯示的字節(jié)WRITE1Q;在WRITE1子程序里面,列地址加1CLMADD=CLMADD-16: 恢復(fù)列地址PAGEADD=PAGEADD+1 ; 頁地址加 1TRANS=PAGEADD;TRANS 1();for(; k<32; k-H-) WRITEwble 訐k ;/查得需要顯示

22、的字節(jié)WRITE1Q;在WRITE1子程序里面,列地址己經(jīng)加1/LCD的E2邊顯示函數(shù),調(diào)用一次該函數(shù),則在相應(yīng)的位置顯示相應(yīng)的字 void dis2()TRANS=iow;TRANS2Q;TRANS=PAGEADD;TRANS2Q;產(chǎn)3厶i變成數(shù)組指示指針for(k=0; k<16; k-H-)WRITE=tablei+k ;/查得需要顯示的字節(jié)WRITE2();在WRITE1子程序里面,列地址己經(jīng)加1CLMADD=CLMADD-16: 恢復(fù)列地址PAGEADD=PAGEADD+1 ; 頁地址加 1TRANS=PAGEADD;TRANS2Q;/查得需要顯示的字節(jié)在WRITE 1子程序里面,列地址己經(jīng)加1系統(tǒng)初始化/E1邊初始化/E2邊初始化顯示起始列為第0行for(; k<32; k-t-F) WRITEnable訐 k; WRITE2();/主程序main()INITIAL();led 1();lcd2(); ro

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論