⑴ 89C51單片機關於按鍵判斷的問題
有兩個辦法供你參考:1)將3個按鍵進行編碼,將三個鍵編碼成01、10、11,這樣只需佔2條輸入線就夠了,正好利用2個中斷口,任何一個中斷均調用鍵盤程序;2)將3個鍵的3個輸出線通過二極體引到中斷輸入口(相當於3輸入與門),這樣任何一個鍵按下均發生中斷,只需佔用一個中斷口。但是如果採用軟體延時的話按鍵時的延時精度還是得不到保證的。
⑵ 單片機按鍵在iss中如何搜索
單片機按鍵在isis中的元件名是button。如下圖中的3個按鍵,是這樣的。
⑶ 單片機怎樣識別按鍵是單機,雙擊還是長按,演算法應該是怎樣
按鍵的處理進行時間判斷.在一定的時間內如果按下按鍵,當時間小於這個時間,那麼為單次按鍵,當時間超過一定時間為為長按,當兩次按的中間有高電平時,為雙擊.你可以參考參考.
⑷ 單片機按鍵有幾種方式
按鍵檢測一般有:1、查詢、2、掃描、3中斷等方式。查詢方式佔用主循環資源,就是說主程序主要干檢測按鍵的活兒,若增加其他程序容易出錯。掃描方式效果最好,可以在性能和佔用資源間平衡,中斷方式,適用於響應速度極高的場景,但抗干擾較差。
⑸ 單片機如何檢測多個按鍵按下情況
用查詢的辦法 或 中斷+查詢的辦法
如果有鍵按下(中斷) 則依次查詢所有按鍵
或直接每幾十或幾百ms判斷所有按鍵的狀態
這樣就一個都不漏掉了
⑹ 單片機怎樣識別按鍵值
一般的源值表如下,按鍵也對應如下
uchar
code
KeyCode[4][4]
=
{
//矩陣按鍵編號到標准鍵盤鍵碼的映射表
{
0x31,
0x32,
0x33,
0x26
},
//數字鍵1、數字鍵2、數字鍵3、向上鍵
{
0x34,
0x35,
0x36,
0x25
},
//數字鍵4、數字鍵5、數字鍵6、向左鍵
{
0x37,
0x38,
0x39,
0x28
},
//數字鍵7、數字鍵8、數字鍵9、向下鍵
{
0x30,
0x1B,
0x0D,
0x27
}};
//數字鍵0、ESC鍵、
回車鍵、
向右鍵
⑺ 單片機中,怎樣設計鍵盤復合鍵
鍵盤復合鍵,是要實現第二功能鍵嗎?就像電腦上的Shift 鍵的功能嗎?
這需要是矩陣鍵盤,獨立按鍵比較少就沒有什麼意義了。
其實,與識別單鍵的原理是一樣的,只要識別出類似的Shift 鍵按下,同時又有其它鍵也按下,就可以實現第二功能鍵啦。
⑻ 51單片機, 用一個彈性按鍵控制LED的亮暗
按一次1亮,再按一次滅。。。我自己寫的檢測管腳==0,然後去抖,等待釋放什麼的都寫上了,不過效果是,當按著的時候有效果,放開就沒效果了(恢復原來狀態)。也就是讓他亮,按著就亮,放開就滅了....囧...我需要的是1個按鍵分別讓5個LED成流水燈
⑼ 請高手幫忙,單片機控制一個LED燈閃爍的C語言程序,想加一個彈性按鍵,實現按一下彈起後,一直閃爍
#include <reg51.h>
sbit P0_0=P0^0;
sbit key=P0^1;
void delay1s();
unsigned char k,led;
void main( )
{
TMOD=0X10;
led=1;
while(1)
{
if(key)
{
if (led=1){led=0}else{led=1;}
}
if(led==1)
{
P0_0=0;
delay1s();
P0_0=1;
delay1s();
}
else{P0_0=0;}
}
}
void delay1s()
{
unsigned char i;
for(i=0;i<0x02;i++)
{
TH1=0X3C;
TL1=0XB0;
TR1=1;
while(!TF1);
TF1=0;
}
}
以上只是一種解決方案,很不完善。最好是利用中斷來改變led的值來進行狀態切換。
⑽ c51單片機編程中,怎麼檢測按鍵
while(K1!=0)//K1沒有被按下執行循環
{
d1=0;d2=1;delay();
d1=1;d2=0;delay();
}