導語:
單片機在運用到實際的產品中,不僅僅只使用IO輸出去控制,更多的時候,我們需要收到一些信號,比如數字信號,模擬量信號等。
按鍵作為一種人機交互的方式,被廣泛的應用在各個工業控制領域。
通過單片機的輪詢來檢測按鍵的電平變化,實現相應的功能。獨立按鍵通過獨占IO,簡化程序的設計,但與此對于的是需要占用IO,比較浪費IO,所以可以通過分時片選復用的方式實現8個IO使用16個按鍵,本節介紹單個IO的輸入。
輕觸開關
俗稱按鍵,常開型,按下后會自動彈起,恢復到斷開狀態。機械開關都伴隨著抖動,由于金屬觸點的彈性作用,一個按鍵開關在閉合時不會馬上就穩定的接通,在斷開時也不會一下子徹底斷開,而是在閉合和斷開的瞬間伴隨了一連串的抖動。
常見的解決方法有硬件電路解決,RS觸發器,電容等方法。但與之對應的是成本的上升與電路的復雜性上升。
平時更常見的有軟件上的算法,如延時等待按鍵抖動結束,但會導致程序運行的實時性降低。
51單片機上電后,除P0端口外,其余默認為高電平,單片機內部自帶上拉電阻把電平拉高。在傳統8051中,并不能設置單片機IO的輸入輸出模式。通過編寫按鍵程序,識別電平從高到低的過程,從而實現交互。
在程序編寫中,需要實現檢測IO電平是否為低,同時需要實現
- 自鎖,按鍵按下一次只運行一次任務,當按鍵松開后,才能按下下一次實現功能,不然一直執行功能。不要去實現長按功能。
- 消抖,按下后不穩定的電平變化會影響程序,通過延時去屏蔽掉這段時間。
-
if(Key0 == 0)
{
delay(20);
if(Key0 == 0)
{
//功能代碼;
while(key0 == 0);
}
}
按鍵的抖動時間跟按下力度,本身屬性有關,抖動時間不定,通常取經驗值20ms。
獨立按鍵較為簡單,獨立按鍵和矩陣按鍵本質上都是通過單片機的輪詢來檢測IO電平。
審核編輯:湯梓紅
-
單片機
+關注
關注
6039文章
44574瀏覽量
636319 -
獨立按鍵
+關注
關注
1文章
45瀏覽量
11586 -
輕觸開關
+關注
關注
0文章
66瀏覽量
1354
發布評論請先 登錄
相關推薦
評論