大家好,我又來了,這次是基礎(chǔ)切屏(我也只會這基礎(chǔ)。。),我用的是stc15w4k56s4的單片機(jī),作用是,可以使用和51一樣的操作。
切屏 切屏: 例如我想在兩個屏幕之間切換: 1、先把每個屏幕應(yīng)該顯示的效果給存起來
2、再把兩個屏幕的顯示操作寫成函數(shù)形式(也可以直接寫在主函數(shù)中,但是這樣的話,主函數(shù)里就很臃腫,所以為了美觀和方便操作,一般寫成函數(shù)形式,直接調(diào)用函數(shù)就好,但是注意,沒有使用的函數(shù),系統(tǒng)會給警告)
3、寫按鍵掃描函數(shù) 我使用兩個按鍵,一個按鍵代表一個屏幕,這里要注意的是,我使用了清屏指令,我們可以先從顯示操作函數(shù)的形象版看看: 我是用一個變量m來依次顯示字符,如果要切換屏幕的話,就讓m返回起點(diǎn)“m=0”,讓它重新“跑”(m還挺辛苦的),切屏后,讓它返回起點(diǎn),那么如果之前跑過了lcd1字符串,那么它從起點(diǎn)開始跑,是用“替換”的方法跑,如果它沒跑完之前l(fā)cd1的長字符串,那也就是說它只替換了之前的那一部分,后面還留有一部分沒有替換,所以就得出了個道理:m它不能自動清掉它之前跑過的地方。那么我們只能再找個工人:指令設(shè)置函數(shù)(寫指令函數(shù))我用wcmd命名,01H是清屏指令。 還有要注意的就是按鍵抬起,如果沒有按鍵抬起,那么如果我的按鍵是“按一下就+1”那么單片機(jī)就會一直循環(huán)+1, 4、主函數(shù): 可以看到,由于我都是把操作指令給寫成函數(shù),所以主函數(shù)就直接調(diào)用,是不是很美觀,除了美觀還有個神奇功能!你可以右鍵某個函數(shù),有項Go to definition of”xx”然后就可以直接飛到那個函數(shù)去! I/O口初始化可以不用看,我用的是stc15w4kxxs4系列。 需要看的是while(1)這部分,這部分我花了好長時間才懂: ①while(1)是等待, 為啥是等待?因?yàn)樗恢睘?(1就是真),當(dāng)它為真時,不跳出循環(huán),為0(假)才能出來; 為啥加這個東西?這就要另外個知識點(diǎn),我們使用的是C語言,是機(jī)器語言,所以我們要學(xué)會C語言,就只需要讀懂C語言這個機(jī)器語言而已,C語言是按照主函數(shù)中的順序讀下來的,當(dāng)讀到某個調(diào)用函數(shù),就Go to調(diào)用的函數(shù),讀里面的數(shù)據(jù),再返回主函數(shù)繼續(xù),while(1)是為真就不跳出,這么一個死循環(huán)(它別稱死循環(huán)),當(dāng)主函數(shù)讀到while(1)時,就一直等它跳出,(main:大哥咋那么久啊啊); 那我不加行不行?我之前說主函數(shù)是一直讀它里面的程序,如果不加的話它就會一直這樣讀下去,大家可以看看不加回是什么樣的情況,數(shù)據(jù)就會一閃一閃的(因?yàn)閙在一直跑�。。�,所以要加等待讓主函數(shù)停�。ㄔ谶@停頓!)。 ②關(guān)于while(1)之前說了,它為真時,不跳出,為假時才跳出,那么什么時候?yàn)榧倌�,這就要看它肚子里的貨了,如果肚子里沒貨,那就要一直等,這時就為1;當(dāng)有1和2兩個貨時,1貨突然報警了,這時1貨就為真,它就優(yōu)先處理1貨,就等1貨被干掉;當(dāng)2貨報警了,那它又去處理2貨,這時2貨就為真,它又要去處理2貨,又要等它被干掉。 以上,我是這么理解的,專業(yè)的我不懂,大家聽專業(yè)的也可能聽不懂,所以就先給大家一個形象的認(rèn)識,今后再接觸專業(yè)的知識就能事半功倍了。
|