基于51单片机的音乐播放器设计.docx

上传人:b****3 文档编号:10269716 上传时间:2023-05-24 格式:DOCX 页数:30 大小:260.42KB
下载 相关 举报
基于51单片机的音乐播放器设计.docx_第1页
第1页 / 共30页
基于51单片机的音乐播放器设计.docx_第2页
第2页 / 共30页
基于51单片机的音乐播放器设计.docx_第3页
第3页 / 共30页
基于51单片机的音乐播放器设计.docx_第4页
第4页 / 共30页
基于51单片机的音乐播放器设计.docx_第5页
第5页 / 共30页
基于51单片机的音乐播放器设计.docx_第6页
第6页 / 共30页
基于51单片机的音乐播放器设计.docx_第7页
第7页 / 共30页
基于51单片机的音乐播放器设计.docx_第8页
第8页 / 共30页
基于51单片机的音乐播放器设计.docx_第9页
第9页 / 共30页
基于51单片机的音乐播放器设计.docx_第10页
第10页 / 共30页
基于51单片机的音乐播放器设计.docx_第11页
第11页 / 共30页
基于51单片机的音乐播放器设计.docx_第12页
第12页 / 共30页
基于51单片机的音乐播放器设计.docx_第13页
第13页 / 共30页
基于51单片机的音乐播放器设计.docx_第14页
第14页 / 共30页
基于51单片机的音乐播放器设计.docx_第15页
第15页 / 共30页
基于51单片机的音乐播放器设计.docx_第16页
第16页 / 共30页
基于51单片机的音乐播放器设计.docx_第17页
第17页 / 共30页
基于51单片机的音乐播放器设计.docx_第18页
第18页 / 共30页
基于51单片机的音乐播放器设计.docx_第19页
第19页 / 共30页
基于51单片机的音乐播放器设计.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的音乐播放器设计.docx

《基于51单片机的音乐播放器设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的音乐播放器设计.docx(30页珍藏版)》请在冰点文库上搜索。

基于51单片机的音乐播放器设计.docx

基于51单片机的音乐播放器设计

题目:

音乐播放器

课程设计(论文)任务书

课程设计(论文)题目:

音乐播发器

基本内容:

利用单片机的定时器产生各种频率的方波,信号经过放大后送到喇叭从而产生各种音调。

自行定义键盘,每按一键,可选择一首歌曲进行演奏,至少能够存储并播放十首歌曲,在LCD上显示演奏歌曲的名称并滚动显示歌词,单片机可连续播放这首歌曲,演奏可通过按键停止。

课程设计(论文)专题部分:

题目:

 音乐播放器               

基本内容:

通过单片机设计可以播放十首歌曲的音乐播放器,同步显示歌曲名称和歌词。

学生接受毕业设计(论文)题目日期

             第19周

指导教师签字:

2009年7月  

摘要

随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用,在某些领域具有不可替代的作用。

音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。

目前,基于单片机实现音乐播放,其体积小、价格低、编程灵活等特点在这一领域独领风骚。

单片机的英文名称为singlechipmicrocomputer,最早出现在20世纪70年代,国际上现在已逐渐被微控制器(MicrocontrollerUnit或MCU)一词所取代。

它体积小,集成度高,运算速度快,运行可靠,功耗低,价格廉,因此在数据采集、智能化仪表、通讯设备等方面得到了广泛应用。

而8051单片机在小到中型应用场合很常见,已成为单片机领域的实际标准。

随着硬件的发展,8051单片机系列的软件工具也有了C级编译器和实时多任务操作系统RTOS,为单片机编程使用C语言提供了便利的条件;并针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块,算法等编制相应的函数;C语言模块化程序结构特点,可以使程序模块大家共享,不断丰富,这样就使得单片机的的程序设计更简单可靠,实时性强,效率高。

作为测控技术与仪器的学生,掌握8051单片机硬件基础及其相关软件操作,将其应用于现代电子产品中是必要而且重要的,这次课程设计我们的题目是用单片机实验箱系统制作音乐播放器。

本次课程设计主要内容是通过单片机C51语言进行编程,以产生乐曲音符和节拍,把乐谱翻译成计算机语言(音符转换诚成相对应的方波频率即定时器装载初值,节拍转换成相对应的延长时间),并将其预先存储到单片机里,然后根据按键调用再由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声,实现音乐播放的功能。

其主要表现在可以播放十首歌曲,可以用十个数字键控制播放的歌曲,并且能在LCD液晶屏显示器上显示相应播放歌曲的曲名和滚动歌词。

再加上一个开关键来控制歌曲的播放停止。

本设计的目的是培养理论联系实际的学习方法以及独立解决工程实际问题的能力。

能够熟识单片机C51语言的编程特性,及其应用。

能够用C51语言进行编程,能成功的编出较为简单的程序。

关键词:

单片机,音乐,蜂鸣器,同步显示

第一章绪论

1.1课程设计目的

应用单片机,利用它的原理组成一个音乐播放器。

1.2课程设计任务

1)以单片机为核心部件组成一个音乐播放器;

2)利用单片机的定时器产生乐谱的各种频率方波,信号经过放大后由蜂鸣器发出声音;

3)自行定义按键盘,当有键按下时,能相应的播放出歌曲。

有一个停止键能控制音乐的播放;

4)在LCD液晶显示屏上同步显示演奏歌曲的曲名;

5)附加要求:

在LCD上滚动显示演奏歌曲的歌词。

1.3课程设计要求

1)用Protel画出硬件原理图;

2)画出软件流程图,采用单片机C语言或汇编语言进行编程;

3)完成硬件与软件调试综合调试,实现预定功能,并写出课程设计报告。

1.4课程设计的意义

通过自己动手设计单片及组成的器件,在软件及硬件上进一步了解单片机的原理,深入了解了单片机C51语言的实际应用,能更深地理解课堂上所学的内容,巩固C语言程序编写,亲身体会作为一名设计人员所需要具备的各种能力,学会理论知识联系实际,提高我们发现问题,分析问题,解决问题和实践动手的能力。

 

第二章设计原理及总体方案选择

2.1设计原理

2.1.1基本原理简述

声音是通过振动产生的。

单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波通过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。

若改变输出方波的频率,产生的声音随之改变。

通过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就可以产生电子音乐。

音乐的播放选择可以通过按键的输入得以实现。

为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半因此,输出引脚在每个方波周期内要动作两次:

一次升高,一次降低。

即输出引脚的频率是原音频率的两倍。

方波的产生由定时器控制。

定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。

必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。

一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。

另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。

这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。

音乐播放器的基本硬件电路有六部分组成:

单片机、时钟与复位电路、选择按键输入电路、音频发生器、音频放大器和扬声器。

音乐播放器硬件电路设计框图如图2.1所示。

 

LCD液晶显示屏显示

时钟与复位

电路

单片机

音频发生器

按键输入

歌曲选择电路

蜂鸣器

音频放大器

图2.1音乐播放器硬件电路设计框图

利用单片机内部定时器/计数器T0与P1.1引脚配合,构成音频发生器,与外置电路组成音频放大器,驱动扬声器输出。

LCD液晶模块以并行方式与微控制器相连,15脚接高电平为并行方式,通过送入指令和数据,可对显示方式和显示内容做出选择。

2.1.2关于音乐的原理知识

在音乐中使用的各个固定频率的音叫音级[1]。

常用符号C、D、E、F、G、A、B、c、d、e、……a1、b1、c2、d2……表示,它们对应于钢琴上的白键。

两音之间音高的距离叫音程。

在上述音级中,E与F、B与C之间音高的距离仅为其它相邻音级之间距离的一半,称它们之间的音程为半音音程,而称其它相邻各音之间的距离为全音音程。

在这些全音音程之间又加入新的半音音级,用符号﹟C、﹟D、﹟F、﹟G、﹟A、﹟c、﹟d、﹟f、……表示,对应于钢琴上的黑键。

音持续时间的长短即时值,一般用拍数表示。

休止符表示暂停发音。

表2.1各音符及对应频率

音符

低DO

低#DO

低RE

低#RE

低MI

低EA

简谱码

DO_L

DO#_L

RE_L

RE#_L

MI_L

FA_L

频率

262HZ

277HZ

294HZ

311HZ

330HZ

349HZ

音符

低#FA

低SO

低#SO

低LA

低#LA

低SI

简谱码

FA#_L

SO_L

SO#_L

LA_L

LA#_L

SI_L

频率

370HZ

393HZ

415HZ

440HZ

466HZ

494HZ

音符

中DO

中#DO

中RE

中#RE

中MI

中EA

简谱码

DO

DO#

RE

RE#

MI

FA

频率

523HZ

554HZ

587HZ

622HZ

659HZ

698HZ

音符

中#FA

中SO

中#SO

中LA

中#LA

中SI

简谱码

FA#

SO

SO#

LA

LA#

SI

频率

740HZ

785HZ

831HZ

880HZ

932HZ

988HZ

音符

高DO

高#DO

高RE

高#RE

高MI

高EA

简谱码

DO_H

DO#_H

RE_H

RE#_H

MI_H

FA_H

频率

1047HZ

1109HZ

1174HZ

1245HZ

1318HZ

1397HZ

音符

高#FA

高SO

高#SO

高LA

高#LA

高SI

简谱码

FA#_H

SO_H

SO#_H

LA_H

LA#_H

SI_H

频率

1480HZ

1568HZ

1661HZ

1760HZ

1865HZ

1976HZ

每个音符分为简谱码和节拍码。

简谱码为D0-L到SI-H,节拍码为1到16。

对应的节拍表如表2.2所示。

对应的拍子:

2/2。

以二分音符为一拍,每小节有两拍(二分音符代表一拍)

2/4。

以四分音符为一拍,每小节有两拍(四分音符代表一拍)

3/4。

以四分音符为一拍,每小节有三拍(四分音符代表一拍)

4/4。

以四分音符为一拍,每小节有四拍(四分音符代表一拍)

表2.2节拍表

拍数

字符

拍数

字符

1/8

00H

2

08H

1/4

01H

5/2

09H

1/2

02H

3

0AH

3/4

03H

7/2

0BH

1

04H

4

0CH

5/4

05H

5

0DH

3/2

06H

6

0EH

7/4

07H

8

0FH

2.2设计方案的拟定和选择

2.2.1.基本方案

实现四10个按键选择10首歌曲,能够实现音乐播放。

演奏通过按键来停止,在LCD上显示演奏歌曲的名称。

简单说明:

采用8279芯片来控制键盘,使其IRQ引脚接单片机的外部中断0,一旦有键按下就对应一首曲播放目。

停止按键可以使用外部中断1来实现。

关于LCD采用的是并行接法传输数据,查找汉字码表找出各首歌名的对应数码,软件中用数组存储即可,一个歌名用一个数组,根据按键可以把存储各首歌名数码的数组首地址传给全局指针,调用显示函数即可显示相应的歌名。

各音调对应的定时器初始装载表也以数组的形式按升调顺序存储,并按前面所述将各歌曲的对应音调和节拍存储在数组中,有按键按下时,将对应歌曲的数组首地址传给全局指针,利用相应的处理函数调出音调对应的定时器装载值表,给定时器装载初值并启动,产生控制扬声器的方波,根据低半字节控制延时时间,即音调的发音长短。

2.2.2.附加方案

能够在播放音乐得同时,实现LCD同步显示歌曲的歌名和歌词内容。

 

第三章音乐播放器硬件电路的设计和调试

3.1硬件原理电路的设计

由设计原理框图2.1,分别设计相应模块,构成原理图。

3.1.1时钟与复位模块

由电容,电位器,按键组成复位电路部分,该电路接于单片机的RESET端可以通过按键达到手动复位的效果,也可以通过电位器和电容组成上电复位电路。

通过复位电路使单片机回到初始状态。

图3.1复位电路和晶振时钟电路

3.1.2按键选择模块

图3.3按键选择模块

通过74LS138与P3.0口、按键公共端及按键和P1口相连,构成按键选择模块。

P3.0口输出0时,选择左边8个键,P3.0口输出1时,选择右边8八个键。

是某个键按下可由P1口读取。

3.1.3音频发生及放大器模块

由非门(74LS04),三极管(9014),蜂鸣器,电阻组成的外部驱动发音电路。

该电路部分接于P3.1口,经过外部非门和三极管的驱动,通过扬声器发出音乐。

图3.3音频发生与放大电路

3.1.4LCD显示模块

由RT12864,按键和保护电阻组成的外部扩展电路。

其工作过程是通过单片机P3.6/WR和P3.7/RD接于RT12864,使其接收单片机由使用者通过按键发来的信息,显示歌曲名称,在没有设备启动没有按键工作时显示“按键选择歌曲”,当有按键工作后,设备播放歌曲同时显示歌曲序号及歌曲名称。

3.1.5电路原理图

综合以上功能模块,连接于单片机,绘制原理图如图3.4所示。

图3.4音乐播放器电路原理图

3.2ATMEL89C51简介

3.2.1AT89C51单片机

AT89C51是美国ATMEL公司推出的系列单片机,将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。

它与MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。

89C51内含4KB的FPEROM,一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。

3.2.2单片机CPU结构

图3.6单片机CPU结构

3.2.3AT89C51用户系统

●CPU为Atmel公司生产的89C51/89C52/89C55等。

出厂所配晶振频率为11.0592MH,每个机器周期为1.085us,用户更换晶振以提高速度;

●存贮器为64K,前4K/8K20K在CPU内部,其它程序在EPR0M27512中;

●数据存贮器为32K(62256),地址为8000—FFFFH;

●Ⅰ/O扩展8155,片内RAM地址∶200O-20FFH;

●8155命令口地址为∶2100H;

●A口地址∶21O1HB口地址:

2102HC口地址:

2103H;

●T低八位∶2104HT高八位∶2105H;

●多路模拟开关的使用∶

IN0∶P1=0F8HIN4:

P1=0FCHIN1∶P1=0F9HIN5:

P1=OFDH

IN2∶P1=0FAHIN5:

P1=0FEHIN3∶P1=0FBHIN7:

P1=0FFH

●不掉电数据存贮器为∶500EH-507FH;

●控制板∶160x1O9(mm)供电∶+5V300mA+12V100mA-12V100mA;

●AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandEraseableReadOnlyMemory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容;

●主要性能:

与MCS-51微控制器产品系列兼容;

片内有4KB可在线重复编程的快闪擦写存储器。

3.2.4引脚介绍

图3.789C51引脚图

第四章软件编程设计与综合测试

4.1编程思路简述

要产生音频信号,只要算出某一音频的周期(频率的倒数),将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。

此信号从P3.0脚输出。

定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。

必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。

一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表2.1中所给的定时初值就是考虑中断响应后的定时常数。

另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。

这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。

本设计中单片机晶振频率为11.0592MHz。

每个音符使用两个字节。

低位字节(偶地址)代表音级,00H表示不发音(休止符),01H~30H依次表示的音级为c、﹟c、d、﹟d、e、f、……a3、﹟a3、b3,详见表2.1。

高位字节(奇地址)代表音符的时值(拍数),00H~0FH依次表示拍数为1/8拍(0.10s)~8拍(6.40s),见表2.2。

乐曲的结束标志是两个字节:

0FFH,0FFH。

设计延时程序125ms,来控制节拍,并在延时中判断是否有停止键按下,以便随时停止音乐。

改变延时程序的延迟时间,即可实现歌曲的快慢演奏。

主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和演唱子程序,启动定时器T0;通过延时控制节拍,并循环回音级子程序,等待演唱完毕。

要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。

主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0;根据定时器T1应中断的次数,启动定时器T1。

数据表读完后,根据所设置的循环演奏次数决定是否结束程序。

音级子程序的任务是取出字节中的音级部分,分析TH0和TL0中应送入何值,送给33H,34H。

演唱子程序的任务是取出对应频率值,并乘以2,启动T0,实现发音。

之后执行延时程序,体现节拍,依此循环,直到音乐结束。

定时器T0的中断服务程序任务是取反P3.0输出产生方波,重新为TH0,TL0送初值。

定时器T1的中断服务程序任务是:

判断计数完成否,给373的控制端高或低电平,从而实现数据输出或禁止,达到二极管亮灭闪烁的效果。

当乐曲较长时(超过254个字节),数据表指针溢出,应及时修改基址寄存器DPTR内容,即数据表的表头指针。

4.2编程方案的设计

4.2.1软件功能选择

1)对于11个按键的功能设计,除一个停止键,其余十个键分别对应十首歌。

演奏过程中,按停止键可使乐曲停止,LCD上出现欢迎界面,此时可以继续按其他键继续选择其他歌曲演奏。

选歌的按键使用8279键盘扫描以获得键值。

停止键使用的单片机的外部中断1实现其功能的。

2)对于LCD,首先启动时出现“请按键选择播放曲目”的字样提示使用者,获得键值后开始播放歌曲的同时在LCD上显示歌曲名,当按下停止键后,歌曲停止播放,同时LCD上又出现提示界面,依次循环。

4.2.2综合调试

在实验箱上进行调试,先是进行单个模块调试,键盘与LCD显示器一起进行调试,调试成功后,再在实验箱上进行播放歌曲的调试,使其能单曲循环播放,当有开关键按下时,就停止播放歌曲,再按下时,又重新播放歌曲。

最终实现当有数字键按下时,演奏对应的歌曲,并在显示屏上显示出曲目。

当停止键按下时,停止播放歌曲。

 

4.2.3程序流程图

图4.1音乐播放器程序流程图

4.2.4程序清单

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#definew_c_addXBYTE[0x2070]/*写命令字地址*/

#definew_d_addXBYTE[0x2071]/*写数据地址*/

#definer_s_addXBYTE[0x2072]/*读状态字地址*/

#definer_d_addXBYTE[0x2073]/*读数据地址*/

ucharcode*song;

ucharcode*song_name;

ucharcode*song_lrc;

ucharcodetab[]={0xf8,0x94,0xf9,0x5c,0xfa,0x1a,0xfa,0x6a,0xfb,0x00,0xfb,0x8c,0xfc,0x0e,

0xfc,0x4a,0xfc,0xae,0xfd,0x08,0xfd,0x30,0xfd,0x80,0xfd,0xc6,0xfe,0x02,

0xfe,0x2a,0xfe,0x5c,0xfe,0x84,0xfe,0x98,0xfe,0xc0,0xfe,0xe8,0xfe,0x06};

ucharcodesong_name1[18]={0xc7,0xfa,0xc4,0xbf,0xd2,0xbb,0xa1,0xc3,0xc1,0xbd,0xd6,0xbb,0xc0,0xcf,0xbb,0xa2,0xef,0xff};//两只老虎

ucharcodesong1[]={0x44,0x54,0x64,0x44,0x44,0x54,0x64,0x44,0x64,0x74,0x88,0x64,

0x74,0x88,0x82,0x92,0x82,0x72,0x64,0x44,0x82,0x92,0x82,0x72,

0x64,0x44,0x54,0x14,0x48,0x54,0x14,0x48,0xff};

ucharcodesong_lrc1[]={"两只老虎两只老虎跑的快跑的快一只没有眼睛一只没有尾巴真奇怪真奇怪"};

ucharcodesong_name2[18]={0xc7,0xfa,0xc4,0xbf,0xb6,0xfe,0xa1,0xc3,0xd0,0xc2,0xc4,0xea,0xbf,0xec,0xc0,0xd6,0x20,0xff};//新年快乐

ucharcodesong2[]={0x42,0x42,0x44,0x14,0x02,0x62,0x62,0x64,0x44,0x04,0x42,0x62,

0x84,0x84,0x02,0x72,0x62,0x54,0x04,0x52,0x62,0x74,0x74,0x02,

0x62,0x52,0x64,0x44,0x04,0x42,0x62,0x54,0x14,0x02,0x32,0x52,

0x44,0x04,0xff};

ucharcodesong_lrc2[]={"新年好呀新年好呀祝贺大家新年好我们歌唱我们跳舞祝贺大家新年好"};

ucharcodesong_name3[18]={0xc7,0xfa,0xc4,0xbf,0xc8,0xfd,0xa1,0xc3,0xc9,0xfa,0xc8,0xd5,0xbf,0xec,0xc0,0xd6,0xff};//生日快乐

ucharcodesong3[]={0xC4,0x12,0x32,0x44,0x42,0x52,0x52,0x44,0x32,0x32,0x12,0x14,

0x12,0x12,0x32,0x42,0x54,0x44,0x4F,0xC4,0x12,0x32,0x44,0x42,

0x72,0x58,0x42,0x32,0x34,0x14,0x12,0x32,0x34,0x12,0x1F,0xff};

ucharcodesong_lrc3[]={"祝你生日快乐祝你生日快乐HAPPYBIRTHDAYTOYOU祝你生日快乐"};

ucharcodesong_name4[18]={0xc7,0xfa,0xc4,0xbf,0xcb,0xc4,0xa1,0xc3,0xD0,0xC7,0xD0,0xC7,0xCB,0xF7,0xff};//星星索

ucharcodesong4[]={0x82,0x01,0x81,0x94,0x84,0xB4,0x04,0x04,0x82,0x01,0x81,0x94,

0x84,0xC4,0xB4,0x04,0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,

0x04,0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,0xff};

ucharcodesong_lrc4[]={"呜喂风儿呀

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2