1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        和12歲小同志搞創(chuàng)客開發(fā):檢測按鍵狀態(tài)的兩件法寶

        共 2644字,需瀏覽 6分鐘

         ·

        2021-07-21 11:21

        點擊上方藍色字體,關(guān)注我們


        機緣巧合在網(wǎng)上認(rèn)識一位12歲小同志,從零開始系統(tǒng)輔導(dǎo)其創(chuàng)客開發(fā)思維和技巧。



        按鍵是創(chuàng)客開發(fā)過程中必不可少的器件之一,用戶可以通過按鍵實現(xiàn)交互控制。例如:按鍵開關(guān)燈、長按按鍵解除報警、按鍵實現(xiàn)設(shè)備控制等功能。



        檢測按鍵狀態(tài)有兩種方式:第一種,檢測按鍵端口的輸出電壓信號變化,判斷按鍵的狀態(tài);第二種,按鍵狀態(tài)變化觸發(fā)中斷。


        下面讓我們學(xué)習(xí)這兩種檢測按鍵狀態(tài)的方法~


        1


        檢測電平變化,判斷按鍵狀態(tài)


        在如何驅(qū)動各類型傳感器?這篇文章中講到:可以將傳感器進行分類,主要包括:數(shù)字量輸出類型傳感器、數(shù)字量輸入類型傳感器、模擬量電壓類型傳感器、模擬量電流類型傳感器和協(xié)議類型傳感器。


        按鍵本質(zhì)上并不是傳感器,但是按照驅(qū)動方式來看,可當(dāng)作數(shù)字量輸出類型傳感器,進行驅(qū)動。


        可以通過按鍵的設(shè)計圖明白其中的原理,如下圖所示,假設(shè)TP點接入單片機IO端口,當(dāng)按鍵未被按下時,此處為5V高電平,當(dāng)按鍵被按下時,此處就會變?yōu)?V低電平,通過這種高、低電平狀態(tài)變化判斷按鍵的狀態(tài)變化。


        未按下按鍵電壓狀態(tài)


        按下按鍵電壓狀態(tài)


        那么設(shè)計按鍵控制LED亮、滅的程序就非常好理解了,如下所示:




        2


        使用中斷觸發(fā),判斷按鍵狀態(tài)


        我們在設(shè)計功能時,難免要用到延時,如果延時時間過長,可以發(fā)現(xiàn)按鍵就不那么靈敏了,主要原因在于:延時消耗過多的處理器資源,程序大多時間都運行在延時函數(shù)中,無法進行按鍵狀態(tài)的判斷。


        這時候就需要使用中斷觸發(fā)功能了~


        當(dāng)控制器正在處理內(nèi)部數(shù)據(jù)時,外界發(fā)生了緊急情況,要求CPU暫停當(dāng)前的工作轉(zhuǎn)去處理這個緊急事件。處理完畢后,再回到原來被中斷的地址,繼續(xù)原來的工作,這樣的過程稱為中斷,過程如下所示:



        可通過監(jiān)測按鍵電平信號變化,觸發(fā)中斷,如下圖情況所示,當(dāng)按鍵未按下,此時是5V高電平信號。



        當(dāng)按下按鍵瞬間,高電平會切換到低電平,產(chǎn)生下降沿信號,此時可觸發(fā)下降沿中斷。



        當(dāng)松開按鍵瞬間,低電平會切換到高電平,產(chǎn)生上降沿信號,此時可觸發(fā)上降沿中斷。



        中斷程序的實現(xiàn)也非常簡單,無需在主程序中設(shè)計程序,選擇合適的中斷信號觸發(fā)模式,將需要實現(xiàn)的功能寫在中斷處理函數(shù)中,當(dāng)檢測到相應(yīng)的觸發(fā)信號,中斷處理函數(shù)就可以運行了,如下所示:



        有一點需要注意,中斷處理函數(shù)適合處理“急件”,處理完畢后,再回到原來被中斷的地址,繼續(xù)原來的工作,所以不應(yīng)該在中斷程序中有大量長時間的延時,以免對主程序產(chǎn)生影響。


        往期推薦


        點擊閱讀原文,更精彩~
        瀏覽 19
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            无遮挡又黄又刺激的视频 | 午夜寂寞自拍 | 狂野欧美性猛交 | 狠狠草狠狠干 | 天天干天天色天天 | 久久视频免费看 | 韩国一区二区在线黄 | 91伊人网 | 天天撸天天干天天日 | 久久影视一区 |