0学号2014216038学号2014216045课程设计(2014级本科)题目:基于单片机音乐播放器设计学院:物理与机电工程学院专业:电子信息科学与技术课程:单片机应用系统设计班级:电子141作者姓名:张朝朝赵旭指导教师:张志成职称:副教授完成日期:2017年7月24日二〇一七年七月1目录摘要---------------------------------------------------------------12基于单片机的音乐播放器设计摘要随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。此次设计依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个基于AT89C52系列单片机的音乐播放器,以单片机作为主控核心,主要由按键电路、复位电路、模式转换电路等组成。利用单片机及KeilC51软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件进行仿真。最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动喇叭,发出不同的音调从而演奏乐曲。关键词:AT89C52单片机;音乐播放器;仿真软件31设计任务及要求分析1.1任务在单片机内部存储3-5首音乐信息。可以通过按键进行曲目的选着。可以通过按键进行曲目的播放和停止。扬声器发声。1.2要求分析根据技术要求和现有开发环境,分析设计题目;设计系统实现方案;设计并绘制电路原理图;画出功能模块块的程序流程图;使用C语言编写实现程序;结合硬件调试、修改并完善程序。2系统方案论证与选择2.1总体论证本次设计以低成本,灵活方便为原则,所以控制器选用主流的51系列单片,考虑到51内部储存空间的限制,所以选用容量为51两倍的AT89C52单片机作为总控制器,以独立键盘作为乐曲选择器,以0.5W/8Ω扬声器等组成功放设备,以LCDLM016液晶作为人机交互界面。时钟振荡电路用来为单片机产生时钟脉冲,本设计采用内部时钟方式。软件用来对单片机的各引脚进行控制LCD显示,同时在功放电路的输出端口产生不同频率的矩形波进而产生音乐,当按钮按下时程序要完成对歌曲的切换,对LCD显示内容的切换。总方案图以及相关流程图:4图2-1总体方案图2.2单元电路的方案论证2.2.1AT89S52芯片性能介绍AT89S52是低电压,高性能CMOS八位单片机,片内含8K字节的可反复擦写的只读程序存储器和256字节的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失存储技术生产与标准MCS-51指令系统及8052产品引脚兼容,片内置通用八位中央处理器和Flash存储单元,功能强大适合于许多较复杂控制应用场合[4]。AT89S52主要性能参数:与MCS-51产品指令和引脚完全兼容8K字节可重复擦写Flash闪速存储器设定LCD初始化设定LCD为两行8位显示,显示器ONLCD模组接收资料清除显示STC89C52按键晶振电路复位电路LCD显示扬声器发声51000次擦写周期全静态操作:0Hz—33MHz三级加密程序存储器256×8字节内部RAM32个可编程I/O口线3个16位定时/计数器8个中断源全双工可编程串行UART通道低功耗空闲和掉电模式掉电后中断可唤醒图2.2.1AT89S52引脚图看门狗定时器双数据指针掉电标识符快速编程周期灵活ISP编程(字节和模式)功能特性概述:AT89S52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器。一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。AT89S52各个口功能[5]:P0口是一组8位漏极开路型双向I/O口,即地址/数据总线复用口。P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。表2.2.1P1.0和P1.1的第二功能表6引脚号功能特性P1.0T2(定时/计数器2外部计数脉冲输入),时钟输出P1.1T2EX(定时/计数2捕获/重装载触发和方向控制)P2口是一个带有内部上拉电阻的8位双向I/O,P2的输出缓冲级可驱动吸(收或输出电流4个TTL逻辑门电路。P3口是一组带有内部上拉电阻的8位双向I/O口。表2.2.2P3口第二功能表端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外中断0)P3.3(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)RST复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时ALE(地址锁存允许输出脉冲用于锁存地址的低8位字节。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C5由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。7EA/VPP外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平。XTAL1振荡器反相放大器的及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出。2.2.2时钟振荡电路AT89S52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。电路图如图2.2.3所示:图2.2.3时钟振荡电路2.2.3复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。复位电路采用RC充电电路组成上电复位单片机电路,当系统上电时,在上电初期,电容C充电,使复位脚持续高电平,当C充电到达一定程度复位脚电位会慢慢变低,最后被电阻R完全拉低,高电平复位的时间由充电的时间决定,充电时间又由R与C的阻值和容值之积决定。一旦单片机复位脚拉低后就一直都低电平,只有下电后再上电才重新开始复位过程。电路图如图2.2.4所示:8图2.2.4复位电路2.3键盘论证方案一:矩阵键盘按键输入电路由4*4矩阵键盘组成,P1口作为输入控制按键,其中P1.0-到P1.3扫描行,P1.4-P1.7扫描列。键盘是由若干按键组成的开关矩阵,它是比较简单的单片机应用系统的输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机通信。方案二:独立键盘方案二采用独立式按键接口设计,各按键相互独立,每个按键单独占用一根9I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。键盘工作方式采用定时扫描方式,采用定时器T0定时,通过读取输出数据,识别按键工作状态。因为此程序用到的按键少,只用到了五个,所以我们选用了独立键盘,这样方便节省材料。2.4显示模块常见的基于单片机设计的音乐播放器基本不能显示歌曲。该音乐播放系统设计上增加液晶显示器,可为使用者提供曲目信息,比如第几首歌曲及相应的歌名。LCD各引脚功能如图表2.4所示。表2.4LCD引脚功能编号符号引脚说明编号符号引脚说明1VSS电源地9D2双向数据口2VDD电源正极10D3双向数据口3VL对比度调节11D4双向数据口4RS数据/命令选择12D5双向数据口5R/W读/写选择13D6双向数据口6E模块使能端14D7双向数据口7D0双向数据口15BLK背光源地08D1双向数据口16BLA背光源正极VDD:电源正极,4.5-5.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为0-5V;RS:MCU写入数据或者指令选择端;10R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0-D7:8位三态双向数据总线。如果MCU的I/O口资源紧张的话,该模块也可只使用4位数据线D4-D7接口传送数据。本充电器就是采用4位数据传送方式;BLA:LED背光正极。BLK:LED背光地端。2.5播放论证方案一:蜂鸣器发声电路原理图使用STC89C52为控制芯片,使用12M晶振作为主振荡器。在PRTp2.4/T0作为I/O口通过三极管Q来驱动蜂鸣器LS1。所使用的蜂鸣器的工作频率为2000Hz,也就是说蜂鸣器的驱动信号波形周期是500us,由于是1/2duty的信号,所以一个周期内的高低电平的时间宽度都为250us。可以通过改变相应的参数使其发出不同频率的声音。11方案二:扬声器发声通过扬声器实现发声,当三极管基级由单片机控制变成高电平时,V1导通并工作在饱和区,由于集电极和发射极之间的电压差几乎等0,故相当于扬声器的另一个脚接地,扬声器会发出打打的声音。当三极管基级由单片机控制变成高低电平时,V1不导通并工作在截止区,那么扬声器的另一个脚接到高电平,扬声器会发出不平的哒哒声。可以通过改变三极管基级的开关频率来控制扬声器发出各种不同频率的声音。发声图如下图所示:图2.5扬声器发声模块图由于扬声器的功率要比蜂鸣器大的多,而且频率范围要比蜂鸣器宽的多,所以我们选用了扬声器发声。3系统设计与理论分析3.1音乐编程原理及流程图12音乐发声原理[6]:一首乐曲是由多个音符构成的。每个音符都对应着一个确定的频率,乐曲中不同的音符,实质就是不同频率的声音;另外每个音符会根据乐曲的要求设定一个确定的节拍。可以控制单片机产生不同频率不同节拍的脉冲信号,由蜂鸣器发出就产生了美妙和谐的乐曲。主程序流程图如图3.1所示:图3.1主程序流程图3.2播放子程序设计如图3.2所示,开始播放自定义音乐程序时,指针指向乐谱第一个字节,将第一字节拆分为高低字节,其高字节即为音符中音高对应定时器定时常数,低字节即为音符中节拍对应的1/4节拍的次数,同时启动中断定时器0工作在方式1,由定时器定时常数得到相应音高,通过延时子程序设定1/4节拍的时间,由节拍次数得到节拍,再读取下一个乐谱字节,循环下去则演奏出美妙和谐的乐曲[7]。13NY图3.2音乐播放子程序流程图3.3系统调试与仿真通过仿真软件PROTEUS仿真结果如以下图所示。开始程序指向乐谱第一个字节拆分字节的高低字节由高字节得到音高对应定时器定时常数由低字节得到节拍对应节拍次数启动定时器0延时节拍时间关闭定时器0读取下一个乐谱字节字节是00H吗?程序循环14图4-3仿真图4实物调试及测试4.1实物图4.2实物调试154.3测试结果及分析歌名播放时间Theskycity1分14秒Tonghua25秒auldlangsyne35秒Godisagirl25秒qinghuaci35秒5结束语我的题目是音乐播放器硬软件的设计,对于我们这些工科学生来说,这是一次考验,怎么将平时所学的知识运到实践中去。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。我设计的音乐播放器采用蜂鸣器作为音乐播放器件,若针对现在流行的WAV、MP3等音乐质量很好的系统,它就不是一个好的选择,这是本设计的不足。当然本设计也要考虑到性能和价格之比,和它驱动起来比较简单。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。这次课程设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成了。16参考文献[1]黄振杰,卢小冰.基于AT89S52的多功能音乐播放器[J].广东:电子设计工程,2009年2月第2期[2]吴迅.用单片机设计音乐播放器[J].山东:电子世界,2009.6[3]何立民.M