用单片机驱动蜂鸣器一秒响一次的程序!!!

用单片机驱动蜂鸣器一秒响一次的程序!!!,第1张

楼主给出了单片机型号,但是没有给出晶振频率,那么,网友就无法提供调好的程序

建议楼主在自己的程序上修改。

程序中的: 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灯闪一下蜂鸣器响一声的程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10218897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存