收藏 分享(赏)

课程设计 基于单片机的音乐播放器.doc

上传人:精品资料 文档编号:10767653 上传时间:2020-01-08 格式:DOC 页数:22 大小:217.07KB
下载 相关 举报
课程设计 基于单片机的音乐播放器.doc_第1页
第1页 / 共22页
课程设计 基于单片机的音乐播放器.doc_第2页
第2页 / 共22页
课程设计 基于单片机的音乐播放器.doc_第3页
第3页 / 共22页
课程设计 基于单片机的音乐播放器.doc_第4页
第4页 / 共22页
课程设计 基于单片机的音乐播放器.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、111 设计课题任务、功能要求说明及总体方案介绍1.1 任务设计一个具有特定功能的音乐播放器。该音乐播放器上电或按键复位后能自动显示系统提示符“P.” ,进入准备工作状态。该音乐播放器可以播放多首音乐,曲目选择可以由键盘控制,曲目名称可以显示在显示器上。1.2 功能要求说明设有四个按键,其中两个能实现多首音乐的选择,另一个能实现开始功能和单曲重播的功能,最后一个能实现复位和关闭歌曲的功能。设有一位数码管,每选择一首曲子能在数码管上显示当前的曲目(只是数字) 。设有八位二极管,能随歌曲频率闪烁。1.3 总体方案介绍及工作原理说明1.3.1 总体方案介绍作为单片机的重要硬件资源之一,利用定时器可以

2、产生各种固定频率的方波信号,也可以产生包括“Do“、 “Re“、 “Me“-等音阶在内的各种频率声音。在此设计中我们采用12MHz的晶振,产生的频率信号即音乐信号由P37口输出,信号经过放大后由喇叭发出声音。乐曲中,每一音符对应着确定的频率,我们可以参照给出的各音符频率及其相应的时间常数来编写程序,根据表中所提供的常数,将其16进制代码送入芯片里,可以奏出音符。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。其它节拍与时间的对应关系也可以从两者关系表中得到。定时器 T0 工作在定时方式 1,改变 TH0 及 T

3、L0,产生不同的音频频率。要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器 T0 进行工作。1.3.2 工作原理说明(1) 要生产音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间.利用定时器计时这个半周期时间,每当计时到后就将22输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲.(2) 利用8051的内部定时器使用其工作在计数器模式MODE1下,改变计数值THO及TLO以产生不同频

4、率的方法.(3) 例如频率为523Hz,其周期T1/5231912us,因此只要令计数器计时956us/1us956,在每次计数956次时将I/O反相,就可得到中音DO (523Hz). 计数脉冲值与频率的关系公式如下: NFi2Fr1.1N: 计算值; Fi: 内部计时一次为1us, 故其频率为1MHz;(4) 其计数值的求法如下: T65536-N65536-Fi2Fr 1.2 例如: 设K65536, F1000000Fi1MHz, 求低音DO(261Hz).中音DO (523Hz). 高音的DO (1046Hz)的计算值. T65536-N65536-Fi2Fr65536-100000

5、02Fr65536-500000/Fr。低音DO的 T65536-500000/26263627,中音DO的T65536-500000/52364580,高音DO的 T65536-500000/104765059(5) C 调各音符频率与计数值 T 的对照表如表 1 所示.表 1.1 C调各音符频率与计数值 T的对照表音符 频率(HZ)简谱码(T 值) 音符 频率(HZ)简谱码(T 值)低 1 DO 262 63628 # 4 FA# 740 64860#1 DO# 277 63731 中 5 SO 784 64898低 2 RE 294 63835 # 5 SO# 831 64934#2 R

6、E# 311 63928 中 6 LA 880 64968低 3 M 330 64021 # 6 932 64994低 4 FA 349 64103 中 7 SI 988 65030# 4 FA# 370 64185 高 1 DO 1046 65058低 5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高 2 RE 1175 65110低 6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高 3 M 1318 65157低 7 SI 494 64524 高 4 FA 1397 65178中 1 D

7、O 523 64580 # 4 FA# 1480 65198(6) 每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表2为节拍与节拍码的对照.如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间.假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推.所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表3为1/4和1/8节拍33的时间设定. 2 硬件系统的设计2.1 硬件系统各模块功能简要介绍2.1.1 单片机最小系统图 2.1 单片机最小系统(1) 时钟源电路 单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XT

8、ALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构如图2.1。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择22pF左右的瓷片电容。 (2) 复位电路 单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如图2.1。上电自动复位通过电容 C3 充电来实现。手动按键复位是通过按键将电阻R1 与 VCC 接通来实现。2.1.2 发光二极管44图 2.2 发光二极管当接通电源,单片机运行时,八个二极管随着不同

9、的调子闪烁,增加美感。2.1.3 一位数码管图 2.3 一位数码管当有键按下时,数码管显示当前的曲目2.1.4 蜂鸣器发声55图 2.3 蜂鸣器发声利用单片机的 P3.7 口产生不同音调所对应的方波来使蜂鸣器发声,使用PNP 三级管来驱动。2.1.5 按键图 2.4 按键按下 AGAIN 键可播放重复的曲子也可开启播放,按下 FORM 键可播放上一曲,按下 NEXT 键可播放下一曲。2.2 电路原理图、PCB 图、元器件布局图2.2.1 电路原理图66图 2.4 总电路图2.2.1 PCB图77图 2.5 PCB图882.2.1 元器件布局图图 2.5 元器件布局图2.3 元器件清单Bill

10、of Material for 音乐播放器.BomUsed Part Type Designator Footprint Description = = = = = 9 10K R1 R2 R3 AXIAL-0.4 Resistor R4 R5 R6 R7 R8 R20 1 12MHZ Y1 XTAL-1 Crystal Oscillator 1 22uF C2 RB-.2/.4 Bi-Polar Capacitor 2 30pF C3 C4 RAD-0.1 Capacitor 8 300k R9 R10 R11 AXIAL-0.4 R12 R13 99R14 R15 R16 1 DIODE

11、D1 LED Diode 8 LED D2 D3 D4 LED D5 D6 D7 D8 D9 1 RESET S1 SW 1 SPEAKER LS1 SIP-2 1 USB J2 USB Connector10103 软件系统的设计3.1 使用单片机资源的情况通用寄存器 R5,R4,R0,R1,R3,R2用户 RAM 区 30H,31H专用寄存器 A,B,DPTR,位寻址区 21H,20H3.2 软件系统各模块功能简要介绍初始化程序:初始化定时器唱歌程序:从表格中取出数据,利用中断程序产生不同频率的方波,同时调延时程序产生不同的节拍中断程序:定时时间到,产生方波判键程序:判断哪个键按下,转向相

12、应的子程序执行相应的动作音符表:用于产生曲调按键程序:分别执行选歌,开启,重复的功能11113.3 软件系统程序流程框图YN 3.4 软件系统程序清单ORG 0000HAJMP LOOOOPORG 000BHAJMP TIM0ORG 001BHRETI开始用延时产生节拍调键盘程序开中断一首曲子播完?初始化查表调音符数据1212ORG 0023H LOOOOP: MOVA,#01HLOOOP: MOV P2,#0F3H MOV P1,ARL AMOV R2,#0FFHDELAY0: MOV R3,#0FFHDJNZ R3,$MOV R4,#0FFHDJNZ R4,$DJNZ R2,DELAY0J

13、NB P3.3,STARTLJMP LOOOPSTART: MOV P2,#06HMOV R5,#00H ;初始化MOV TMOD,#00010001B MOV IE,#10101010BMOV DPTR,#TAB2 ;装第一首歌MOV 30H,DPL ;DPTR 低 8 位送 30H 暂存MOV 31H,DPH ;DPTR 高 8 位送 31H 暂存START1: INC R4 ;产生 8 位随机数MOV A,#01010101BMOV B,R4MUL AB ;8 位随机数由 P1 口输出MOV P1,AMOV DPL,30HMOV DPH,31H MOV A,#00HMOVC A,A+DP

14、TR ;查表MOV R0,A ;音符数据送 R0 崭存MOV A,#00HINC DPTRMOVC A,A+DPTR ;查表MOV R1,A ;节拍数据送 R1 崭存1313INC DPTRMOV 30H,DPLMOV 31H,DPHCJNE A,#01H,ELECT ;一首歌没结束转 ELECTINC R5 ;结束歌曲计数器加 1ELECT: JZ START ;所有歌曲结束转 START 循环MOV A,R0JNZ SINGCLR TR0SETB P3.7LOOP1: ACALL DELAY ;调用延时子程序DJNZ R1,LOOP1SJMP START1SING: MOV DPTR,#T

15、AB1 ;音符表首址送 DPTRDEC R0 ;计算音符MOV A,R0MOV B,#02H MUL ABMOV R0,AMOVC A,A+DPTR ;查表MOV 21H,AINC DPTRMOV A,R0MOVC A,A+DPTRMOV 20H,AMOV TL0,20H MOV TH0,21HSETB TR0 ;开 T0 定时器LOOP2: ACALL DELAYDJNZ R1,LOOP2AJMP START1TIM0: MOV TL0,20HMOV TH0,21HCPL P3.71414RETI ;中断返回DELAY: MOV R2,#70DELAY1: MOV R3,#252DJNZ R

16、3,$JNB P3.3,AGAIN ;重复正播放的曲子JNB P3.4,FORM ;上一曲开关按下转 FORMJNB P3.5,NEXT ;下一曲开关按下转 NEXTDJNZ R2,DELAY1RETAGAIN: JNB P3.3,$ ;等待键释放LJMP KEYWORKFORM: CLR EA ;关中断JNB P3.4,$ ;等待键释放CJNE R5,#00H,ZERO ;不是第一首歌曲转 ZER0MOV R5,#04H ;是第一首将最后一首歌曲装入歌曲计数器SJMP KEYWORKZERO: DEC R5 ;歌曲向上进一首SJMP KEYWORKNEXT: CLR EAJNB P3.5,$

17、CJNE R5,#04H,LASTMOV R5,#00HLJMP KEYWORKLAST: INC R5 ;歌曲下翻一首LJMP KEYWORK KEYWORK: MOV DPTR,#TAB ;将歌曲排列表装入 DPTRMOV A,R5 ;将 R5 的内容送 ARL A SETB EA ;开中断JMP A+DPTR ;根据 A 的内容转向不同歌曲TAB: AJMP MUSIC2AJMP MUSIC3AJMP MUSIC41515AJMP MUSIC5MUSIC2: MOV DPTR,#TAB2 ;第 2 首歌曲首址送 DPTRMOV P2,#06HGONG: MOV 30H,DPLMOV 31

18、H,DPHAJMP START1MUSIC3: MOV DPTR,#TAB3MOV P2,#5BHSJMP GONGMUSIC4: MOV DPTR,#TAB4MOV P2,#4FHSJMP GONGMUSIC5: MOV DPTR,#TAB5MOV P2,#66HSJMP GONG;*(音符表)*;TAB1: DW 64021,64185,64331,64400,64524,64632,64732DW 64777,64860,64934,64968,65030,65085,65134DW 65157,65198,65235,65252,65283,65310,65335;*(兰花草)*;TA

19、B2: DW 0608H,0A08H,0A08H,0A08H,0A18H,0908H,0808H,0908HDW 0808H,0708H,0620H,0D08H,0D08H,0D08H,0D08H,0D18HDW 0C08H,0A08H,0C08H,0C08H,0B08H,0A20H,0A08H,0D08HDW 0D08H,0C08H,0A18H,0908H,0808H,0908H,0808H,0708HDW 0610H,0310H,0308H,0808H,0808H,0708H,0618H,0A08HDW 0908H,0808H,0708H,0508H,0620H,0908H,0808H,0

20、708HDW 0508H,0640H,0001H;*(梁祝)*;TAB3: DW 0A10H,0C08H,0D04H,0F08H,1004H,0D04H,0F04H,0C08HDW 1308H,1504H,1404H,1304H,1104H,1304H,1018H,1008HDW 1004H,1104H,0E08H,0D04H,0C08H,0D04H,0F08H,1008HDW 0A08H,0F08H,0D04H,0C04H,0D04H,0F04H,0C18H,1108HDW 1304H,0E08H,1008H,0D04H,0F04H,0C08H,0C10H,0A08HDW 0C02H,0A0

21、8H,0C08H,0D02H,0E04H,1004H,0D18H,0C04H1616DW 0D04H,0F08H,1004H,1308H,1108H,1008H,1104H,1004HDW 0F08H,0D04H,0C04H,0A10H,0F10H,0D08H,0F02H,0D04HDW 0C04H,0A04H,0C04H,0D04H,0F04H,0C38H,0001H;*(让我们荡起双桨)*;TAB4: DW 0608H,0808H,0908H,0A18H,0C08H,0A08H,0808H,0910HDW 0620H,0008H,0808H,0908H,0A08H,0C18H,0001H,

22、0C08HDW 0D10H,0910H,0A30H,0001H,0A08H,0C08H,0D20H,0C18HDW 0D08H,0F08H,0E04H,0D04H,0C08H,0D08H,0A10H,0004HDW 0808H,0908H,0A18H,0C08H,0810H,0610H,0808H,0908HDW 0A08H,0D08H,0C30H,0010H,0A20H,0D18H,0001H,0D08HDW 0C08H,0B08H,0A10H,0001H,0920H,0A18H,0C08H,0608HDW 0808H,0910H,0010H,0808H,0908H,0A10H,0C0BH,

23、0001HDW 0C04H,0D10H,0F10H,0E08H,0D08H,0C08H,0A08H,0D40HDW 0001H;*(童年)*;TAB5: DW 0A08H,0C08H,0C10H,0C08H,0A08H,0D08H,0D08H,0E08HDW 0D08H,0D08H,0D08H,0D08H,0C08H,0F10H,0F08H,0F08HDW 0F08H,0D08H,0F08H,0D08H,0C40H,0A08H,0C08H,0C10HDW 0C08H,0A08H,0D08H,0D08H,0E08H,0D08H,0D08H,0D08HDW 0D08H,0C08H,0F10H,0F

24、08H,0F08H,0F08H,0D08H,0D08HDW 0F08H,1040H,1308H,1308H,1310H,1310H,1108H,1008HDW 0F08H,0F10H,0D08H,0D08H,0F08H,0D08H,0F08H,1008HDW 1008H,1008H,1008H,1008H,0F08H,1108H,1008H,1040HDW 1108H,1110H,1108H,1108H,1008H,1010H,0F08H,0F10HDW 0F08H,1008H,0F08H,0D08H,0C08H,0C08H,0C10H,0C08HDW 0D08H,0C08H,1008H,11

25、08H,0F40H,0001H,0000HEND17174 设计结论、仿真结果、误差分析、教学建议4.1 设计结论及使用说明此音乐播放器能够播放四首曲子,且用按键选择曲目,基本实现了设计要求。用数据线连上电脑充当电源,将已下载程序的单片机插入插座,按下AGAIN 键可重复播放当前曲子,按下 FORM 键可播放上一曲,按下 NEXT 键可播放下一曲,按下 REST 键实现复位,从第一首曲子开始。4.2 设计课题的仿真结果图 4.1 第一首曲子1818图 4.2 第二首曲子图 4.3 第三首曲子1919图 4.4 第四首曲子4.3 误差分析1有时会出现程序一点错误也没有,但就是不能正常运行的现象,

26、最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的 RET 返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2程序中的跳转指令的运用很重要,为保险起见,都用 LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用 JNZ 指令时,跳转范围比较少,这时要用一个标号中转。3编程时要注意,在程序开始时,要写入各定时器中断的入口地址。4编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。5程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。4.4 设计体会本学期学习单片机的时间只有十几周时间,对单片机的硬件设计,软件设计掌握的

27、深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次编写单片机的大2020程序,很有成就感。在一个好的氛围里才能踏下心来做东西,在这几天课设的时间里,实验室的氛围对我们的影响很大,大家一起努力,这也是我们能完成课设的动力。另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误,克服困难,我们也是这么做的,这在课设中十分重要。电路板的设计过程中知道了制作电路板的流程,让我对电路板的制作不在感到敬畏,对自己的动手能力有了很大的自

28、信。焊接是在同学的帮助下完成的,充分感受到了双面板焊接的不方便,和艰辛。此次课程设计可以说是让我获益匪浅。通过查阅了很多资料,了解了许多汇编程序的思想,扩展了自己的视野,不再仅仅局限于书本中几条简短的程序,而且更重要的是明白写程序的态度:仔细谨慎,精益求精。在系统加电调试中,针对一些问题,熟练掌握了根据原理分步测试,将错误之处缩小的最小范围内。4.5 教学建议建议课堂上多讲解一些编程实例,作业方面建议多布置些实例方面的编程题,同时也期望老师看作业是能尽量把我们做错的地方标出来,更希望老师能够亲和些,课后能像朋友一样相处。2121参考文献1 曹巧媛,单片机原理及应用M.北京:电子工业出版社,1997.7;2赵秀珍,单永磊,单片微型计算机原理及其应用M.北京:中国水利水电出版社,2001.8;3张洪润,兰清华,单片机应用技术教程M.北京:清华大学出版社,1997.11; 4李华,MCS-51 系列单片机实用接口技术M.北京:北京航空航天大学出版社,1993.8;5马忠梅,单片机的 C 语言 Windows 环境编程宝典M. 北京:北京航空航天大学出版社,2003.6;6李广第, 单片机基础M北京:北京航空航天大学出版社,2007.62222致 谢首先感谢王韧老师的指导,再感谢同组组员的帮助,也感谢班上同学提供的器材。没有你们的帮助,单凭我一人努力是很难成功的。再次表示深深的感谢!

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报