单片机控制蜂鸣器唱歌的原理

合集下载

单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程

单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程

单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。

多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

下面是电电磁式蜂鸣器实物图:磁式蜂鸣器的外形图片及结构图。

电磁式蜂鸣器结构示意图:图1电磁式蜂鸣器内部构成:1.防水贴纸2.线轴3.线圈4.磁铁图25.6.7.8.底座引脚外壳铁芯9.封胶10.小铁片11.振动膜12.电路板一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。

S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:图3如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。

因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。

程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。

单片机蜂鸣器电路原理

单片机蜂鸣器电路原理

单片机蜂鸣器电路原理咱先来说说蜂鸣器是个啥。

蜂鸣器呀,就像是一个小小的音乐精灵,能发出各种声音。

它有两种类型哦,一种是有源蜂鸣器,一种是无源蜂鸣器。

有源蜂鸣器呢,就像是一个自带电池的小喇叭(哈哈,当然不是真的带电池啦,就是个比喻),只要给它通上电,它就能自己欢快地唱歌啦,发出固定频率的声音。

无源蜂鸣器就有点像个小懒虫,你得给它特定频率的信号,它才肯发出声音,就像你得给它个特定的指令,它才知道要怎么唱歌。

那单片机和蜂鸣器是怎么凑到一块儿的呢?单片机就像是一个超级大脑,它可以控制很多东西,蜂鸣器就是它控制的小跟班之一。

在电路里,单片机要给蜂鸣器发送信号。

比如说,对于无源蜂鸣器,单片机要通过一个引脚来发送方波信号。

这个方波信号的频率就决定了蜂鸣器发出声音的高低。

就像你唱歌的时候,高音和低音是不一样的频率,蜂鸣器也是这样。

如果单片机发送的频率高,蜂鸣器就发出比较尖锐的声音;频率低呢,声音就比较低沉。

咱们再看看电路连接的部分。

一般来说,会有一个限流电阻。

这个限流电阻可重要啦,就像是一个交通警察,控制着电流的大小。

如果没有这个限流电阻,电流就可能像脱缰的野马,一下子冲进蜂鸣器里,把蜂鸣器给弄坏了。

而且,电路的连接方式也有讲究呢。

要确保连接正确,就像拼图一样,每一块都要放在正确的位置。

如果接错了,蜂鸣器可能就不响了,或者发出一些奇怪的声音,就像一个人唱歌跑调跑得十万八千里。

还有哦,电源的选择也很关键。

电源就像是蜂鸣器的能量源泉。

如果电源电压不合适,蜂鸣器也不能好好工作。

就像你人要是没吃饱饭,就没力气干活一样,蜂鸣器没有合适的电源,也没力气发出好听的声音。

当我们在程序里控制蜂鸣器的时候,那更是像在指挥一场小音乐会。

我们可以让蜂鸣器发出简单的滴滴声,就像在给我们发送简单的信号,比如说报警或者提示。

也可以通过巧妙的编程,让蜂鸣器演奏出一小段旋律呢。

想象一下,一个小小的单片机和蜂鸣器组合,就能演奏出像小星星这样的简单曲子,是不是超级酷?这就像是我们用魔法棒(其实就是代码啦)指挥着蜂鸣器这个小音乐家。

单片机的buz蜂鸣器的工作原理

单片机的buz蜂鸣器的工作原理

单片机的buz蜂鸣器的工作原理下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!单片机的Buzzer蜂鸣器的工作原理在单片机(Microcontroller)应用中,蜂鸣器(Buzzer)作为一种常见的输出设备,被广泛用于发出声音提示或警报。

单片机 利用蜂鸣器演奏音乐

单片机 利用蜂鸣器演奏音乐

实验三-操纵蜂鸣器演奏音乐之青柳念文创作一、实验目标二、实验硬件设计及电路1. BlueSkyC51单片机实验板三极管主要是做驱动用的.因为单片机的IO口驱动才能不敷让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电畅通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音.三、实验原理用一个口,输出方波,这个方波输入进蜂鸣器就会发生声音,通过节制方波的频率、时间,就可以发生简单的音乐.一般说来,单片机演奏音乐基本都是单音频率,因此单片机奏乐只需节制音调和节拍.(1)音调的确定音调是由频率来确定的.通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口往返取反,从而让蜂鸣器发出分歧频率的声音.只需将定时器给以分歧的定时值便可实现.通过延时,即可发出所需要的频率.(2)节拍的确定一拍的时长大约为400—500ms,每一个音符的时长通过节拍来计算.详细见程序代码.(1)头文件#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned long(2)歌曲曲谱uchar code diaodata[30]={ //音调代码0x10,0x0e,0x0c,0x10,0x0e,0x0c,0x10,0x0e,0x10,0x0c,0x10,0x15,0x13,0x10,0x13,0x15,0x15,0x13,0x15,0x13,0x10,0x0e,0x0c,0x0e,0x0e,0x10,0x0e,0x0c,0x0e,0x00};uchar code jiedata[30]={ //音长代码0x04,0x04,0x08,0x06,0x02,0x08,0x04,0x04,0x04,0x04,0x02,0x06,0x08,0x02,0x02,0x04,0x04,0x04,0x04,0x08,0x02,0x02,0x04,0x04,0x02,0x02,0x04,0x04,0x0c,0x00};(3)音阶表uchar code freq[36*2]={ //音阶码表0xf8,0x50, //466hz , 1# //1 0xf8,0xbc, //494hz , 2 //2 0xf9,0x26, //524hz , 2# //3 0xf9,0x85, //554hz , 3 //4 0xf9,0xe5, //588hz , 4 //5 0xfa,0x3d, //622hz , 4# //6 0xfa,0x92, //660hz , 5 //7 0xfa,0xdd, //698hz , 5# //8 0xfb,0x29, //740hz , 6 //9 0xfb,0x70, //784hz , 6# //10 0xfb,0xb0, //830hz , 7 //11 0xfb,0xef, //880hz , 1 //12 0xfc,0x29, //932hz , 1# //13 0xfc,0x62, //988hz , 2 //14 0xfc,0x95, //1046hz, 2# //15 0xfc,0xc7, //1108hz, 3 //16 0xfc,0xf5, //1174hz, 4 //17 0xfd,0x20, //1244hz, 4# //18 0xfd,0x4c, //1318hz, 5 //19 0xfd,0x72, //1396hz, 5# //20 0xfd,0x97, //1480hz, 6 //210xfd,0xdc, //1662hz, 7 //230xfd,0xfb, //1769hz, `1 //240xfe,0x18, //1864hz, `1# //250xfe,0x34, //1976hz, `2 //260xfe,0x4e, //2092hz, `2# //270xfe,0x67, //2218hz, `3 //280xfe,0x7d, //2350hz, `4 //290xfe,0x94, //2488hz, `4# //300xfe,0xa8, //2639hz, `5 //310xfe,0xbc, //2794hz, `5# //320xfe,0xcf, //2960hz, `6 //330xfe,0xe0, //3136hz, `6# //340xfe,0xf1, //3322hz, `7 //35};(4)音符发生程序(中断服务程序)void timer0() interrupt 1 //用于发生音符的T0中断服务程序{TH0=th0_f;TL0=tl0_f;beep=~beep; //取反beep引脚,发声}三、实验过程及问题(1)新建“Project”,选择单片机为“AT89C52”(2)新建c文件“music.c”,并添加到工程中(3)设置生成“HEX”文件,编译(4)将生成的“HEX”文件烧录到单片机,检验(5)不竭修改完善(1)实际发音颤音重处理方法为修改蜂鸣器的驱动频率.(2)实际节拍过快或者过慢调整延时四、C51程序代码(部分来历于网络)#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longuchar th0_f; //中断装载T0高8位uchar tl0_f; //T0低8位uchar code freq[36*2]={ //音阶码表0xf7,0xd8, //440hz , 1 //00xf8,0x50, //466hz , 1# //10xf8,0xbc, //494hz , 2 //20xf9,0x26, //524hz , 2# //3 0xf9,0x85, //554hz , 3 //4 0xf9,0xe5, //588hz , 4 //5 0xfa,0x3d, //622hz , 4# //6 0xfa,0x92, //660hz , 5 //7 0xfa,0xdd, //698hz , 5# //8 0xfb,0x29, //740hz , 6 //9 0xfb,0x70, //784hz , 6# //10 0xfb,0xb0, //830hz , 7 //11 0xfb,0xef, //880hz , 1 //12 0xfc,0x29, //932hz , 1# //13 0xfc,0x62, //988hz , 2 //14 0xfc,0x95, //1046hz, 2# //15 0xfc,0xc7, //1108hz, 3 //16 0xfc,0xf5, //1174hz, 4 //17 0xfd,0x20, //1244hz, 4# //18 0xfd,0x4c, //1318hz, 5 //19 0xfd,0x72, //1396hz, 5# //20 0xfd,0x97, //1480hz, 6 //21 0xfd,0xbb, //1568hz, 6# //22 0xfd,0xdc, //1662hz, 7 //23 0xfd,0xfb, //1769hz, `1 //240xfe,0x18, //1864hz, `1# //250xfe,0x34, //1976hz, `2 //260xfe,0x4e, //2092hz, `2# //270xfe,0x67, //2218hz, `3 //280xfe,0x7d, //2350hz, `4 //290xfe,0x94, //2488hz, `4# //300xfe,0xa8, //2639hz, `5 //310xfe,0xbc, //2794hz, `5# //320xfe,0xcf, //2960hz, `6 //330xfe,0xe0, //3136hz, `6# //340xfe,0xf1, //3322hz, `7 //35};uchar code diaodata[30]={ //音调代码0x10,0x0e,0x0c,0x10,0x0e,0x0c,0x10,0x0e,0x10,0x0c,0x10,0x15,0x13,0x10,0x13,0x15,0x15,0x13,0x15,0x13,0x10,0x0e,0x0c,0x0e,0x0e,0x10,0x0e,0x0c,0x0e,0x00};uchar code jiedata[30]={ //音长代码0x04,0x04,0x08,0x06,0x02,0x08,0x04,0x04,0x04,0x04,0x02,0x06,0x08,0x02,0x02,0x04,0x04,0x04,0x04,0x08,0x02,0x02,0x04,0x04,0x02,0x02,0x04,0x04,0x0c,0x00};void timer0() interrupt 1 //用于发生音符的T0中断服务程序{TH0=th0_f;TL0=tl0_f;beep=~beep; //取反beep引脚,发声}void main(void){uchari,j,k=0;uint n;TMOD=0X01; //T0方式1TR0=0; //关闭T0(不发声)ET0=1; //允许T0中断EA=1; //允许总中断while(1){TR0=1; //开T0for(i=0;diaodata[i]!=0;i++){th0_f=freq[diaodata[i]*2];tl0_f=freq[diaodata[i]*2+1];for(j=0;j<20000;n++);//(jiedata*20000)TR0=0;for(n=0;n<256;n++); //音符之间的短暂延时TR0=1;}TR0=0;}}。

用单片机驱动蜂鸣器的演奏说明

用单片机驱动蜂鸣器的演奏说明

用单片机驱动蜂鸣器演奏的方法说明音的产生是由于物体的振动,通过单片机供电来控制蜂鸣器振动来发声。

单片机IO 口通过高低电平快速切换形成频率可以驱动蜂鸣器发音。

这样蜂鸣器就会以不同的音调“鸣响”。

这里主要理解“音调”和“节拍”两个概念。

音调表示一个音的频率是多少。

即就是音的高低。

在钢琴上,中央C 所在音阶的A ,(C D E F G A B )A 的频率作为基准频率,440Hz 。

同时,需要知道如果f2 = f1*2,则称f2是f1的高八度,即f2和f1的音名相同,高度高了一个音阶。

按照钢琴12平均律,将一个音阶的音均分成12份,那么每一个对应的音都可以计算出确定的频率了。

注意!八度音指频率加倍,将八度音分为12等份,是分为12个等比级数。

f2=f1*2,且f1*12q =f2,可以计算,这个等比数列的比值是q=122=1212=1.05946.为了实现不同音的频率,需要单片机通过定时器不停的产生中断,实现管脚电平反转,来产生相应频率。

这时定时器装载初始值如何计算呢?以标准A 为例,A (f=440Hz),T=1/f=1/440=0.00227273s=2272.73us ,即单片机管脚要输出周期为2272.73us 或者f=440Hz 的方波。

通过单片机定时中断来实现反转的话,考虑单片机定时器装载数值为多少才能形成2272us 的定时中断呢?假设系统时钟8MHz ,则x/8MHz=2272.73us ,x = 18181.1818... x 取整数18181,即定时器应装载18181,才能产生440Hz 的频率。

对应参考表格FIG1.音名 C C# D D# E F F# G G# A A# B 大字组频率f(Hz)65 69 73 78 82 87 92 98 104 110 117 123 周期T(us)15289 14431 13621 12856 12135 11454 10811 10204 9631 9091 8581 8099音名 c c# d d# e f f# g g# a a# b 小字组频率f(Hz)131 139 147 156 165 175 185 196 208 220 233 247 周期T(us)7644 7215 6810 6428 6067 5727 5405 5102 4816 4545 4290 4050音名c1(中央C)c1# d1 d1# e1 f1 f1# g1 g1#a1(基准音)a1# b1小字1组频率f(Hz)262 277 294 311 330 349 370 392 415 440 466 494 周期T(us)3822 3608 3405 3214 3034 2863 2703 2551 2408 2273 2145 2025音名c2 c2# d2 d2# e2 f2 f2# g2 g2# a2 a2# b2 小字2组频率f(Hz)523 554 587 622 659 698 740 784 831 880 932 988 周期T(us)1911 1804 1703 1607 1517 1432 1351 1276 1204 1136 1073 1012音名c3 c3# d3 d3# e3 f3 f3# g3 g3# a3 a3# b3 小字3组频率f(Hz)785 832 881 933 989 1048 1110 1176 1246 1320 1398 1482 周期T(us)1274 1203 1135 1071 1011 954 901 850 803 758 715 675FIG 1.节拍音乐的调号和节拍被表示成 1=C44或者1=G 43,其中的C,或者G 或者位于“=”之后的其他音名表示的意思是,以这个音名作为基础,唱作do 。

51单片机通过按键控制蜂鸣器发生详解

51单片机通过按键控制蜂鸣器发生详解

单片机开发报告院系:电子工程学院专业:自动化班级:自动化1401学号:姓名:赵越指导老师:刘星光2018年01 月04 日一.系统任务按键控制蜂鸣器发声二.电路原理图三.程序设计内容“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。

使用无源蜂鸣器输出7个基本音阶声音是由物体振动所产生的。

只是由于物体的材料以及振幅、频率不同,而产生不同的声音。

声音的响度是由振幅决定的,而音调则是由频率决定的,那么我们只需要控制物体振动的频率,就可以发出固定的声调。

五.汇编程序ORG 0000HAJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0F0H 12M晶振,形成10毫秒中断RETIORG 001BHLJMP INTT1 ;跳转到T1中断服务程序START: MOV DPTR,#00H ;初始化程序MOV A,#00HOBUF1 EQU 30HOBUF2 EQU 31HOBUF3 EQU 32HOBUF4 EQU 33HFLAGB BIT 00HSTOPB BIT 01HMOV SP,#50HMOV TH0,#0D8HMOV TL0,#0F0HMOV TMOD,#21HMOV TH1,#09HMOV TL1,#09HMOV IE,#8AHAJMP LOOPLOOP: JNB P3.2,MUSIC0JNB P3.1,MAINAJMP LOOPMAIN:JB P3.1,MAIN ;检测p3.1按钮LCALL YS10M ;延时去抖动JB P3.1,MAINSETB TR1 ;按钮有效MOV OBUF1,#00HMOV OBUF2,#00HMOV OBUF3,#00HMOV OBUF4,#00HCLR FLAGBCLR STOPBJNB STOPB,$AJMP START ;发出“叮咚”完毕,返回重新检测按钮YS10M: ;10ms延时子程序MOV R6,#20MOV R7,#100DJNZ R7,$DJNZ R6,D1RETTING: AJMP STARTINTT1: ;定时器T1中断服务程序INC OBUF3 ;中断服务程序中发出一声“叮咚”响声MOV A,OBUF3CJNE A,#100,NEXTMOV OBUF3,#00HINC OBUF4MOV A,OBUF4CJNE A,#20,NEXTMOV OBUF4,#00HJB FLAGB,PGSTPCPL FLAGBAJMP NEXTPGSTP:SETB STOPBCLR TR1LJMP INT0RETJB FLAGB,SOU2INC OBUF2MOV A,OBUF2CJNE A,#04H,INT0RETMOV OBUF2,#00HCPL P1.5LJMP INT0RETSOU2:INC OBUF1MOV A,OBUF1CJNE A,#05H,INT0RETMOV OBUF1,#00HCPL P1.5INT0RET:RETIMUSIC0: JB p3.2,MUSIC0LCALL YS10MJB p3.2,MUSIC0NOPMOV DPTR,#DAT 表头地址送DPTRMOV 20H,#00H ;中断计数器清0MOV B,#00H ;表序号清0 MAIN2: JNB P3.3,TINGCLR AMOVC A,@A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,@A+DPTR ;取节拍代码送R7MOV R7,ASETB TR0 ;启动计数MUSIC2:NOPCPL P1.5MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTRINC BLJMP MAIN2MUSIC3: ;休止100毫秒NOPCLR TR0MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MAIN2END0:NOPMOV R2,#0FFH ;歌曲结束,延时MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6CLR TR0LJMP LOOPDEL:NOPDEL3:MOV R4,#03HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETDENG1: MOV R3,#64HDJNZ R3,$AJMP MAINDAT:DB 30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00hEND六、程序下载及调试步骤:1.点击translate 按钮预编译2.点击build 按钮编译3.点击rebuild 按钮编译所有目标4.打开普中烧录软件四.程序流程图。

单片机蜂鸣器音乐

单片机蜂鸣器音乐

单片机蜂鸣器音乐单片机在我们的生活中无处不在,它被广泛地应用在各种电子产品中,为我们的生活带来了便利。

今天,我要向大家介绍的是一种基于单片机的蜂鸣器音乐播放器。

一、硬件部分1、单片机:我们选用的是AT89C51单片机,它具有低功耗、高性能的特点,非常适合用于音乐播放器。

2、蜂鸣器:蜂鸣器是用来发出声音的,我们将其连接在单片机的输出口上。

3、存储芯片:为了能够播放存储在芯片中的音乐,我们需要将音乐以某种格式存储在芯片中。

常用的存储芯片有EEPROM和Flash芯片。

4、按键:为了能够选择播放不同的音乐,我们需要添加一个按键。

二、软件部分1、音乐编码:我们需要将音乐转换成二进制编码,这样才能被单片机读取并播放。

常用的音乐编码格式有MIDI、WAV等。

2、音乐播放:当按下按键时,单片机读取存储芯片中的音乐数据,并通过蜂鸣器播放。

3、音乐选择:通过按键可以选择不同的音乐进行播放。

4、音量控制:我们可以通过编程来控制蜂鸣器的音量大小。

三、调试与测试1、硬件调试:检查连接是否正确,确保没有短路或断路的情况。

2、软件调试:将程序下载到单片机中进行调试,确保能够正常播放音乐。

3、综合测试:将所有硬件和软件都连接起来进行测试,确保能够正常工作。

四、总结与展望通过本次实验,我们成功地制作了一个基于单片机的蜂鸣器音乐播放器。

它具有简单、实用的特点,可以用来播放存储在芯片中的音乐。

未来,我们可以进一步扩展其功能,例如添加更多的按键来选择不同的音乐、添加显示屏来显示歌曲名称等。

我们也可以将其应用到其他领域,例如智能家居、智能安防等。

单片机蜂鸣器唱歌程序在许多应用中,单片机蜂鸣器经常被用来发出声音或音乐。

下面是一个使用单片机蜂鸣器唱歌的程序示例。

我们需要确定单片机和蜂鸣器的连接方式。

通常,单片机具有一个内置的蜂鸣器输出引脚,可以将蜂鸣器连接到这个引脚上。

在以下的示例中,我们将假设单片机具有一个内置蜂鸣器输出引脚,并将其连接到P1.0端口上。

单片机驱动蜂鸣器原理

单片机驱动蜂鸣器原理

单片机驱动蜂鸣器原理
单片机驱动蜂鸣器的原理是通过控制IO口的高低电平来控制
蜂鸣器的开关状态。

蜂鸣器通常是由一个振荡电路和一个放大电路组成。

当IO口输出高电平时,通过一个NPN型晶体管将电流传导到振荡电路中的电容上,电容开始充电。

当IO口输出低电平时,晶体管截断,电容开始放电。

电容放电时会产生声音,通过放大电路将声音放大,最终输出给蜂鸣器。

通过改变IO口输出高低电平的频率及持续时间,可以控制蜂
鸣器发出不同的声音。

例如,根据蜂鸣器发出声音的频率可以模拟出不同音调的声音。

根据IO口输出高低电平的持续时间
可以控制蜂鸣器发出短暂的提示音或长时间持续的声音。

总之,单片机驱动蜂鸣器的原理是通过IO口输出高低电平来
控制蜂鸣器的开关状态,从而产生不同的声音效果。

单片机中的蜂鸣器和音频输出技术

单片机中的蜂鸣器和音频输出技术

单片机中的蜂鸣器和音频输出技术蜂鸣器作为一种常见且常用的音频输出装置,在单片机应用领域中发挥着重要的作用。

本文将介绍蜂鸣器的原理、种类以及与单片机的联接方式。

同时,还会探讨音频输出技术在单片机应用中的应用场景和具体实现。

一、蜂鸣器的原理和种类蜂鸣器是一种能够产生声音的装置,其工作原理基于声音的震动。

按照其原理和结构的不同,蜂鸣器可以分为压电式蜂鸣器和电磁式蜂鸣器两类。

1. 压电式蜂鸣器压电式蜂鸣器是利用压电材料在电场作用下发生形变,进而产生声音的一种器件。

其内部结构由振动片和外壳组成。

当施加电压时,振动片发生震动,从而产生声音。

压电式蜂鸣器广泛应用于数字仪表、电子钟等场合,具有音质纯净、功耗低等特点。

2. 电磁式蜂鸣器电磁式蜂鸣器则是利用电磁铁产生的磁场作用于振片,振片受到电磁力的作用而振动,进而产生声音。

电磁式蜂鸣器结构简单,工作电压范围宽,适用于各种电子设备。

二、蜂鸣器在单片机中的连接方式在单片机应用中,将蜂鸣器与单片机相连接,通常有两种方式:直接驱动和驱动电路。

1. 直接驱动方式直接驱动方式是指将蜂鸣器的两极分别连接至单片机的IO口和GND。

通过控制单片机的IO口输出高、低电平,从而控制蜂鸣器工作与停止。

这种方式简单直接,适用于一些简单的音频输出场景。

2. 驱动电路方式驱动电路方式则是在直接驱动方式的基础上,增加了一个驱动电路。

驱动电路通常由三极管和电阻组成,通过调整电流大小控制蜂鸣器的工作与停止。

相比直接驱动方式,驱动电路方式可以实现更稳定的蜂鸣器控制和更好的音频效果。

三、音频输出技术在单片机应用中的实际应用除了蜂鸣器之外,单片机应用中还有许多其他音频输出技术。

下面将介绍两种常见的音频输出技术及其应用场景。

1. PWM音频输出技术PWM(脉宽调制)音频输出技术是一种通过调整方波脉冲的占空比来模拟出音频波形的技术。

在单片机应用中,通过控制PWM输出引脚的电平和占空比,可以实现简单的音频播放功能,如嵌入式音乐播放器、语音提示等。

单片机蜂鸣器发声原理

单片机蜂鸣器发声原理

单片机蜂鸣器发声原理
单片机蜂鸣器发声原理可以简单描述为以下步骤:
1. 准备工作:首先,需要将蜂鸣器连接到单片机的一个输出口(一般为I/O引脚)。

蜂鸣器有两个引脚,一个为正极(VCC),一个为负极(GND)。

2. 产生方波:在单片机中,通过对蜂鸣器所连接的引脚设置为高电平和低电平之间的快速切换,能够产生一个频率一定、占空比可调节的方波信号。

这个方波信号就是蜂鸣器声音的基准信号。

3. 驱动蜂鸣器:通过不断地将方波信号发送到连接蜂鸣器的引脚,单片机就能够驱动蜂鸣器发出声音。

当方波信号为高电平时,蜂鸣器内部的振膜向前位移,当方波信号为低电平时,蜂鸣器内部的振膜向后位移。

这种间隔的振动就会产生声音。

4. 控制频率和占空比:通过改变方波信号的高电平和低电平之间的时间长度,可以控制蜂鸣器发声的频率和占空比。

频率决定了声音的音调,而占空比则决定了声音的响度和持续时间。

通过上述步骤,单片机可以通过控制蜂鸣器的引脚输出方波信号,从而产生不同频率、不同音调的声音。

这就是单片机蜂鸣器发声的原理。

单片机教程实战2_蜂鸣器唱歌

单片机教程实战2_蜂鸣器唱歌

单片机教程实战2 蜂鸣器唱歌发布: 2009-11-04 09:01 | 作者: 平凡 | 来源: 网络 | 查看: 189次利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。

本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。

单片机的基本发音实验我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。

例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序为:其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存放延时常数,对200HZ音频,其周期为1/200秒,即5ms。

这样,当P1.4的高电平或低电平的持续时间为2.5ms,即R3的时间常数取2500/20=125(7DH)时,就能发出200HZ 的音调。

将上述程序键入学习机,并不断修改R3的常数可以感到音调的变化。

乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率及其相应的时间常数。

读者可以根据表1所提供的常数,将其16进制代码送入R3,反复练习体会。

根据表1可以奏出音符。

仅这还不够,要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。

音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。

便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。

其它节拍与时间的对应关系见表2。

但时,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。

我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。

表2中也给出了各种节拍所对应的时间常数。

用单片机驱动蜂鸣器唱歌的设计与原理

用单片机驱动蜂鸣器唱歌的设计与原理

用单片机驱动蜂鸣器唱歌的设计与原理1.蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。

2.单片机驱动单片机上面使用的蜂鸣器一般都是无源电磁式的蜂鸣器(如下图所示)。

它由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。

单片机与蜂鸣器连接如图二所示。

图中,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。

因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。

程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。

另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。

下面就是一个能够发出音乐的单片机程序,示例中所播放的音乐是《两只老虎》。

SPK EQU P3.7 ;位定义ORG 0000H ;伪指令,指定程序从0000H开始存放LJMP START ;程序跳转至START处执行ORG 0030H ;伪指令,指定程序从0030H开始存放START: MOV SP,#60H ;堆栈初始化MOV R3,#00H ;给R3赋值NEXT:MOV A,R3MOV DPTR,#TABLE ;查歌曲表MOVC A,@A+DPTRJZ START ;为00则循环播放此歌MOV R7,A ;R7/R2保存连续相邻的表数据INC R3MOV A,R3MOVC A,@A+DPTRMOV R2,AACALL SONGINC R3SJMP NEXT;==============================;=========歌曲播放子程序==========;============================== SONG:MOV A,R2 ;取出节拍RL AJNZ KEEP ;A不等于零则跳MOV A,#01H ;A等于零则赋值为1 KEEP:MOV R2,A ;REPEAT:ACALL EIGHTH ;调用1/8拍延时程序DJNZ R2,REPEAT ;RET;===============================;=======产生1/8拍延时子程序=======;===============================EIGHTH:MOV A,R7 ;查表取出延时参数,保存到R4MOV DPTR,#DELAY_TMOVC A,@A+DPTRMOV R4,AMOV A,R7 ;查表取出1/8拍周期数,保存到R5 MOV DPTR,#S_PARAMOVC A,@A+DPTRMOV R5,ANEXTCYC:ACALL SOUNDDJNZ R5,NEXTCYCRET;==============================;===========发声子程序===========;==============================SOUND:SETB SPKACALL SDELAYCLR SPKACALL SDELAYRET;==============================;============================== SDELAY:MOV A,R4 ;延时值在R4内MOV R0,AXL2:MOV R1,#03HDL1:NOPDJNZ R1,DL1DJNZ R0,XL2RET;============================== ;===========1/8拍周期表========== ;============================== S_PARA:DS 1DHDB 15H,16H,00DB 19H,00H,1CH,00H,1FH,21H,00H,25HDB 00H,29H,2CH,00H,31H,34H,37H,00HDB 3EH,41H,00H,49H,00H,52H,57H,00HDB 62H;==============================;============================== DELAY_T:DS 1DHDB 7EH,77H,00HDB 6AH,00H,5EH,00H,54H,4FH,00H,46HDB 00H,3FH,3BH,00H,35H,32H,2FH,00HDB 2AH,27H,00H,23H,00H,1FH,1DH,0C0HDB 1AH;============================== ;============歌曲表============= ;============================== TABLE:DW 2504H,2704H,2904H,2504HDW 2504H,2704H,2904H,2504HDW 2904H,2A04H,2C08HDW 2904H,2A04H,2C08HDW 2C02H,2E02H,2C02H,2A02H,2904H,2504H DW 2C02H,2E02H,2C02H,2A02H,2904H,2504H DW 2904H,2004H,2508HDW 2904H,2004H,2508HDW 0000HEND童鞋们可能发现了,数据表TABLE里面的数据才是歌曲数据。

单片机实验报告蜂鸣器

单片机实验报告蜂鸣器

单片机实验报告蜂鸣器单片机实验报告:蜂鸣器引言在现代科技发展迅猛的时代,单片机已经成为了各种电子设备中不可或缺的重要部分。

而蜂鸣器作为一种常见的声响器件,也被广泛应用在各种电子产品中。

本实验旨在通过单片机控制蜂鸣器,实现不同频率和节奏的声音输出,并对蜂鸣器的工作原理进行深入理解。

实验目的1. 了解蜂鸣器的工作原理;2. 掌握单片机控制蜂鸣器的方法;3. 实现不同频率和节奏的声音输出。

实验原理蜂鸣器是一种能够发出声音的电子元件,其工作原理是利用电流通过振动片产生声音。

在实验中,我们将通过单片机控制蜂鸣器的工作频率和节奏,从而实现不同的声音效果。

实验步骤1. 连接电路:将单片机和蜂鸣器按照电路图连接好;2. 编写程序:使用C语言编写单片机控制蜂鸣器的程序;3. 烧录程序:将编写好的程序烧录到单片机中;4. 调试程序:通过调试程序,实现不同频率和节奏的声音输出;5. 实验结果:记录实验中不同声音效果的输出结果。

实验结果经过实验,我们成功地通过单片机控制蜂鸣器,实现了不同频率和节奏的声音输出。

通过调试程序,我们可以轻松地改变蜂鸣器的声音效果,包括音调的高低和声音的持续时间等。

这些实验结果充分展示了单片机控制蜂鸣器的强大功能和灵活性。

实验总结通过本次实验,我们深入理解了蜂鸣器的工作原理,并掌握了单片机控制蜂鸣器的方法。

同时,我们也实现了不同频率和节奏的声音输出,为以后的电子产品设计和开发提供了有力的支持。

相信通过这次实验,我们对单片机和蜂鸣器的应用有了更深入的认识,为我们的学习和科研工作打下了坚实的基础。

蜂鸣器唱歌程序

蜂鸣器唱歌程序

蜂鸣器唱歌----生日快乐下面是我单片机入门的时候写的一个蜂鸣器唱歌的程序,用的是stc89c52的单片机和12MHZ的晶振。

它大致是这样工作的。

我们知道歌曲都是由最基本的音调和节拍组成的。

音调就是该音符的频率,节拍就是该音符持续的时间。

也就是说发出一个最基本的音我们需要两个参数,一个是频率,一个是节拍。

那么在单片机中如何产生这两个参数呢?首先我们需要知道该音符的频率,然后用单片机的I/O口不断地变高变低来产生这个频率。

比如 1 这个音在低音,中音,高音三种情况下会有3种频率,至于到底是哪种音,在歌曲的乐谱中会给出详细的标识。

现在我们假设1 这个音为低音,在d调(什么是d调?看文章尾附录)下频率为293hz,一个周期为T=1/293 s。

那么I/O口被置1和置0的时间各占一半也就是T/2。

然后算出相应的定时器初值,那么单片机就可以发出这个音了。

接下来就是一个音符要唱多久,那就要看这个音符占据多少个节拍了,同样在歌曲的乐谱中会给出详细的标示。

那么一拍是多长呢,下面有说明。

慢节奏一般600ms一拍,快节奏一般400ms一拍。

如果你要知道更准确的节拍时长,只有拿着乐谱去听歌了,记下唱一拍的时间就行了。

我用的是定时器0控制节拍长度,在每个音符开始时开启它,它是10ms 中断一次,并且让里面的计数值增加1。

如果我要唱一拍的话(假设为600ms),那么我只需要判断计数值是否达到60,如果达到那么就停止计时然后跳到下一拍。

以上就是蜂鸣器唱歌的基本原理了,希望能对你有所帮助。

#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit sound=P3^7;uint counter=0;uchar code FREQH[3][8]= //音符定时器初值,三个8度音的高八位{//注意每行起始都为0xff,因为音调中没有0 这个音,所以随便填了个数字,后面不不会引用它// 低音:// 1 2 3 4 5 6 7{0xff,0xf9, 0xfa, 0xfa, 0xfb, 0xfb, 0xfc, 0xfc},//中音://1 2 3 4 5 6 7{0xff,0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe},//高音://1 2 3 4 5 6 7{0xff,0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x00}//0x00};uchar code FREQL[3][8]= //音符定时器初值,三个8度音的低八位{// 低音:// 1 2 3 4 5 6 7{0xff,0x5b, 0x15, 0xb9, 0x04, 0x90, 0x0c, 0x79},//中音:// 1 2 3 4 5 6 7{0xff,0xac, 0x09, 0x5c, 0x82, 0xc8, 0x05, 0x3c},//高音://1 2 3 4 5 6 7{0xff,0x55, 0x84, 0xad, 0xc0, 0xe3, 0x02, 0x00}//0x00};uchar code MUSIC[]={//生日快乐//歌曲代码,每三个表示一个音符及节拍,第一个表示音符1234567,第二个表示音高,0表示低音,1表示中音,2表示高音,第三个表示节拍长度,1表示半拍,2表示一拍,以此类推。

(完整word版)单片机控制蜂鸣器唱歌的原理

(完整word版)单片机控制蜂鸣器唱歌的原理

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调"和“节拍"。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

1)音调的确定音调就是我们常说的音高.它是由频率来确定的!我们可以查出各个音符所对应的相应的频率,那么现在就需要我们来用51来发出相应频率的声音!我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现.那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A 为例:A 的频率f = 440 Hz, 其对应的周期为:T = 1/ f = 1/440 =2272μs那么,单片机上对应蜂鸣器的I/O 口来回取反的时间应为:t = T/2 = 2272/2 = 1136 μs ,也就是清零、置位在一个周期内完成.这个时间t 也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f0 ,则定时器的予置初值由下式来确定:t = 12 *(TALL – THL)/ f0 式中TALL = 216= 65536,THL为定时器待确定的计数初值。

因此定时器的高低计数器的初值为:TH =THL/ 256 = (TALL – t*f0/12)/ 256TL = THL %256 = (TALL – t*f0/12)%256将t=1136 μs 代入上面两式(注意:计算时应将时间和频率的单位换算一致)即可求出标准音高A 在单片机晶振频率f0=12Mhz,定时器在工作方式1 下的时器高低计数器的予置初值为:TH440Hz = (65536 – 1136 * 12/12) /256 = FBHTL440Hz = (65536 – 1136 *12/12)%256 = 90H就这样,我们通过延时,发出了我们所需要的频率以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示:2)节拍的确定在一张乐谱中,我们经常会看到这样的表达式,如1=C (4/4) 、1=G(3/4)……等等,这里1=C (4/4),1=G(3/4)表示乐谱的曲调,和我们前面所谈的音调有很大的关联,4/4、3/4 就是用来表示节拍的。

51单片机蜂鸣器音阶所对应频率

51单片机蜂鸣器音阶所对应频率

在51单片机中,蜂鸣器音阶所对应的频率是相当重要的。

通过对频率的设定,可以在实际应用中实现不同的音调和音乐效果。

让我们先来了解一下51单片机蜂鸣器的工作原理。

51单片机蜂鸣器是一种被广泛应用于各种电子设备中的音频输出装置,它通过控制电流的频率和占空比来发出不同音调的声音。

在实际应用中,我们要根据需要来设定蜂鸣器的频率,从而实现不同的音阶和音乐效果。

接下来,让我们来详细探讨一下51单片机蜂鸣器音阶所对应的频率。

在音乐理论中,音阶是由一系列音符按特定的音程组成的音乐音阶体系。

常见的音阶包括C大调、D大调、E大调等,每个音阶都对应着特定的频率。

在51单片机蜂鸣器中,我们可以通过设置不同的频率来模拟出这些音阶,从而实现丰富的音乐效果。

以C大调音阶为例,我们可以将C4音符的频率设定为261.63Hz,D4音符的频率设定为293.66Hz,E4音符的频率设定为329.63Hz,以此类推。

通过逐个设置每个音符的频率,我们就可以在51单片机蜂鸣器上模拟出C大调音阶的音乐效果。

同样的方法也适用于其他音阶,只需要根据对应的频率来进行设置即可。

除了基本的音阶,我们还可以通过设置不同频率的音符来实现和弦、音阶、旋律等更复杂的音乐效果。

在实际应用中,我们可以根据具体的需求来调整蜂鸣器的频率,从而实现丰富多样的音乐效果。

总结回顾:在51单片机中,蜂鸣器的工作原理是通过控制电流的频率和占空比来发出不同音调的声音。

对应频率是实现不同音阶和音乐效果的关键。

通过设置不同频率的音符,我们可以模拟出各种音阶、和弦、旋律等丰富的音乐效果。

在实际应用中,可以根据具体的需求来调整蜂鸣器的频率,从而实现丰富多样的音乐效果。

个人观点:蜂鸣器音阶所对应的频率在51单片机中起着至关重要的作用,它不仅可以用于模拟各种音阶和音乐效果,还可以用于实现各种声音提示和警报。

在实际应用中,充分理解和掌握蜂鸣器频率与音阶的对应关系,可以为我们的电子设备带来更丰富、更灵活的音响功能。

单片机驱动蜂鸣器唱国歌的设计与原理

单片机驱动蜂鸣器唱国歌的设计与原理

蜂鸣器演奏国歌(11机自创新1班王丽红1110100736)1设计任务本设计是以AT89C51芯片的电路为基础,外部加上三级管驱动蜂鸣器,以此来实现音乐演奏控制的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。

按照要求选择音乐,在本次设计中以演奏《国歌》为例,将其转化为机器码存入单片机的存储器中。

2设计原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此驱动需要一定的电流,单片机引脚输出的电流较小,基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。

三极管的发射极E接电源,集电极C接蜂鸣器正极,蜂鸣器负极接地,三极管的基级B经过限流电阻R后由单片机引脚控制。

当输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。

程序中改变单片引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。

另外,改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。

3 软件设计3.1音调、节拍以及编码的确定一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。

3.1.1音调的确定不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,这是唱曲时乐音的发音,所以叫“音调”。

把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。

两个音之间的距离有两个“半音”,就叫“全音”。

1) 要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机控制蜂鸣器唱歌
的原理
Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

1)音调的确定
音调就是我们常说的音高。

它是由频率来确定的!我们可以查出各个音符所对应的相
应的频率,那么现在就需要我们来用51来发出相应频率的声音!
我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。

那么怎样确定一个频率所对应的定时器的定时值呢?
以标准音高A 为例:
A 的频率f = 440 Hz, 其对应的周期为:T = 1/ f = 1/440 =2272μs
那么,单片机上对应蜂鸣器的I/O 口来回取反的时间应为:
t = T/2 = 2272/2 = 1136 μs ,也就是清零、置位在一个周期内完成.
这个时间t 也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f0 ,则定时器的予置初值由下式来确定:
t = 12 * (TALL – THL)/ f0 式中TALL = 216= 65536,T HL为定时器待确定的计数初值。

因此定时器的高低计数器的初值为:
TH =THL/ 256 = ( TALL – t* f0/12) / 256
TL = THL % 256 = ( TALL – t* f0/12) %256
将t=1136 μs 代入上面两式(注意:计算时应将时间和频率的单位换算一致)即可求出标准音高A 在单片机晶振频率f0=12Mhz,定时器在工作方式1 下的时器高低计数器的予置初值为:
TH440Hz = (65536 – 1136 * 12/12) /256 = FBH
TL440Hz = (65536 – 1136 * 12/12)%256 = 90H
就这样,我们通过延时,发出了我们所需要的频率
以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示:
2)节拍的确定
在一张乐谱中,我们经常会看到这样的表达式,如1=C (4/4) 、
1=G(3/4) ……等等,这里1=C (4/4),1=G(3/4) 表示乐谱的曲调,和我们前面所谈的音调有很大的关联,4/4、3/4 就是用来表示节拍的。

以3/4 为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。

其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。

1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。

一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms 。

相关文档
最新文档