您的位置:首页 > 汽车 > 时评 > 嵌入式技术学习——c51单片机——蜂鸣器

嵌入式技术学习——c51单片机——蜂鸣器

2024/11/16 10:53:26 来源:https://blog.csdn.net/m0_71703182/article/details/139781210  浏览:    关键词:嵌入式技术学习——c51单片机——蜂鸣器

一、蜂鸣器介绍

蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。

蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。

有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声,频率固定

无源蜂鸣器:内部不带震荡源,需要控制器提供震荡脉冲才可以发声,调整提供震荡脉冲的频率,可发出不同频率的声音。

c51中的蜂鸣器是无源蜂鸣器

二、蜂鸣器原理图

如图所示的三极管是NPN三极管,当p11是1时,三极管导通,蜂鸣器会响 ,在我们的开发板上,就是把那个帽子戴上。使其有电原通过。

三、蜂鸣器实现

(1)用延时函数表示频率的变化。

#include"reg51.h"void delay(unsigned int n)
{while(n)--n;
}
viod main(void)
{while(1){P2=~P2;delay(3000);//控制频率改变蜂鸣器声音的尖锐}
}

单位时间内周期变化的越小,频率越大,声音越尖锐。

(2)利用定时器的计数功能,改变中断时间,来改变频率变化,使蜂鸣器声音变化。

 

#include "reg51.h"void timer0Init(void)
{	//TMOD |= (0x01<<0); //默认状态 TMOD 就是13位模式 TH0	 = 7192>>5;TL0	 = 7192&0x1F;IE   |= 0x01<<7 | 0x01<<1;TCON |= 0x01<<4; //开启定时器  
}void timer0Handler(void) interrupt 1
{	 static int n = 0;static int m=0;  //控制占空比static unsigned  int k=0 //控制频率进阶变化if (k == 1000)//让声音持续一小段时间{++m;     //从1ms开始增加k= 0;}k++;n++;if (n == (m+1))//n也在加,相当于p2 1ms翻转一次{P2 = ~P2;n = 0;}TH0	 = 7192>>5;TL0	 = 7192&0x1F;
}void main(void)
{timer0Init();while(1){}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com