音乐播放器 课程设计.docx

上传人:b****7 文档编号:9799493 上传时间:2023-02-06 格式:DOCX 页数:14 大小:168.29KB
下载 相关 举报
音乐播放器 课程设计.docx_第1页
第1页 / 共14页
音乐播放器 课程设计.docx_第2页
第2页 / 共14页
音乐播放器 课程设计.docx_第3页
第3页 / 共14页
音乐播放器 课程设计.docx_第4页
第4页 / 共14页
音乐播放器 课程设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

音乐播放器 课程设计.docx

《音乐播放器 课程设计.docx》由会员分享,可在线阅读,更多相关《音乐播放器 课程设计.docx(14页珍藏版)》请在冰豆网上搜索。

音乐播放器 课程设计.docx

音乐播放器课程设计

专业课程设计报告

 

题目:

音乐播放器

 

所在学院

专业班级

学生姓名

学生学号

指导教师

提交日期2012年10月22日

电气工程学院专业课程设计评阅表

学生姓名学生学号

同组队员专业班级

题目名称

一、学生自我总结

通过这次课程设计,学习了解了用单片机实现的音乐发生器的设计方法。

使我对单片机及其附属电路有了一定的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。

在课程设计过程中,我真正体会到了实践的重要性,很多自己认为万无一失的软件代码或者硬件电路,在调试的过程中都不会是一帆风顺的,此次课程设计经历了从概念到成品的漫长过程,在此过程中我学习了许多以前没有掌握而又是电子类课程生必须掌握的知识,比如ProteusISIS从设计的第一天起,我就被ProteusISIS的强大功能所折服,学会了ProteusISIS就相当于拥有一个电子设计开发平台。

而通过学习KeiluVision4让我深刻的认识基础知识的重要性,在多次查阅课本书籍,最后在老师的知道写完成了程序的编写。

学生签名:

年月日

二、指导教师评定

评分项目

平时成绩

报告(答辩)

综合成绩

权重

50

50

单项成绩

教师评语:

 

教师签名:

年月日

 

一、设计目的

课程设计是通信工程专业的一门软硬件相结合实践的专业基础课,旨在提高学生的单片机应用、软件编程及小型工程项目开发能力。

本设计将进一步加强学生对单片机硬件的理解,增强对汇编或C语言的灵活运用。

要求学生能结合单片机、模拟电路、数字电路、汇编或C语言,实现基本的应用系统,学会Proteus和Keil使用,为以后从事相关行业打下实践基础。

二、设计要求和设计指标

设计一个简单音乐播放器,程序运行时播放生日快乐歌,不使用定时器中断,所有频率完全用延时实现。

三、设计内容

3.1仿真软件Proteus简介

Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,它支持单片机且元件库齐全,使用方便,是不可多得的专业单片机软件仿真系统。

目前可支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片[7]。

3.2编程软件KeiluVision49.0介绍

用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。

KeiluVision4是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。

3.3AT89C51单片机简介

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[1-3]。

3.3.1主要特性

与MCS-51兼容

●4K字节可编程闪烁存储器

●寿命:

1000写/擦循环

●数据保留时间:

10年

●全静态工作:

0Hz-24Hz

●三级程序存储器锁定

●128*8位内部RAM

●32可编程I/O线

●两个16位定时器/计数器

●5个中断源

●可编程串行通道

●低功耗的闲置和掉电模式

●片内振荡器和时钟电路

3.3.2管脚说明

●VCC:

供电电压。

●GND:

接地。

●P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

●P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

●P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号[4]。

●P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

●P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

●P3.0RXD(串行输入口)

●P3.1TXD(串行输出口)

●P3.2/INT0(外部中断0)

●P3.3/INT1(外部中断1)

●P3.4T0(记时器0外部输入)

●P3.5T1(记时器1外部输入)

●P3.6/WR(外部数据存储器写选通)

●P3.7/RD(外部数据存储器读选通)

●P3口同时为闪烁编程和编程校验接收一些控制信号。

●RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

●ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

●/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

●/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

●XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

●XTAL2:

来自反向振荡器的输出。

3.3.3振荡器特性

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度[5]。

3.3.4芯片擦除

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。

在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。

在闲置模式下,CPU停止工作。

但RAM,定时器,计数器,串口和中断系统仍在工作。

在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

而播放音乐最简单的方法就是采用专用音乐芯片,该方法的缺点是音乐芯片只能一次性烧录,播放的内容不可变。

而采用单片机播放音乐则能克服这一缺点,其播放的内容以及歌曲的数量都可以随时修改。

同时,使用软件Proteus在产品开发的初期对设计进行仿真无疑是一种提高效率和降低成本的好办法,但是仿真毕竟有一定的局限性,要实践起来可能会碰到一些问题。

为此,本文通过Proteus软件对用AT89C51单片机播放音乐进行了仿真,指出了实际制作过程中需要注意的地方[6]。

3.4电路设计

图所示是单片机音乐播放器的仿真原理图。

在Proteus仿真软件中,只需要录入程序仿真,蜂鸥器即可播放音乐[7]。

图3-2音乐播放器仿真电路图

3.5播放原理

声音的频谱范围通常约为几十到几千赫兹,通过程序控制单片机的I/O口可输出不同频率的矩形波。

当该矩形波的频率位于声音频谱范围内时,在单片机的I/O口接上喇叭就能发出声音。

然后利用延时程序控制矩形波的高、低电平持续时间,即改变矩形波的频率,即可产生不同的音调,从而发出不同的声音,再让矩形波输出的长短对应节拍,就可以实现单片机对音乐的演奏。

单片机奏乐只需弄清楚两个概念,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

不同频率由不同的延时来决定,节拍决定每个音符的演奏长短。

C调个音符频率与计数值T的对照表如下表所示:

表3-1C调各音符频率与计数值T的对照表

音符

频率(Hz)

简谱码(T值)

音符

频率(Hz)

简谱码(T值)

低1DO

262

63628

#4FA#

740

64860

#1DO#

277

63731

中5SO

784

64898

低2RE

294

63835

#5SO#

831

64923

#2RE#

311

63928

中6LA

880

64968

低3M

330

64103

#6

932

64994

低4FA

349

64103

中7SI

988

65030

#4FA#

370

64260

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

#5SO#

415

64331

高2RE

1175

65110

低6LA

440

64400

#2RE#

1245

65124

#6

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

#4FA#

1480

65198

每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。

但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。

假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。

所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。

表3-2节拍码对照表

1/4节拍

1/8节拍

节拍码

节拍数

节拍码

节拍数

1

1/4拍

1

1/8拍

2

2/4拍

2

1/4拍

3

3/4拍

3

3/8拍

4

1拍

4

1/2拍

5

1又1/4拍

5

5/8拍

6

1又1/2拍

6

3/4拍

7

1又3/4拍

7

7/8拍

8

2拍

8

1拍

9

2又1/4拍

9

1又1/8拍

A

2又1/2拍

A

1又1/4拍

B

2又3/4拍

B

1又3/8拍

C

3拍

C

1又1/2拍

D

3又1/4拍

D

1又5/8拍

E

3又1/2拍

E

1又3/4拍

F

3又3/4拍

F

1又7/8拍

3.6程序设计

使用KeiluVision4编程,以下为音乐播放器的编程程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitBEEP=P3^7;

//生日快乐歌的音符频率表,不同频率由不同的延时来决定

ucharcodeSONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0};

//生日快乐歌曲节拍表,节拍决定每个音符的演奏长短

ucharcodeSONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,

9,3,12,12,12,12,12,9,3,12,12,24,0};

//延时

voidDelayMS(uintx)

{

uchart;

while(x--)

for(t=0;t<120;t++);

}

//播放函数

voidPlayMusic()

{

uinti=0,j,k;

while(SONG_LONG[i]!

=0||SONG_TONE[i]!

=0)

{//播放各个音符,SONG_LONG为拍子长度

for(j=0;j

{

BEEP=~BEEP;

//SONG_TONE延时表决定了每个音符的频率

for(k=0;k

}

DelayMS(10);

i++;

}

}

voidmain()

{

BEEP=0;

while

(1)

{

PlayMusic();//播放生日快乐

DelayMS(500);

}

}

3.6仿真结果与分析

通过ProteusISIS对单片机音乐播放器进行了仿真,其音乐播放的效果很好。

设计简单,原理清晰,适合单片机初学者、学习KeiluVision4编程和学习单片机系统PROTEUS设计与仿真使用。

在设计过程中主要存在的问题是程序的编写,音频的编程,通过多次实验和尝试最后在老师的指导下完成程序编程。

本次设计的元器件简单,只需要AT89C51单片机和蜂鸣器,主要采用延时控制系统,结合所学的单片机的知识,实现系统的功能要求。

结果如期,但感觉空间含有很大。

四、本设计改进建议

本次设计的元器件简单,只需要AT89C51单片机和蜂鸣器,其基本功能只有单曲的播放功能。

本设计还可以同时增设控制电路,拓展LED点阵屏幕,按键选歌,以及多组灯光闪亮等功能,换用更高档的芯片后,甚至可以实现MP3的丰富功能,在补充了相应知识后我将尝试实现更多的功能。

五、总结

通过这次课程设计,学习了解了用单片机实现的音乐发生器的设计方法。

使我对单片机及其附属电路有了一定的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。

在课程设计过程中,我真正体会到了实践的重要性,很多自己认为万无一失的软件代码或者硬件电路,在调试的过程中都不会是一帆风顺的,此次课程设计经历了从概念到成品的漫长过程,在此过程中我学习了许多以前没有掌握而又是电子类课程生必须掌握的知识,比如ProteusISIS从设计的第一天起,我就被ProteusISIS的强大功能所折服,学会了ProteusISIS就相当于拥有一个电子设计开发平台。

而通过学习KeiluVision4让我深刻的认识基础知识的重要性,在多次查阅课本书籍,最后在老师的知道写完成了程序的编写。

在这过程中我还深刻的认识到英文的重要性,在本次设计中所用的两个软件ProteusISIS和KeiluVision4都是英文版的很多功能都半知半解。

但最后还是如期的完成任务,谢谢期间给予帮助我的老师很同学们。

六、主要参考文献

[1]杨欣.51单片机应用从零开始[M].北京:

清华大学出版社,2008

[2]兰吉昌.51单片机应用设计百例[M].北京:

化学工业出版社,2009

[3]吴银琴.51单片机实践教程[M].北京:

科学出版社,2011

[4]赵建领.51单片机开发与应用技术详解[M].北京:

北京航空航天大学出版社,2010

[5]李学海.标准80C51单片机基础教程[M].北京:

北京航空航天大学出版社,2006

[6]欧伟明.单片机原理与应用系统设计[M]北京:

电子工业出版社,2010

[7]江世明.基于Proteus的单片机应用技术[M]北京:

电子工业出版社,2012

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1