51单片机蜂鸣器实验程序验

【图文】51单片机项目教程项目 5
蜂鸣器实验_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。
51单片机项目教程项目 5
蜂鸣器实验
沈阳机械老师|
总评分3.8|
用知识赚钱
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。三极管的作用为驱动,通过三极管放大驱动电流,从而可以让蜂鸣器发出声音。
有源蜂鸣器和无源蜂鸣器的区别:
这里的&源&不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。&而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。&有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。&无源蜂鸣器的优点是:1。便宜,2。声音频率可控,可以做出&多来米发索拉西&的效果。3。在一些特例中,可以和LED复用一个控制口 有源蜂鸣器的优点是:程序控制方便 。
例程,参考自网络。
1 /************************************************************************
2 [文件名]
C51音乐程序(八月桂花)
通过单片机演奏音乐
5 /**********************************************************************/
6 #include &REG52.H&
7 #include &INTRINS.H&
8 //本例采用89C52, 晶振为11.0592MHZ
9 //关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.
10 //频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
11 //所以拿出谱子, 试探编吧!
13 sbit Beep =
15 unsigned char n=0;
//n为节拍常数变量
16 unsigned char code music_tab[] ={
17 0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
18 0x20, 0x40, 0x1C , 0x10,
19 0x18, 0x10, 0x20 , 0x10,
20 0x1C, 0x10, 0x18 , 0x40,
21 0x1C, 0x20, 0x20 , 0x20,
22 0x1C, 0x20, 0x18 , 0x20,
23 0x20, 0x80, 0xFF , 0x20,
24 0x30, 0x1C, 0x10 , 0x18,
25 0x20, 0x15, 0x20 , 0x1C,
26 0x20, 0x20, 0x20 , 0x26,
27 0x40, 0x20, 0x20 , 0x2B,
28 0x20, 0x26, 0x20 , 0x20,
29 0x20, 0x30, 0x80 , 0xFF,
30 0x20, 0x20, 0x1C , 0x10,
31 0x18, 0x10, 0x20 , 0x20,
32 0x26, 0x20, 0x2B , 0x20,
33 0x30, 0x20, 0x2B , 0x40,
34 0x20, 0x20, 0x1C , 0x10,
35 0x18, 0x10, 0x20 , 0x20,
36 0x26, 0x20, 0x2B , 0x20,
37 0x30, 0x20, 0x2B , 0x40,
38 0x20, 0x30, 0x1C , 0x10,
39 0x18, 0x20, 0x15 , 0x20,
40 0x1C, 0x20, 0x20 , 0x20,
41 0x26, 0x40, 0x20 , 0x20,
42 0x2B, 0x20, 0x26 , 0x20,
43 0x20, 0x20, 0x30 , 0x80,
44 0x20, 0x30, 0x1C , 0x10,
45 0x20, 0x10, 0x1C , 0x10,
46 0x20, 0x20, 0x26 , 0x20,
47 0x2B, 0x20, 0x30 , 0x20,
48 0x2B, 0x40, 0x20 , 0x15,
49 0x1F, 0x05, 0x20 , 0x10,
50 0x1C, 0x10, 0x20 , 0x20,
51 0x26, 0x20, 0x2B , 0x20,
52 0x30, 0x20, 0x2B , 0x40,
53 0x20, 0x30, 0x1C , 0x10,
54 0x18, 0x20, 0x15 , 0x20,
55 0x1C, 0x20, 0x20 , 0x20,
56 0x26, 0x40, 0x20 , 0x20,
57 0x2B, 0x20, 0x26 , 0x20,
58 0x20, 0x20, 0x30 , 0x30,
59 0x20, 0x30, 0x1C , 0x10,
60 0x18, 0x40, 0x1C , 0x20,
61 0x20, 0x20, 0x26 , 0x40,
62 0x13, 0x60, 0x18 , 0x20,
63 0x15, 0x40, 0x13 , 0x40,
64 0x18, 0x80, 0x00
67 void int0()
interrupt 1
//采用中断0 控制节拍
73 void delay (unsigned char m)
//控制频率延时
unsigned i=3*m;
while(--i);
79 void delayms(unsigned char a)
//豪秒延时子程序
while(--a);
//采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
84 void main()
85 { unsigned char p,m;
//m为频率常数变量
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
a: p=music_tab[i];
if(p==0x00)
{ i=0, delayms(1000); goto}
//如果碰到结束符,延时1秒,回到开始再来一遍
else if(p==0xff)
{ i=i+1;delayms(100),TR0=0; goto}
//若碰到休止符,延时100ms,继续取下一音符
{m=music_tab[i++], n=music_tab[i++];}
//取频率常数 和 节拍常数
//开定时器1
while(n!=0) Beep=~Beep,delay(m);
//等待节拍完成, 通过P1口输出音频(可多声道哦!)
//关定时器1
阅读(...) 评论()51单片机-蜂鸣器
> 51单片机-蜂鸣器
51单片机-蜂鸣器
蜂鸣器是一种一体化的电子讯响设备,主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,他广泛应用于计算机,打印机,复印机,报警器,电话机等电子设备中做报警器件。单片机上使用的蜂鸣器一般都是电磁式无源蜂鸣器。如图:它由振荡器,电磁线圈,磁场,振动膜片,外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的共同作用下,周期性的振动发声。这是蜂鸣器的原理图,PNP型三极管,这个图里是一个典型的开关管,E极接VCC,B极接一个限流电阻,三极管的B极不能承受大的电流所以加上一个限流电阻,电流从VCC流向E极,如果B极是低电平则导通,电流从E极流过C极到达蜂鸣器。P3_4与蜂鸣器之间通过跳线连接,所以如果P3_4为低电平就可以驱动蜂鸣器想起来。#include sbit p3_4 = P3^4;void delay(){
for(i = 0; i < 0 i++)
for(j = 0; j < 0 j++)}void main(){
for(i = 0; i < 10; i++){
}}声音的产生 声音的产生是一种音频振动的效果,振动的频率高,则为高音;振动的频率低,则为低音;音;一般音响电路是用正弦波信号驱动喇叭。在数字电路里,则是用数字脉冲信号驱动喇叭从而产生声音。如果声音的频率相同,人类的耳朵很难区分出哪个脉冲信号产生的声音,哪个正弦波信号产生的声音,P0口无上拉电阻。
在蜂鸣器中,声音是由蜂鸣器的振动产生的。蜂鸣器就像一个电磁铁,电流流过它既可产生磁性,这样蜂鸣器里发生的膜片将被吸住;电流消时,膜片将被放开。若要产生频率为f的脉冲,则要在T时间内(其中T=1/f),进行吸放各一次,换言之,产生磁性,消除磁性的时间各为T/2,成为半周期。例如要产生1KHZ的频率,则半周期为0.5ms,所以P1.0所送出的信号一个周期中,其中0.5ms为高电平,另外0.5ms为低电平。切换速度越快,声音越高;反之,切换速度越慢,声音越低。除了控制发声的高低外,若还能控制发生的时间长短,这样就会有节奏感,也就形成 了&音乐&的雏形。DO,RE,MI,FA,SO,LA,SI,DO分别代表某一个频率的声音,我们称之为&音调&。&节拍&即Beat,简单的说就是打拍子。以生日快乐简谱为例,C3/4代表为C调,C调音节表包括3个音阶(低音,中音,高音),每个每个音阶为8个音度,其中细 分为12个半音(即DO,DO#,RE,RE#,MI,FA,FA#,SO,SO#,LA,LA#,SI)。
分享给小伙伴们:
我来说两句……
微信公众号二
微信公众号一温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(30962)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'51单片机蜂鸣器音乐简谱转换工具-输入简谱就能自动生成音乐程序的工具Music Encode',
blogAbstract:'\r\n相信您在作蜂鸣器发声实验时肯定为复杂的频率与音调之间的转换而伤脑筋,这里向大家介绍一款工具可以大大简化转换操作,只需要输入简谱就能自动生成音乐播放程序代码。\r\n以下此程序的主界面:\r\n\r\n程序范例可以点主界面上的“关于”按钮后就能找到,但是代码也不全,需要加入对音乐程序的调用代码,其它范例里也写的很清楚了,只需要调用Play函数就行了,其调用格式如下:Play(乐曲名,调号,升降八度,演奏速度); \r\n经过实践,此函数的的后三个参数分别设为0,2和350时演奏出的音乐比较符合“原味”,下面给出本站的入门型51实验板结合此工具作的音乐程序:\r\n//51单片机播放音乐库文件 /************************************************************************** ',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:6,
permalink:'blog/static/',
commentCount:2,
mainCommentCount:2,
recommendCount:2,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}求51单片机蜂鸣器程序_百度知道
求51单片机蜂鸣器程序
要蜂鸣器3次长音2次短音...
要蜂鸣器3次长音
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
enthusiasticww
来自知道合伙人认证团队
enthusiasticww
采纳数:297
获赞数:1630
擅长:暂未定制
#include&reg51.h&sbit buzzer = P1^0&& ;声明区void delay(int)&& ;void pulse_BZ(int,int,int);声明函数void main(void){while(1){pulse_BZ(500,1,1);& 调用发声delay(1000);&&&&&&& 延时1000 X 0.5mspulse_BZ(500,1,1);delay(1000);pulse_BZ(500,1,1);delay(1000);pulse_BZ(200,1,1);delay(1000);pulse_BZ(200,1,1);delay(1000);}}void delay(int x){int i,j;for(i=0;i&x;i++)for(j=0;j&60;j++);}void pulse_BZ(int TH;int TL){for(i=o;i&i++)&&& //循环count次,时间count x 1ms{buzzer=1;&&&&&&&&&&&&&& //此程序段产生1HZ 信号delay(TH);buzzer=0;delay(TL);}}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单片机,编写延时程序,控制蜂鸣器发声:很简单的#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) //循环{fengmingqi=1; //p0.0口高电平,蜂鸣器发声delay(500); //延时fengmingqi=0; //p0.0口低电平,蜂鸣器不发声delay(500); //延时}}
#include&reg51.h&sbit buzzer = P1^0声明区void delay(int)void pulse_BZ(int,int,int);声明函数void main(void){ while(1) {
pulse_BZ(500,1,1);
delay(1000);
延时1000 X 0.5ms
pulse_BZ(500,1,1);
delay(1000);
pulse_BZ(500,1,1);
delay(1000);
pulse_BZ(200,1,1);
delay(1000);
pulse_BZ(200,1,1);
delay(1000); }}void delay(int x){ int i,j; for(i=0;i&x;i++)
for(j=0;j&60;j++);}void pulse_BZ(int TH;int TL){ for(i=o;i&i++)
//循环count次,时间count x 1ms {
//此程序段产生1HZ 信号
delay(TH);
delay(TL); }}
本回答被网友采纳
蜂鸣器是上点就响的,你两个响中间弄个延时就可以了赛
2条折叠回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 单片机蜂鸣器实验程序 的文章

 

随机推荐