51單片機(jī)學(xué)習(xí)之路 —— 1.7 獨(dú)立鍵盤(pán)
1 作業(yè)回顧
作業(yè)
2 獨(dú)立鍵盤(pán)概念
s2 s3 s4 s5 為獨(dú)立鍵盤(pán)與P3^0 P3^1 P3^2 P3^3 相連接
s2 = 0 就是s2被按下的意思
3 程序編寫(xiě)
1先寫(xiě)個(gè)簡(jiǎn)單的
要求 按下s2按鍵 led點(diǎn)亮,再次按下熄滅
代碼
s2按鍵
分析:
1
sbit S2 =P3^4;
在板子的原理圖中,S2 接的是P3.4口不要寫(xiě)錯(cuò)了
2
假如S2 被按下,如果10ms后還是按下的
其中的語(yǔ)句delay(10) 學(xué)名叫去抖延時(shí)
還有while(!S2)分析以下
假如S2被按下,則!S2 = 1 就一直執(zhí)行空語(yǔ)句;假如S2松開(kāi)則可以往下執(zhí)行。
2 來(lái)個(gè)復(fù)雜點(diǎn)的
1 要求:用數(shù)碼管的前兩位顯示一個(gè)十進(jìn)制數(shù),變化范圍為00到59
按鍵功能: S2 按下數(shù)值加一
S3 按下數(shù)值減一
S4 按下數(shù)值清零
S5 按下后啟動(dòng)自加每秒加一,再次按下后暫停并顯示數(shù)值
2 代碼:
鍵盤(pán)2
3 分析下:
要完成自加,需要定時(shí)器,我們需要寫(xiě)一個(gè)中斷程序;
我建議寫(xiě)代碼時(shí)用notepad,可以寫(xiě)的很清晰明白
這里我將代碼主要寫(xiě)了7大塊;看上去就清晰明白了許多吧。下面我們主要看幾塊代碼
1
初始化函數(shù)的作用是選定定時(shí)器0工作模式1 并打開(kāi)開(kāi)關(guān)總斷和定時(shí)器0中斷
2
顯示函數(shù)
P0 = 0xfe; // 1111 1110 第一位數(shù)碼管 對(duì)應(yīng)十位
P0 = 0xfd // 1111 1101 第二位數(shù)碼管 對(duì)應(yīng)個(gè)位
3 鍵盤(pán)塊代碼
對(duì)S2 功能是加一 但假如加滿到60時(shí)將其置零
S3 功能是減一 ,先判斷是否位0;為零置60
S4 功能清零
S5 S5是按下一次開(kāi)始,在按下一次暫停,所以先while(!S5)
先判斷S5是否按完畢了,一但手從S5按鍵拿開(kāi),就開(kāi)始自加或暫停。
4 主函數(shù)
套個(gè)大循環(huán),讓他一直掃描鍵盤(pán)并顯示即可。
5 中斷
每一次中斷時(shí),先填值,保證每次定時(shí)都是50ms
每20個(gè)50ms 即1s,將numt0置零,num+1;num會(huì)用于顯示函數(shù)中
假如大于59 將其置0;