音乐播放器
专业班
姓 名:
时 间:
指导教师:
2010年 3 月 19日
基于单片机控制的音乐播放器
二. 设计
(一)基本功能
1. 利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,演奏乐曲。
2. 采用LED显示信息
3. 播放时显示歌曲序号(或名称)
(二)扩展功能
可通过功能键选择乐曲,暂停,播放。
2.显示乐曲播放时间或剩余时间
三. 计划完成时间 三周
第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。
第二周完成软件的具体设计和硬件的制作。
第三周完成软件和硬件的联合调试。
四. 编写设计报告
写出设计的全过程,附上有关资料和图纸,有心得体会。 五.
在
时间内,完成叙述并回答问题。
1引言……………………………………………………………………………………1 2总体设计方案…………………………………………………………………………2 2.1设计思路…………………………………………………………………………2 2.2总体设计框图……………………………………………………………………2 2.3设计方案…………………………………………………………………………2 3设计原理分析…………………………………………………………………………2 3.1按键功能…………………………………………………………………………3 3.2音乐控制…………………………………………………………………………3 3.3电路原理图………………………………………………………………………4 4心得与体会……………………………………………………………………………5 5参考文献………………………………………………………………………………5 附录………………………………………………………………………………………6
1引言
利用单片机演奏音乐大概是单片机爱好者感兴趣的问题之一。利用单片机控制音乐播放也多不胜举.音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。它有功能多?价格优?外围电路简单的特点,备受音乐爱好者及音乐芯片制造商的青昧。用AT89S51单电机及少数外围电路控制音乐播放,产生几首不同的歌曲。
对于单片机产生音乐,关键是控制频率的输出。我们知道,不同的声音对应不同的频率,产生有规律的频率输出就可以得到相应规律的声音。采用了T0中断的方法产生不同频率,采用THO产生中断进行歌曲选播,复位键进行重新开始,
也可以通过选择键来选择。
本文应用单片机和音乐发声的相关知识设计了一个简单的音乐播放器。所谓音乐播放器,由单片机进行信息处理,
再经过信号放大,由耳机或扬声器(喇叭)放出乐曲声。我们知道,振动产生声音,振动频率不同,所发出的声音也
就不同,有规律的振动发出的声音叫“乐音”,音乐由音频和节拍构成,音频即发声的频率,节拍即延时的长短,因此
利用单片机的定时器/计数器产生一定频率的方波,本文比较详细地介绍了音乐播放器的原理、设计思路、硬件的选择
及相关作用、软件的实现方法及详细的程序
、还包括进行了软、硬件调试和测试,耳熟能详的歌曲的依次、轮回
播放。
关键词:8051单片机,中断,编程,音乐,音乐播放器
2总体设计方案
2.1设计思路
利用单片机的定时器/计数器产生一定频率的方波,利用延时来实现方波的延时,从而实现“1~7”的高、中、低音的发音,而后把整首歌曲编码编程并结合单片机硬件实现歌曲的演奏。以键
盘的方式进行换曲。
2.2设计方案
根据设计任务的基本要求,设计了由单片机(AT89S51)作为主控器件,按键组成的按键操
作电路,以及三极管、扬声器组成的发声电路。
除了以上的硬件电路外,还充分利用软件、硬件相结合,充分发挥单片机设计的优势。使
设计更具特色。系统可分成三部分,即即时钟电路、复位电路和发声电
第- 1 -页
2.3总体设计框图
单片机AT89S51--------声音播放电路
图1 总体设计框图
3设计原理分析
3.1按键功能
初步设计了由两个按键来完成所有的操作,它们的功能分别是:复
位键和换曲键,控制复位和更换曲目。 3.2电路原理图
第- 2 -页
图2 总体电路图
图2中,S1为复位键,S2-S17为键盘电路,可以进行选择曲目。扬声
器在每个操作后把程序中存储的信号进行放大还原成音乐播放出来,S1
可以在死机等情况下进行系统复位。
3.3 矩阵键盘电路设计
第- 3 -页
由于设计要求使用键盘的按键数目较多,所以本设计采用行列式键
盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3所示。
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过
一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,
即可组成具有N×M个按键的键盘。在这种行列式矩阵式键盘非键盘编
码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按
下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。
对键的识别通常用逐行扫描查询法。首先辨别键盘中有无键按下,有单
片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向
行线输出全扫描字F0H,把全部行线置为低电平,然后将列线的电平状
态读入累加器A中。如果有按键按下,总会有一根列线电平被拉至低电
平,从而使列线不全为1。判断键盘中哪一个键被按下使通过将行线逐
列置低电平后,检查行输入状态来实现的。方法是:依次给行线送低电
平,然后查所有列线状态,如果全为1,则所按下的键不在此行;如果
不全为1,则所按下的键必在此行,而且是在与零电平行线相交的交点
上的那个键。
P1.7
VCC
R11R12R13R14P1.610K10K10K10K
S11S12S13S14 P1.0S21S22S23S24 P1.1S31S32S33S34P1.5P1.2S41S42S43S44
P1.3
P1.4
第- 4 -页
图3 矩阵键盘原理图
4程序流程框图
4.1总体程序流程图
根据硬件设计结果,为满足要求,程序应有主程序、按键处理程序、
中断服务程序和发声程序等部分构成。主程序中主要是程序各部分的初
始化;按键处理程序处理五个按键的操作,包括各个按键的响应程序以
及发声输出等;
单片机AT89S51--------声音播放电路
总体程序流程图 4.2主程序流程图
第- 5 -页
5心得与体会
深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片
机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴
趣。
在本次课程设计过程中,自己懂得单片机知识运用比较普遍啊,要
想把这门课程学好需要不但课本上的知道,关键还是亲手实践锻炼自己
的动手能力,只有在实践中才能够学到更多东西,从不知道到知道这个
东西啊,知识来于课本理论与实践相结合的产物啊,我们只有把理论更
好的运动到实践中学到了真正的知识
经过这三周,我知道书本和实际操作还是很有差距的,而且自己的
动手能力还是很差,而且电子这一行还要求的细心仔细和耐心,在这三
周中暴露出来很多自己的不足,以后要多加练习,多锻炼自己的这些方
面的能力。
6参考文献
[1]陈永甫.新编555集成电路应用800例 [M].电子工业出版社,2000.1 [2] 孙涵芳.MCS-51系列单片机原理及应用[M].北京:北京航空航天大学出版社,1996.4
[3] 阎石.数字电子技术基础(第三版)[M].北京:高等教育出版社,1989 [4] 李朝青.单片机原理及接口技术(第三版)[M].北京;北京航空航天大学出版社,2005年10月
[5] 叶挺秀.应用电子学[M].杭州:浙江大学出版社,1994
[6] 朱承高.电工及电子技术手册[M].北京:高等教育出版社,1990 [7] 阎石.数字电子技术基础(第三版)[M]. 北京:高等教育出版社,1989
第- 6 -页
附录
程序清单
T5HZ EQU 30H
T7HZ EQU 31H
T05SA EQU 32H T05SB EQU 33H FLAG BIT 00H
STOP BIT 01H
SP1 BIT P3.6
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START:MOV TMOD,#02H MOV TH0, #06H MOV TL0, #06H SETB ET0
SETB EA
NSP:JB SP1,NSP LCALL DELY10MS JB SP1, NSP
SETB TR0
MOV T5HZ, #00H MOV T7HZ, #00H MOV T05SA, #00H MOV T05SB, #00H CLR FLAG
CLR STOP
JNB STOP, $
LJMP NSP
DELY10MS:MOV R6,#20H
D1: MOV R7, #248 DJNZ R7,$
DJNZ R6,D1
RET
INT_T0:INC T05SA MOV A,T05SA
CJNE A,#100H,NEXT MOV T05SA,#00H INC T05SB
第- 7 -页
MOV A,T05SB
CJNE A,#20H,NEXT MOV T05SB,#00H JB FLAG,STR
CPL FLAG
LJMP NEXT
STR: SETB STOP CLR TR0
LJMP DONE
NEXT:JB FLAG,S5HZ INC T7HZ
MOV A,T7HZ
CJNE A,#03H,DONE MOV T7HZ,#00H CPL P1.0
LJMP DONE
S5HZ:INC T5HZ MOV A,T5HZ
CJNE A,#04H,DONE MOV T5HZ,#00H CPL P1.0
LJMP DONE
DONE:RETI
END
第2页
第3页