南京裝修公司做網(wǎng)站武漢關(guān)鍵詞排名推廣
目錄
目的
一,STC單片機(jī)模塊
二,獨(dú)立按鍵?
2.1 獨(dú)立按鍵位置
2.2 獨(dú)立按鍵電路圖
三,創(chuàng)建Keil項(xiàng)目
四,代碼?
五,代碼編譯、下載到51單片機(jī)
六,效果
目的
當(dāng)獨(dú)立K1按鍵按下時(shí)LED? ?D1 點(diǎn)亮,松開D1熄滅。
一,STC單片機(jī)模塊
二,獨(dú)立按鍵?
2.1 獨(dú)立按鍵位置
2.2 獨(dú)立按鍵電路圖
?
這里要注意一個(gè)設(shè)計(jì)的bug
P3_1 引腳對應(yīng)是K1
P3_0 引腳對應(yīng)是K2
?我們也不用把按鍵的構(gòu)造想太復(fù)雜 ,就當(dāng)成一個(gè)普通的開關(guān)就好。
輕觸(還是要多用點(diǎn)力,不是手機(jī)屏幕那種輕觸)按下就導(dǎo)通,引腳P30就是高電平0(比如:按下按鍵K1,此時(shí)電路就接通GND接地了)。
松開時(shí)電路就斷開,引腳P30是底電平1。
為什么這里設(shè)計(jì)成高電平0,低電平1呢?
芯片的每個(gè)引腳? 都有寄存器 可讀也可寫。
也就是說我們既能讓程序主動讓每個(gè)引腳處于高電平或者低電平;?同時(shí) 引腳上處于高電平或低電平程序也能獲取到。
比如:
我們用程序讓引腳P3_0處于高電平,可以用 P3_0=0;
如果我們要檢查P3_0 處于高電平還是電平。我們可以用 一個(gè)變量將其獲取出來并打印出來
int P3_0_status=P3_0;//取引腳狀態(tài)
printf("%d",P3_0_status);//打印狀態(tài)值。
這里我們一直去檢測這個(gè)引腳的狀態(tài)就可以了。
if(P3_1==0) //檢測按鍵K1的狀態(tài);如果K1按鍵按下{P2_0=0; //D1輸出0,點(diǎn)亮}else{P2_0=1; //D1輸出1,熄滅}
三,創(chuàng)建Keil項(xiàng)目
詳細(xì)參考:51單片機(jī)STC89C52RC——?jiǎng)?chuàng)建Keil項(xiàng)目-CSDN博客
四,代碼?
#include <REGX52.H>
/*** 函 數(shù):主函數(shù)* 參 數(shù):無* 返 回 值:無*/
void main()
{while(1){if(P3_1==0) //檢測按鍵K1的狀態(tài);如果K1按鍵按下{P2_0=0; //D1輸出0,點(diǎn)亮}else //如果K1按鍵松開{P2_0=1; //D1輸出1,熄滅}}
}
?
五,代碼編譯、下載到51單片機(jī)
代碼編譯請參考
《51單片機(jī)STC89C52RC——代碼編譯-CSDN博客》
代碼下載請參考
《51單片機(jī)STC89C52RC——STCAI-ISP代碼下載-CSDN博客》