在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

C51單片機獨立按鍵的使用

CHANBAEK ? 來源:Zi Jin Code ? 作者:錕醬不是醬 ? 2023-11-01 11:34 ? 次閱讀

前面我們簡單的學習了C51的IO結構,現在我們來看看,準雙向IO口如何使用按鍵輸入

圖片

這是準雙向IO的基本結構,單片機就靠內部輸入線來讀取IO的電平狀態。

我們以這個電路分析準雙向IO上的按鍵使用

圖片

在準雙向口中,我們需要先給IO寫高電平才能去讀取IO的電平變化(高->低)

在寫高電平的情況下……

三極管截止

圖片

沒有按下按鍵,電流由正極經過上拉電阻流到內部輸入線路,這時候內部讀出高電平

圖片

這時候按下按鍵,按下按鍵,電流由VCC流經上拉電阻再流經按鍵最后流向GND。由于電流由正極流向負極。內部輸入線路線路的電流流向負極,這時候讀出的數值就是低電平的

如果我們寫IO是低電平的話,三極管始終導通,內部輸入的電流經過三極管接到負極,這時候無論有沒有按下按鍵,都只能讀出低電平

圖片

圖片

按鍵的電路

圖片

我們使用的開發板有四個獨立按鍵,這四個獨立按鍵接在P3.2 - P3.4

我們使用單片機準雙向IO提供的IO內部的上拉電阻,所以不需要外部上拉電阻

首先,需要使用sbit定義我們的按鍵所連接的IO

sbit KEY = P3^4;

接下來,給這個按鍵所屬的IO寫高電平

KEY = 1;

讀取按鍵按下的代碼

if(KEY == 0)
{
  unsigned char a = 550;
  while(a--);//延遲消抖
  if(KEY == 0)
    {
    while(!KEY);//檢測按鍵是否松開,防止連按
    
    //這里是你的要放下按鍵按下后執行的代碼

    }
}

這里需要說明一下

if(KEY == 0)用于讀取按鍵是否按下按鍵,讀取方式直接用KEY == 0,KEY == 1直接讀取這一位IO寄存器值。

當我們第一次讀取之后,還需要延遲一會再次讀取按鍵,我們把這個過程稱為延遲消抖

這是因為我們使用的按鍵是物理按鍵,內部的簡化結構如圖

圖片

按鍵上面有一個彈片,按下按鍵彈片后觸點接觸,按鍵導通,松開按鍵,彈片回彈,按鍵斷開,電壓的變化總是高電平》低電平》高電平

上面描述的是理想狀態,但是實際上,物理按鍵并不像我們想象如此理想,當我們按下按鍵的時候,按鍵的彈片會發生震動,導致電壓會有一定的抖動幅度

圖片

這些幅度的抖動會影響單片機對按鍵的讀取和識別

我們可以用硬件電路消抖,下面展示一個簡單的硬件消抖電路

圖片

在這個電路里面,一顆0.1u的電容用于消除抖動,電容充放電實現消抖的效果

那么為什么不使用上面的電路實現消抖呢??

答案很簡單——成本高嘛

所以我們使用軟件消抖

if(KEY == 0)
{
  unsigned char a = 550;
  while(a--);//延遲消抖
  if(KEY == 0)
    {
    while(!KEY);//檢測按鍵是否松開,防止連按

    //這里是你的要放下按鍵按下后執行的代碼

    }
}

單片機先讀取按鍵引腳的電平,軟件延遲后再次讀取后再次讀取按鍵的電平,如果還是按下的狀態,那么就開始等待按鍵松開,等待按鍵松開是必要的,如果不等待按鍵松開,可能我們按下按鍵久一點按鍵就變成多次連按了

那么下面就是一個簡單的項目,按鍵開關LED

/*
按鍵學習
按鍵按下,LED實現開關


青青子衿工作室
Zi Jin Code
*/
#include < reg52.h >


sbit LED = P1^0;
sbit KEY = P3^3;


void main()
{
  KEY = 1;//使用按鍵之前,對應的引腳寫高電平
  LED = 1;
  while(1)
  {
    if(KEY == 0)
    {
      unsigned int a = 550;
      while(a--);//延遲消抖
      if(KEY == 0)//再次檢測...
      {
        while(!KEY){}//檢測按鍵是否松開
        LED = !LED;//LED狀態取反
      }
    }
  }
}

編譯并且上傳程序,測試

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

    關注

    145

    文章

    3651

    瀏覽量

    123925
  • 單片機
    +關注

    關注

    6061

    文章

    44914

    瀏覽量

    646636
  • led燈
    +關注

    關注

    22

    文章

    1594

    瀏覽量

    109326
  • C51單片機
    +關注

    關注

    12

    文章

    164

    瀏覽量

    35273
  • 獨立按鍵
    +關注

    關注

    1

    文章

    45

    瀏覽量

    11779
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    學習C51單片機按鍵移位

    今天開始學習C51單片機按鍵移位實驗實驗所用的是LED和獨立按鍵首先講光盤給的案例代碼給出
    發表于 12-01 06:19

    C51單片機實現獨立按鍵點亮LED燈

    :stc-isp-15xx-v6.85H.exe驅動:ch341ser(適用于win10操作系統)實驗部分1、C51單片機實現流水燈實驗2、美化你的流水燈(自加)3、C51單片機實現蜂
    發表于 12-13 06:37

    如何利用C51單片機去實現一種獨立按鍵點亮LED燈的設計呢

    如何利用C51單片機去實現一種獨立按鍵點亮LED燈的設計呢?其程序代碼該怎樣去實現呢?
    發表于 01-24 07:42

    單片機C51編程規范

    單片機C51編程規范 1單片機C51編程規范- 前言   為了提高源程序的質量和可維護性,從而最終提高軟件產品生產力,特編寫此規范。
    發表于 01-14 21:03 ?2689次閱讀

    單片機基礎知識C51

    單片機基礎知識C51版,學習單片機的基礎知識。包括單片機的簡介,單片機的程序如何寫,單片機的應用
    發表于 11-18 16:48 ?0次下載

    獨立按鍵依次輸入數據

    獨立按鍵依次輸入數據 C51單片機源碼,KEIL源文件,C語言編寫
    發表于 06-20 16:36 ?17次下載

    c51單片機溫測

    電子發燒友網站提供《c51單片機溫測.docx》資料免費下載
    發表于 05-26 08:00 ?21次下載

    51單片機獨立按鍵程序免費下載

    本文檔的主要內容詳細介紹的是51單片機獨立按鍵程序免費下載。
    發表于 06-20 17:43 ?7次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>獨立</b><b class='flag-5'>按鍵</b>程序免費下載

    C51單片機流水燈C代碼

    C51單片機流水燈C代碼
    發表于 11-05 15:20 ?34次下載
    <b class='flag-5'>C51</b><b class='flag-5'>單片機</b>流水燈<b class='flag-5'>C</b>代碼

    單片機按鍵使用程序 (51單片機

    單片機獨立按鍵使用程序 (51單片機獨立按鍵
    發表于 11-11 18:36 ?108次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>按鍵</b>使用程序 (<b class='flag-5'>51</b><b class='flag-5'>單片機</b>)

    C51單片機學習筆記(三)——按鍵對燈、蜂鳴器等器件的控制

    C51單片機學習筆記(三)——按鍵對燈、蜂鳴器等器件的控制文章目錄C51單片機學習筆記(三)——按鍵
    發表于 11-14 13:21 ?25次下載
    <b class='flag-5'>C51</b><b class='flag-5'>單片機</b>學習筆記(三)——<b class='flag-5'>按鍵</b>對燈、蜂鳴器等器件的控制

    51單片機(V51)———獨立按鍵、4x4矩陣按鍵

    51單片機(V51)———獨立按鍵、4x4矩陣按鍵
    發表于 11-16 17:36 ?26次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>(V<b class='flag-5'>51</b>)———<b class='flag-5'>獨立</b><b class='flag-5'>按鍵</b>、4x4矩陣<b class='flag-5'>按鍵</b>

    C51單片機C52單片機內部的資源區別

    C52單片機可以理解為是C51單片機的增強版? 兩個方面有差異,存儲空間和定時器計數器方面有區別 ○ C52
    發表于 11-19 10:36 ?20次下載
    <b class='flag-5'>C51</b><b class='flag-5'>單片機</b>與<b class='flag-5'>C</b>52<b class='flag-5'>單片機</b>內部的資源區別

    基于89C51單片機的8位端口檢測8獨立按鍵源程序

    基于89C51單片機的8位端口檢測8獨立按鍵源程序
    發表于 05-16 10:49 ?2次下載

    基于89C51單片機獨立按鍵依次輸入數據源程序

    基于89C51單片機獨立按鍵依次輸入數據源程序
    發表于 05-16 09:12 ?3次下載
    主站蜘蛛池模板: 亚洲一区二区三区免费观看 | 免费视频在线观看1 | 加勒比在线一区 | 亚洲人成网站999久久久综合 | 新版天堂中文网 | 欧美视频精品在线 | 天堂资源地址在线 | 午夜精品久久久久久久第一页 | 国产三级国产精品国产普男人 | 国产成年美女毛片80s | 欧美一区二区在线观看视频 | 日本久操视频 | 给个网站可以在线观看你懂的 | 狠狠色噜噜狠狠狠 | 午夜免费啪视频观看网站 | 欧美freesex交| 天天看天天射天天碰 | 美女全黄网站免费观看 | 成人午夜大片免费看爽爽爽 | xx肥妇人爽妇网 | 夜夜爱夜夜做夜夜爽 | 国产精品资源在线观看 | 成人午夜大片免费看爽爽爽 | 性色欧美 | 欧美伊人久久大香线蕉综合69 | 国产性片在线 | 极品美女啪啪 | 免费观看在线永久免费xx视频 | 天天躁日日躁狠狠躁一级毛片 | 在线免费看片a | 欧美视频一区二区三区四区 | 日韩欧美卡通动漫在线观看 | 色五月激情小说 | 黄色大片视频在线观看 | 女人十六毛片 | 五月花亚洲 | 日本xxxxx69hd日本 | 日本一区二区视频 | 久久99热精品免费观看k影院 | 97午夜| 欧美日本一区 |