色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CW32數字電壓電流表軟件教程-實驗二:按鍵檢測

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2024-05-31 15:16 ? 次閱讀

3.1.獨立按鍵基礎知識

3.1.1.獨立按鍵結構組成

獨立按鍵實際上是一個非自鎖的輕觸開關,有左右兩個觸點,當按下時左右兩個觸點閉合,當松開時左右兩個觸點斷開。

3.1.2.獨立按鍵控制原理

想要使用外部的按鍵控制單片機有兩種比較常見的方法:IO掃描和外部中斷。對于IO掃描的方式而言,需要單片機以比較高的頻率去不間斷地判斷IO口的輸入電平,隨后根據IO電平來執行后續的邏輯。外部中斷的方式會在章節十二中進行詳細介紹,本章著重介紹IO掃描的控制方式。(單片機通過檢測按鍵按下前后的高低電平變化,來判斷按鍵是否按下。通過程序的控制,就可以實現不同的功能與設置。機械式按鍵在按下或者釋放時,由于機械彈性作用的影響,通常伴隨有一定時間的觸點機械抖動,然后其觸點才穩定下來。抖動時間長短與開關的機械特性有關,一般為5-10ms。在觸點抖動期間檢測按鍵的按下與否,可能會導致判斷錯誤,為了克服機械抖動所產生的影響,必須采取消抖措施,可分為硬件消抖和軟件消抖。)

3.1.3.按鍵亞穩態與按鍵消抖

對于一個IO而言,在將其配置為輸入模式之后,該引腳上的電平受外部電路影響,基本可以分為三種狀態:高電平、低電平、浮空。高低電平很好理解,這里說明浮空的意義,浮空就是不對該IO進行任何電氣屬性的連接,此時該IO上的電平是未知的(雖然從直觀感受上來看此時IO電壓應該是0,但是空氣中會有噪聲,電路板上也會有噪聲,某些電磁干擾也會充當噪聲,所以浮空輸入的IO電壓實際上是未知的)。典型的浮空輸入型IO電路如圖3-1所示:

圖3-1 浮空輸入IO電路

當開關閉合,IO電壓等于VCC電壓,當開關斷開,IO電壓未知,此時IO電壓可能會受到不明來源的干擾,如果使用該電路作為IO掃描的電路方案,抗干擾能力會不好,容易造成誤觸發,故此應用場景下不考慮使用該電路。和浮空輸入相比,比較好的辦法是使用上拉電阻或下拉電阻將IO的電壓固定下來,帶上拉電阻或下拉電阻電路如圖3-2所示:

圖3-2 上拉電阻(左) 和 下拉電阻(右)

電路上拉電阻可以將IO電壓固定在VCC電壓,當開關閉合時,IO接地使其電壓變為GND電壓;下拉電阻可以將IO電壓固定在GND電壓,當開關閉合時,IO電壓其實就是電阻R2的電壓,此時R2的電壓就是VCC。使用上拉/下拉電阻可以很好地提高IO掃描的抗干擾性能,一般情況這兩個電路不會有很大區別,挑一個你喜歡的用就好。按鍵通過金屬導體的相互接觸來控制電信號,由于機械特性,這種接觸實際上并不可靠,手指按下按鍵不代表按鍵真的閉合且保持穩定,這種情況就是按鍵抖動,抖動過程中按鍵控制的信號處于亞穩態,亞穩態的信號不可靠,不能將其作為IO掃描的最終結果,為了獲取正確的按鍵狀態,我們需要對按鍵進行消抖處理,按鍵消抖大概可以分為兩種方式:

  • 硬件消抖:硬件消抖一般會在按鍵兩端并聯電容,通過電容的充放電作用將按鍵按下時的高頻振蕩吸收掉,當開關處于亞穩態時,IO電壓不規則變化,電容會吸收這些不穩定電壓進行充電,這對IO電壓有平緩的效果,以此達到消抖的目的,硬件消抖電路如圖3-3所示。

圖3-3 硬件消抖電路

  • 簡單的軟件消抖:極為簡單的軟件消抖一般是通過延時的辦法來跳過亞穩態階段,當檢測到按鍵按下時,不會立即去檢測電平,而是經過短暫的延時之后,再去檢測當前引腳的電平,這能在一定程度上消除亞穩態帶來的影響,但需要對按鍵按下和抬起都進行延時判斷才能更為有效。
  • 更好的軟件消抖:在監測到IO電平發生變化后的一小段時間內快速采集IO的電平狀態,如果這一小段時間內IO電平全都屬于有效電平,則認為按鍵已按下(這種利用數學進行消抖的方式達到了對數字信號的篩選作用,所以他也是一種簡易濾波器)。

在條件允許的情況下,硬件消抖的效果會更好,如果PCB沒有多余的空間留給這個消抖電容,使用軟件消抖同樣是一個不錯的方案。

3.2.獨立按鍵原理圖

CW32F003核心板上一共有兩個按鍵,一個復位和一個用戶按鍵,復位作為單片機的特殊功能,不可以作為按鍵使用,故只有用戶按鍵可以作為按鍵使用。CW32F003核心板關于獨立按鍵的原理圖如圖3-4所示。

圖3-4 CW32F003按鍵電路

3.3.獨立按鍵驅動流程

通過上面的原理圖可以了解到,按鍵的一端接到了地,另一端接到單片機的PB2引腳上。通過檢測PB2引腳的電平狀態,判斷按鍵是否按下。當按鍵松開的時候,PB2檢測到的電平為高電平,當按鍵按下的時候,PB2檢測到的電平為低電平。外部電路不含上下拉電阻,對IO而言是浮空輸入,因此需要使用單片機內部的上下拉電阻;電路不含消抖電容,故編程上需要對按鍵進行軟件消抖。**3.4.按鍵控制LED燈亮滅

3.4.1.配置流程**

一般我們使用GPIO的輸入功能,都需要有以下幾個步驟。

  • 開啟GPIO的端口時鐘
  • 配置GPIO的模式
  • 配置GPIO的輸入
  • 編寫消抖函數

從開發板原理圖了解到按鍵接的是單片機的PB2。我們要使能按鍵就需要配置GPIOB端口。下面我們就以按鍵連接的PB2進行介紹。3.4.1.1.開啟GPIO的端口初始化由于時鐘的配置在之前的章節已有說明,故不再贅述,我們直接對端口進行初始化。初始化的代碼與上文GPIO輸出的配置略有不同,完整代碼如下:

void Gpio_Init(void)
{
  __RCC_GPIOC_CLK_ENABLE();//打開GPIOC的時鐘,PC0控制LED亮滅
  GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_InitStruct.Pins = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.IT = GPIO_IT_NONE;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  GPIO_Init(CW_GPIOC, &GPIO_InitStruct);
        
  __RCC_GPIOB_CLK_ENABLE();//打開GPIOB的時鐘,PB2控制按鍵輸入
  GPIO_InitStruct.Pins = GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP;  //沒有輸入時PB2默認為高電平
  GPIO_InitStruct.IT = GPIO_IT_NONE;
  GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
}

3.4.1.2.編寫消抖函數

本次實驗采用軟件消抖,消抖函數的編寫思路為:設置按鍵檢測標志位(Flag_Key),當單片機檢測到按鍵按下,即PB2為低電平時,將標志位置1;在后續的條件判斷中如果標志位為1,則檢測按鍵是否松開,若已松開則完成本次判斷,認為按鍵已經按下過一次。這種方式可以不用延時判斷,節約軟件資源。完整的按鍵檢測程序如下:

uint8_t Flag_Key;         //按鍵標志位
extern uint8_t Flag_LED;         //LED顯示標志位
void Key_Scan(void)
{
  if(GPIO_ReadPin(CW_GPIOB,GPIO_PIN_2) == GPIO_Pin_RESET)  //檢測PB2是否為低電平
    {
          Flag_Key = 1;
    }
  if(Flag_Key)     //接著判斷標志位
    {
      if(GPIO_ReadPin(CW_GPIOB,GPIO_PIN_2) == GPIO_Pin_SET)    //如果按鍵已經松開
        {
          Flag_Key = 0;   //清零標志位,等待下一次按鍵檢測
          if(Flag_LED == 0) Flag_LED = 1; //按鍵按下該變LED顯示標志位的值,由顯示標志位控制LED   
          else Flag_LED = 0;
        }
    }
}

3.4.1.3.LED顯示函數

在按鍵按下更改LED顯示標志位后,需要根據顯示標志位的值來控制LED燈的亮滅。

uint8_t Flag_LED;       

void LED_Init(void)
{
  GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_SET);  //初始化讓LED燈處于熄滅狀態
}
void LED_Lighting(void)
{
  if(Flag_LED == 1)
    {
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_RESET);        //亮
    }
  else 
    {
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_SET);       //滅
    }
}

最終主函數里只需要運行相應的初始化函數和上面的函數:

int main()
{
  RCC_Configuration();
  Gpio_Init();
  LED_Init();
   
  while(1)
   {

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 按鍵檢測
    +關注

    關注

    0

    文章

    23

    瀏覽量

    4834
  • 電壓電流表
    +關注

    關注

    0

    文章

    25

    瀏覽量

    2074
  • CW32
    +關注

    關注

    1

    文章

    203

    瀏覽量

    626
收藏 人收藏

    評論

    相關推薦

    CW32數字電壓電流表-產品硬件設計要點

    電壓跟隨器的功能簡化外圍電路 2、使用了和市面電壓電流表的同款接口(XH2.54+CH3.96),方便通用 3、最大40V的表頭供電電壓,覆蓋大部分常用電壓范圍 4、板載低成本藍牙通
    的頭像 發表于 04-25 15:20 ?1902次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b>-產品硬件設計要點

    CW32數字電壓電流表軟件教程(一):LED原理與驅動基礎知識詳解

    LED 驅動指的是通過穩定的電源為 LED 提供合適的電流電壓,使其正常工作點亮。LED 驅動方式主要有恒流和恒壓兩種。
    的頭像 發表于 05-06 15:33 ?1741次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(一):LED原理與驅動基礎知識詳解

    CW32數字電壓電流表軟件教程):按鍵檢測的控制原理解析

    獨立按鍵實際上是一個非自鎖的輕觸開關,有左右兩個觸點,當按下時左右兩個觸點閉合,當松開時左右兩個觸點斷開。
    的頭像 發表于 05-06 15:36 ?1258次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(<b class='flag-5'>二</b>):<b class='flag-5'>按鍵</b><b class='flag-5'>檢測</b>的控制原理解析

    【應用筆記】CW32 電容式觸摸按鍵設計指南

    前言CW32電容式觸摸按鍵設計指南向客戶提供一種利用CW32內部資源結合軟件編程實現電容式觸摸按鍵有效觸摸
    的頭像 發表于 07-04 11:44 ?1036次閱讀
    【應用筆記】<b class='flag-5'>CW32</b> 電容式觸摸<b class='flag-5'>按鍵</b>設計指南

    CW32數字電壓電流表軟件教程(三):數碼管顯示數字

    數碼管的顯示原理是由多個發光的極管共陰極或者共陽極組成的成“8”字形的顯示器件。數碼管通過不同的組合可用來顯示數字0~9、字符A ~ F及小數點“.”。
    的頭像 發表于 05-14 14:20 ?2.5w次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(三):數碼管顯示<b class='flag-5'>數字</b>

    CW32電容式觸摸按鍵設計指南

    CW32 電容式觸摸按鍵設計指南向客戶提供一種利用 CW32 內部資源結合軟件編程實現電容式觸摸按鍵有效觸摸
    發表于 09-15 06:00

    智能電壓電流表的工作原理及功能

    電壓電流表,主要用于測量直流電壓、電流信號、傳感器輸出的電壓、電流信號等等。近年來,隨著智能電子技術的發展,
    的頭像 發表于 05-06 09:38 ?3299次閱讀

    精密DIY電壓電流表

    電子發燒友網站提供《精密DIY電壓電流表.zip》資料免費下載
    發表于 10-27 14:19 ?21次下載
    精密DIY<b class='flag-5'>電壓電流表</b>

    CW32數字電壓電流表軟件教程-實驗四:數碼管動態顯示

    5.1.數碼管動態顯示原理 所謂動態掃描顯示即輪流向各位數碼管送出段碼和位碼,利用發光管的余輝和人眼視覺暫留作用,使人眼的感覺好像各位數碼管同時都在顯示。明確了原理,我們要使電壓電流表的三個位同時
    的頭像 發表于 05-31 15:23 ?506次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實驗</b>四:數碼管動態顯示

    CW32數字電壓電流表軟件教程-實驗五:ADC采樣及顯示

    數字信號。由于數字信號本身不具有實際意義,僅僅表示一個相對大小。故任何一個模數轉換器都需要一個參考模擬量作為轉換的標準,比較常見的參考標準為最大的可轉換信號大小。而輸出的數字量則表示輸入信號相對于參考信號的大小。 6.1.2.
    的頭像 發表于 05-31 15:28 ?549次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實驗</b>五:ADC采樣及顯示

    CW32數字電壓電流表軟件教程-實驗七:基本數據處理算法(均值濾波)

    有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m為該模板中包含當前像素在內的像素總個數。這本是數字圖像處理的一種方法,但也可以用在我們數字電壓電流表
    的頭像 發表于 05-31 15:47 ?364次閱讀

    CW32數字電壓電流表軟件進階教程-1.電壓電流同時顯示

    基于[CW32數字電壓電流表軟件教程-實驗七:基本數據處理算法(均值濾波)],可以對電壓電流進行
    的頭像 發表于 05-31 15:50 ?719次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-1.<b class='flag-5'>電壓電流</b>同時顯示

    CW32數字電壓電流表軟件進階教程-2.電壓電流值做均值濾波

    實驗運行7.1章節例程時 [CW32數字電壓電流表軟件進階教程-1.電壓電流同時顯示] ,會發
    的頭像 發表于 05-31 15:57 ?489次閱讀

    CW32數字電壓電流表軟件進階教程-3.電壓電流標定

    標定是通過測量標準器的偏差來補償儀器系統誤差,從而改善儀器或系統準確度、精度的操作。為了提高電壓電流表在測量時的測量精度和準確度,需要對電壓電流進行標定校準。 常見的標定原理如下:假設一個采樣系統
    的頭像 發表于 05-31 16:20 ?712次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-3.<b class='flag-5'>電壓電流</b>標定

    基于CW32F003E4P7的數字電壓電流表產品方案

    產品實物: 一、產品概述 數字電壓電流表,又稱為數顯電流電壓表,是以數字形式顯示,能夠同時檢測電流
    的頭像 發表于 06-25 11:55 ?920次閱讀
    基于<b class='flag-5'>CW</b>32F003E4P7的<b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b>產品方案
    主站蜘蛛池模板: 新影音先锋男人色资源网| 佐山爱痴汉theav| 不卡人妻无码AV中文系列APP| 国产欧美日韩亚洲第一页| 男女爽爽无遮挡午夜视频在线观看| 校园女教师之禁区| yy8090韩国理伦片在线| 久久久久久电影| 亚洲AV国产精品无码精| 宝贝你骚死哥了好爽| 久久这里只有精品1| 亚洲国产欧美日本大妈| 高龄熟女50P| 青草国产超碰人人添人人碱| 中文字幕在线视频网站| 嗨嗨快播电影| 无限资源在线观看播放| 纯肉腐文高H总受男男| 年轻的朋友4在线看中文字幕| 一二三四韩国免费观看| 国产网址在线观看| 玩高中女同桌肉色短丝袜脚文 | 色色男_免费| 99热这里只有精品6| 妈妈的朋友6未删减版完整在线| 亚洲欧美韩国综合色| 国产手机精品一区二区| 少男同志freedeos| 初中XXXXXL| 日本老妇一级特黄aa大片| ewp绞死vk失禁编| 嗯好舒服嗯好大好猛好爽| 9277在线观看资源| 蜜芽一区二区国产精品| 中文字幕国产在线观看| 久久99精品涩AV毛片观看| 亚洲色大成网站www久久九九| 国精产品一区一区三区M| 亚洲第一伊人| 和老外3p爽粗大免费视频| 亚洲国产在线视频中文字|