概述
前面幾章講解的都是 I/O 口當成輸出管腳使用,本章將通過按鍵實驗學習 I/O 口的輸入功能。按鍵作為一種輸入設備,在實際應用中非常的廣泛。本章將詳細介紹按鍵的使用。
7.1 按鍵原理
獨立按鍵的原理非常簡單,如下圖所示:
如圖所示,K17-K20 共 4 個按鍵分別與單片機的 P3.0-P3.3 管腳連接。例如當按下按鍵 K17 后,P3.0 管腳為低電平,在單片機中通過檢測 P3.0 管腳是否為低電平,便可知道 K17 是否按下。
7.2 按鍵電路軟件設計
下面我們學習獨立按鍵的編寫,這里要實現的功能為按鍵 K17 按下,點亮 led0,按鍵 K20 按下打開蜂鳴器,程序代碼如下所示:
#include< reg52.h >
sbit led0 = P1^0;//LED小燈管腳定義
sbit FM = P2^4;//蜂鳴器管腳位定義
sbit Key17 = P3^0;//獨立按鍵管腳定義
sbit Key20 = P3^3;
void main()
{
while(1)
{
led0 = Key17;//按鍵17按下時,點亮led0
FM = Key20;// 按鍵20按下時,打開蜂鳴器
}
}
蜂鳴器打開、點亮 led0 小燈以及按鍵 K17、K20 按下均為低電平,因此賦值代碼如上循環語句中所示。將程序下載到單片機中,當按下 K17,K20 時,led0 小燈點亮,蜂鳴器響起,彈起按鍵后,led0 小燈熄滅,蜂鳴器關閉。
在實際使用中,我們并不是經常一直按著按鍵,最常見的方式為先按下按鍵然后彈起,這個過程表示按鍵按下一次的完整過程。因此,在程序中首先檢測按鍵是否按下,然后再檢測按鍵是否彈起,代碼如下圖所示:
#include< reg52.h >
sbit led0 = P1^0;//LED小燈管腳定義
sbit FM = P2^4;//蜂鳴器管腳位定義
sbit Key17 = P3^0;//獨立按鍵管腳定義
sbit Key20 = P3^3;
bit flag=1;
void main()
{
while(1)
{
if(Key17==0)//按鍵按下
{
if(Key17==1)//按鍵彈起
{
led0 = ~led0;//數值取反
}
}
if(Key20==0)//按鍵按下
{
if(Key20==1)//按鍵彈起
{
FM = ~FM;//數值取反
}
}
}
}
如上代碼所示,在程序中首先檢測按鍵 K17 是否按下,如果按下了再檢測 K17 是否彈起,若檢測到彈起,讓 led0 小燈的狀態變化,每完成一次按鍵操作,led0 小燈亮滅狀態會翻轉一次。K20 按鍵與此類推。
7.3 下載驗證
將上述代碼下載至單片機便可驗證了。
-
單片機
+關注
關注
6032文章
44514瀏覽量
632961 -
蜂鳴器
+關注
關注
12文章
889瀏覽量
45869 -
按鍵電路
+關注
關注
1文章
35瀏覽量
21756 -
獨立按鍵
+關注
關注
1文章
45瀏覽量
11547
發布評論請先 登錄
相關推薦
評論