C51--Task03 蜂鸣器实验

 一、蜂鸣器时长控制

具体任务:

 基于51核心板,编写程序让蜂鸣器每500毫秒、100毫秒、10毫秒、5毫秒、1毫秒改变一次开关状态,注意观察其音色变化。

代码:

#include<reg52.h>

sbit BEEP=P1^0;   //定义蜂鸣器

//提前定义好蜂鸣器开关对应指令(宏定义)
#define BEEP_ON BEEP=0    
#define BEEP_OFF BEEP=1

//延时函数
static void DelayNms(int nms)
{
	unsigned int i,j;
	for(i=0;i<nms;i++)
	{
	 for(j=0;j<123;j++)
	 {
	 }
	}
}

//主函数
void main()
{
	while(1)
	{
	BEEP_ON;       //打开蜂鸣器
	DelayNms(500); //持续500ms
	BEEP=~BEEP;    //关闭蜂鸣器
	
	DelayNms(500); //间断500ms(!!!这个间隔过渡很重要否则就一起响了)
	
	BEEP_ON;       //打开蜂鸣器
	DelayNms(100); //持续100ms
	BEEP_OFF;      //关闭蜂鸣器
	
	DelayNms(500); //间断500ms
	
	BEEP_ON;       //打开蜂鸣器
	DelayNms(10);  //持续10ms
	BEEP_OFF;      //关闭蜂鸣器
	
	DelayNms(500); //间断500ms
	
	BEEP_ON;       //打开蜂鸣器
	DelayNms(5);   //持续10ms
	BEEP_OFF;      //关闭蜂鸣器
	
  DelayNms(500);  //间断500ms
	
	BEEP_ON;       //打开蜂鸣器
	DelayNms(1);   //等1ms
	BEEP_OFF;      //关闭蜂鸣器
	}
	
}

二、按键控制蜂鸣器开关

具体任务:

当KEY1按下时,蜂鸣器持续鸣叫;当KEY1弹起时,蜂鸣器静音。

代码:

#include<reg52.h>

sbit KEY1=P3^2;//位定义按键
sbit BEEP=P1^0;//位定义蜂鸣器
//宏定义开关指令
#define BEEP_ON BEEP=0    
#define BEEP_OFF BEEP=1

//延时函数
static void DelayNms(int nms)
{
	unsigned int i,j;
	for(i=0;i<nms;i++)
	{
	 for(j=0;j<123;j++)
	 {
	 }
	}
}

//主函数
void main()
{
	while(1)
 {
	 if(0==KEY1)   //若按键1按下
	 {
	  DelayNms(50);//则等50ms
		if(0==KEY1)  //若再次判断按键1按下
	   {
		   //执行任务
		  BEEP_ON; 
			while(0==KEY1);//等待弹起
			}
		}
		else
		{
		 BEEP_OFF;
		}
	}
}

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值