楼主给出了单片机型号,但是没有给出晶振频率,那么,网友就无法提供调好的程序。
建议楼主在自己的程序上修改。
程序中的: sleep(80);,是控制发音频率的;
程序中的: for(i=0;i<200;i++),是控制发音时间的;
程序中的: sleep(20000);,是控制发音停顿时间的。
最直观的,是加大sleep(20000);中的数,最大可以用到65535。应该能达到1秒1次的发音效果。
如果还是达不到,可以把sleep(20000);,写上两行,延时两次,再多的次数也可以。
你们给问题总是条件不全面!
假设P11控制LED,低电平亮;
P12控制蜂鸣器,低电平响。
sbit p11=p1^1;
sbit p12=p1^2;
if((p11=!p11) && (p11==1))
{
p12=0;
//此处延时50毫秒
p12=1;
}
#include<reg51h>
#define uint unsigned int
#define uchar unsigned char
sbit LED0=P1^0;
sbit Buzzer=P1^1;
void delay_ms(uint xms)//x是多少就是多少ms
{ uint y,z;
for(y=xms;y>0;y--)
for(z=110;z>0;z--);
}
void main()
{
P1=0x00;//这个值的设定参照你的开发板确定,也就是你的发光管与蜂鸣器是高电平工作还是低电平工作
while(1)
{
LED0=1;
Buzzer=1;
delay_ms(500);//延时05s
LED0=0;
Buzzer=0;
delay_ms(500);
}
}
完整的源程序:
#include<reg52h>
define uint unsigned int
sbit spk=P1^2; //与喇叭相连接的单片机引脚的定义
void delayms(uint); //延时子函数声明
main()
{
uint i=8; //轰鸣的次数
spk=0; //喇叭的初始状态为不响
while(i) //喇叭鸣响控制核心
{
spk=!spk;
delayms(1000); //延时1000毫秒
i--;
}
}
void delayms(uint ms) //延时子函数
{
uint x,y;
for(x=ms;x>0;x--);
for(y=110;y>0;y--);
}
哥们专门给你写的,看的够明白吧
你好!!
你在蜂鸣器一直再响,是因为你的单片机程序一直在重新启动;
你的程序少了while 的循环,在程序的结尾加上:
while(1){}完整的代码是:
#include <reg51h>sbit Beep = P1^5 ;
void delay(unsigned int i) ;
void main()
{
unsigned int m,n=1;
for(m=0;m<2000; m++)
{
Beep= 1;
delay(5);
Beep= 0;
delay(5);
while(1){}
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
参考程序:
#include <reg52h>
sbit Beep = P3^0;
unsigned char t1s,t50ms;
unsigned char flag30s = 0,flag1s = 0;
void delayms(unsigned int xms)
{
unsigned int i,j;
for(i=0; i<xms; i++)
for(j=0; j<110; j++);
}
void Alarm(void)
{
Beep = 0;
delayms(200);
Beep = 1;
}
void main()
{
TMOD = 0x01;
TH0 = 0x3C;
TL0 = 0xB0;//50ms中断一次
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
if(flag30s)Beep = 0;//30s到蜂鸣器一直响
if(flag1s)//1s到,蜂鸣器响一下
{
flag1s = 0;
Alarm();
}
}
}
void TIM0(void) interrupt 1
{
TH0 = 0x3C;
TL0 = 0xB0;
t50ms++;
if(t50ms == 20)//1s
{
t50ms = 0;
t1s++;
flag1s = 1;
if(t1s == 30)//30s
{
TR0 = 0;
flag30s = 1;
}
}
}
以上就是关于用单片机驱动蜂鸣器一秒响一次的程序!!!全部的内容,包括:用单片机驱动蜂鸣器一秒响一次的程序!!!、51单片机,让发光二极管由亮变灭时蜂鸣器响一声的程序该怎么写、51单片机,0.5S灯闪一下蜂鸣器响一声的程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)