微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求程序 一个按键控制一个蜂呜器的开关(解决)

求程序 一个按键控制一个蜂呜器的开关(解决)

时间:10-02 整理:3721RD 点击:

#include<reg51.h>
void delay(unsigned int z);//声明延时函数
sbit k1=P3^2; //
sbit beep=P3^7;
void main()
{
while(1){
if(k1==0)
{
beep=0;//蜂鸣器响
delay(1);//调用1ms延时
beep=1;//蜂鸣器不响
delay(1);//调用1ms延时
}
}
}
void delay(unsigned int z)//1ms延时,通过z值改变延时
{
unsigned int x;
for(;z>0;z--)
for(x=110;x>0;x--);
}
烦请帮忙把上面的程式
修改成一个按钮(K1)控制蜂鸣器的开启和停止
望各位高手帮忙 谢谢

问题解决了
#include<reg51.h>
void delay(unsigned int z);//声明延时函数
sbit k1=P3^2; //
sbit beep=P3^7;
bit key = 1; //----加一个按键标志
void Key_Scan(void)
{
   if(k1 == 0)
   {
       delay(2); //---延时10ms
       if(k1 == 0) key = ~key;
      while(k1 == 0);      
   }

}
void main()
{
while(1)
{
      Key_Scan();
        if(key==0)
        {
           beep=~beep;//蜂鸣器响
           delay(1);//调用1ms延时   
        }
        else
        {
            beep = 1;//---关闭蜂鸣器
        }
}
}
void delay(unsigned int z)//1ms延时,通过z值改变延时
{
    unsigned int x;
    for(;z>0;z--)
    for(x=110;x>0;x--);
}

你那个需要整个去抖动程序。如果该成按键控制开关的话,按键按下时,beep=!beep;delay(x);

试过放了 去抖动程序
Key_Scan();
        if(key==0)
         {
           delay(1000);
           if(key==0)
        {
           beep=~beep;//蜂鸣器响
           delay(1);//调用1ms延时
       }
        }
        else
        {
            beep = 1;//---关闭蜂鸣器
        }
但不知为何会影响蜂呜器的声音大小?
加了声音变小了很多

你把你的延时时间放长点 试试看

把你的程序略加修改,软、硬仿真通过!
#include<reg51.h>
void delay(unsigned int z);//声明延时函数
sbit k1=P3^2;        //按钮
sbit beep=P3^7;      //蜂鸣器输出
bit  key = 1;        //按键标志
/**********  **********/
void Key_Scan(void)
{
     if(k1 == 0)
   {
     delay(10);      //延时10ms
     if(k1 == 0) key = ~key;
     while(k1 == 0);      
   }
}
/********** 主 程 序 **********/
void main()
{
while(1)
   {
        Key_Scan();
   if(key==0)
      {
        beep=~beep;   //开蜂鸣器
        delay(1);     //调用1ms延时   
      }
   else
         {
            beep = 1; //关蜂鸣器
         }
   }
}
/********** 1ms延时,通过z值改变延时 **********/
void delay(unsigned int z)
{
unsigned int x;
for(;z>0;z--)
for(x=110;x>0;x--);
}

十分感谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top