找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1790|回复: 0
收起左侧

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

[复制链接]
ID:849826 发表于 2021-7-12 20:39 | 显示全部楼层 |阅读模式
        /*-----------------------------------------------
  名称:按键震动程序,按下不同的按键,改变输出端的震动频率
  日期:2021-7-12

  内容:改变P2口的1个LED灯闪烁频率,接手机震动马达,模拟电动牙刷
    需要修改地方有两处:1,多个按键改成一个按键来控制不同震动频率。
   2:按下按键1怎么让他一直循环,而不是循环10次,
    直到按下按键2切换到第二种频率。
    不使用PWM控制。
    希望大师给修改一下程序
------------------------------------------------*/
#include<reg52.h> //包含头文件
                            //头文件包含特殊功能寄存器的定义
#define uint unsigned int
#define uchar unsigned char

sbit key1  = P1^0; //按键1
sbit key2   = P1^1; //按键2       
sbit LED0=P2^0;// 定义 输出到P2.0端口,


int i;

void delay(uint xms)  //延时
{
        int i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--) ;
}

/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main (){



while (1)         //主循环
  {
if(key1 == 0){
          //延时20ms 消除抖动
          delay(15);
          //第二次判断
          if(key1 == 0){
for(i=0;i<10;i++)   //不按按键应该让他一直循环,现在是循环执行10次        ,怎么才能让他一直循环?
  {
  LED0=0;            //将P1.0口赋值 0,对外输出低电平
  delay(250);       //调用延时程序;更改延时数字可以更改延时长度;
                     //用于改变闪烁频率
  LED0=1;            //将P1.0口赋值 1,对外输出高电平
  delay(250);
  }
  }
          while(!key1);   //当按键未松开时,key为0,执行该死循环。
         //等待按键被松开
         }


if(key2 == 0){
          //延时20ms 消除抖动
          delay(15);
          //第二次判断
          if(key2 == 0){
                       

for(i=0;i<10;i++)
  {
  LED0=0;            //将P1.0口赋值 0,对外输出低电平
  delay(450);      //调用延时程序;更改延时数字可以更改延时长度;
                     //用于改变闪烁频率
  LED0=1;            //将P1.0口赋值 1,对外输出高电平
  delay(500);      
   }
   }
          
          
         //等待按键被松开

          while(!key2);  //当按键未松开时,key为0,执行该死循环。
        }
                     //主循环中添加其他需要一直工作的程序
        }
        }

        按键反应有点迟钝,也需要修改一下。   
                  
         


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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