单片机的可控数字音乐盒设计课程设计.docx
- 文档编号:423166
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:16
- 大小:125.87KB
单片机的可控数字音乐盒设计课程设计.docx
《单片机的可控数字音乐盒设计课程设计.docx》由会员分享,可在线阅读,更多相关《单片机的可控数字音乐盒设计课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
单片机的可控数字音乐盒设计课程设计
单片机的可控数字音乐盒设计
目录
项目概述----------------------------------------------1
项目要求----------------------------------------------1
系统原理----------------------------------------------1
硬件设计----------------------------------------------4
软件设计----------------------------------------------6
系统仿真和调试----------------------------------------7
学习过程的体会----------------------------------------8
附录1-------------------------------------------------9
附录2-------------------------------------------------18
一、项目概述
本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
使用两个按键控制音乐盒,一个用来切换歌曲。
播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。
本设计利用KEILC编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
二、项目要求
1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲
2.可通过功能键选择乐曲,暂停,播放。
三、系统原理
1.芯片AT89C51的介绍
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.音调的产生
不同的音调对应着不同的物理频率,而若要产生一定频率的声音,我们只需用一定频率的方波来驱动蜂鸣器即可。
对于固定频率的产生方法,本系统中用定时器0设置为工作方式1(TMOD=0x01),对不同的音调依据频率装入对应的计数初值,定时器计数完时将输出端取反(编程中采用异或),进而产生对应的方波。
具体计算如下:
如对于编码为1的低音SO,其频率为392HZ,我们实验中采用的为12M晶振,因此机器周期为1us,那么该音调对应的计数初值为:
65536-1000000/(2*392)=65536-1276=64270
解释:
由于工作方式0中计数器的THO和TL0所有位均用于装载计数初值,因此最大计数值为256*256=65536,周期为1x
s,频率为392HZ,每定时一次对输出取反,因此计数初值应除以2。
以下为所有音调标准频率及其在本设计中的的计数初值表
计数初值表
低音
频率
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
Si
494
1012
121
Si
988
506
61
Si
1976
30
30
3.节拍的确定
学习音乐时,每个音符都有对应的节拍,我们唱拍的时候通常叫做打拍子,用来区分音符之间所间隔的时间,因此音符的产生不仅要有频率,还要有节拍。
我们知道一共有12中不同的节拍,每一拍的时间都是最短拍的整数倍,例如4/4拍是1/4拍的4倍,因此我们可以确定一个基准的延时时间,然后用它的倍数表示不同的节拍,用一个无符号整数来表示其倍数。
具体代码如下
voiddelay(uintp)
{uintj;
uintk,l;
for(l=0;l
for(k=165;k>0;k--)
for(j=0;j<160;j++);
}
通过此程序,每一拍为107ms,可以实现要求,对于节拍没有固定的时间,也可以通过调节循环初值进行延时修改。
4.音符的编码
由计数初值表可以看到,如果采用将每一个音符的所对应的计数初值都直接编入音乐的码流中,每个码占两个字节,并且不易记忆,因此我们采用将不同音符的频率写入一个如下所示码表中,通过查表确定计数初值。
ucharcodeyd[]={
0xff,0xff,//占位
0xFC,0x8E,//中央C调1-7
0xFC,0xED,
0xFD,0x43,
0xFD,0x6A,
0xFD,0xB3,
0xFD,0xF3,
0xFE,0x2D,
0xFE,0x47,//高八度1-7
0xFE,0x76,
0xFE,0xA1,
0xFE,0xC7,
0xFE,0xD9,
0xFE,0xF9,
0xFF,0x16
};
编码表如下
简谱
发音
简谱码
T值
节拍码
节拍数
5
低音SO
1
64260
1
1/4拍
6
低音LA
2
64400
2
2/4拍
7
低音TI
3
64524
3
3/4拍
1
中音DO
4
64580
4
1拍
2
中音RE
5
64684
5
1又1/4拍
3
中音MI
6
64777
6
1又1/2拍
4
中音FA
7
64820
8
2拍
5
中音SO
8
64898
A
2又1/2拍
6
中音LA
9
64968
C
3拍
7
中音TI
A
65030
F
3又3/4拍
1
高音DO
B
65058
2
高音RE
C
65110
3
高音MI
D
65157
4
高音FA
E
65178
5
高音SO
F
65217
对照乐谱编码时,可以查上表进行对应的编码
四、硬件电路
1.电路图
电路参数:
芯片:
AT89C51C1:
10uF
C2:
30pFC3:
30pF
R1:
200ΩR2:
1KΩ
晶振:
12MHZ
1、晶振回路:
12MHZ晶振电路,其中C1和C2为微调电容
2、复位电路:
采用按键电平复位
原理介绍:
电路运行时,通过中断int0和int1向cpu发出中断申请,执行相应中断服务,通过调整各标志位实现相应的功能
五.软件设计
1.主程序流程图(主程序为死循环,在此略去主循环部分,没有结束框)
2、中断服务子程序流程图
外部中断服务0:
暂停与继续播放
外部中断服务1:
开始、停止、切歌子程序流程图
流程图说明:
由于外部中断服务执行与否来取决于外部硬件,并且可能在执行主程序的任何一个时刻发生,因此在此单独列出两个中断服务子程序,执行完之后将自动跳回主程序中继续执行。
3.具体代码见附录
六.仿真调试
1.运行结果
由运行时的电路变化可以看出LS1相连的端口电压不断变化,这是由于定时器产生了驱动电流驱动其发声,当按下与int1相连的按钮时开始唱歌,按与int0相连的按钮时唱歌暂停,再次按下时继续播放,并且无论歌曲是否暂停,如果当前播放不为最后一首音乐,当按下int1相连按钮时系统将播放下一首音乐,如果为最后一首则停止播放,系统恢复至初始化之后状态。
2.程序调试中出现的问题及解决的办法:
(a)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
(b)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
(c)程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。
(d)编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
LCD计时正常显示的解决办法:
(a)两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。
解决办法:
将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。
但还有问题。
(b)当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。
(c)另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,托因时间长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。
七.体会
一分耕耘,一分收获。
只有亲自用实践来验证这句话,在能得其要领。
经过这次单片机课程设计,我从一个单片机实践的门外汉,已经越升为略知一二的新手。
虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节,一切设计皆有可能。
在实验的开始几天,基本上没有收获,不知何从下手,不知所措。
为了看得更远,不妨站在前人的肩膀上,我在整体思路模糊的情况下,在网上大量招资粮,各种与电子时钟相关的文章,我阅读了不少。
随着涉猎的点滴积累,我对电子时钟的设计方案已经慢慢酝酿而成。
有了方向和不少知识储备后,在接下来的几天,几乎每天都有突破,虽然有时只是一句程序的修改或诞生,但那种收获的感觉很暖人心。
在课程设计的过程中:
遇到的最大的问题就是硬件问题,在自己课程设计的过程中遇到的很多情况下或是导线损坏或是实验箱上的I/O口不能正确的输出。
在这一方面,我们所能做的是,每天开始做实验时就要检查所用的导线没有问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 可控 数字 音乐盒 设计 课程设计