導航:首頁 > 操作系統 > 單片機按鍵功能短按怎麼實現

單片機按鍵功能短按怎麼實現

發布時間:2022-10-18 09:29:43

A. 單片機問題,如何編程實現按鍵長按和短按的識別如果沒有電路圖,如何編程找出LED數碼管的段碼

判斷按鍵長短要用到定時器,當判斷按鍵後馬上啟動定時器,並隨時檢查按鍵狀態,就可以知道按鍵的長短了,另外段碼會用查表法來做,看程序就知道了

B. 51單片機如何實現按鍵的長按與短按功能,嘗試過很多方法都不行,請高手多賜教,多謝了(想是簡單,做是難)

這個真心不難,就是簡單的c語言判定就行了,《C程序設計語言》,實在看不了就看譚總寫的那本c語言。給你寫過偽代碼,
if(key=ReadKey())//讀取按鍵,判斷有無按鍵按下去,沒按鍵按下,這里返回0值是不進入這個函數的
{
delay(x);//延時一段時間,寫過循環就行了
if(!ReadKey())//在次讀取按鍵值,實際上按下去按鍵是低電平(原理圖一般都是這樣做的)
{
return 已經鬆手了( 這里是高電平了返回0了)

C. 單片機按鍵短按和長按的程序

設置定時器100毫秒中斷a值自家1
設置按鍵值位變數k
設置按鍵埠k1
if (!k1)按鍵按下

delay(20);去痘
if (!k1)確認按下
a=0;計時數清0 確保長按時間精準
while(!k1)按鈕沒釋放 死循環檢測按下時間
if(a>30)達到3000毫秒
k=!k按鍵值取反 沒按前為0 長按3秒後為1 短案無效

D. 51單片機,矩陣按鍵,長按短按判斷

/*網友反映長鍵結束後會送出短鍵值,特作更改2019.03.29*/

//1,再寫一個長短鍵判斷函數,調用那個按鍵掃描函數
unsignedcharKEY_process(void)
{
staticunsignedcharOld_key=0;//上次按鍵值
staticunsignedcharKey_buf=0;//按鍵有效保存
staticunsignedcharPress_CNT=0;//按鍵按下時間,根據調用時間間隔確定
=0;//長鍵有效標記變數
unsignedcharNew_key=0;//當前按鍵值
unsignedcharKEY=0;//待返回的按鍵值

New_key=keyscan();

if(New_key==Old_key)
{
if(New_key!=0)//建議keyscan返回0的那個值改為其他值,方便這里判斷
{
Key_buf=New_key;
if(Press_CNT<0xff)
{
Press_CNT++;
}
if(Press_CNT>=100)//調用時間間隔確定*100為長按時間,
{
KEY=Key_buf+100;//將短鍵+100作長鍵區分
Press_CNT=0;//按鍵時間清0
Key_buf=0;//按鍵緩沖清0
bPreKeyIsLong=1;//長鍵有效標記
}

}
else//按鍵彈起
{
if(Key_buf&&(bPreKeyIsLong==0))//僅在長鍵無效時
{
KEY=Key_buf;//將緩沖值送將返回的值
Key_buf=0;//清按鍵緩沖
}
Press_CNT=0;//按鍵彈起或按其他按鍵,將長按時間清0
bPreKeyIsLong=0;//長鍵有效標記清0
}
}
Old_key=New_key;//將新按鍵賦給下一次的舊按鍵值

returnKEY;//0代表無按鍵
}
//2,彈起不返回已確定的值,則在keyscan最後加一句判斷
if((P3&0X0F)==0X0F)//按鍵已經彈起
{
keyvalue=MY_key;//使按鍵等於一個自定義的值
}

E. 51單片機實現按鍵長短掃描

當按下鍵用定時器定時,松開鍵停止計時,根據時間長短區分,如超過3秒為長按,少於1秒為短按。

F. 單片機按鍵功能

按鍵按照結構原理可分為兩類,一類是觸點式開關按鍵,如機械式開關、導電橡膠式開關等;另一類是無觸點式開關按鍵,如電氣式按鍵,磁感應按鍵等。前者造價低,後者壽命長。目前,微機系統中最常見的是觸點式開關按鍵。


2.輸入原理



在單片機應用系統中,除了復位按鍵有專門的復位電路及專一的復位功能外,其它按鍵都是以開關狀態來設置控制功能或輸入數據的。當所設置的功能鍵或數字鍵按下時,計算機應用系統應完成該按鍵所設定的功能,鍵信息輸入是與軟體結構密切相關的過程。

對於一組鍵或一個鍵盤,總有一個介面電路與CPU相連。CPU可以採用查詢或中斷方式了解有無將鍵輸入,並檢查是哪一個鍵按下,將該鍵號送入累加器ACC,然後通過跳轉指令轉入執行該鍵的功能程序,執行完後再返回主程序

G. 51單片機 按鍵長按短按效果

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit key=P1^0;
sbit LED1=P1^4;
sbit LED2=P1^5;

uchar code ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uint dat,cnt;
uchar dis[4],disscan=0;
bit flags,flagl;

void t0isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
cnt++;
if(cnt>=200)
{
flagl=1;
flags=0;
if((cnt%5)==0)dat++;
}
}
void t1isr() interrupt 3
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
P2=1<<disscan;
P0=ledtab[dis[disscan]];
disscan++;
disscan%=4;
}
main()
{
TMOD=0x11;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
ET0=1;
ET1=1;
PT1=1;
EA=1;
P1=0xff;
while(1)
{
if(key==0)TR0=1;
if(key)
{
if(cnt<200 && TR0==1){flags=1;flagl=0;dat++;}
if(cnt>=200){flagl=1;flags=0;}
cnt=0;
TR0=0;
}
if(flags){LED1=0;LED2=1;}
if(flagl){LED1=1;LED2=0;}
if(flags==0 && flagl==0) {LED1=1;LED2=1;}
dis[0]=dat/1000;
dis[1]=(dat%1000)/100;
dis[2]=(dat%100)/10;
dis[3]=dat%10;
}
}

H. 合泰背單片機在程序中如何實現按鍵,短按加一,長按快加拜教高手,謝謝先!

合泰背?沒聽過,不過沒所謂,演算法都一樣,按鍵少的時候可以直接掛在IO口上,另一端接地,程序中檢測IO狀態,若有0則說明有按鍵按下,此時變數加1,然後進入鬆手檢測,在其中設置時間標志,若經過幾秒鍾還是按下狀態,則變數一直加,祝成功~~

I. 單片機一個按鍵實現短按 中長按 更長按 也就是三種功能 程序怎麼寫

按鍵按下和抬起之間有防抖動延時,只要把防抖動延時時間設置大小不同就可以了。短按你設ms,中按搞個1-3s,長按弄個5-10s。我覺著這么行。

J. 用一個輕觸開關實現單片機短按開機,長按關機

不需要單片機,使用雙穩態觸發器配合輕觸開關,當輕觸開關每按動一次,給雙穩態一個輸入脈沖,雙穩態兩個輸出端輪流輸出,利用此一個輸出端控制開機繼電器接通電源,即可在按動下一次時因雙穩態轉向另一端輸出而切斷電源。

閱讀全文

與單片機按鍵功能短按怎麼實現相關的資料

熱點內容
linux命令cpu使用率 瀏覽:67
linux實用命令 瀏覽:238
傳奇引擎修改在線時間命令 瀏覽:107
php取域名中間 瀏覽:896
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:436
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:514
csgo您已被禁用此伺服器怎麼辦 瀏覽:398
打開加密軟體的方法 瀏覽:156
雲存儲伺服器可靠嗎 瀏覽:967
2核1g的雲伺服器能帶動游戲嘛 瀏覽:898
逆命20解壓碼 瀏覽:146
徐州辦犬證需要下載什麼app 瀏覽:1002