標(biāo)題: 單片機10mS主循環(huán),按鍵和蜂鳴器如何處理? [打印本頁]

作者: liucan2020    時間: 2022-7-30 15:04
標(biāo)題: 單片機10mS主循環(huán),按鍵和蜂鳴器如何處理?
請問大佬,如果主循環(huán)以10mS的基礎(chǔ)時鐘運行,那么在這種情況下,1:按鍵使用中斷觸發(fā)是如何消抖的? 2:蜂鳴器是如何連續(xù)發(fā)聲1秒的?是否有好的示例可以參考?

作者: xianfajushi    時間: 2022-8-1 08:22
按鍵使用中斷觸發(fā)是硬件消抖,有源蜂鳴器是計時1秒執(zhí)行
作者: yzwzfyz    時間: 2022-8-1 09:42
1:按鍵使用中斷觸發(fā)是如何消抖的?
方案很多,與【主循環(huán)以10mS的基礎(chǔ)時鐘運行】沒有矛盾。
舉例:每N毫秒(例5ms,你用10ms也行)檢測一次按鍵,M次(6次,你用3次也行)檢測得到的開關(guān)狀態(tài)一致,就判斷開關(guān)穩(wěn)定了。
2:蜂鳴器是如何連續(xù)發(fā)聲1秒的?
它的開關(guān)變化,只是瞬間的事,只與你需要對它作業(yè)的瞬間操作即可,更何況音響多個少個10ms,人是聽不出來的。
作者: robinsonlin    時間: 2022-8-1 10:07
節(jié)拍計數(shù),符合條件停止。
KeySign ++;   
if(KeySign>=2)
{
   KeySign = 0;
  //執(zhí)行案件操作
}


Buz = 1;
BuzSign ++;
if(BuzSign>=100)
{
   BuzSign = 0;
   Buz = 0;
}
作者: lkc8210    時間: 2022-8-1 10:11
先假設(shè)你用C51

  1. void main()
  2. {
  3.         while(1)
  4.         {
  5.                 if(Flag10ms)
  6.                 {
  7.                         static unit8_t Delay_XD = 0;
  8.                         static unit8_t Delay_Beep = 0;
  9.                         Flag10ms = 0;
  10.                         if(!Key)//有鍵按下,低電平
  11.                         {
  12.                                 if(Delay_XD<0xFF)Delay_XD++;
  13.                                 if(Delay_XD==2)
  14.                                 {
  15.                                         Delay_Beep = 100;                                       
  16.                                 }
  17.                         }else{                                
  18.                                 Delay_XD = 0;
  19.                         }
  20.                         if(Delay_Beep)
  21.                         {
  22.                                 Beep = 0;//低電平啟動蜂鳴器輸出
  23.                                 Delay_Beep--;
  24.                         }else
  25.                         {
  26.                                 Beep = 1;//高電平停止蜂鳴器輸出
  27.                         }
  28.                 }
  29.         }        
  30. }
復(fù)制代碼

作者: 大漠落日    時間: 2022-8-4 08:51
定時器中斷定時,產(chǎn)生一個時間標(biāo)志,在主程序中判斷調(diào)用
作者: 杰西Jesse    時間: 2022-8-24 16:32
按鍵消抖可以用CPU去執(zhí)行別的代碼在回頭執(zhí)行按鍵,例如1ms蜂鳴器
作者: is03zong    時間: 2022-8-26 00:09
可以多次檢測,例如20ms內(nèi)檢測若干次,若結(jié)果穩(wěn)定了才處理。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1