標(biāo)題: STC單片機學(xué)習(xí)-按鍵實驗 [打印本頁]

作者: 51黑ww    時間: 2016-4-13 19:30
標(biāo)題: STC單片機學(xué)習(xí)-按鍵實驗
本實驗演示STC15F104E如何識別按鍵事件
http://player.youku.com/player.php/sid/XMzU0MzM3Mzgw/v.swf
按按鈕一次,LED燈就翻轉(zhuǎn)一次亮滅狀態(tài)。然后等待下一次按鈕事件。

材料:
STC15F104E一片
一個LED
一個220Ω電阻
一個按鍵開關(guān)

電路圖:
解析:220Ω電阻用于限流,由于STC輸入端默認是上拉的,所以我們對開關(guān)不用加拉電阻,直接接地即可。


程序:
  1.     /*
  2.     STC15F104E按鍵實驗
  3.     Ansifa
  4.     2012-2-19
  5.      
  6.     硬件連接方法:
  7.     一個LED串聯(lián)一個220Ω電阻,接到VCC和P3.3引腳。
  8.     一個按鈕接到P3.2與GND之間。
  9.     */
  10.      
  11.     #include "reg51.h"
  12.     sbit key = P3 ^ 2;  //按鈕
  13.     sbit LED = P3 ^ 3;  //燈
  14.      
  15.     void DelayMS(n)                //@5MHz 軟件延時n毫秒函數(shù)
  16.     {
  17.             unsigned char i, j;
  18.             i = 5*n;
  19.             j = 218;
  20.             do
  21.             {
  22.                     while (--j);
  23.             } while (--i);
  24.     }
  25.      
  26.      
  27.     void main()
  28.     {   LED=1;     //LED=0是亮,1是滅,初值滅燈
  29.         while(1)  //制造一個死循環(huán)
  30.         {
  31.              //先檢測高電平,等待30ms后檢測是否低電平,就能把下降沿檢測出來,這個是下降沿觸發(fā)電路,有防抖功能。
  32.             if(key == 1)   //因為按鈕接key端和GND,所以是下降沿觸發(fā)。
  33.             {
  34.                 DelayMS(30);
  35.                 if(key == 0)
  36.                 {
  37.                                     LED = !LED;  //翻轉(zhuǎn)LED亮滅狀態(tài)
  38.                 }
  39.             }
  40.         }
  41.     }
復(fù)制代碼

Keil uVersion2工程文件: 按鈕.rar (1.55 KB, 下載次數(shù): 10)
實物視頻:
由于一下找不到按鈕開關(guān),所以用一條電線接觸GND引腳暫時代替。






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1