版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
给你这个电路吧。电路加个555外部振荡,但软件简单。且喇叭通过电容隔离直流电,很安全,不会烧坏。只要Px.y置1喇叭就叫了,Px.y清0喇叭就停了,修改100K电阻可改变音调。loop:setbp1.7;喇叭叫lcalldelay;叫的时间clrp1.7;喇叭停止发声lcalldelay;停的时间lljmploopdelay:movr7,#20h;修改这个20h,可以修改响和停的时间,扩大1倍时间就增加1倍movr6,#0movr5,#0djnzr5,$djnzr6,$-4djnzr7,$-8
retret这种蜂鸣器放大电路很简单,加一只三极管就行了,如图1,这样接的原因是开机复位期部P3.6为高电平,三极管是不导通的。这种情况下用扬声器,扬声器发声的音调即频率可以编程控制,可以演奏音乐。另外现在市场上有一种体积很小5V的蜂鸣器,加上5V电压就能自鸣,但音调固定,体积小,可以直接焊在电路板上。如图2所示。因音调较高,适合于用蜂鸣器报警。开机复位期间蜂鸣器是不响的,在P3.6加低电平就响了。
vccYP36 £.10Kvcc:\9012GNI)vccYP36 £.10Kvcc:\9012在简易自动报警器中,常常采用蜂鸣器发声或发光二极管发光产生示警信号。由于小型蜂鸣器驱动电流不大,简化了电路设计。驱动蜂鸣器的三极管开关电路见图7。HA为声响指示器,采用低电压(3V)蜂鸣器,其工作电流仅需十几个毫安。VT选用9013,hfe=200,偏置电阻器R为15kQ,VT的基极电流IB约0.1mA,集电极电流IC约为10mA,此时VT已经饱和导通,其集电极一发射极之间电压VCE仅为0.05V。将图7电路中的控制开关S换成干簧管开关,就改造成磁控声响电路。将图7电路中的R减小到10kQ,控制开关S换成光敏电阻器或光敏二极管,就成为光控声响电路。这些电路有什么作用呢?是否可以做为保险柜防盗报警,在打开柜门时,由于磁铁离开干簧管或者保险柜外光线照射而报警。必要时可以将磁控元件、光敏元件接到下偏置,以满足反相的控制效果。
HAhk;VT+GBF3V这个实验本来应该是我们学习AVR单片一时疏忽,忘记了,现在补的第一个实例程序,但是由于一、电路实现如下是驱动蜂鸣器发声的电路原理图\CCSPEAKERHAhk;VT+GBF3V这个实验本来应该是我们学习AVR单片一时疏忽,忘记了,现在补的第一个实例程序,但是由于一、电路实现如下是驱动蜂鸣器发声的电路原理图\CCSPEAKERLSI_/IPE5陛10KQICK5501、蜂鸣器是一种电子电路中常用的发声器件,蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。从外观上看这两种蜂鸣器区别不大,但是在细节上还是稍有差别的,首先一般的有源蜂鸣器在其正面贴有一片胶纸,而无源蜂鸣器则没有。再观察有引脚的那一面,有源蜂鸣器的两个引脚一高一低,而无源蜂鸣器的两个引脚的高度一样。另外有源蜂鸣器除了引脚露出外,其余部分都是封闭的,而无源蜂鸣器的引脚面可以看到有绿色的电路板。使用电源来判别蜂鸣器的有源和无源:找个5V左右的稳压电源,将电源正极连接到蜂鸣器标有“+”符号的引脚上,用电源的负极以一定频率不断地碰触蜂鸣器的负极引脚,发出“咔咔”声的是无源蜂鸣器,发出“嘀嘀”声的是有源蜂鸣器。使用数字表判别蜂鸣器的有源和无源:用数字表的1K以下的欧姆档测量蜂鸣器两脚间的电阻,如果电阻只有几十欧,并且颠倒数字表的表笔测量出来的电阻一样,那么可以判断为无源蜂鸣器,如果两脚间电阻大于1K,那么可以判断是有源蜂鸣器。有源蜂鸣器直接接上额定电源就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。有源蜂鸣器和无源蜂鸣器的区别就是有源蜂鸣器直接加上额定电压就能一直发声(当然要同时满足电流要求),而无源蜂鸣器需要加上脉冲电压才能持续发声。在电子设计中,常用有源蜂鸣器进行各种各样的报警提示。而用无源蜂鸣器来产生各式各样的音频信号(比如用来演奏简单的乐曲)。2、蜂鸣器的驱动电路上面的图中给出了本实例中使用的蜂鸣器电路,电路中使用单片机的PE5口控制三极管8550的通断来使蜂鸣器发声。为什么要使用三极管?三极管在这里的作用有二:开关作用,控制蜂鸣器电源电路的通断;提供
蜂鸣器发声所需的较高电流,单片机的I/O口驱动能力有限,而我们知道三极管有电流放大的作用,在这里就是利用三极管放大电流来使蜂鸣器获得足够的驱动电流。下图是一种比较安全的蜂鸣器驱动电路图中在蜂鸣器两端并联了一个二极管,这个二极管称为续流二极管,蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。滤波电容C1的作用是滤波,滤除蜂鸣器电流对其它部分的影响,也可改善电源的交流阻抗,如果可能,最好是再并联一个220uF的电解电容。二、程序实现完整程序如下所示,本程序实现单片机系统上电后蜂鸣器发出约500ms的声音。#include<avr/io.h> //io端口寄存器配置文件,必须包含#include<util/delay.h> //GCC中的延时函数头文件//函数声明voidDelayus(unsignedintlus);//us延时函数voidDelayms(unsignedintlms);//ms延时函数intmain(void) //GCC中main文件必须为返回整形值的函数,没有参数{unsignedchari;PORTE|=(1<<PE5);//DDRE|=(1<<PE5);//Delayms(500);PORTE&=~(1<<PE5);//Delayms(500);PORTE|=(1<<PE5);//while(1){}}//us级别的延时函数voidDelayus(unsignedintlus){while(lus--){_delay_loop_2(4); //_delay_loop_2(1)是延时4个时钟周期,参数为4则延时16〃个时钟周期,本实验用16M晶体,则16个时钟周期为16/16=1us}}//ms级别的延时函数voidDelayms(unsignedintlms){while(lms--){Delayus(1000); //延时1ms}}三、程序讲解在本实例中我们自己定义了两个延时函数:微秒级的延时函数、毫秒级的延时函数其中在微秒级的延时函数中我们使用了这样一条语句_delay_loop_2(3); 这条语句是GCC编译环境下delay.h头文件中定义的一个延时函数,_delay_loop_2(1)实现4个时钟周期的延时,为什么我们要自己编写延时函数,而不使用delay.h中定义好的延时函数?这是因为delay.h中定义的延时函数是按照内部1MHz时钟频率编写的,而我们实际使用的始终是外部16MHz,所以如果仍旧使用这些延时函数,会造成延时的不精确。在程序中我们还是用了如下的语句:PORTE|=(1<<PE5);PORTE&=~(1<<PE5);它们是什么样的语句?实现什么样的功能?这些语句实现给端口寄存器的某些固定位赋值,其中使用了移位,相或,取反等操作。在单片机的C语言程序中我们经常会碰到给一些寄存器的特定位赋值的操作,这是单片机C语言和标准C语言的一个明显差异。在下一讲中我们将详细讨论单片机中位操作的实现。用单片机驱动蜂鸣器唱歌蜂鸣器是一种一体化结构的电子讯响器,主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。单片机上面使用的蜂鸣器一般都是无源电磁式的蜂鸣器(如下图所示)。它由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。单片机与蜂鸣器连接如图二所示。525图中,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。下面就是一个能够发出音乐的单片机程序,示例中所播放的音乐是《两只老虎》。SPKEQUP3.7;位定义ORG0000H;伪指令,指定程序从0000H开始存放LJMPSTART;程序跳转至START处执行ORG0030H;伪指令,指定程序从0030H开始存放START:MOV SP,#60H;堆栈初始化MOVR3,#00H;给R3赋值NEXT:MOVA,R3MOVDPTR,#TABLE;查歌曲表MOVCA,@A+DPTRJZSTART;为00则循环播放此歌MOVR7,A;R7/R2保存连续相邻的表数据INCR3MOVA,R3MOVCA,@A+DPTRMOVR2,AACALLSONGINCR3SJMPNEXT7;=========歌曲播放子程序==========7SONG:MOVA,R2;取出节拍RLAJNZKEEP;A不等于零则跳MOVA,#01H;A等于零则赋值为1KEEP:MOV R2,AREPEAT:ACALLDJNZRETEIGHTHR2,REPEAT
;调用1/8拍延时程序EIGHTH:MOVA,R7MOVDPTR,#DELAY_TMOVCA,@A+DPTRMOVR4,AMOVA,R7R5MOVDPTR,#S_PARAMOVCA,@A+DPTRMOVR5,ANEXTCYC:ACALLSOUNDDJNZR5,NEXTCYCRET;===========发声子程序===========产生1/8拍延时子程序;查表取出延时参数,保存到R4;查表取出1/8拍周期数,保存到SOUND:SETBSPKACALLSDELAYCLRSPKACALLSDELAYRET7;===========延时子程序===========;延时值在;延时值在R4内SDELAY:MOVMOVXL2:MOVDL1:NOPDJNZDJNZRET
A,R4R0,AR1,#03HR1,DL1R0,XL2;===========1/8拍周期表==========7S_PARA:DS1DHDB15H,16H,00DB19H,00H,1CH,00H,1FH,21H,00H,25HDB00H,29H,2CH,00H,31H,34H,37H,00HDB3EH,41H,00H,49H,00H,52H,57H,00HDB62H===========延时参数表===========DELAY_T:DS1DHDB7EH,77H,00HDB6AH,00H,5EH,00H,54H,4FH,00H,46HDB00H,3FH,3BH,00H,35H,32H,2FH,00HDB2AH,27H,00H,23H,00H,1FH,1DH,0C0HDB1AH============歌曲表=============TABLE:DW2504H,2704H,2904H,2504HDW2504H,2704H,2904H,2504HDW2904H,2A04H,2C08HDW2904H,2A04H,2C08HDW2C02H,2E02H,2C02H,2A02H,2904H,2504HDW2C02H,2E02H,2C02H,2A02H,2904H,2504HDW2904H,2004H,2508HDW2904H,2004H,2508HDW0000HEND童鞋们可能发现了,数据表TABLE里面的数据才是歌曲数据。也就是说,只要我们改变TABLE表里面的数据,就可以播放不同的歌曲了。比如下面这一首《兰花草》:;============歌曲表=============7TABLE:DW2202H,2902H,2902H,2902H,2906H,2702H ;我从山中来DW2502H,2702H,2502H,2402H,2208H ;带着兰花草
DW2E02H,2E02H,2E02H,2E02H,2E06H,2C02H;种在小园中DW2902H,2C02H,2D02H,2A02H,2908H;祈祷花开早DW2902H,2E02H,2E02H,2C02H,2906H,2702H;一日看三回DW2502H,2702H,2502H,2402H,2206H,1D02H;看得花时过DW1D02H,2502H,2502H,2402H,2206H,2902H;兰花却依然DW2702H,2502H,2402H,2002H,2208H;苞也无一个DW0000HEND在TABLE表里面的数据都是字类型的,也就是说可以拆分成2个DB数据。前一个DB数据,我们用来存放音色,也就是“dao.rai.mi.fa.sao.la.xi”;后一个DB我们用来存放音长,就是每个音的长度。对于音色,可以查下面的表,数值越大,频率越高,音色也就越高X.的意思是低音)。而对于音长,数值越大,响的越持久。125H1.19H227H2.1BH329H3.1DH42AH4.1FH52CH5.20H62EH6.22H730H7.24H如果写出来的歌曲不是很像,多调试一下就可以了。rsiALUi39—|{T~ClIWF291必31•-XTALIXTAL2RSTPOXVADO旳】rsiALUi39—|{T~ClIWF291必31•-XTALIXTAL2RSTPOXVADO旳】/ADIFOUADSP04AD4PO.5/AD5P0.&AD6P07/AD7P2.0/AD6P3l/AI»Pl2^AD!0PSENP23/AD1!ALEP24/AD12P2.貝心3P16/ADMM7/ADI5P1.0P3.t)/RXDPl.1P3.I/TXDPI.2P32^N^PI3P3.5^JjfTPI.4F3沖/TOPI.5P3.5/T1Pl6P3,6WRPl7P37/H5ATE9C5I"-[>-134[#--^-10-咅-2软件设计
2.1播放原理声音的频谱范围通常约为几十到几千赫兹,通过程序控制单片机的I/O口可输出
不同频率的矩形波。当该矩形波的频率位于声音频谱范围内时,在单片机的I/O口接
上喇叭就能发出声音。然后利用延时程序控制矩形波的高、低电平持续时间,即改变矩
形波的频率,即可产生不同的音调,从而发出不同的声音,再让矩形波输出的长短对应
节拍,就可以实现单片机对音乐的演奏。2.2音调和节拍编码单片机奏乐只需弄清楚两个概念,也就是“音调”和“节拍”。音调表示一个音符
唱多高的频率,节拍表示一个音符唱多长的时间。由于各个音调对应的频率是已知的,因此,播放音乐时,应对乐曲中出现的音调进行编码,并找出单片机播放这些音调所对应的定时初值。表1所列是音调编码与定时器的初值表,其中频率是已知的,编码可以自己设置,而定时初值是怎样得来的呢?下面以“低6”为例进行说明。“低6”的频率f为440Hz,其对应的周期为:T=1/f=1/440=272》s。单片机上对应蜂鸣器的\/O口来回取反的时间应为:t=T/2=2272/2=1136Ms。单片机奏乐时,其定时器为工作方式1,若以振荡器的十二分频信号为计数脉冲,如果单片机晶振为12MHz,则1Ms计数一次。所以,对于“低6”,其定时器的初值应该是:216-1136=64400。对节拍的控制可通过延时程序来实现。表2所列是节拍编码表。若以1拍的时长为400ms为例,1/2拍的时长为200ms,1/4拍的时长为100ms。首先,这样,确定一个基本时长的延时程序,比如以100ms为基本延时时间,那么,1/4拍可以调用一次延时程序,1/2拍需调用二次延时程序,1拍需调用四次延时程序,依次类推。2.3编程音调和节拍都进行过编码后,那么,一首乐曲就可以用若干个8位的简码表示。比如“生日快乐歌”的第一个简码是“82H”,由表1可知,其高四位“8”表示音调“中5”,对应的频率是784Hz,对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版四年级语文上册第10课《爬山虎的脚》精美课件
- 2024版采购代理居间合同3篇
- 2024年度软件开发合同标的及软件交付时间3篇
- 智能制造生产线技术及应用 教案 2-1 智能制造生产线概述
- 《核医学影像设备》课件
- 《动脉粥样硬化》课件
- 现实与理想-西方古典绘画 课件-2023-2024学年高中美术人美版(2019)美术鉴赏
- (高考真题)2022年广东省普通高中学业水平选择性考试化学试题(解析版)
- 开题报告:中国教育国际学术话语的发展历程与重塑策略
- 开题报告:职业教育产教融合共同体的机制探索与发展策略研究
- 亚马逊品牌授权书(英文模板)
- 海河开启桥设计概况
- 车辆维修保养制度
- 钢轨闪光焊 技术 焊缝 伤损_图文
- 北师大版八年级数学上册 6.2中位数与众数 导学案(无答案)
- 风管风机吊架重量表
- 中班音乐课件:朋友越多越快乐
- 房屋漏水赔偿协议书甲方
- 餐饮单位废弃油脂处理记录表
- 预焙阳极配料控制
- 二阶低通滤波器的设计-模电课设报告
评论
0/150
提交评论