单片机音乐盒报告.docx

上传人:b****4 文档编号:4391841 上传时间:2023-05-07 格式:DOCX 页数:19 大小:263.27KB
下载 相关 举报
单片机音乐盒报告.docx_第1页
第1页 / 共19页
单片机音乐盒报告.docx_第2页
第2页 / 共19页
单片机音乐盒报告.docx_第3页
第3页 / 共19页
单片机音乐盒报告.docx_第4页
第4页 / 共19页
单片机音乐盒报告.docx_第5页
第5页 / 共19页
单片机音乐盒报告.docx_第6页
第6页 / 共19页
单片机音乐盒报告.docx_第7页
第7页 / 共19页
单片机音乐盒报告.docx_第8页
第8页 / 共19页
单片机音乐盒报告.docx_第9页
第9页 / 共19页
单片机音乐盒报告.docx_第10页
第10页 / 共19页
单片机音乐盒报告.docx_第11页
第11页 / 共19页
单片机音乐盒报告.docx_第12页
第12页 / 共19页
单片机音乐盒报告.docx_第13页
第13页 / 共19页
单片机音乐盒报告.docx_第14页
第14页 / 共19页
单片机音乐盒报告.docx_第15页
第15页 / 共19页
单片机音乐盒报告.docx_第16页
第16页 / 共19页
单片机音乐盒报告.docx_第17页
第17页 / 共19页
单片机音乐盒报告.docx_第18页
第18页 / 共19页
单片机音乐盒报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机音乐盒报告.docx

《单片机音乐盒报告.docx》由会员分享,可在线阅读,更多相关《单片机音乐盒报告.docx(19页珍藏版)》请在冰点文库上搜索。

单片机音乐盒报告.docx

单片机音乐盒报告

音乐盒设计

1.系统功能的确定

音乐盒可以发出怡人的音乐旋律,能给生活增加不少的乐趣。

用51系列单片机设计一个音乐盒的基本功能如下:

1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。

2)用七段数码管显示当前播放的歌曲序号。

3)通过对单片机的电路控制并结合按键功能实现播放,暂停,停止,上一曲,下一曲,音阶和节拍的配合实现歌曲(共三首歌)演奏。

2.方案论证

各种方案如下所示:

2.1方案一:

用四个按键控制音乐的播放。

3个按键选择3首不同的音乐播放,另一个按键控制音乐的停止。

按下播放键,用一点简单的控制之后,才开始播放音乐。

比如,用定时器控制,亮灯倒计时10秒然后触发音乐播放。

2.2方案二:

用4*4小键盘来实现音乐的选择播放,1~A按键控制播放10首音乐,C~F按键分别实现欢迎页面、上一首、下一首、停止播放。

2.3方案三:

为了充分利用实验板的功能,进一步扩充音乐盒的功能。

设计用七段显示数码管LED显示播放时歌曲序号。

设置三个键,一个按键控制开机、播放、暂停音乐,另外两个按键分别实现上一首、下一首。

各方案的论证如下:

1)在方案1中,共用了4个按键,其中3个按键控制播放3首音乐,另一个键控制音乐播放的停止。

但是只能选择3首音乐,不能显示是哪首歌局限性太强。

2)在方案2中,由于个人所学知识有限、实践经验太少等原因,可以实现了歌曲的播放、开机画面、停止,未能实现歌曲的上一首、下一首选择播放。

考虑到实验的复杂度和时间上的局限,本次课程设计使用了方案三。

本次设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。

该音乐盒主要由按键电路、复位电路、时钟电路、蜂鸣器以及显示电路组成。

使用一个按键来控制开始,播放和暂停。

利用两个按键分别切换上一曲和下一曲来演奏出不同的乐曲,共三首音乐,蜂鸣器发出某个音调,与之相对应的LED亮起。

本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试。

音乐盒的系统结构以AT89C51单片机位控制核心,加上3个按键、时钟复位电路、蜂鸣器、LED模块组成。

单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。

系统组成框图如图2-1所示。

图2-1总体框图

音乐盒的功能结构如图2-2所示。

按键1负责播放/暂停歌曲。

按键2,3负责切换播放歌曲,播放歌曲共3首,同时LED显示相应的曲目,显示曲目标号共3种。

图2-2音乐盒功能

3.系统硬件的设计

3.1主控制器的设计

主要能够是实现程序输入时,能够模拟音乐盒的基本功能,能够有按键输入的模块部分,有数码管显示歌曲序号,并有蜂鸣器模块部分在播放音乐。

总体硬件电路实现功能如下所示

1)电路中用P3.2、P3.4、P3.5控制按键。

2)P0.0~P0.7,P2.0~2.1控制LED。

3)P1.0控制蜂鸣器。

4)电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。

3.2接口电路的设计

(1)AT89C51简介

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

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

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

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

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

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

外形及引脚排列如图3-1所示图3-1单片机

(2)时钟电路

AT89C51引脚XTAL1和XTAL2与晶体振荡器及电容C1、C2按图所示方式连接。

晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1、C2取值范围在5~30pF之间。

根据实际情况,本设计中采用12MHZ作为系统的外部晶振,电容取值为30pF。

其电路图如图3-2所示。

图3-2时钟电路

(3)复位电路:

由一个10nf电容接电源和一个10k的电阻接地组成,使单片机的CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。

如图3-3所示

(4)按键电路:

有外部中断输入和定时/计数器的外部输入都是低电平有效,可以和复位电路相视,只要讲复位电路中的电容去点即可。

共三个按键,接口为P3.2、P3.4、P3.5按下播放/暂停歌曲会实现播放暂停,按下下一曲或下一曲单片机也会显示相应的功能。

按键如图3-4所示图3-3复位电路

(5)音乐驱动电路:

即蜂鸣器部分,接口为P1.0。

由于单片机最大的输入电流为3.2mA,所以选用PNP管,并要PNP的基极和发射极加限流电阻。

如图3-5所示

(6)显示电路:

LED显示电路之直接到单片机的P0.0~P0.7,P2.0~2.1口,由单片机通过控制按键的切换来实现歌曲的曲目,分别能实现“11,22,33”。

如图3-6所示

图3-4按键电路图3-5蜂鸣器图3-6显示电路

 

4.系统软件的设计

4.1主程序的设计

通过主程序对单片机的电路实行控制并结合按键功能实现播放,暂停,停止,上一曲,下一曲。

音阶和节拍的配合实现歌曲(共三首歌)演奏,并利用数码管显示当前播放序号。

按下开始按钮之后,程序初始化,再按下播放按键,程序开始判断按键是否按下,若按下就开始判断曲目标号,送相应表首地址给dptr,再调用音乐子程序,播放相应曲目,数码管会显示相应的曲号。

按下“上一曲”或“下一曲”后会使音乐程序加一或减一,再送相应表首地址给dptr,这样可以实现任意曲目的切换。

主程序流程图如下所示:

4.2子程序的设计

判断子程序流程图

Del延时子程序流程图

Music子程序流程图

 

5.系统调试

5.1硬件调试

硬件在单片机学习板上进行仿真实验,能显示曲号,基本功能能实现,但音乐不太明显。

5.2软件调试

播放:

当开始键P3.2按下时,音乐盒顺序播放。

暂停:

当音乐要暂停时,按下P3.2时就可实现。

下一曲:

按下P3.4时,可实行对音乐盒的控制歌曲进入到下一曲。

上一曲:

按下P3.5时,可实现音乐盒上一曲的循环播放。

当歌曲正常播放时数码管也能显示当前的歌曲序号。

5.3综合调试

按照上面设计的电路在proteus软件内画图,打开单片机软件开发系统Keil,选择89c51单片机,在其中编写程序,运行生成一个后缀名为hex的文件,然后将该文件下载到proteus中的AT89c51单片机中进行仿真,观察实验现象。

仿真能实现播放音乐,按键选择曲目,暂停,播放等功能。

6.指标测试

6.1测试仪器

装有Proteus及Keil软件的计算机,耳塞或音响设备,单片机学习板等。

6.2指标测试

能达到开始设想的音乐盒功能,能实现播放,暂停,停止,上一曲,下一曲,音阶和节拍的配合实现歌曲(共三首歌)演奏,同时数码管能显示播放歌曲的曲目。

7.结论

通过这次单片机课程设计,发现自己想学好单片机还有很大的差距。

由于自己理论知识不扎实,能力有限,导致编程很困难。

后来经过老师同学们的指点,查了大量有关音乐盒设计的资料,才写出了完整的程序。

在调试时会出现程序一点错误也没有,但就是不能正常运行的现象,最后发现是因为程序中有的指令书写得不规范导致的。

好几页的程序很容易造成混乱,后来加注释或分割线,便于查找或更改。

编程前加个流程图比较好,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。

通过好几天的设计,调试最后终于基本上能实现课题上的功能。

本学期学习单片机的时间只有十几周时间,对单片机的硬件设计,软件设计掌握的深度不够,感谢老师给我们这么一次机会,通过此次课程设计,使我对硬件电路的工作原理有了进一步的学习,更是对软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次设计单片机,很有成就感。

对这次课程设计我觉得更需要我们耐心,仔细。

参考文献:

1.楼然苗,胡佳文.51系列单片机设计实例,北京:

北京航空航天大学出版社,2003.03.

2.楼然苗,胡佳文.单片机实验与课程设计,浙江大学出版社,2010.10.

3.张永枫,单片机应用实训教程,清华大学出版社,2008.12.

4.张迎新,单片机初极教程—单片机基础,北京航空航天大学出版社,2006.8.

附录一:

PROTEUS仿真效果图

附录二:

源程序代码及必要的注释。

shuzhiequ3fh;选曲目的地址

songequp1.0;扬声器播放P1.0

playequp3.2;播放停止键P3.2

addoneequp3.4;曲目加一键P3.4

suboneequp3.5;曲目减一键P3.5

dulequp0;数码管段选P0口

welequp2;数码管位选P2口

org0000h

ljmpstart

org000bh;定时器0溢出中断入口地址

ajmpcont;指向定时器中断程序

org0013h;外部中断一入口地址

ajmppause;指向外部中断程序

org0100h

start:

movsp,#50h

movth0,#0dbh;定时器赋初值

movtl0,#0ffh

movtmod,#01h

movie,#86h;开中断

movtcon,#00h

movr0,#00h

movshuzhi,#00h

main:

jnbplay,first;判断P3.2键是否按下

sjmpmain

first:

acalldel20

jnbplay,first;判断P3.2键是否释放

movshuzhi,#00h

movdul,#0f9h;显示数值1

movwel,#7fh;显示位送P2口

movdptr,#dat1;表1首地址送DPTR

acallmusic0

acallnext

ret

next:

incshuzhi;shuzhi+1

mova,shuzhi

cjnea,#01,loop3;A是否=1,不等就跳转到LOOP3

movdptr,#dat2;表2首地址送DPTR

movdul,#0a4h;显示数值2

movwel,#7fh

acallmusic0

inca

loop3:

cjnea,#02,loop4;A是否=2,不等就跳转到LOOP4

movdptr,#dat3;表3首地址送DPTR

movdul,#0b0h;显示数值3

movwel,#7fh

acallmusic0

inca

loop4:

cjnea,#03,next;A是否=3,不等就跳转到next

acallfirst

ret

last:

decshuzhi;shuzhi-1

mova,shuzhi

cjnea,#02,last1

movdptr,#dat3

movdul,#0b0h

movwel,#7fh

acallmusic0

last1:

cjnea,#01,last2

movdptr,#dat2

movdul,#0a4h

movwel,#7fh

acallmusic0

last2:

cjnea,#00,last

movdptr,#dat1

movdul,#0f9h

movwel,#7fh

acallmusic0

ret

music0:

mov20h,#00h;中断计数单元清0

music1:

clra

movca,@a+dptr;查表取音阶常数

jzend0;是结束符?

cjnea,#0ffh,music5;是休止符?

ljmpmusic3;产生100ms停顿

music5:

nop

key:

jnbplay,k0;判断P3.2键是否按下

jnbaddone,k1;判断P3.4键是否按下

jnbsubone,k2;判断P3.5键是否按下

movr6,a;音阶常数送R6

incdptr;DPTR+1

mova,#0

movca,@a+dptr;取常数送R7

movr7,a

setbtr0;启动定时器T0

music2:

nop

cjner0,#0,$

cplsong;输出电平取反

mova,r6

movr3,a;音阶常数送R3

lcalldel20

mova,r7;节拍常数送A

cjnea,20h,music2;节拍时间到否

mov20h,#00h;为取下一音阶作准备

incdptr

ljmpmusic1

music3:

nop;休止100ms

clrtr0;关闭定时器

movr2,#14h;R2=20

music4:

nop

movr3,#250;R3=250

lcalldel20

djnzr2,music4

incdptr;为取下一音阶作准备

ljmpmusic1

end0:

movr2,#200;歌曲结束后,延时1s后继续

music6:

movr3,#250

lcalldel20

djnzr2,music6

k1:

acalldel20;调用延时子程序

jnbaddone,k1;判断P3.4键是否释放

acallnext

k2:

acalldel20

jnbsubone,k2;判断P3.5键是否释放

acalllast

k0:

acalldel20

jnbplay,k0

ljmpstart

ret

del20:

movr4,#05h

del4:

nop

djnzr4,del4

djnzr3,del20

ret

cont:

inc20h;计数单元+1

movth0,#0dbh;重新10ms定时初值

movtl0,#0ffh

reti;跳出中断

pause:

acalldel20

jnbp3.3,pause;判断P3.3键是否有释放

mova,r0;把R0的值给A

cpla;A值取反

movr0,a

reti

dat1:

db3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffh

db3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffh

db26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,30h,20h,33h,10h,33h,10h

db3bh,60h,40h,20h,4ch,80h,0ffh

db3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffh

db3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffh

db26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,2bh,20h,30h,20h

db33h,20h,3bh,20h,3bh,20h,40h,2bh,3bh,80h,0ffh

db19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffh

db20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffh

db19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffh

db20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffh

db2bh,20h,2bh,40h,3bh,20h,2bh,20h,2bh,40h,2bh,20h,0ffh

db26h,20h,2bh,20h,2bh,20h,30h,20h,2bh,80h,0ffh

db2bh,20h,2bh,40h,3bh,20h,30h,20h,30h,40h,2bh,20h,0ffh

db33h,20h,3bh,20h,3bh,20h,40h,20h,3bh,80h,0ffh,0ffh

dat2:

db18h,30h,1ch,10h,20h,40h,1ch,10h

db18h,10h,20h,10h,1ch,10h,18h,40h

db1ch,20h,20h,20h,1ch,20h,18h,20h

db20h,80h,0ffh,20h,30h,1ch,10h,18h

db20h,15h,20h,1ch,20h,20h,20h,26h

db40h,20h,20h,2bh,20h,26h,20h,20h

db20h,30h,80h,0ffh,20h,20h,1ch,10h

db18h,10h,20h,20h,26h,20h,2bh,20h

db30h,20h,2bh,40h,20h,20h,1ch,10h

db18h,10h,20h,20h,26h,20h,2bh,20h

db30h,20h,2bh,40h,20h,30h,1ch,10h

db18h,20h,15h,20h,1ch,20h,20h,20h

db26h,40h,20h,20h,2bh,20h,26h,20h

db20h,20h,30h,80h,20h,30h,1ch,10h

db20h,10h,1ch,10h,20h,20h,26h,20h

db2bh,20h,30h,20h,2bh,40h,20h,15h

db1fh,05h,20h,10h,1ch,10h,20h,20h

db26h,20h,2bh,20h,30h,20h,2bh,40h

db20h,30h,1ch,10h,18h,20h,15h,20h

db1ch,20h,20h,20h,26h,40h,20h,20h

db2bh,20h,26h,20h,20h,20h,30h,30h

db20h,30h,1ch,10h,18h,40h,1ch,20h

db20h,20h,26h,40h,13h,60h,18h,20h

db15h,40h,13h,40h,18h,80h,00h

dat3:

db26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h

db30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h

db20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h

db30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h

db30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h

db2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h

db20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h

db20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h

db20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h

db20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h

db18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h

db30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h

db39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h

db20h,10h,2bh,10h,26h,30h,30h,80h,00h

end

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

当前位置:首页 > 自然科学 > 物理

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

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