盡管部分初學(xué)者對(duì)液晶屏的全部代碼的理解存在困難,不過(guò)沒(méi)關(guān)系,只要我們懂得如何運(yùn)用它們各個(gè)函數(shù)的功能即可,大家下載進(jìn)開(kāi)發(fā)板之后觀察實(shí)驗(yàn)現(xiàn)象再結(jié)合代碼與注釋慢慢細(xì)讀掌握吧。
1.測(cè)試代碼
#include <reg52.h> #include <function.h>//詳見(jiàn)第六章第8講 #include <lcd.h> void main() { char x;//取值范圍-128~127 u8 str1[] = "Good Good Study"; u8 str2[] = "Day Day Up!"; InitLcd1602();//初始化液晶屏 while (1) { LcdSetCursor(0,0);//把光標(biāo)移到第一行第1格,準(zhǔn)備寫入內(nèi)容 LcdWriteDat(87); //寫入字符“W”的ASCII碼值,讓其顯示字符W delay_ms(2000); //延時(shí)一段時(shí)間 LcdSetCursor(0,1);//把光標(biāo)移到第二行第1格,準(zhǔn)備寫入內(nèi)容 LcdWriteDat('X'); //字符'X'的ASCII碼值為88,此種表達(dá)寫法更加直觀明白要顯示的內(nèi)容 delay_ms(2000); //延時(shí)一段時(shí)間 LcdFullClear(); //全部?jī)?nèi)容清除顯示 delay_ms(2000); //延時(shí)一段時(shí)間 LcdShowStr(1, 0, str1);//第一行顯示"Good Good Study" LcdShowStr(3, 1, str2);//第二行顯示"Day Day Up" delay_ms(2000);//延時(shí)一段時(shí)間 LcdFullClear();//全部?jī)?nèi)容清除顯示 delay_ms(2000);//延時(shí)一段時(shí)間 LcdShowStr_len(0, 0, "CALL TO 10086", 7);//只能顯示字符串的前面7個(gè)字符,也就是只能顯示“CALL TO” LcdShowStr_len(0, 1, str1, 11); //只能顯示“Good Good S” delay_ms(2000);//延時(shí)一段時(shí)間 for(x=10;x>=0;x--) { LcdAreaClear(x, 1, 1);//間隔1秒,依次清除“S”、“ ”、“d”、“o”、“o”、“G”······ delay_ms(1000); } for(x=6;x>=0;x--) { LcdAreaClear(x, 0, 1);//間隔1秒,依次清除“O”、“T”、“ ”、“L”、“L”、“A”、“C” delay_ms(1000); } } }
有了這段代碼,觀察實(shí)驗(yàn)現(xiàn)象就能更加明白掌握各功能函數(shù)的用法了。
2.回顧printf函數(shù)
此時(shí)我們回到第十章第4節(jié)的printf_str函數(shù)觀察下面這兩段代碼
while(*str != '\0') //連續(xù)發(fā)送字符串?dāng)?shù)據(jù),直到檢測(cè)到結(jié)束符 { SBUF=*str++; while(!TI); TI = 0; }
while(i>=0) //剩余低位都如實(shí)發(fā)送出去 { SBUF='0'+buf[i];//如果此時(shí)的buf[i]的值是1,那么電腦端窗口在“文本模式”下要想顯示字符“1”,只需'0'+1,因?yàn)椤?’就是ASCII碼值48 while(!TI); TI = 0; i--; }
學(xué)過(guò)了液晶屏代碼的寫法技巧,現(xiàn)在再閱讀當(dāng)初的這兩段代碼就能明白“SBUF=*str++;”是發(fā)送一個(gè)數(shù)組或者一個(gè)字符串的所有數(shù)據(jù)。
而“SBUF='0'+buf[i];”發(fā)送的就是字符’0’~’9’其中一個(gè)數(shù)據(jù),因?yàn)閎uf[i]在前面的執(zhí)行內(nèi)容中規(guī)定了數(shù)值范圍為0~9,
所以“ '0'+buf[i] ”本質(zhì)就是“ '0'~'9' ”。
需要注意的是,‘0’代表的是ASCII碼值,跟ASCII碼值為0不一樣。
ASCII碼值為0時(shí)的字符是:‘\0’(也就是結(jié)束符)
ASCII碼值為48時(shí)的字符是:‘0’
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲(chóng)的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程