最新消息:使用STC15W408AS單片機I/O口的按鍵檢測

2023-06-15 15:15:38 來源:小猿豬哥


(資料圖片)

在上面介紹了使用I/O口點了LED,實際也可以用I/O口做按鍵檢測。這里采用的是P1.0口外接按鍵到GND。P1.1口外接LED到GND。

P1.0--->按鍵--->GND。

P1.1--->LED--->GND。

實驗程序如下:

#include "stc15.h"void main(){  P11 = 0; // 初始設(shè)置P1.1為0 熄滅LED  while (1)  {    if(P10 == 0)    // P1.0口檢測到按鍵按下    {      P11 = !P11; // P1.1口輸出取反    }  }}

按鈕按下的時候的波形圖:

這里發(fā)現(xiàn),按鈕按下的時候并沒有機械抖動,而是波形直接被拉低了,松開之后也沒有抖動,波形也直接恢復了。這里我使用的是這種按鈕。

那么在之前的文章《8.樹莓派3B+按鈕操作)》中介紹的抖動是有問題了。當時在這篇文章中的抖動圖:

這個圖怎么說呢,在我十年前接觸單片機的時候就是這么說的,現(xiàn)在自己有示波器了,實際測試是沒有的。那么實際有沒有抖動大家還是要以自己的測試為準。按鈕檢測代碼也要以自己的實際電路和程序為準。之前我就是按照接觸的別人的知識處理的,在按鈕按下的時候等待20ms左右再次判斷電平。

if (rpio.read(button_pin) == rpio.LOW) { // 檢測到 低電平  rpio.msleep(20); // 按鍵消抖if (rpio.read(button_pin) == rpio.LOW) {    rpio.write(led_pin, rpio.HIGH); // 點亮LED  }}

在去年弄樹莓派的時候就一直對這個抖動抱有懷疑,現(xiàn)在自己有示波器了,也就證實了之前的懷疑。還是實踐出真理。

標簽:

上一篇:焦點速看:基于Multisim的壓頻轉(zhuǎn)換電路設(shè)計與仿真
下一篇:最后一頁