一、蜂鸣器时长控制
具体任务:
基于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;
}
}
}