国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于藍(lán)橋杯單片機(jī) 官方例程 矩陣按鍵 消抖原理 ‘s 解釋

這篇具有很好參考價(jià)值的文章主要介紹了關(guān)于藍(lán)橋杯單片機(jī) 官方例程 矩陣按鍵 消抖原理 ‘s 解釋。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

關(guān)于藍(lán)橋杯單片機(jī)官方例程矩陣按鍵消抖原理解釋

項(xiàng)目場景:

芯片:IAP15F2K60S
藍(lán)橋杯原書41頁官方例程


問題描述

最開始我以為這款開發(fā)板有硬件消抖,對于下面這部分代碼一直當(dāng)作固定格式寫,最近回看,發(fā)現(xiàn)其中另有“玄機(jī)”。

......
  ucKey_Val = Key_Read();
  ucKey_Down = ucKey_Val & (ucKey_Old ^ ucKey_Val);
  ucKey_Old = ucKey_Val;
......

原因分析:

這里默認(rèn)大家看過并且會了 = = 之前的按鍵掃描例程了
眾所周知,“ ^ ” 符號在C語言中是按位取 “ 異或 ” 的意思,并且,“ & ” 符號是按位取 “ 與 ”的意思。

這段代碼的含義是獲取掃描后的案件值然后進(jìn)行消抖處理,我所截取的這一段代碼是只保留了單邊沿的。

詳解:

首先,對于后面的異或,其作用到了ucKey_Old和ucKey_Val,其中ucKey_Old是上一次掃描按鍵獲取的數(shù)值,包括獲取到0,而ucKey_Val是這一次掃描按鍵獲取的數(shù)值。如果二者不同,則會產(chǎn)生 “ 非零 ” 的結(jié)果,將代碼改成如下。

......
  ucKey_Val = Key_Read();
  ucKey_Down = (ucKey_Old ^ ucKey_Val);
  ucKey_Old = ucKey_Val;
  
  if(ucKey_Down)
  {
       ......
  }
......

只要本次接收與上一次接收的按鍵值不同,ucKey_Down就會存儲下“非零”的數(shù)值?;叵胍幌?,我們按鍵其實(shí)是有兩個沿的,一次下降沿,一次上升沿。
更具體地針對官方例程來說,如果我按下4按鍵,那么他檢測到的數(shù)值會出現(xiàn)兩段變化,一次是ucKey_Val 從0到4的變化,另一次是其從4到0 的變化。
這樣就會導(dǎo)致我的ucKey_Down在這兩次變化過后都會有一次 “ 非零 ” 數(shù)值的出現(xiàn),所以反應(yīng)在我的輸出上,就會將后面緊隨的 if 代碼段執(zhí)行兩次,這說明我們的 " ^ " 取異或只實(shí)現(xiàn)了部分的消抖功能,還需要保留單邊沿,而非雙邊。

沒錯,我們的 “ & ” 取與符號就是實(shí)現(xiàn)的這個功能。我們分段討論下0–4–0這個連續(xù)變化。

首先是 0–4,這段變化中,
我的 ucKey_Old = 0x00, 我的 ucKey_Val = 0x04;
因?yàn)檫@是從0到4的不同數(shù)值的變化,所以后面的取異或符號運(yùn)算結(jié)束后一定是一個 “ 非零 ” 的量,并且結(jié)果一定是與 ucKey_Val 的數(shù)值相等!又加之與一個非零的 ucKey_Val 取與,那不就是 ucKey_Val 本身求與嘛?。?!這就使得 ucKey_Down 最后的結(jié)果為 “ 非零 ” 的 ucKey_Val本身!!!這樣解釋了為什么后面會有

    switch(ucKey_Down)
    {
       ......
    }

的出現(xiàn),原來我們僅憑借ucKey_Down的數(shù)值就可以判斷我按下的是什么鍵。

-------------分隔符--------------

接下來是4–0這一段的變化,
我的 ucKey_Old = 0x40, 我的 ucKey_Val = 0x00;
之前說到如果是不同數(shù)值之間的變化必然會導(dǎo)致異或的結(jié)果為 “ 非零 ” 數(shù)值,所以這一段就很好明白了,我加上取與符號后,實(shí)現(xiàn)了ucKey_Val & “ 非零 ”,其中ucKey_Val為0,會將我的ucKey_Down,結(jié)果變成 0,這就實(shí)現(xiàn)了我取單邊沿的效果。

總結(jié)
異或 “ ^ ” 是用來消抖的,只有掃描到不同的數(shù)值之后我才會發(fā)生變化。
取余 “ & ”是用來保留單邊沿的,因?yàn)閱螁问褂?^" 時(shí),笨蛋機(jī)器不能判斷是哪兩個數(shù)值之間的變化,究竟是0–4還是4–0呢?當(dāng)我加上 “ & ” 之后就可以消除一個沿。
PS:文中我們是以下降沿為例說明的,其實(shí)保留上升沿的話取個 “ ~ ” 就可以了,具體為啥,大家想想吧。文章來源地址http://www.zghlxwxcb.cn/news/detail-401598.html

到了這里,關(guān)于關(guān)于藍(lán)橋杯單片機(jī) 官方例程 矩陣按鍵 消抖原理 ‘s 解釋的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 藍(lán)橋杯單片機(jī)學(xué)習(xí)日記3-矩陣鍵盤的使用,線反轉(zhuǎn)法,三步消抖,按鍵長按與短按

    藍(lán)橋杯單片機(jī)學(xué)習(xí)日記3-矩陣鍵盤的使用,線反轉(zhuǎn)法,三步消抖,按鍵長按與短按

    此片文章用于記錄藍(lán)橋杯單片機(jī)的學(xué)習(xí) 籃球杯單片機(jī)上的矩陣按鍵原理圖如下: ? 使用矩陣鍵盤時(shí),要將跳線帽J5跳至KBD模式。 ? 值得注意的是,若開發(fā)板上的單片機(jī)使用的為STC15,那么以上原理圖適用。如果單片機(jī)為IAP15,則在上述原理圖中,要將P36換成P42,P37換成P44。 ?

    2023年04月10日
    瀏覽(21)
  • 【藍(lán)橋杯單片機(jī)】2023官方底層驅(qū)動代碼【補(bǔ)充點(diǎn)】

    【藍(lán)橋杯單片機(jī)】2023官方底層驅(qū)動代碼【補(bǔ)充點(diǎn)】

    第14屆藍(lán)橋杯單片機(jī)設(shè)計(jì),官方提供了新的底層驅(qū)動代碼版本, 雖然依舊是onewire、iic、ds1302這三個源文件, 但是并沒有給出頭文件,且在此三個源文件中缺少了一些必要的管腳定義 下面是本人在往年真題中替換新的底層代碼時(shí)總結(jié)出來的一些需要注意的地方 【關(guān)鍵點(diǎn)】引用

    2023年04月08日
    瀏覽(255)
  • 單片機(jī)——矩陣按鍵模塊

    單片機(jī)——矩陣按鍵模塊

    主要目的 學(xué)會按鍵掃描 1.延時(shí)函數(shù) 延時(shí)函數(shù)部分詳見鏈接: 單片機(jī)控制一盞燈的亮與滅程序解釋 這個程序里面的延時(shí)函數(shù)的目的是按鍵消抖。 2.按鍵掃描模塊 這是本次實(shí)驗(yàn)的重點(diǎn),將詳細(xì)介紹。 先來觀察矩陣按鍵模塊的連接 總共8個口。 先實(shí)現(xiàn)關(guān)于列的掃描,設(shè)置初始值(

    2024年02月08日
    瀏覽(19)
  • 【51單片機(jī)】矩陣按鍵

    【51單片機(jī)】矩陣按鍵

    參考:普中 51 單片機(jī)開發(fā)攻略 main.c 只有第一個數(shù)碼管量,并且按第幾個鍵,就顯示第幾(0-F)。

    2024年01月21日
    瀏覽(23)
  • 51單片機(jī) | 矩陣按鍵實(shí)驗(yàn)

    51單片機(jī) | 矩陣按鍵實(shí)驗(yàn)

    ??開發(fā)板上板載了一個 4*4 矩陣鍵盤。本節(jié)所要實(shí)現(xiàn)的功能是:通過開發(fā)板上的矩陣鍵盤控制靜態(tài)數(shù)碼管顯示對應(yīng)的鍵值 0-F 。 ??獨(dú)立按鍵與單片機(jī)連接時(shí),每一個按鍵都需要單片機(jī)的一個 I/O 口,若某單片機(jī)系統(tǒng)需較多按鍵,如果用獨(dú)立按鍵便會占用過多的 I/O 口資源。

    2024年02月05日
    瀏覽(20)
  • 五、51單片機(jī)控制矩陣按鍵

    五、51單片機(jī)控制矩陣按鍵

    1.1、矩陣按鍵原理分析 這里矩陣按鍵為4*4的矩陣按鍵。 (1)矩陣按鍵橫向和縱向分割。 (2)按鍵兩端分別接不同的IO引腳。 (3)按鍵物理作用不變:按下按鍵兩端接通,彈起按鍵兩端斷開。 1.2、矩陣按鍵的工作過程 JP4接P3端口,JP4_8接P3^7...JP4_1接P3^0。 (1)IO端口(P3)先輸出0x0f,按鍵列

    2023年04月20日
    瀏覽(16)
  • 藍(lán)橋杯單片機(jī)類按鍵代碼講解和考點(diǎn)探究(三行代碼消抖講解)

    藍(lán)橋杯單片機(jī)類按鍵代碼講解和考點(diǎn)探究(三行代碼消抖講解)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 CON3中將1,2用跳線帽短接是矩陣鍵盤,可用范圍為S4到S19。將2,3短接則是獨(dú)立按鍵,可用范圍是S4到S7. 按鍵原理講解 單取一個按鍵,一端接到GND,一段接到單片機(jī)的IO口上(以下稱I口,輸入口)。當(dāng)按

    2023年04月20日
    瀏覽(39)
  • 51單片機(jī):數(shù)碼管和矩陣按鍵

    51單片機(jī):數(shù)碼管和矩陣按鍵

    目錄 一:動態(tài)數(shù)碼管模塊 1:介紹 ?2:共陰極和共陽極 A:共陰極 B:共陽極 C:轉(zhuǎn)化表 ?3:74HC138譯碼器 4:74HC138譯碼器控制動態(tài)數(shù)碼管(位選) 5:數(shù)碼管顯示完整代碼 6:74HC573鎖存器 A:基本點(diǎn) B:原理圖介紹 c:74HC573控制數(shù)碼管代碼 二:矩陣按鍵模塊 1:介紹 2:原理圖 ?3:矩陣按鍵代碼 ??????

    2024年02月15日
    瀏覽(26)
  • 51單片機(jī)——數(shù)碼管、按鍵、矩陣按鍵C語言入門編程

    51單片機(jī)——數(shù)碼管、按鍵、矩陣按鍵C語言入門編程

    目錄 數(shù)碼管: 1.靜態(tài)數(shù)碼管:第二位數(shù)碼管顯示0 2.動態(tài)數(shù)碼管:每一位數(shù)碼管依次顯示對應(yīng)位數(shù) 按鍵: 1.獨(dú)立按鍵:按下按鍵對應(yīng)LED亮滅 矩陣按鍵: 1.矩陣按鍵:按下的每個按鍵,數(shù)碼管顯示對應(yīng)鍵碼 ???????? 數(shù)碼管按段數(shù)可分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管

    2024年01月23日
    瀏覽(23)
  • 嵌入式51單片機(jī)04-矩陣按鍵系列

    嵌入式51單片機(jī)04-矩陣按鍵系列

    一、矩陣按鍵基礎(chǔ)知識 矩陣按鍵工作原理 : 逐行掃描 :通過高四位輪流輸出低電平來對矩陣鍵盤進(jìn)行掃描,當(dāng)?shù)退奈唤邮盏降臄?shù)據(jù)不全為1的時(shí)候,說明有按鍵按下,然后通過判斷低四位數(shù)據(jù)中哪一位為零來判斷哪一個按鍵被按下。 逐列掃描 :通過低四位輪流輸出低電平來

    2024年02月07日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包