‘壹’ 蜂鸣器每一秒响一次,响十秒后关闭,怎么做,c语言
每隔一秒响一次, 响多久没有说
一般都是响一秒 停一秒。 这样就是20秒后关闭了。
可以写作
intcnt=0;
while(cnt++<10)
{
BEEP=1;
delay_ms(1000);
BEEP=0;
delay_ms(1000);
}
‘贰’ 如何用c语言实现单片机蜂鸣器播放的音乐的暂停 就是通过按键来实现
if(key==0)
{
//关闭定时器的代码,可以停止音乐
}
‘叁’ 用C语言编写,两个按钮控制蜂鸣器工作。按钮1按下,蜂鸣器以500Hz的频率工作。按钮2按下,蜂鸣器停止工作
#include"reg52.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitBELL=P1^0;//定义蜂鸣器
sbitkey1=P1^1;//定义按键
sbitkey2=P1^2;//定义按键
uintnum;
/*1ms廷时*/
voiddelay_ms(uintz)
{
uinti,j;
for(i=0;i<z;i++)
for(j=0;j<110;j++);
}
/*定时器初始化*/
voidinit_timer0()
{
TMOD=0x01;
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
EA=0;
ET0=1;
TR0=1;
}
voidmain()
{
BELL=0;
init_timer0();
while(1)
{
if(key1==0)
{
delay_ms(10);//延时消抖
if(key1==0) //再次判断按键是否真的被按下
{
while(key1==0);//等待释放按键
EA=1; //开启总中断
}
}
if(key2==0)
{
delay_ms(10);//延时消抖
if(key2==0) //再次判断按键是否真的被按下
{
while(key2==0); //等待释放按键
EA=0; //关闭总中断
BELL=0; //关闭蜂鸣器
}
}
}
}
voidtimer0()interrupt1
{
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;//中断计时2ms(500Hz),之所以用中断是因为定时比较准确想改延时就把里面的2000改掉,这个数除以1000得的数就是多少毫秒
num++;
if(num==1) //让蜂鸣器工以500Hz频率工作
{
num=0;
BELL=~BELL;
}
}