導航:首頁 > 操作系統 > 單片機按鍵按下後持續觸發

單片機按鍵按下後持續觸發

發布時間:2023-01-10 13:06:24

A. 單片機51,出現按一次按鍵,得到多次按鍵的情況,怎麼解決

單片機51,出現按一次按鍵,得到多次按鍵的情況,是由於沒有做「消抖」處理的結果,在軟體上做一些延時消抖處理後,一般就可以解決這個問題。比如:

keyscan()
{
if(key==0)//當按鍵按下
{
delay(10);//延時消抖
if(key==0)//如果按鍵任然按下
{
while(key==0);//等待按鍵抬起
.......
}
}
}

B. 51單片機這段代碼怎麼實現點擊一下按鍵後蜂鳴器自己就一直響。

蜂鳴器分為兩種 一種有源蜂鳴器 只需要給他一個高電平他就會一直響,還有著一種是無源的蜂鳴器,這就需要你給他一個脈沖就是指高低電平的互換,每互換一次就響一次

C. C語言寫單片機程序 如何讓操縱桿在某一個鍵一直按著的時候才能有用

提供思路,僅供參考

我覺得你這種情況,應該在程序里做一個自鎖程序。流程如下:

1、聲明一個按鍵狀態變數key_status,並初始化為0

2、當按鍵按下並抬起時(此處應該做軟體濾波),認為按鍵被觸發,此時:

如果key_status==0, 就讓key_status賦值為1

如果key_status==1, 就讓key_status賦值為0

3、操縱桿作用七段數碼管動作程序只有在key_status==1的時候執行,其他不動作

while(1)
{
...

if(key_status==1)
{
//執行操縱桿作用七段數碼管動作程序
}

...
}

D. 單片機按鍵開關按下一直保持不動

1、首先設置一個狀態變數,如flag,定義flag等於0為開狀態,flag等於1為關狀態。
2、其次因為是按鍵(不是開關),所以實際上單片機讀取的應該是脈沖形式的輸入。
3、最後設按鍵接單片機p01引腳,故可採用以下程序實現按鍵掃描。

E. 單片機如何實現用一個按鍵一直按下控制數碼管數字連續加1

判斷按鍵按著沒放,就使數碼管顯示的數字連續加1就可以了,不過,加1次需適當延時幾十毫秒

F. 51單片機中如何按下按鍵時數碼管正常顯示而不閃爍,並且實現長按連續

你好,我也遇到這樣的問題,經過一周的研究,問之前的前輩得出結果,希望對你有幫助
char scan_k(char k)
{
int i=0;//定義一個變數用來累計長按的時間
if((KEY1&&KEY2&&KEY3&&KEY4&&KEY5&&KEY6)==0)//如果有按鍵按下
{
while(!KEY1)//如果按鍵1按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=11;//按鍵1長按
}
else
{
k=1;//按鍵1短按
}

}
i=0;
while(!KEY2)//如果按鍵2按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=21;//按鍵2長按
}
else
{
k=2;//按鍵2短按
}

}
i=0;//在下一個按鍵按下之前清空i的值
while(!KEY3)//如果按鍵3按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=31;//按鍵3長按
}
else
{
k=3;//按鍵3短按
}

}
i=0;
while(!KEY4)//如果按鍵4按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=41;//按鍵4長按
}
else
{
k=4;//按鍵4短按
}

}
i=0;
while(!KEY5)//如果按鍵5按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=51;//按鍵5長按
}
else
{
k=5;//按鍵5短按
}

}
i=0;
while(!KEY6)//如果按鍵6按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=61;//按鍵6長按
}
else
{
k=6;//按鍵6短按
}

}
i=0;

}
return k;//返回按鍵的值
}
以上代碼,不帶操作系統,不包含中斷,請根據實際情況調整你想要的長按時間,按鍵按下的時候,如果你的消抖時間太長,數碼管會有明顯的閃爍或者變暗,請根據自己的需求進行調整

G. 單片機按鍵觸發C程序

while(1)
{
if(keyflag==1) //有按下切出死循環
break;
else continue;
}
while(1)
{
..... //用戶自己的程序
}

這種方法是模擬按鍵按下啟動真正的應用程序,觸發的是自己的功能程序短。從效果上來還是可以的

閱讀全文

與單片機按鍵按下後持續觸發相關的資料

熱點內容
jellyfin插件怎麼選擇主伺服器 瀏覽:836
asp用戶注冊源碼 瀏覽:48
什麼是照片壓縮文件 瀏覽:392
java調用js代碼 瀏覽:979
崑山市民app怎麼修改身份信息 瀏覽:779
php登陸次數 瀏覽:744
python字元轉成數字 瀏覽:822
海川用的是什麼伺服器 瀏覽:376
口才是練出來的pdf 瀏覽:458
雲伺服器哪個公司性價比高 瀏覽:517
源碼論壇打包 瀏覽:558
php怎麼做成word 瀏覽:692
python批量生成密鑰 瀏覽:492
程序員要不要考社區人員 瀏覽:150
app的錢怎麼充q幣 瀏覽:814
android銀行卡識別 瀏覽:756
怎麼在app投放廣告 瀏覽:11
手機文件管理怎麼看app名稱 瀏覽:192
程序員學數學哪本書最全 瀏覽:789
macd實戰選股公式源碼 瀏覽:644