單片機(jī)STC89C52學(xué)習(xí)——12 獨(dú)立按鍵
匯總:00 單片機(jī)STC89C52學(xué)習(xí)
參考教程:普中科技
1 工作原理
1.1 按鍵介紹
輕觸開關(guān)是一種電子開關(guān)盼理,按下則開關(guān)導(dǎo)通浪秘,松開則開關(guān)斷開。距離長的初始導(dǎo)通叙甸,距離短的初始不導(dǎo)通噪珊,按下后相反抓韩。
1.2 獨(dú)立按鍵原理
單片機(jī)管腳與GND是距離長的,初始不導(dǎo)通傲隶,按下導(dǎo)通饺律。(圖中,TXD是P30跺株,RXD是P31)
2 程序:獨(dú)立按鍵——K1控制LED指示燈翻轉(zhuǎn)
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led = P2^0;// D1
sbit k1 = P3^1;// K1
void delay (u16 i)
{
while (i --);
}
void key()
{
if (k1 == 0)// 判斷是否按下
{
delay(1000);// 約10ms,簡單的消抖方法
if (k1 == 0)// 再判斷一次
{
led = ~led;
}
while (!k1);// 直到松開按鍵才繼續(xù)械姻,不過一直要判斷妒蛇,很占CPU
}
}
void main()
{
while (1)
{
key();
}
}
效果:按下K1机断,LED1狀態(tài)翻轉(zhuǎn)。但若以較短時間間隔連續(xù)按下兩次绣夺,有時第二下沒反應(yīng)吏奸。