51单片机如何让蜂鸣器发出110的声音

如题所述

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit SPK=P1^2; //定义喇叭端口
unsigned char frq;
void DelayUs2x(unsigned char t);//函数声明
void DelayMs(unsigned char t);
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
//TH0=0x00; //给定初值
//TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
Init_Timer0(); //初始化定时器
while(1)
{

DelayMs(1); //延时1ms,累加频率值
frq++;

}
}
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
TH0=0xfe; //重新赋值
TL0=frq; //低8位值在主程序中不断累加

SPK=!SPK; //端口电平取反
}

//根据音调发出不同频率
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-22
要控制输出的频率,其实说简单点就是,高低电平的延时时间,要调的合适,还是比较简单的,在网上查找一下资料,都有的

51单片机用三个按键控制报警,任意按两个按键蜂鸣器就报警的程序
1. 程序的主要功能是通过三个按键(k1、k2、k3)来控制蜂鸣器的报警。2. 在主函数main()中,定义了一个字符变量beepflag,用于表示蜂鸣器的状态,初始值为0。3. 进入一个无限循环,等待用户操作。4. 首先检查k1按键是否被按下,如果是,将beepflag的最低位设置为1;否则,将其设置为0。5. 接着...

51单片机驱动的蜂鸣器电路,声音小,如何提高音量且无杂音?我的电路图如...
最简方法:减小R4,这样可以增大流过SPK的电流,从而提高SPK音量

求教,怎样控制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单片机的蜂鸣器发出不同频率的声音?
BEEP;\/\/变换一次蜂鸣器\\x0d\\x0a}

怎样控制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单片机控制蜂鸣器,如何使蜂鸣器输出最高声音
两种蜂鸣器用单片机的控制方法是一样的,对于无源的,要求单片机送出一组断续的音频信号,使蜂鸣器按要求发声,对于有源蜂鸣器,要求单片机送出一组断续的电脉冲信号,用于分断蜂鸣器的通断状态,而使有源蜂鸣器发出“嘀...嘀”,“嘀...嘀...嘀”等希望的声音。无源蜂鸣器举例:\/***\/ \/\/声响驱动程...

求51单片机蜂鸣器程序
51单片机,编写延时程序,控制蜂鸣器发声:很简单的#include<reg52.h>#define uchar unsigned char#define uint unsigned int sbit fengmingqi=P0^0; \/\/声明IO口void delay(uint x)\/\/延时子函数{ uint i,j;for(i=x;i>0;i--)for(j=50;j>0;j--);}void main(void){while(1) \/\/循环{...

为什么我的51单片机蜂鸣器程序需要加延时才响呢?
迸一步判断有源蜂鸣器和无源蜂鸣器,还可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器 "+"引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器。

51单片机送低电平就报警,想问下报警的原理请仔细点,谢谢了
图中利用三极管来驱动蜂鸣器,此处PNP三极管9012工作在饱和产、截止状态,即当其基极为高电平时截止,低电平时饱和。故当51单片机送低电平时Q1饱和导通,LS1得电发声实现报警。

如何使用51单片机的蜂鸣器来播放某些歌曲?
要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。其实就是一个控制单片机节拍的问题,如果想要51的具体程序,网上很多,没找到可以给我留言,我给...

相似回答