基于单片机实现的音乐播放器设计文档格式.docx
- 文档编号:3774291
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:20
- 大小:106.22KB
基于单片机实现的音乐播放器设计文档格式.docx
《基于单片机实现的音乐播放器设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机实现的音乐播放器设计文档格式.docx(20页珍藏版)》请在冰点文库上搜索。
(2)单片机产生不同频率脉冲信号的原理:
1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。
2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:
例如,频率为523Hz,其周期天/523S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下:
N=Fi/2/Fr
(N:
计数值,Fi:
内部计时一次为1uS,故其频率为1MHz,Fr:
要产生的频率)
(3)其计数值的求法如下:
T=65536-N=65536-Fi/2/Fr
计算举例:
设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1047=65059
(4)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。
但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
1/4节拍1/8节拍
节拍码节拍数节拍码节拍数
11/4拍11/8拍
22/4拍21/4拍
33/4拍33/8拍
41拍41/2拍
51又1/4拍55/8拍
61又1/2拍63/4拍
71又3/4拍77/8拍
82拍81拍
92又1/4拍91又1/8拍
A2又1/2拍A1又1/4拍
B2又3/4拍B1又3/8拍
C3拍C1又1/2拍
D3又1/4拍D1又5/8拍
E3又1/2拍E1又3/4拍
F3又3/4拍F1又7/8拍
各调节拍的时间设定
1/4节拍1/8节拍
曲调值DELAY曲调值DELAY
调4/4125毫秒调4/462毫秒
调3/4187毫秒调3/494毫秒
调2/4250毫秒调2/4125毫秒
⑹建立音乐的步骤:
1)先把乐谱的音符找出,然后由上建立T值表的顺序。
2)把T值表建立在TABLE1,构成发音符的计数值放在“SONG”。
3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“SONG”处。
简谱对应的简谱码、T值、节拍数
简谱发音简谱码T值节拍码节拍数
5低5SO16426011/4拍
6低6LA26440022/4拍
7低7SI36452433/4拍
1中1DO46458041拍
2中2RE56468451又1/4拍
3中3M66477761又2/4拍
4中4FA76482071又3/4拍
5中5SO86489882拍
6中6LA96496892又1/4拍
7中7SIA65030A2又2/4拍
1高1DOB65058B2又3/4拍
2高2REC65110C3拍
3高3MD65157D3又1/4拍
4高4FAE65178E3又2/4拍
5高5SOF65217F3又3/4拍
不发音0
第二章设计课题硬件系统的设计
2.1设计课题硬件系统各模块功能简要介绍
本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块、输入模块、输出模块、电源模块。
1、单片机最小系统模块:
包括低功耗、高性能CMOS8位微控制器AT89S52,复位电路,晶振电路。
本模块AT89S52系统控制核心,单片机系统复位又复位电路完成,由外部提供晶振频率。
2、输入模块:
本模块用了四个按键,一个复位键,单片机运行期间,利用此键完成复位操作。
三个控制键,为独立式键盘,为音乐选择键,按下键一,选中第一首歌,以此类推。
3、输出模块:
本模块包括显示区和音乐输出区,显示区由一个数码显示管构成,用来显示选中歌曲的序号。
音乐输出区由一个建议的喇叭或分频器构成,用以播放音乐。
4、电源模块:
为了节约成本和设计时间,本模块由市面销售的USB接口和USB线构成,没有另外设计编程器了。
2.2设计课题电路原理图、PCB图、元器件布局图
设计课题电路原理图,见附录
设计课题电路PCB图,见附录
设计课题电路元器件布局图,见附录
2.3设计课题元器件清单
设计课题元器件清单如表2.1所示
表2.1设计所用元器件清单
元器件名称
标值
数量
STC89C52RC芯片
1块
四位一体共阴数码管
1个
晶振
11.0592MHz
普通电容
30pF
2个
极性电容
22μF
按键
4个
电源接口
排阻
4.7KΩ
电阻
0.2KΩ
1KΩ
第三章设计课题软件系统的设计
3.1设计课题使用单片机情况
本设计使用单片机资源情况如下:
P0口输出数码管段选信号,P3.1输出数码管段选信号,晶振11.0592MHZ
P1.0至P1.2为按键接口,P2.1为喇叭或蜂鸣器接口。
3.2设计课题软件系统各模块功能简要介绍
本设计的软件系统主要采用以下几个基本模块来实现,主程序、定时中断服务程序、键盘扫描程序、显示程序及延时程序。
主程序:
主要用于对输入信号的处理,输出信号的控制,对各功能模块的运用于综合。
以及将音乐简谱码从表中取出,并将其翻译成对应的频率,延迟对应的时间节拍,并输出给蜂鸣器。
定时中断服务程序:
主要用来确定节拍,并完成相应的延时。
键盘扫描程序:
主要用来判断是否有键按下并得到相应的键码值。
显示程序:
主要用来显示选到歌曲的序号。
延时程序:
本程序中有两个延时子程序,一个为去抖动延时程序,另一个为187ms四分之一拍的基本延时子程序。
3.3设计课题软件系统程序流程框图
本设计采用汇编语言按模块化方式进行设计,然后通过KEIL软件开发平台将程序转变成十六进制程序语言,接着使用proteous进行仿真,读出显示数据,判断播放的音乐。
主程序流程框图如图3.1所示;
键盘扫描子程序流程框图如图3.2所示。
3.4设计课题软件系统程序清单
设计课题软件系统程序清单,详见附录一。
图3.1主程序流程框图
图3.2键扫子程序流程框图
第四章设计结论、仿真结果、误差分析、教学建议
4.1设计课题的设计结论及使用说明
本设计为基于单片机的音乐播放器设计。
刚开始毫无头绪,跟本不知道音乐是怎么产生的,各种调,节拍的音乐是怎么放出来的,通过查资料,我明白了音乐播放器的基本原理,在我算出所需的T值后我找了几首歌的简谱并将其转化为相应的简谱码,接着我确定了基本设计方案。
通过好几个日夜的keil调试,程序终于出来了,但令我失望的是在proteus上仿真时只有喇叭的嘟嘟声而没有我日思夜想的音乐。
通过认真思考及仔细盘查终于找出了原因,原来是电路原理图的错误,在更正了电路原理图后,音乐总算是出来了。
本设计有三个按键用来选择播放的曲目,一个数码管用来显示所选曲目的序号,按下key1键播放第一首音乐,按下key2键停止播放第一首,开始播放第二首,按下key3键停止播放第二首,开始播放第三首,并且数码管的显示与歌曲同步。
这样的结果与设计要求完全相符,设计成功。
4.2设计课题的仿真结果
当播放器上电的时候显示P点,如图4.1所示;
按下一键的时候,显示1,如图4.2所示;
按下第二个键时显示2,如图4.3所示,按下第三个键时显示3,如图4.4所示。
图4.1P点图4.21图4.32图4.43
4.3设计体会
通过此次设计,我对音乐播放器播放音乐的原理有了相当深刻的体会,对汇编语言有了更深的了解。
其中对子程序的运用有了很深的映像,子程序的灵活运用大大的简化了程序的编写,也使得程序很直观,透彻。
通过这2周的设计,我感觉有很大的收获:
首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力:
能够有方向有目的的去查阅资料,增加了许多课本以外的知识。
对所学的课程有了进一步的深入了解,能达到学以致用。
对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。
特别是实物的制作,对我们动手能力是一个很严峻的考验。
我的实物最终以失败告终,但我并不后悔,从失败中我学会了很多很多,对我以后的学习和工作将会有很大的帮助。
4.4教学意见
经过一个学期的单片机学习,在王韧老师详细的教导之下,我掌握了很多单片机学习的宝贵经验,尤其是编程思路和软件的使用方面。
思路是编程的灵魂,没有它你的程序很难出来。
在编程之前确定好编程思路,编程的过程才会顺畅,程序的质量才会高。
在王老师到的课堂中,幽默轻松的教学方式让课堂很活跃,一些亲身的体会让我们对单片机得了解更加透彻。
而对我们人生道路的引导更让我们受益匪浅。
针对我自己的认识,我有以下几点想对老师说:
(1)关于本专业毕业以后的发展方向,考研方向,就业方面应该具体讲一讲。
(2)关于单片机的最新动态,它的升级产品以及可以代替它的产品经常给学生讲讲。
(3)回答问题不要老针对那几个熟悉的人,可以直接点学号,给每一个人包括那些胆小的一次表现的机会。
(4)实验课上不要将精力全部倾注于女生身上。
参考文献
【1】谢自美主编.电子线路设计.试验.测试(第一版).武汉:
华中科技大学出版社,2000.
【2】张毅刚等编著.MCS-51单片机应用设计.哈尔滨:
哈尔滨工业大学出版社,2003。
【3】康华光主编.电子技术基础数字部分(第四版).北京:
高等教育出版社,2003。
【4】康华光主编.电子技术基础模拟部分(第四版).北京:
高等教育出版社,2002。
【5】XiefromtheU.S.editorinchief.Electroniccircuitdesign.Test.Test(firstedition).Wuhan:
HuazhongUniversityofScienceandTechnologyPress,2000.
【6】ZHANGYi-gangeds.MCS-51microcontrollerapplications.Harbin:
HarbinInstituteofTechnologyPress,2003.
致谢
经过3周的忙碌,本次课程设计在几经波折之后总算已经完成,虽然不是特别理想,但在此,我要感谢每一个帮助过我的人。
首先,我要感谢的是我的老师王韧老师。
王老师平日里工作繁多,但在我做课程设计的每个阶段,都抽出休息时间来给予我悉心的指导和帮助。
可以说,没有王老师的悉心指导和帮助,我是不可能顺利完成我的课程设计的。
另外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。
同时也要感谢那些在我陷入困境中帮我走出来的兄弟同学们。
总之,感谢每一位关心过我,爱护过我的人。
最后,再次感谢我的老师王韧老师。
附录
;
基于51单片机的简易音乐播放器,可以播放三个音乐片段,由三个按键控制
ORG0000H
JMPSTART
ORG000BH;
TIMER0中断起始地址
JMPTIMER0;
跳至TIMER0中断子程序
START:
MOVTMOD,#01H;
设TIMER0在MODE1
MOVIE,#82H;
中断使能
LOOP:
CLRP3.0;
开机显示P点
MOVP0,#00001100B
LCALLKEY;
调键扫
LOOP1:
MOVA,20H
START0:
CJNEA,#01H,START1
LJMPSONG1
START1:
CJNEA,#02H,START2
LJMPSONG2
START2:
CJNEA,#04H,START3
LJMPSONG3
START3:
LCALLDIR
LJMPLOOP
SONG1:
MOV30H,#LOWSING1;
第一首歌的地址
MOVP0,#11111001B
LJMPNEXT
SONG2:
MOV30H,#LOWSING2
MOVP0,#10100100B
SONG3:
MOVP0,#10110000B
MOV30H,#LOWSING3
NEXT:
MOVA,30H
MOVDPTR,#TABLE
MOVCA,@A+DPTR;
至相关页取码,高4位位音符的高低
MOVR2,A;
低4位为音符的节拍
JZSTOP;
检查简谱码是否已结束(有无00?
)
ANLA,#0FH;
取节拍(低4位)
MOVR5,A;
存入R5,节拍的时间
MOVA,R2
SWAPA
ANLA,#0FH;
取音频值(高4位)
JNZSING;
是否为0,是0则不发音
CLRTR0
JMPW1
SING:
DECA;
因0不列入
MOV22H,A;
存入(22H)
RLA;
乘2
MOVCA,@A+DPTR;
至TABLE取码,取T的值
MOVTH0,A;
取得的高位字节存入TH0
MOV21H,A;
取得的高位字节存入(21H)
MOVA,22H;
再载入取得的音符码
INCA;
加1
MOVCA,@A+DPTR
MOVTL0,A;
取得的低位字节存入TL0
MOV20H,A;
取得的低位字节存入(20H)
LCALLTT;
调键盘扫描子程序
SETBTR0
w1:
LCALLDELAY;
调延时子程序
INC30H;
首地址加一
JMPNEXT
STOP:
CLRTR0
JMPLOOP
**************************中断服务子程序*******************************
TIMER0:
PUSHACC;
将A的值暂存于堆栈
PUSHPSW;
将PSW的值暂存于堆栈
MOVTL0,20H;
重设计数值
MOVTH0,21H
CPLP2.1
POPPSW
POPACC
RETI
***************************187毫秒子程序*******************************
DELAY:
MOVR7,#2;
187毫秒子程序
W2:
MOVR4,#187
w3:
MOVR3,#248
DJNZR3,$
DJNZR4,W3
DJNZR7,W2
DJNZR5,DELAY;
决定节拍
RET
*************************键盘扫描小子程序**********************************
TT:
JNBP1.0,SONG1
JNBP1.1,SONG2
JNBP1.2,SONG3
RET
*************************键扫子程序***************************************
KEY:
LCALLKS
JZEXIT
LCALLDIR
LCALLKS
JZEXIT
MOVB,20H
EXIT:
KEYS:
LCALLKS
JZKEY1
LCALLDIR
LJMPKEYS
KEY1:
KS:
PUSHPSW;
P0口数据处理子程序
CLRRS1
SETBRS0
MOVP1,#0FFH
MOVA,P1
CPLA
ANLA,#0FH
MOV20H,A
CLRRS0
DIR:
MOVR7,#20;
延时去抖动子程序
WW:
DJNZR3,$
DJNZR7,WW
*****************************表格***********************************
ORG300H
TABLE:
DW64260,64400,64524,64580
DW64684,64777,64820,64898
DW64968,65030,65058,65110
DW65157,65178,65217
SING1:
;
第一首生日快乐
1
DB82H,01H,81H,94H,84H
DB0B4H,0A4H,04H
DB82H,01H,81H,94H,84H
DB0C4H,0B4H,04H
;
2
DB82H,01H,81H,0F4H,0D4H
DB0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H
3
4
DB84H,01H,81H,0F4H,0D4H
DB00H
SING2:
第二首两只老虎
DB44H,54H,64H,44H
DB64H,74H,88H
DB82H,92H,82H,72H,64H,44H
DB44H,84H,48H
DB44H,14H,48H
DB00H
SING3:
第三首三只小猫
DB62H,82H,82H,62H,98H
DB92H,0B2H,0B2H,82H,98H
DB62H,82H,82H,52H,68H
DB92
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 实现 音乐 播放 设计