I/O口,I代表Inpout,O代表Output。前面的所講的點亮LED,是單片機輸出高低電平,從而達到控制LED;這一講將會通過按鍵輸入電平,單片機檢測到輸入高低電平,將會有對應的動作。
STC89C52的輸入電平識別。
獨立按鍵
按鍵的一端接單片的I/O口,另一端接GND或者VCC(接VCC的時候需要注意,電壓是需要單片機能夠識別的輸入的電壓。) ,下圖是接GND的連接方式。
當獨立按鍵按下時,高低電平(VCC或者GND)會直接到達I/O口,此時單片機可以檢測到該I/O口是高電平(1)或者低電平(0),然后做獨立按鍵被按下的對應處理。
現在有一個功能需求,當按下按鍵時LED被點亮,手松開時LED熄滅。代碼應該如何寫呢?
#include "reg52.h"
//引入頭文件
sbit led1 = P2^0;
//位定義led1,可以直接通過位控制led亮滅
sbit key1 = P3^1;
//位定義key1,可以通過位控制檢測該I/O口的狀態
void main() {
//循環
while(1) {
if(key1==0) { //判斷I/O口狀態,如果為0
led1 = 0; //點亮Lled
}
else {
led1 = 1; //熄滅led
}
}
}
總結:獨立按鍵一端連接I/O口,另一端連接GND或者VCC,當按鍵被按下GND或者VCC的電平直接到I/O口。通過檢測I/O口電壓可以判斷按鍵是否被按下,進而觸發不同的程序行為。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6037文章
44558瀏覽量
635355 -
51單片機
+關注
關注
274文章
5702瀏覽量
123623 -
GND
+關注
關注
2文章
539瀏覽量
38721 -
獨立按鍵
+關注
關注
1文章
45瀏覽量
11564
發布評論請先 登錄
相關推薦
求解惑:使用51單片機的獨立按鍵實現數碼管的顯示控制,代碼無報錯,但是運行結果是錯的
求解答:使用51單片機數碼管的前兩位顯示一個十進制數,變化范圍是00~59,開始時顯示00,每按下s2鍵一次,數值增加一次,每按下s3鍵一次,數值減一,每按下s4鍵一次,數值歸0,每按下s5鍵一次
發表于 08-08 23:47
評論