单片机控制蜂鸣器汇总.docx
- 文档编号:9138519
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:21
- 大小:203.65KB
单片机控制蜂鸣器汇总.docx
《单片机控制蜂鸣器汇总.docx》由会员分享,可在线阅读,更多相关《单片机控制蜂鸣器汇总.docx(21页珍藏版)》请在冰点文库上搜索。
单片机控制蜂鸣器汇总
单片机控制蜂鸣器
20年月日
绪论1
1、硬件设计2...
1.1总体设计图2...
1.2简易结构框图2...
1.3各部分硬件设计及功能3..
1.3.1蜂鸣器发声电路:
(如图1.3.1)·3
1.3.2电源稳压电路:
·4
1.4元件清单4...
2、软件设计5...
2.1设计思想5...
2.2程序流程图5...
2.3音调、节拍以及编码的确定方法6..
2.3.1音调的确定·6
2.3.2节拍的确定·8
2.3.3编码·9
3、电路仿真与分析1..0.
4、电路板焊接、调试1..1.
4.1焊接1..1.
4.2调试1..2.
5、讨论及进一步研究建议1..2
6、心得1..2..
7、单片机音乐播放器程序实例(卡农)1..3
绪论
蜂鸣器播放音乐电路设计对于单片机初学者来说是一个简单易实现的课题。
通过编写程序使单片机产生一定频率的方波信号,方波信号进入蜂鸣器便产生我们熟知的音调。
我们用定时/计数器使单片机产生方波,利用定时/计数器使输出管脚在一定周期内反复翻转,达到所需频率,而我们给定时/计数器的初始值就是我们的音符—半周期数据表,通过我们播放的音乐的乐谱,来对数据表进行调用。
我们用延时子程序来表示节拍,不同的节拍代表不同的延时。
完成此次设计之后完全可以进行扩展,例如增加按键以及LED灯光效果,制成一个简易的音乐盒,给人以视觉听觉等全方位的享受。
1、硬件设计
1.1总体设计图
1.2简易结构框图
2
1.3各部分硬件设计及功能1.3.1蜂鸣器发声电路:
(如图1.3.1)
图1.3.1
如图所示,蜂鸣器发声电路是播放音乐电路的主要执行电路,它由一个蜂鸣器,一个三极管和一个电位器组成。
蜂鸣器负责发声,三极管将电流放大,而电位器则控制流过蜂鸣器电流的大小,来达到控制音量的目的。
1.3.2电源稳压电路:
我们采用DC005电源供电,供电电压为5V。
稳压电路用来达到稳定输入电压的目的,它由一个整流二极管,两个电容和一个三端稳压器组成。
二极管和电容组成整流电路,将交流整流成直流,而三端稳压器则用来稳定电压。
1.4元件清单
元件
数量
晶振11.0592M
1
电容30pf
2
STC89C52RC
1
三极管
1
电容10uF
1
极性电容47uf
1
极性电容1000uf
1
单端稳压器
1
二极管1N4007
1
DC005插头插座
1
蜂鸣器
1
电位器10K
1
电阻10K
2
电阻1K
1
按键
1
2、软件设计
2.1设计思想
将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,选择需要的声响时间,即可完成一个音符的播放。
该音符唱完后,接着取出下一个音符的相关参数⋯⋯,如此直到播放完毕最后一个音符。
中间可根据需要将音符和音符之间插入时间延时,以产生需要的节拍,用01H或02H、03H
等等,具体根据歌曲的实际需要设置。
根据需要也可循环不停地播放整个乐曲。
利用INTO在中断中是属于最高优先级的特点,外部端口P3.2接中断0即可完成中断造成的歌曲选择——下一首的播放。
另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。
声音输出接一个三极管,利用通断放大声
2.2程序流程图
2.3音调、节拍以及编码的确定方法
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。
2.3.1音调的确定
不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。
把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。
两个音之间的距离有两个“半音”,就叫“全音”。
在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。
通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。
﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。
例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294Hz)的一倍。
知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?
一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。
那么怎样确定一个频率所对应的定时器的定时值呢?
以标准音高A为例:
A的频率f=440Hz,其对应的周期为:
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)/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根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。
C调各音符频率与计数值T的对照表如表4.1所示。
表2.3.1C调各音符频率与计数值T的对照表
低音
频率
T
参数
中音
频率
T
参数
高音
频率
T
参数
Do
262
1908
229
Do
523
956
115
Do
1046
57
57
Do﹟
277
1805
217
Do﹟
554
903
108
Do﹟
1109
54
54
Re
294
1701
204
Re
587
852
102
Re
1175
51
51
Re﹟
311
1608
193
Re﹟
622
804
97
Re﹟
1245
48
48
Mi
330
1515
182
Mi
659
759
91
Mi
1318
45
45
Fa
349
1433
172
Fa
698
716
86
Fa
1397
43
43
Fa﹟
370
1351
162
Fa﹟
740
676
81
Fa﹟
1480
41
41
So
392
1276
153
So
784
638
77
So
1568
38
38
So﹟
415
1205
145
So﹟
831
602
72
So﹟
1661
36
36
La
440
1136
136
La
880
568
68
La
1760
34
34
La﹟
464
1078
129
La﹟
932
536
64
La﹟
1865
32
32
7
2.3.2节拍的确定
若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。
“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。
若1拍实0.5s,则1/4拍为0.125s。
至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。
音持续时间的长短即时值,一般用拍数表示。
休止符表示暂停发音。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。
了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。
对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。
因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。
表2.3.2节拍与节拍码对照
节拍码
节拍数
节拍码
节拍数
1
1/4拍
1
1/8拍
2
2/4拍
2
1/4拍
3
3/4拍
3
3/8拍
4
1拍
4
2/1拍
5
1又1/4拍
5
5/8拍
6
1又1/2拍
6
3/4拍
8
2拍
8
1拍
A
2又1/2拍
A
1又
1/4拍
C
3拍
C
1又
1/2拍
F
3又3/4拍
每个音符使用1个字节,字节的高4位代表音符的高低,低
4位代表音符的
8
节拍,图5.2为节拍码的对照。
如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图5.3为1/4和1/8节拍的时间设定。
表2.3.21/4和1/8节拍的时间设定
曲调值
DELAY
曲调值
DELAY
调4/4
125毫
调4/4
62毫秒
秒
调3/4
187毫
调3/4
94毫秒
秒
调2/4
250毫
调2/4
125毫
秒
秒
2.3.3编码
doremifasolasi分别编码为1~7,重音do编为8,重音re编为9,停
顿编为0。
播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。
音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。
以0xff作为曲谱的结束标志。
举例1:
音调do,发音长度为两拍,即二分音符,将其编码为0x18。
举例2:
音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计。
先将歌曲的简谱进行编码,储存在一个数据类型为unsignedchar的数组中。
程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。
表2.3.3简谱对应的简谱码、T值、节拍数
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
9
低1DO
262
63628
#4FA#
740
64860
#1DO#
277
63731
中5SO
784
64898
低2RE
294
63835
#5SO#
831
64934
#2RE#
311
63928
中6LA
880
64968
低3M
330
64021
#6
932
64994
低4FA
349
64103
中7SI
988
65030
#4FA#
370
64185
高1DO
1046
65058
低5SO
392
64260
#1DO#
1109
65085
#5SO#
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
#6
466
64463
高3M
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
#4FA#
1480
65198
#1DO#
554
64633
高5SO
1568
65217
中2RE
587
64684
#5SO#
1661
65235
#2RE#
622
64732
高6LA
1760
65252
中3M
659
64777
#6
1865
65268
中4FA
698
64820
高7SI
1967
65283
表2.3.3
3、电路仿真与分析
本次试验我们采用了两个软件,用protel和keil两个软件和程序下载机进行仿真。
仿真
仿真原理图(简化画法):
图3.1
10
先在protel
编写好程序,编译通过无错后生成
一个.hex文件,打开成功后喇叭发出悦耳的音乐声,说明调试
4、电路板焊接、
成功
。
4.1焊
接过程
平滑,
中,进行调试。
调试
次实验由于电路简单,
线路不多,我们使用洞洞板
焊接之前
焊接
不要太长时间,
资源有可以美观。
单片机不用到的
引脚可以
并没有出现什么问题。
焊点圆滑等,基本都能做到
正确完成,并且美观
11
当中要注意石英晶振不用焊接上去,所
焊
既可
以焊
走线
4.2调试
这个设计受外界环境的影响比较小,所以只要电路仿真成果以及焊接正确,基本实现并不很难。
我们在此次设计当中运用模电知识,通过三极管后再接小喇叭,声音立刻变大了。
由于一开始我们使用蜂鸣器,声音的柔和度非常差,歌曲播放当中经常出现严重的声音失真。
因此,我们换了柔和度好的小喇叭,经过调试后声音极大的得到改进,声度和柔和度都达到了非常好的理想状态。
5、讨论及进一步研究建议
本次设计的创新点就是能够播放多首歌曲。
同时电路比较简单,所用器件相对较少。
这个设计能够实现实验的要求,能够播放出音乐,但还可以再改进。
比如说,可以加按键来实现上一曲下一曲的功能。
本设计如果时间充裕,还可以增加显示正在播放第几首歌曲的功能,可用数码管来实现,只要程序进行修改并且接上相应的端口就可实现功能。
6、心得
本次试验我们选择了相对简单的音乐系统设计。
在网上关于这个设计的资料也很多,甚至有现有程序,电路图。
但是经过我们的比较与讨论,我们把电路简化到最简单,选择了简单易实现且播放音乐失真较小的程序。
制作过程中出现了各种各样的问题,比如说程序输入错误,连线错误或者焊接错误等,但是经过我细心研究,还是逐一的排除了。
设计过程中,虽然困难重重,也曾在设计初期想过放弃,但是我最后还是选择坚持,相信凭着我的努力一定能够设计出来的,正是拼这这股信念才让我坚持到最后。
各个项目设计中,有过坎坷时的烦闷,有过成功时的喜悦,最难得的是
12
我始终没有放弃,结果虽然不能完全达到目的,但是在这个过程中学到很多的东西,不仅仅是知识上的。
结果并不太重要,过程更能体现这次设计的目的。
7、单片机音乐播放器程序实例(卡农)
#include
unsignedchartimer0h,timer0l,time;//频率-半周期数据表高八位
codeunsignedcharFREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,
0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//高音1234567
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF};//超高音1234567//频率-半周期数据表低八位
codeunsignedcharFREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
//低音1234567
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,
//中音1234567
0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,
//高音1234567
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16};
//超高音1234567
//1/4拍为单位
//卡农音乐数据表
codeunsignedcharyyb[]={5,3,2,3,3,1,4,3,1,5,3,2,3,3,1,4,3,1,5,3,1,
5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,3,3,2,1,3,1,2,3,1,3,3,2,3,2,1,4,2,1,
5,2,1,6,2,1,5,2,1,4,2,1,5,2,1,3,2,1,4,2,1,5,2,1,4,2,2,6,2,1,5,2,1,4,2,2,3,2,1,
2,2,1,3,2,1,2,2,1,1,2,1,2,2,1,3,2,1,4,2,1,5,2,1,6,2,1,4,2,2,6,2,1,5,2,1,6,2,1,
7,2,1,1,3,1,5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,5,3,1,3,3,2,1,3,1,2,3,1,
13
3,3,2,2,3,1,1,3,1,2,3,1,7,2,1,1,3,1,2,3,1,3,3,1,2,3,1,1,3,1,7,2,1,1,3,2,6,2,1,
7,2,1,1,3,2,1,2,1,2,2,1,3,2,1,4,2,1,3,2,1,2,2,1,3,2,1,1,3,1,7,2,1,1,3,1,6,2,2,
0,0,0};
voidt0int()interrupt1
{
TR0=0;speaker=!
speaker;
TH0=timer0h;
TL0=timer0l;
TR0=1;
//T0中断程序,控制发音的音调
//先关闭T0
//输出方波,发音
//下次的中断时间,这个时间,控制音调高低
//启动T0
}
//
voiddelay(unsignedchart)//延时程序,
{
unsignedchart1;
unsignedlongt2;
for(t1=0;t1 for(t2=0;t2<4000;t2++); TR0=0; } 控制发音的时间长度以1/4拍为单位 //延时期间,可进入T0中断去发音 //关闭T0,停止发音 //主程序 voidsong()//演奏一个音符 { 14 //控制音调 TH0=timer0h; TL0=timer0l; TR0=1;//启动T0,由T0输出方波去发音 delay(time);//控制时间长度 } // voidmain(void) { unsignedchark,i; TMOD=1;//置T0定时工作方式1 ET0=1;//开T0中断 EA=1;//开CPU中断 while (1) { i=0; time=1; while(time) { k=yyb[i]+7*yyb[i+1]-1;//第i个是音符,第i+1个是第几个 八度 timer0h=FREQH[k];//从数据表中读出频率数值 timer0l=FREQL[k];//实际上,是定时的时间长度 time=yyb[i+2];//读出时间长度数值 i+=3; song();//发出一个音符以下为 } } } 15
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 控制 蜂鸣器 汇总