51單片機(jī) 1602顯示程序 C語言
《51單片機(jī) 1602顯示程序 C語言》由會(huì)員分享,可在線閱讀,更多相關(guān)《51單片機(jī) 1602顯示程序 C語言(13頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、**
* 描述: LCD 1602 滾動(dòng)顯示
*
*顯示方式: *
*1、從左到右逐字顯示,閃動(dòng)二次,清屏。 *
*2、再從右到左逐字顯示,閃動(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) { //寫入指令數(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) { 〃寫入字符顯示數(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); 〃顯示開,關(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) { 〃寫入指令數(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) { 〃寫入字符顯示數(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、先將兩行字符寫
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)檢查LCD忙狀態(tài) /*lcd_busy為1時(shí),忙,等待o lcd-busy為0時(shí),閑,可寫指令與數(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)寫指令數(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)寫顯示數(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); } 〃顯示開,關(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í) 〃開顯示 〃關(guān)閉顯示 〃延時(shí) 〃開顯示 嚴(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: 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六級(jí)上冊(cè)科學(xué)ppt課件-誰選擇了它們-教科版
- 護(hù)理核心制度培訓(xùn)一_圖文課件
- 部編《池子與河流》課件
- SWOT分析法(非常全面)課件
- 主題班會(huì)我的成長目標(biāo)課件
- 城市交通擁堵及治理總結(jié)課件
- 輸血相關(guān)性急性肺損傷課件
- 議論文的謀篇布局與論點(diǎn)的提出ppt課件
- 六級(jí)上冊(cè)科學(xué)ppt課件-地球的近鄰——月球-冀人版
- 疾病預(yù)防、冬季保暖-課件
- 中考英語語法復(fù)習(xí)之狀語從句ppt課件集4
- 《百分?jǐn)?shù)的意義和讀寫》參考ppt課件
- 主題班會(huì)堅(jiān)持就是勝利課件
- 第二章--用人單位對(duì)大學(xué)生的要求概況ppt課件
- 教科版六年級(jí)科學(xué)上冊(cè)第三單元檢測(cè)卷(含答案)課件