單片機一般按鍵的設(shè)計
鍵盤,作為向系統(tǒng)操作人員的干預(yù)指令的接口,以其特定的按鍵序列代表著各種確定的操作命令,所以,準確無誤的辨認每個鍵的動作和其所處的狀態(tài),是系統(tǒng)能否正常工作的關(guān)鍵。多數(shù)鍵盤的按鍵多使用機械式彈性開關(guān),一個電信號通過機械觸點的斷開,閉合過程完成高低電平的切換。由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合及斷開的瞬間必然伴隨著一連串的抖動,其波形如圖所示:
抖動過程的長短是由按鍵的機械特性決定,一般是10~20ms。為了使CPU對一次按鍵動作只確認一次,必須消除抖動的影響,可以從硬件及軟件兩個方面著手。本文只介紹軟件方面的防抖。
軟件防抖的思路:當(dāng)?shù)谝淮螜z測到有建按下時,先用軟件延時(10~20ms),而后再確認鍵電平是否依舊維持閉合狀態(tài)的電平。若保持閉合狀態(tài)電平,則確認此間已按下,從而消除抖動影響。
二、proteus仿真
源程序:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit jia_key=P2^0;
sbit jian_key=P2^1;
uint i;
uchar duan_code[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay_ms(uint z)
{
}
void scankey(void)
{
}
void main(void)
{
}
評論