课程设计 基于单片机的音乐播放器_第1页
课程设计 基于单片机的音乐播放器_第2页
课程设计 基于单片机的音乐播放器_第3页
课程设计 基于单片机的音乐播放器_第4页
课程设计 基于单片机的音乐播放器_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

5、47;2÷Fr65536-1000000÷2÷Fr65536-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值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934

6、#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198 (6) 每个音符使用1个字节,

7、字节的高4位代表音符的高低,低4位代表音符的节拍,表2为节拍与节拍码的对照.如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间.假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推.所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表3为1/4和1/8节拍的时间设定. 2 硬件系统的设计2.1 硬件系统各模块功能简要介绍2.1.1 单片机最小系统 图2.1 单片机最小系统(1) 时钟源电路 单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构如图2.1。可以根据情况选择6

8、MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择22pF左右的瓷片电容。 (2) 复位电路 单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如图2.1。上电自动复位通过电容C3充电来实现。手动按键复位是通过按键将电阻R1与VCC接通来实现。2.1.2 发光二极管图2.2 发光二极管当接通电源,单片机运行时,八个二极管随着不同的调子闪烁,增加美感。2.1.3 一位数码管图2.3 一位数码管当有键按下时,数码管显示当前的曲目2.1.4

9、蜂鸣器发声 图2.3 蜂鸣器发声利用单片机的P3.7口产生不同音调所对应的方波来使蜂鸣器发声,使用PNP三级管来驱动。2.1.5 按键 图2.4 按键 按下AGAIN键可播放重复的曲子也可开启播放,按下FORM键可播放上一曲,按下NEXT键可播放下一曲。2.2 电路原理图、PCB图、元器件布局图2.2.1 电路原理图图2.4 总电路图2.2.1 PCB图图2.5 PCB图2.2.1 元器件布局图图2.5 元器件布局图2.3 元器件清单Bill of Material for 音乐播放器.BomUsed Part Type Designator Footprint Description = =

10、 = = = 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 R14 R15 R16 1 DIODE D1 LED Diode 8 LED D2 D3 D4 LED D5 D6 D7 D8 D9 1 RESET S1 SW 1 SPEAKER LS1 SIP

11、-2 1 USB J2 USB Connector3 软件系统的设计3.1 使用单片机资源的情况通用寄存器R5,R4,R0,R1,R3,R2用户RAM区30H,31H专用寄存器A,B,DPTR,位寻址区21H,20H3.2 软件系统各模块功能简要介绍初始化程序:初始化定时器唱歌程序:从表格中取出数据,利用中断程序产生不同频率的方波,同时调延时程序产生不同的节拍中断程序:定时时间到,产生方波判键程序:判断哪个键按下,转向相应的子程序执行相应的动作音符表:用于产生曲调按键程序:分别执行选歌,开启,重复的功能 3.3 软件系统程序流程框图开始初始化查表调音符数据用延时产生节拍调键盘程序开中断 Y一首

12、曲子播完? N 3.4 软件系统程序清单 ORG 0000H AJMP LOOOOP ORG 000BH AJMP TIM0 ORG 001BH RETI ORG 0023H LOOOOP:MOVA,#01HLOOOP: MOV P2,#0F3H MOV P1,ARL AMOV R2,#0FFHDELAY0:MOV R3,#0FFHDJNZ R3,$MOV R4,#0FFHDJNZ R4,$DJNZ R2,DELAY0 JNBP3.3,STARTLJMP LOOOPSTART: MOV P2,#06H MOV R5,#00H ;初始化 MOV TMOD,#00010001B MOV IE,#1

13、0101010B MOV DPTR,#TAB2 ;装第一首歌 MOV 30H,DPL ;DPTR低8位送30H暂存 MOV 31H,DPH ;DPTR高8位送31H暂存START1: INC R4 ;产生8位随机数 MOV A,#01010101BMOV B,R4 MUL AB ;8位随机数由P1口输出MOV P1,A MOV DPL,30H MOV DPH,31H MOV A,#00H MOVC A,A+DPTR ;查表 MOV R0,A ;音符数据送R0崭存 MOV A,#00H INC DPTR MOVC A,A+DPTR ;查表 MOV R1,A ;节拍数据送R1崭存 INC DPTR

14、 MOV 30H,DPL MOV 31H,DPH CJNE A,#01H,ELECT ;一首歌没结束转ELECT INC R5 ;结束歌曲计数器加1 ELECT: JZ START ;所有歌曲结束转START循环 MOV A,R0 JNZ SING CLR TR0 SETB P3.7 LOOP1: ACALL DELAY ;调用延时子程序 DJNZ R1,LOOP1 SJMP START1 SING: MOV DPTR,#TAB1 ;音符表首址送DPTR DEC R0 ;计算音符 MOV A,R0 MOV B,#02H MUL AB MOV R0,A MOVC A,A+DPTR ;查表 MOV

15、 21H,A INC DPTR MOV A,R0 MOVC A,A+DPTR MOV 20H,A MOV TL0,20H MOV TH0,21H SETB TR0 ;开T0定时器 LOOP2: ACALL DELAY DJNZ R1,LOOP2 AJMP START1 TIM0: MOV TL0,20H MOV TH0,21H CPL P3.7 RETI ;中断返回 DELAY: MOV R2,#70 DELAY1: MOV R3,#252 DJNZ R3,$ JNB P3.3,AGAIN ;重复正播放的曲子 JNB P3.4,FORM ;上一曲开关按下转FORM JNB P3.5,NEXT

16、;下一曲开关按下转NEXT DJNZ R2,DELAY1 RETAGAIN: JNB P3.3,$ ;等待键释放 LJMP KEYWORK FORM: CLR EA ;关中断 JNB P3.4,$ ;等待键释放 CJNE R5,#00H,ZERO ;不是第一首歌曲转ZER0 MOV R5,#04H ;是第一首将最后一首歌曲装入歌曲计数器 SJMP KEYWORK ZERO: DEC R5 ;歌曲向上进一首 SJMP KEYWORK NEXT: CLR EA JNB P3.5,$ CJNE R5,#04H,LAST MOV R5,#00H LJMP KEYWORK LAST: INC R5 ;歌

17、曲下翻一首 LJMP KEYWORK KEYWORK: MOV DPTR,#TAB ;将歌曲排列表装入DPTR MOV A,R5 ;将R5的内容送A RL A SETB EA ;开中断 JMP A+DPTR ;根据A的内容转向不同歌曲 TAB: AJMP MUSIC2 AJMP MUSIC3 AJMP MUSIC4 AJMP MUSIC5 MUSIC2: MOV DPTR,#TAB2 ;第2首歌曲首址送DPTR MOV P2,#06H GONG: MOV 30H,DPL MOV 31H,DPH AJMP START1 MUSIC3: MOV DPTR,#TAB3 MOV P2,#5BH SJM

18、P GONG MUSIC4: MOV DPTR,#TAB4 MOV P2,#4FH SJMP GONG MUSIC5: MOV DPTR,#TAB5 MOV P2,#66H SJMP GONG ;*(音符表)*; TAB1: DW 64021,64185,64331,64400,64524,64632,64732 DW 64777,64860,64934,64968,65030,65085,65134 DW 65157,65198,65235,65252,65283,65310,65335;*(兰花草)*;TAB2: DW 0608H,0A08H,0A08H,0A08H,0A18H,0908H

19、,0808H,0908H DW 0808H,0708H,0620H,0D08H,0D08H,0D08H,0D08H,0D18H DW 0C08H,0A08H,0C08H,0C08H,0B08H,0A20H,0A08H,0D08H DW 0D08H,0C08H,0A18H,0908H,0808H,0908H,0808H,0708H DW 0610H,0310H,0308H,0808H,0808H,0708H,0618H,0A08H DW 0908H,0808H,0708H,0508H,0620H,0908H,0808H,0708H DW 0508H,0640H,0001H;*(梁祝)*; TAB

20、3: DW 0A10H,0C08H,0D04H,0F08H,1004H,0D04H,0F04H,0C08H DW 1308H,1504H,1404H,1304H,1104H,1304H,1018H,1008H DW 1004H,1104H,0E08H,0D04H,0C08H,0D04H,0F08H,1008H DW 0A08H,0F08H,0D04H,0C04H,0D04H,0F04H,0C18H,1108H DW 1304H,0E08H,1008H,0D04H,0F04H,0C08H,0C10H,0A08H DW 0C02H,0A08H,0C08H,0D02H,0E04H,1004H,0D1

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

22、1H,0A08H,0C08H,0D20H,0C18H DW 0D08H,0F08H,0E04H,0D04H,0C08H,0D08H,0A10H,0004H DW 0808H,0908H,0A18H,0C08H,0810H,0610H,0808H,0908H DW 0A08H,0D08H,0C30H,0010H,0A20H,0D18H,0001H,0D08H DW 0C08H,0B08H,0A10H,0001H,0920H,0A18H,0C08H,0608H DW 0808H,0910H,0010H,0808H,0908H,0A10H,0C0BH,0001H DW 0C04H,0D10H,0F1

23、0H,0E08H,0D08H,0C08H,0A08H,0D40H DW 0001H;*(童年)*;TAB5: DW 0A08H,0C08H,0C10H,0C08H,0A08H,0D08H,0D08H,0E08H DW 0D08H,0D08H,0D08H,0D08H,0C08H,0F10H,0F08H,0F08H DW 0F08H,0D08H,0F08H,0D08H,0C40H,0A08H,0C08H,0C10H DW 0C08H,0A08H,0D08H,0D08H,0E08H,0D08H,0D08H,0D08H DW 0D08H,0C08H,0F10H,0F08H,0F08H,0F08H,0D

24、08H,0D08H DW 0F08H,1040H,1308H,1308H,1310H,1310H,1108H,1008H DW 0F08H,0F10H,0D08H,0D08H,0F08H,0D08H,0F08H,1008H DW 1008H,1008H,1008H,1008H,0F08H,1108H,1008H,1040H DW 1108H,1110H,1108H,1108H,1008H,1010H,0F08H,0F10H DW 0F08H,1008H,0F08H,0D08H,0C08H,0C08H,0C10H,0C08H DW 0D08H,0C08H,1008H,1108H,0F40H,00

25、01H,0000H END4 设计结论、仿真结果、误差分析、教学建议4.1 设计结论及使用说明 此音乐播放器能够播放四首曲子,且用按键选择曲目,基本实现了设计要求。用数据线连上电脑充当电源,将已下载程序的单片机插入插座,按下AGAIN键可重复播放当前曲子,按下FORM键可播放上一曲,按下NEXT键可播放下一曲,按下REST键实现复位,从第一首曲子开始。4.2 设计课题的仿真结果图4.1 第一首曲子图4.2 第二首曲子 图4.3 第三首曲子图4.4 第四首曲子4.3 误差分析1有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。3编程时要注意,在程序开始时,要写入各定时器中断的入口地址。4编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。5程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。4.4 设计体会本学期学习单片机的时间只有十几周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论