51單片機(jī) 1602顯示程序 C語(yǔ)言
《51單片機(jī) 1602顯示程序 C語(yǔ)言》由會(huì)員分享,可在線閱讀,更多相關(guān)《51單片機(jī) 1602顯示程序 C語(yǔ)言(13頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、**
* 描述: LCD 1602 滾動(dòng)顯示
*
*顯示方式: *
*1、從左到右逐字顯示,閃動(dòng)二次,清屏。 *
*2、再?gòu)挠业阶笾鹱诛@示,閃動(dòng)二次,清屏。 *
*3、周期性地重復(fù)上述顯示方式。 *
*******************************************************************************
*/
^include
2、bit LCD_RW = P2八 5; sbit LCD_EP = P2A7; BYTE code disl[] = {H WELCOME TO H}; BYTE code dis2[] = {H ”}; BYTE code dis3[] = {H OT EMOCLEW 冷; BYTE code dis4[] = {H MOC.NIHCEREWWW H}; delay(int ms) { //延時(shí)子程序 inti; wliile(ms-) { fbi(i = 0; i< 250; i++) { _nop_(); _nop_(); _nop_(); _nop_();
3、} } } BOOL lcd_bz() //測(cè)試LCD忙碌狀態(tài) BOOL result; LCD_RS = 0; LCD_RW= 1; LCD_EP= 1; _nop_0; _nop_0; _nop_0; _nop_0; result = (BOOL)(PO & 0x80); LCD_EP = 0; return result; } lcd_wcmd(BYTE cmd) { //寫(xiě)入指令數(shù)據(jù)到LCD while(lcd_bzQ); LCD_RS = 0; LCD.RW = 0; LCD_EP = 0; _nop_0; _nop_0; P0 =
4、cmd; _nop_0; _nop_0; _nop_0; _nop_0; LCD_EP= 1; _nop_0; _nop_0; _nop_0; _nop_0; LCD_EP = 0; } lcd_pos(BYTE pos) { 〃設(shè)定顯示位置 lcd_wcmd(pos | 0x80); } lcd_wdat(BYTE dat) { 〃寫(xiě)入字符顯示數(shù)據(jù)到LCD while(lcd_bzQ); LCD_RS = 1; LCD.RW = 0; LCD EP = 0: PO = dat; _nop_0; _nop_0; _nop_0; _nop_0; LCD
5、_EP= 1; _nop_0; _nop_0; _nop_0; _nop_0; LCD_EP = 0; } lcd_init() { //LCD初始化設(shè)定 lcd_wcmd(0x38); //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delay(l); lcd_wcmd(0x0c); 〃顯示開(kāi),關(guān)光標(biāo) delay(l); lcd_wcmd(0x06); 〃移動(dòng)光標(biāo) delay(l); lcd_wcmd(0x01); 〃清除LCD的顯示內(nèi)容 delay(l); } main() { //初始化LCD wlule(l) lcd_wcmd(0
6、x06); lcd_pos(0); i = 0; while(disl[ i ] != 9) { lcd_wdat(disl[ i ]); 1++; delay(30); } lcd_pos(0x40); 1 = 0; BYTE 1; lcd^uiitQ; delay(lO); 〃向右移動(dòng)光標(biāo) //設(shè)置顯示位置為第一行的第1個(gè)字符 〃顯示字符” WLCOME TO" 〃控制兩字之間顯示速度 〃設(shè)置顯示位置為第二行第1個(gè)字符 while(dis2[ i ] != *\0*) { lcd_\vdat(dis2[ i ]); 1++; delay(30); }
7、 delay(800); lcd_wcmd(0x01); delay(l); lcd_wcmd(0x04); lcd_pos(15); i = 0; while(dis3[ i ] != *\0*) { lcd_\vdat(dis3[ i ]); 1++; delay(30); } lcd_pos(0x4F); i = 0; while(dis4[ i ] != *\0*) { lcd_\vdat(dis4[ i ]); 1++; delay(30); } delay(800); lcd_wcmd(0x01); delay(200); 〃顯示字符” ”
8、 〃控制兩字之間顯示速度 〃控制停留時(shí)間 〃清除LCD的顯刀£內(nèi)容 〃向左移動(dòng)光標(biāo) 〃設(shè)置顯示位置為第一行的第16個(gè)字符 //顯示字符“WLCON4E TO" 〃控制兩字之間顯示速度 〃設(shè)置顯示位置為第二行的第16個(gè)字符 〃顯示字符” ” 〃控制兩字之間顯示速度 〃控制停留時(shí)間 〃清除LCD的顯示內(nèi)容 〃控制兩屏轉(zhuǎn)換時(shí)間 嚴(yán)***************************************************************************** * * * * 描 述 : 1602 字符型 LCD 顯示演示程序 wel
9、come
在第二行顯示
www? PRECHIN.com
*******************************************************************************
*/
^include
10、ef unsigned chai BYTE; tvpedef unsigned mt WORD; tvpedef bit BOOL; // sbit rs = P2A6; sbit rw = P2A5; sbit ep = P2A7; BYTE code disl[] = {Hwelcome!n}; BYTE code dis2[] = {hvww.PRECHIN.com”}; delay(BYTE ms) { //延時(shí)子程序 BYTE i; while(ms-) { for(i = 0; i< 250; i++) { _nop_(); _nop_(); _nop
11、_(); _nop_(); } } //測(cè)試LCD忙碌狀態(tài) BOOL lcd_bz() { BOOL result; rs = 0; rw= 1; ep= 1; _nop_0; _nop_0; _nop_0; _nop_0; result = (BOOL)(PO & 0x80); ep = 0; return result; } lcd_wcmd(EYTE cmd) { 〃寫(xiě)入指令數(shù)據(jù)到LCD while(lcd_bz()); rs = 0; rw = 0; ep = 0; _nop_0; _nop_0; P0 = cmd; _nop_0;
12、 _nop_0; _nop_0; _nop_0; ep= 1; _nop_0; _nop_0; _nop_0; _nop_0; ep = O; } lcd_pos(BYTE pos) { //設(shè)定顯示位置 lcd_wcmd(pos | 0x80); } lcd.wdat(BYTE dat) { 〃寫(xiě)入字符顯示數(shù)據(jù)到LCD while(lcd_bz()); rs = 1; rw = 0; ep = 0; P0 = dat; _nop_0; _nop_0; _nop_(); _nop_0; ep= 1; _nop_0; _nop_0; _nop
13、_0; _nop_0; ep = O; lcd_init() { lcd_wcmd(0x38); delay(l); lcd_wcmd(OxOc); delay(l); lcd_wcmd(0x06); delay(l); lcd_wcmd(0x01); delay(l); } //LCD初始化設(shè)定 // // // 〃清除LCD的顯示內(nèi)容 main() { BYTE i; lcd^uiitQ; delay(lO); lcd_pos(4); //初始化LCD //設(shè)置顯示位置為第一行的第5個(gè)字符 1 = 0; while(disl[i] != *
14、\0J { //顯示字符“welcome!” lcd_wdat(disl[i]); 1卄; } lcd_pos(0x41); 1 = 0; //設(shè)置顯示位置為第二行第二個(gè)字符 while(dis2[i] != 1 lcd_wdat(dis2[i]); // 顯示字符“ ” } while(l); ** * 描述: * LCD 1602 移 動(dòng)顯示 *顯示方式: * 1 、 LCD * 第一行顯示 : BIG BIG WORLD * LCD 第二行顯 示: I LOVE PUZHONG * 2、先將兩行字符寫(xiě)
15、入DDRAM中,然后從右至左逐字移出顯示。
*
* 3、在指定位置停留1.6秒后,閃爍2次,清屏。 *
*4、反復(fù)循環(huán)上述顯示方式。 *
*******************************************************************************
*/
#include
16、LCD_EN = P2A7; uchai code disl[] = {nBIG BIG WORLD”}; uchai code dis2[] = {nI LOVE PUZHONG”}; 嚴(yán)******************************************************************/ /*延時(shí)子程序 嚴(yán)******************************************************************/ void delay(iiit nis) { mt i; while(nis-) fbr(i =
17、 0; i< 250; i++) _nop_(); _nop_(); _nop_(); _nop_(); } } } 嚴(yán)******************************************************************/ 嚴(yán)檢查L(zhǎng)CD忙狀態(tài) /*lcd_busy為1時(shí),忙,等待o lcd-busy為0時(shí),閑,可寫(xiě)指令與數(shù)據(jù)。 嚴(yán)******************************************************************/ bit lcd_busv() { bit result; LCD_RS
18、 = 0; LCD_RW=1; LCD_EN = 1; _nop_0; _nop_0; _nop_0; _nop_0; result = (bit)(P0&0x80); LCD_EN = 0; return result; 嚴(yán)寫(xiě)指令數(shù)據(jù)到LCD /*RS=L, RW=L,己=高脈沖,D0-D7=指令碼。 嚴(yán)******************************************************************/ void lcd_wcmd(uchai- cmd) { \vhile(lcd_bu syQ); LCD_RS = 0;
19、 LCD RW = 0: LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; 嚴(yán)******************************************************************/ 嚴(yán)寫(xiě)顯示數(shù)據(jù)到LCD 嚴(yán)RS=H, RW=L,丘=高脈沖,D0-D7=數(shù)據(jù)。 嚴(yán)***************************
20、***************************************/ void lcd_wdat(uchai dat) { \vlule(lcd_bu syQ); LCD_RS = 1; LCD.RW = 0; LCD_EN = 0; P0 = dat; _nop_0; _nop_0; _nop_0; _nop_0; LCD_EN= 1; _nop_0; _nop_0; _nop_0; _nop_0; LCD_EN = 0; } 嚴(yán)***************************************************************
21、***/ /*設(shè)定顯示位置 嚴(yán)******************************************************************/ 〃數(shù)據(jù)指針=80+地址變量 void lcd_pos(uchar pos) { lcd_wcmd(pos|0x80); } 嚴(yán)******************************************************************/ /* LCD初始化設(shè)定 嚴(yán)*******************************************************
22、***********/ void lcd_iiiit() 〃等待LCD電源穩(wěn)定 //16*2顯示,5^7點(diǎn)陣,8位數(shù)據(jù) { delay(15); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); delay(5); lcd_wcmd(0x06); delay(5); lcd_wcmd(0x01); delay(5); } 〃顯示開(kāi),關(guān)光標(biāo) 〃移動(dòng)光標(biāo) 〃清除LCD的顯示內(nèi)容 嚴(yán)******************
23、************************************************/ /*清屏子程序 嚴(yán)******************************************************************/ void lcd_clr() { 〃清除LCD的顯示內(nèi)容 lcd_wcmd(0x01); delay(5); 嚴(yán)******************************************************************/ 閃動(dòng)子程序 嚴(yán)****************************
24、**************************************/ void flash() { delay(600); lcd_wcmd(0x08); delay(200); lcd_wcmd(0x0c); delay(200); lcd_wcmd(0x08); delay(200); lcd_wcmd(0x0c); delay(200); } //控制停留時(shí)間 〃關(guān)閉顯示 〃延時(shí) 〃開(kāi)顯示 〃關(guān)閉顯示 〃延時(shí) 〃開(kāi)顯示 嚴(yán)********************************************************
25、**********/ /*主程序 嚴(yán)******************************************************************/ main() { uchar ij; 〃初始化LCD delay(10); lcd.initQ; wlule(l) { lcd_clr(); lcd_pos(0xl0); 1 = 0; 〃設(shè)置顯示位置為第一行第17列 〃顯示字符” while(disl[i] != \0*) { lcd_\vdat(disl[i]); i++; Icd_pos(0x50); 1 = 0; while(dis2[i] != \0*) { lcd_\vdat(dis2[i]); 1++; } for(j=0j<16j++) { lcd_wcmd(0xl8); delay(100); } flash(); 〃設(shè)置顯示位置為第二行第17列 〃顯示字符” ” 〃向左移動(dòng)16格 〃字符同時(shí)左移一格 //控制移動(dòng)時(shí)間 〃閃動(dòng)二次
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版地理七年級(jí)下冊(cè)--極地地區(qū)課件
- 備選方案與f課件
- 行程問(wèn)題 順流逆流
- 班集體特色創(chuàng)建
- 發(fā)電廠的控制系統(tǒng)綜述
- 英語(yǔ)專(zhuān)業(yè)四級(jí)考試閱讀技巧新
- 小說(shuō)中的環(huán)境描寫(xiě)
- 典案二PPT教學(xué)案例SectionA2
- 血液透析患者動(dòng)靜脈內(nèi)瘺閉塞的原因及防護(hù)課件
- 運(yùn)動(dòng)快慢與方向的描述——速度課件
- 新概念第一冊(cè)lesson78ppt課件
- 原電池公開(kāi)課修改課件
- 檢量具使用方法和注意事項(xiàng)課件
- 中考賓語(yǔ)從句復(fù)習(xí)PPT課件2
- 不用文字的書(shū)和信