国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

ELEOK

標題: 51單片機模擬電動牙刷程序 [打印本頁]

作者: eng    時間: 2021-7-12 23:32
標題: 51單片機模擬電動牙刷程序
  1.    /*-----------------------------------------------
  2.   名稱:按鍵震動程序,按下不同的按鍵,改變輸出端的震動頻率
  3.   日期:2021-7-12

  4.   內容:改變P2口的1個LED燈閃爍頻率,接手機震動馬達,模擬電動牙刷
  5.     需要修改地方有兩處:1,多個按鍵改成一個按鍵來控制不同震動頻率。
  6.    2:按下按鍵1怎么讓他一直循環,而不是循環10次,
  7.     直到按下按鍵2切換到第二種頻率。
  8.     不使用PWM控制。
  9.     希望大師給修改一下程序
  10. ------------------------------------------------*/
  11. #include<reg52.h> //包含頭文件
  12.                             //頭文件包含特殊功能寄存器的定義
  13. #define uint unsigned int
  14. #define uchar unsigned char

  15. sbit key1  = P1^0; //按鍵1
  16. sbit key2   = P1^1; //按鍵2      
  17. sbit LED0=P2^0;// 定義 輸出到P2.0端口,


  18. int i;

  19. void delay(uint xms)  //延時
  20. {
  21.         int i,j;
  22.         for(i=xms;i>0;i--)
  23.                 for(j=110;j>0;j--) ;
  24. }

  25. /*------------------------------------------------
  26.                     主函數
  27. ------------------------------------------------*/
  28. void main (){



  29. while (1)         //主循環
  30.   {
  31. if(key1 == 0){
  32.           //延時20ms 消除抖動
  33.           delay(15);
  34.           //第二次判斷
  35.           if(key1 == 0){
  36. for(i=0;i<10;i++)   //不按按鍵應該讓他一直循環,現在是循環執行10次        ,怎么才能讓他一直循環?
  37.   {
  38.   LED0=0;            //將P1.0口賦值 0,對外輸出低電平
  39.   delay(250);       //調用延時程序;更改延時數字可以更改延時長度;
  40.                      //用于改變閃爍頻率
  41.   LED0=1;            //將P1.0口賦值 1,對外輸出高電平
  42.   delay(250);
  43.   }
  44.   }
  45.           while(!key1);   //當按鍵未松開時,key為0,執行該死循環。
  46.          //等待按鍵被松開
  47.          }


  48. if(key2 == 0){
  49.           //延時20ms 消除抖動
  50.           delay(15);
  51.           //第二次判斷
  52.           if(key2 == 0){
  53.                        

  54. for(i=0;i<10;i++)
  55.   {
  56.   LED0=0;            //將P1.0口賦值 0,對外輸出低電平
  57.   delay(450);      //調用延時程序;更改延時數字可以更改延時長度;
  58.                      //用于改變閃爍頻率
  59.   LED0=1;            //將P1.0口賦值 1,對外輸出高電平
  60.   delay(500);      
  61.    }
  62.    }
  63.          
  64.          
  65.          //等待按鍵被松開

  66.           while(!key2);  //當按鍵未松開時,key為0,執行該死循環。
  67.         }
  68.                      //主循環中添加其他需要一直工作的程序
  69.         }
  70.         }
復制代碼







歡迎光臨 ELEOK (http://www.afoofa.cn/) Powered by Discuz! X5.0