<small id="xllpy"></small>
<span id="xllpy"></span>
  • <span id="xllpy"><output id="xllpy"><b id="xllpy"></b></output></span>
    1. <optgroup id="xllpy"><li id="xllpy"><del id="xllpy"></del></li></optgroup>
      <span id="xllpy"><output id="xllpy"><nav id="xllpy"></nav></output></span>

      藍牙4.0獨立按鍵檢測開發



      結構


      右邊一個處理器,左邊一個按鍵,沒有按下的狀態是VCC,按下的狀態是0,這個是判斷獨立按鍵的功能。


      test1.png



      代碼示例


      查看代碼


      /****************************************************************************
      * 文 件 名: main.c
      * 作    者: Amo [ www.amoMcu.com 阿莫單片機]
      * 修    訂: 2014-04-08
      * 版    本: 1.0
      * 描    述: 按下按鍵S1控制LED1.LED2.LED3實現跑馬燈效果
      ****************************************************************************/
      #include <ioCC2540.h>
       
      typedef unsigned char uchar;
      typedef unsigned int  uint;
       
      #define LED1 P1_0        // 定義P1.0口為LED1控制端
      #define LED2 P1_1        // 定義P1.1口為LED2控制端
      #define LED3 P1_4        // 定義P1.4口為LED3控制端
      #define KEY1 P0_1        // 定義P0.1口為S1控制端
      #define ON      1
      #define OFF     0
       
      /****************************************************************************
      * 名    稱: DelayMS()
      * 功    能: 以毫秒為單位延時,系統時鐘不配置時默認為16M(用示波器測量相當精確)
      * 入口參數: msec 延時參數,值越大,延時越久
      * 出口參數: 無
      ****************************************************************************/
      void DelayMS(uint msec)
      { 
          uint i,j;
          
          for (i=0; i<msec; i++)
              for (j=0; j<535; j++);
      }
       
      /****************************************************************************
      * 名    稱: LedOnOrOff()
      * 功    能: 點亮或熄滅所有LED燈    
      * 入口參數: mode為1時LED燈亮  mode為0時LED燈滅
      * 出口參數: 無
      ****************************************************************************/
      void LedOnOrOff(uchar mode)
      {
          LED1 = mode;
          LED2 = mode;
          LED3 = mode; 
      }
       
      /****************************************************************************
      * 名    稱: InitLed()
      * 功    能: 設置LED相應的IO口
      * 入口參數: 無
      * 出口參數: 無
      ****************************************************************************/
      void InitLed(void)
      {
          P1DIR |= 0x13;  // P1.0、P1.1、P1.4定義為輸出
          LedOnOrOff(0);  // 使所有LED燈默認為熄滅狀態  
      }
       
      /****************************************************************************
      * 名    稱: InitKey()
      * 功    能: 設置按鍵相應的IO口
      * 入口參數: 無
      * 出口參數: 無
      ****************************************************************************/
      void InitKey(void)
      {
          P0SEL &= ~0x02;     //設置P0.1為普通IO口  
          P0DIR &= ~0x02;     //按鍵接在P0.1口上,設P0.1為輸入模式 
          P0INP &= ~0x02;     //打開P0.1上拉電阻
      }
       
      /****************************************************************************
      * 名    稱: KeyScan()
      * 功    能: 讀取按鍵狀態
      * 入口參數: 無
      * 出口參數: 0為抬起   1為按鍵按下
      ****************************************************************************/
      uchar KeyScan(void)
      {
          if (KEY1 == 0)
          {
              DelayMS(10);      //延時10MS去抖
              if (KEY1 == 0)
              {
                  while(!KEY1); //松手檢測
                  return 1;     //有按鍵按下
              }
          }
          
          return 0;             //無按鍵按下
      }
       
      /****************************************************************************
      * 程序入口函數
      ****************************************************************************/
      void main(void)
      {
          InitLed();        //設置LED燈相應的IO口
          InitKey();            //設置按鍵S1相應的IO口
          
          while(1)
          {
              DelayMS(2);
              if (KeyScan())    //掃描按鍵當前狀態,按下時執行跑馬燈效果
              {
                  LED1 = ON;    //點亮LED1      
                  DelayMS(500); 
                  LED1 = OFF;   //熄滅LED1 
                  LED2 = ON;                
                  DelayMS(500); 
                  LED2 = OFF;            
                  LED3 = ON;           
                  DelayMS(500); 
                  LED3 = OFF; 
              }
          }
      }


      編譯成功


      test2.png


      仿真全速運行


      test3.png


      處理長按和短按的功能:定義一個數組,定義變量,如長按時間的控制


      test4.png


      長按的處理


      test5.png


      判斷長按短按的標志


      test6.png



      【本文由麥子學院獨家原創,轉載請注明出處并保留原文鏈接】

      logo
      ? 2012-2016 www.www.wq525.com
      蜀ICP備13014270號-4 Version 5.0.0 release20160127

      免費領取價值1888元求職寶典!

      客服熱線 400-862-8862

      回到頂部

      啪啪啪视频1000