单片机音乐播放器.docx
《单片机音乐播放器.docx》由会员分享,可在线阅读,更多相关《单片机音乐播放器.docx(17页珍藏版)》请在冰豆网上搜索。
单片机音乐播放器
课程设计(论文)说明书
题目:
基于单片机的
音乐播放器
院(系):
专业:
学生姓名:
学号:
指导教师:
职称:
2012年12月16日
摘要
本次课程设计是基于AT89C52单片机设计一个音乐播放器。
通过单片机音乐播放器系统设计和研究,对于切实掌握单片机相关知识具有重要的理论和实际意义。
这次课程设计的音乐播放器是软件和硬件的结合,乐曲中不同的音符,实质就是不同频率的声音。
通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。
根据各音阶频率算出定时器定时常数,根据节拍给出该音阶持续的时间,最终实现播放简单歌曲的功能。
例如生日快乐歌。
关键字:
单片机;音乐播放器
Abstract
ThiscourseisdesignedbasedonsinglechipmicrocomputerAT89C52designamusicplayer.Throughthesingle-chipmicrocomputermusicplayersystemdesignandresearch,tobemasteredmicrocontrollerrelatedknowledgeisofimportanttheoreticalandpracticalsignificance.Thecoursedesignofthemusicplayeristhecombinationofsoftwareandhardware,Differentnotesinthemusic,theessenceisdifferentfrequencyofsound.Throughthesingle-chipmicrocomputerproducedifferentfrequencyofthepulsesignal,amplifiedcircuit,releasedbyabuzzertoproducetheharmoniousbeautyofmusic.accordingtoeachoctavefrequencycalculatetimertimeconstant,accordingtobeatthethedurationofthescalearegiven,finallyrealizestheplaysimplesongsfunction.Forexample"happybirthday".
Keywords:
MCU;musicplayer
目录
引言1
1设计要求2
1.1设计题目2
1.2设计要求2
2设计的过程2
2.1硬件组成部分2
2.1.1单片机AT89C52模块的简介2
2.1.2晶振电路模块3
2.1.3复位按键模块3
2.1.4放大模块4
2.1.5发声模块4
2.1.6按键模块4
2.2软件组成部分5
2.3单片机音乐播放器原理5
2.3.1单片机音乐播放器原理图5
2.3.2单片机音乐播放器原理图的管教连线介绍6
3电路板的制作与调试6
3.1电路板的制作6
3.2硬件的调试6
3.4调试结果7
4结论与心得8
谢辞9
参考文献:
10
附录:
11
音乐播放器程序如下:
11
引言
单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。
一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!
但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!
只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。
为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。
存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。
程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC之中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。
因此通过对音乐播放器设计和研究,对于切实掌握单片机相关知识具有重要的理论和实际意义。
1设计要求
1.1设计题目
基于单片机的音乐播放器
1.2设计要求
实现播放简单歌曲的功能。
例如生日快乐歌。
2设计的过程
2.1硬件组成部分
单片机音乐播放器系统总体设计由五个部分构成:
晶振电路模块、复位电路模块、AT89C52单片机、发声模块以及按键模块。
其中五个模块连接在AT89C52单片机上构成一个完整的系统。
如图2-1所示。
图2-1单片机音乐播放器系统原理图
2.1.1单片机AT89C52模块的简介
AT89C52是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含8KB的可反复擦写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。
AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。
其主要工作特性是:
⑴片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;
⑵片内数据存储器内含256字节的RAM;
⑶具有32根可编程I/O口线;
⑷具有3个可编程定时器。
其中,AT89C52单片机的引脚图如图2-2所示。
图2-2AT89C52单片机的引脚图
2.1.2晶振电路模块
晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。
这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。
晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。
一般的晶振的负载电容为15p或12.5p,如果再考虑元件引脚的等效输入电容,则两个30p的电容构成晶振的振荡电路就是我为这次课设的选择。
晶振电路模块电路图如图2-3所示。
图2-3晶振电路模块电路图
2.1.3复位按键模块
复位模块主要进行复位操作。
复位按键模块电路图如图2-4所示。
图2-4复位按键模块电路图
2.1.4放大模块
由于p2.0端口流出的电流过小,几乎听不到音乐声,要实现发声功能,只有把p2.0端口流出的电流放大,故加上放大模块,实现了发声功能。
放大模块电路图如图2-5所示。
2.1.5发声模块
发声模块的主要部件是蜂鸣器LS1,蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的。
蜂鸣器是由p2.0端口控制的。
发声模块电路图如图2-5所示。
图2-5发声放大模块电路图
2.1.6按键模块
按键模块主要实现播放歌曲的功能。
按键模块电路如图2-6所示。
图2-6按键模块电路图
2.2软件组成部分
单片机音乐播放器系统总体功能的实现与各个模块的基本功能密不可分,因此必须要从各个模块的单独设计入手。
根据各个模块,通过网络查询与图书馆所借单片机方面的书籍,所得音乐播放器程序(见附录)。
2.3单片机音乐播放器原理
2.3.1单片机音乐播放器原理图
⑴单片机音乐播放器原理图,如图2-7所示。
图2-7单片机音乐播放器原理图
⑵单片机音乐播放器的PCB图,如图2-8所示。
图2-8单片机音乐播放器的PCB图
2.3.2单片机音乐播放器原理图的管教连线介绍
⑴复位键(REST),播放键停止键(p1.0)。
⑵用P2.0口控制蜂鸣器,播放音乐。
⑶电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。
3电路板的制作与调试
3.1电路板的制作
首先,电路板用砂纸打磨,再用熨斗将打印的PCB图印制在上面,然后经过腐蚀、打孔、装元件、焊接等步骤即可做出电路板。
由于做过几次制版,故比较顺利。
3.2硬件的调试
加上5V电压,通过万用表检查,一一检查各个器件,发现虚焊的地方都一一修改过来,直到没有错误。
3.3软件的调试
通过KeiluVsion4编译与调试音乐程序和流水灯程序,没发现错误,检查管脚与程序配对都能没问题,烧到芯片上,接上电源后音乐就直接播放出来了,后来,在同学与老师的帮助下,实现了音乐按键播放的开始与停止。
3.4调试结果
通过硬件与软件的调试,找到了错误,并做了修改,使到结果与要求基本符合,达到了设计的目的。
4结论与心得
这次单片机的音乐播放器的设计我完成得还算可以,虽然在制作过程中遇到了很多困难,但是,这个课程设计的作品完全是在没有任何单片机制作经验的基础上开始的。
对单片机能做什么或者说以我的水平能让单片机做什么根本没有一个清晰的认识,很担心自己的选题最后做不出来,所以当时选题时的原则是尽量的简单可行,但是选了题目后,在老师,同学们的帮助下,我经过重重困难,终于把音乐播放器做出来了。
通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。
通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,同时加强自已的动手能力。
谢辞
首先要感谢学院给我们提供这样的一次实践动手能力的机会。
这是我在大学期间的第二次课程设计,尽管我的课题是比较简单的单片机音乐播放器的设计,但在完成课程设计的过程中,通过在网上、图书馆里查阅多种资料,还有老师同学的帮助下,对单片机最基本的功能认识,管脚接法,单片机C语言程序的设计方法有所了解与掌握。
也对通过单片机来实现比较简单的音乐播放器的设计等等的了解与掌握。
在此,特别感谢老师给予的耐心指导,也感谢课程设计的过程中给予过我帮助的同学。
谢谢!
谢谢你们!
参考文献:
[1]李群芳.张士军.黄建.单片微型计算机与接口技术(第3版)[M].北京,电子工业出版社,2008.5.
[2]赵秀珍.单永磊.单片微型计算机原理及其应用[M].北京:
中国水利水电出版社,2001.8.
[3]马忠梅.单片机的C语言Windows环境编程宝典[M].北京:
北京航天航空大学出版社,1993.8.
⑷皮大能.南光群.刘金华.单片机课程设计指导书[M].北京:
北京理工大学出版社,2010.
附录:
音乐播放器程序如下:
/********************HY-510B实验开发板例程************************
例程17;世上只有妈妈好音乐采灯程序晶振:
12.1184MHZ
本公司专业为单片机学者及开发者打造HY-510B开发板,
让你更快更轻松成为单片机编程高手.
******************************************************************/
//《世上只有妈妈好》51单片机C语言程序和音乐采灯程序
#include
sbitspeaker=P2^0;
sbitkey_start_stop=P1^0;
sbitkey_next=P1^1;
unsignedchartimer0h,timer0l,time,led=1,j=0;
unsignedcharflagd=0;
//世上只有妈妈好数据表
codeunsignedcharmusic1[]={6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,
6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,
6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,
5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,
2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0
};
codeunsignedcharmusic2[]={5,1,1,5,1,1,6,1,2,5,1,2,1,2,2,7,1,4,
5,1,1,5,1,1,6,1,2,5,1,2,2,2,2,1,2,4,
5,1,1,5,1,1,5,2,2,3,2,2,1,2,2,7,1,2,6,1,2,
4,2,1,4,2,1,3,2,2,1,2,2,2,2,2,1,2,4};
//音阶频率表高八位
codeunsignedcharFREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,8,i
0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
};
//音阶频率表低八位
codeunsignedcharFREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,8,i
0xEE,0x44,0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
};
voiddelay(unsignedchart)
{
unsignedchart1;
unsignedlongt2;
for(t1=0;t1{
for(t2=0;t2<6000;t2++)
{
;
}
}
TR0=0;
}
voiddelay_key(intz)
{
intx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidt0int()interrupt1
{
TR0=0;
speaker=!
speaker;
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
voidsong()
{
TH0=timer0h;
TL0=timer0l;
TR0=1;
delay(time);
}
voidmain(void)
{
unsignedchark,i;
TMOD=1;//置CT0定时工作方式1
EA=1;ET0=1;//IE=0x82//CPU开中断,CT0开中断
P1=0xff;
while
(1)
{
i=0;
while
(1)
{
if(key_start_stop==0)
{
delay_key(8);
if(key_start_stop==0)
{
j=1;
}
}
if(key_next==0)
{
delay_key(8);
if(key_next==0)
{
j=2;
}
}
if(j==1)
{
k=music1[i]+7*music1[i+1]-1;
timer0h=FREQH[k];
timer0l=FREQL[k];
time=music1[i+2];
i=i+3;
song();
}
if(j==2)
{
k=music2[i]+7*music2[i+1]-1;
timer0h=FREQH[k];
timer0l=FREQL[k];
time=music2[i+2];
i=i+3;
song();
}
}
}
}
/*****************************************************************/