找回密码
 注册

QQ登录

只需一步,快速开始

搜索

51单片机模拟电动牙刷程序

[复制链接]
eng 发表于 2021-7-12 23:32:28 | 显示全部楼层 |阅读模式
  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.         }
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-12-22 12:02

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表