單片機一般按鍵的設計
鍵盤(pán),作為向系統操作人員的干預指令的接口,以其特定的按鍵序列代表著(zhù)各種確定的操作命令,所以,準確無(wú)誤的辨認每個(gè)鍵的動(dòng)作和其所處的狀態(tài),是系統能否正常工作的關(guān)鍵。多數鍵盤(pán)的按鍵多使用機械式彈性開(kāi)關(guān),一個(gè)電信號通過(guò)機械觸點(diǎn)的斷開(kāi),閉合過(guò)程完成高低電平的切換。由于機械觸點(diǎn)的彈性作用,一個(gè)按鍵開(kāi)關(guān)在閉合及斷開(kāi)的瞬間必然伴隨著(zhù)一連串的抖動(dòng),其波形如圖所示:
抖動(dòng)過(guò)程的長(cháng)短是由按鍵的機械特性決定,一般是10~20ms。為了使CPU對一次按鍵動(dòng)作只確認一次,必須消除抖動(dòng)的影響,可以從硬件及軟件兩個(gè)方面著(zhù)手。本文只介紹軟件方面的防抖。
軟件防抖的思路:當第一次檢測到有建按下時(shí),先用軟件延時(shí)(10~20ms),而后再確認鍵電平是否依舊維持閉合狀態(tài)的電平。若保持閉合狀態(tài)電平,則確認此間已按下,從而消除抖動(dòng)影響。
二、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)
{
}
評論