怎么用c语言编写,使蜂鸣器发出不同频率的声音(51单片机).

如题所述

1、无源蜂鸣器,需要外部提供脉冲信号才会发声,且声音会随脉冲频率变化而变化。而有源蜂鸣器内部有振荡器,所以只需要提供电压(高电平)就能发声,它们的原理不同。
2、例如定义 一个IO连接蜂鸣器。比如,sbit fmq=P1^0; 再来个500US延时函数。

void beep()    //所以会产生1KHZ频率声音
{
     fmq=0;
    delay500us();
    fmq=1;
    delay500us();    
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-09
对定时器输入不同的值,并用自动加载模式
第2个回答  2012-04-09
定时时间段设定不同,开断间隔不同,就可以。
第3个回答  2012-04-09
PWM控制就OK了!调整占空比!追问

不会调啊

怎样控制51单片机的蜂鸣器发出不同频率的声音?
用定时器来产生频率,如产生100Hz的声音。思路:100Hz即每秒变换200次,每次的时间就是1\/200秒=0.005秒=5毫秒。计算定时器的初值:TH0 = 0x0EE; TL0 = 0x00;include <reg51.h> sbit BEEP=P0^0;\/\/蜂鸣器引脚 void main(void){ \/\/初始化定时器(晶振:11.0592MHz,12T)TMOD = 0x01;...

求教,怎样控制51单片机的蜂鸣器发出不同频率的声音
蜂鸣器是不能发出不同频率的声音的,要发出不同频率的声音,你需要选择speaker,比如:include<reg51.h> define uchar unsigned char define uint unsigned int sbit SPK=P1^0;sbit K1=P1^7;\/\/发声函数 void Alarm(uchar t){ uchari,j;for(i=0;i<200;i++){ SPK=~SPK;for(j=0;j<t;j+...

求51单片机蜂鸣器程序
开关C语言程序:sbit P2^0=KEY;sbit P2^1=BEEP;unsigned char KEYNUM=0;void main(){while(1){if(KEY==0)\/\/开关按下;{KEYNUM++; }if(KEYNUM==1)\/\/第一次按下;{BEEP=1; \/\/蜂鸣器响 }if(KEYNUM==2)\/第二次按下;{BEEP=0; \/\/蜂鸣器不响KEYNUM=0; }}} 51单片机,编写延时程...

单片机如何实现让蜂鸣器发出两种不同的声音!?
输出不同频率的方波信号来驱动蜂鸣器即可发出N多种的声音。用一个小的C程序来给你演示一下:while(1){ P0^0=1;delayms(50);P0^0=0;delayms(50);} 改变delayms()函数据的参数即可改变延时的时间,就可以改变P0.0口输出的方波的频率,驱动蜂鸣器后就能发出不同的声音了 ...

51单片机控制蜂鸣器发出911声音c程序如下,求老师详细讲解,谢谢(最好可 ...
看程序应该是发出的声音频率越来越高,然后突然降低,再越来越高,如此循环 main(){ TMOD = 0x01; \/\/设定时方式1,16位定时器 frq = 0x00;TH0 = 0x00; \/\/赋初值 TL0 = 0xff; \/\/赋初值 TR0 = 1; \/\/开始计数 IE = 0x82; \/\/允许中断 while(1){ frq++; \/\/每...

单片机怎么用定时中断来控制蜂鸣器的发声时间和调出不同的频率?
用定时器T0的中断实现"渴望"主题曲的播放 include<reg51.h> \/\/包含51单片机寄存器定义的头文件 sbit sound=P3^7; \/\/将sound位定义为P3.7 unsigned int C; \/\/储存定时器的定时常数 \/\/以下是C调低音的音频宏定义 define l_dao 262 \/\/将“l_dao”宏定义为低音“1”的频率262Hz...

求51单片机蜂鸣器播放音乐的教程 C语言
void delay(uint i); \/\/延时子程序\/*--- T0的值,及输出频率对照表 ---*\/ uchar code freq[36*2]={ 0xA9,0xEF, \/\/0x3F,0XEE,\/\/00220HZ ,1 \/\/0 0x93,0xF0, \/\/0X3D,0XEF,\/\/00233HZ ,1 0x73,0xF1, \/\/0X30,0XF0,\/\/00247HZ ,2 0x49,0xF2, \/\/0X18,0XF1...

51单片机蜂鸣器程序是什么?
51单片机蜂鸣器程序为:include"reg52.h"typedef unsigned char u8;typedef unsigned int u16;sbit beep=P1^5;void delay(u16 i){ while(i--);} void main(){ while(1){ beep=~beep;delay(1000);\/\/控制音调频率 beep=~beep;\/控制声音大小 delay(10);} } ...

51单片机蜂鸣器程序
include<reg51.h>#include<intrins.h>#define uchar unsigned charuchar pwm,ctl=5;sbit fmq=P1^0;bit flag;void delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}void t0isr() interrupt 1{pwm++;if(pwm<=ctl)P0=0xff;else P0=0x00;if(pwm==100) { pwm=0; ...

哪位好心人给我一个51单片机C语言让蜂鸣器唱生日歌的程序啊,谢谢...
while(1){ i=0;while(i<75){ \/\/音乐数组长度 ,唱完从头再来 k=sszymmh[i]+7*sszymmh[i+1]-1;timer0h=FREQH[k];timer0l=FREQL[k];time=sszymmh[i+2];i=i+3;song();} } } P12接J31的7脚,我在板子上已经测试过了,用的是89S52 花时间编的,希望你能采纳 ...

相似回答