资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机课程设计单片机课程设计报告简易单片机音乐播放器设计一、设计任务要求:利用单片机设计模拟音乐播放器功能,播放存储在内部存储器中的乐曲。可实现启动、停止、上一首、下一首等简单功能。二、基本理论知识:1音乐的演奏主要是控制音符和节拍,音符对应不同的声音频率,而节拍表达的是音符持续的时间。2要用单片机产生音频脉冲,只要计算某一音频的后期,将周期除2,利用定时器计时半周期,半周期后将输出脉冲的电平反相,再定半周期时间,对电平又反相,即可实现。如:要实现C调中音1,频率为523HZ,T=1/523=1912us,若fosc=12MHZ,T1工作在方式1,可得定时的初值为65536-956=64580=0FC44HC调音符频率:1 2 3 4 5 6 7 | 频率:523 TH/TL:FC44H 0000H FFFFH三、硬件电路设计:设计一个音乐播放器,有三个按键及控制按钮:播放/暂停、下一曲、上一曲;通过控制按钮控制单片机,播放所要求的音乐,并通过放大电路和喇叭输出声音。同时通过LED灯显示器,用来显示所选曲目,该显示器在音乐播放中关闭,一曲演奏结束时,或选曲时才显示曲目信息,从而利于操作。 电路设计原理图1.89C51单片机拥有4KB的片内ROM和128KB的片内RAM。ROM和RAM的片外寻址范围都为64KB.单片机拥有32个并行口和1个串行口。在89C51单片机中存在5个中断源,其中2个外部中断源、两个内部中断源和一个串行中断源。 通过TXAL1 与TXAL2输入时钟信号,通过p1.0p1.7输出控制现实控制信号的显示,有p3.2、p3.3与p3.5分别作为上一曲、下一曲和开始暂停的控制输入。2.显示电路是一个8位共阴极LED数码管。 单片机的P0.0-P0.7分别与数码管的A、B、C、D、E、F、G、DP相连接。 8位共阴极LED灯3. 晶振电路由两个30pF的电容和一个6Mhz的晶体振荡器组成。节点1与单片机的XTAL2相连接,节点2与单片机的XTAL1相连接,从而为单片机提供时间信号,为音乐的播放节拍控制提供基本时间单位:当晶体振荡频率为6.0MHz,定时器工作在方式1下时,若各音阶相对应的定时器计数初值为X,则可根据下式计算X: 4. 控制电路,键一与p3.2相连、键二与p3.3相连、键3与p3.5相连。当电键按下时接口接低电平,从而实现对音乐播放器的控制。键一联通实现上一曲更换,键二联通实现下一曲更换,键三联通实现开始暂停操作。5. 发声电路由数字扬声器连接p2.0接口实现音乐的输出,由控制电路发出操作指令后,单片机调用相应程序,并将音乐信号由p2.0口输出,通过驱动扬声器发出美妙的音乐。6. 总体电路设计四、软件设计及流程图:主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。确定歌曲曲目后,数码管再进行显示。然后,子程序对是否播放进行循环判断,得到播放中断的指令后再进行播放。执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。在播放音乐的过程中,查表子程序循环判断音乐是否结束。当音乐结束时,程序跳转回曲目识别子程序。 1. 播放/暂停子程序播放/暂停在程序利用内部中断T0口。将T0口设为计数中断并工作在方式2下。标识符初值赋值为R1=00H,计数初值设为TH0=0FFH,TL0=0FFH。当按键第一次产生中断信号时,播放/暂停子程序改变标志符R1,将其赋值为01H。此时播放器由暂停状态进入播放状态。当按键第二次产生中断信号时,播放/暂停子程序判断R1是否为02H后,将R1再次赋值为00H。此时,播放器由播放状态进入暂停状态。 代码实现如下: POP DPL ;恢复现场 POP DPH POP ACC SETB EA RETI ;中断返回START PAUSE:CPLF0 ;开始/暂停中断处理程序,将标置位取反 JB F0,RETURN ; SETB TR0 RETURN RETI ;中断返回DELAY: MOV 27H,26H D2: MOV 28H,#125D3: MOV 29H,#248 DJNZ 29H,$ DJNZ 28H,D3 DJNZ 27H,D2 DJNZ R2,DELAY RET2.曲目选择曲目选择子程序分为上一曲子程序和下一曲子程序。上一曲和下一曲功能实现方式类似,分别由外部中断和外部中断。下面以实现上一曲功能为例:首先设置标识符R7初始值为00H。当按键产生中断信号,上一曲中断子程序改变标识符R7的值为01H并改变曲目R0的值。播放子程序判断出标识符R7改变后,先将R7赋值为00H,然后跳转到曲目识别子程序。代码实现如下:POP DPL ;恢复现场POP DPHPOP ACCSETB EA RETI ;中断返回LAST_MUSIC: PUSH ACC ;上一曲中断程序处理开始,保护现场PUSH DPH PUSH DPL CLR EA ;关中断 MOV A,22H ;曲目数送A CJNE A,#1,YY ;是否是第一首 MOV 22H,#N MOV B,#4 ;将R7指向最后一首歌曲MOV A,#N-1MUL AB MOV R7,A AJMP BACK2 ;处理结束YY: DEC 22H MOV A,R7 SUBB A,#4 MOV R7,ABACK2: MOV R4,#00H MOV A,22H MOV DPTR,#OUT_TAB MOVC A,A+DPTR MOV OUT_NUM,A ;数码管显视相应歌曲的编号3.音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以产生音阶,音阶与频率的关系见表1。由于频率的倒数是周期,因此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。将与扬声器连接的P1.7取反后就可得到方波的周期,从而达到了控制频率,即音阶的目的。音阶频率(Hz)音阶频率(Hz)音阶频率(Hz)123456701311471651751962202470123456702622943303493924404940123456705235876596987848809880低八度音中音高八度音音调的长短用节拍数表示(例如1/4拍、2/4拍、),不同节拍数的不同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序设定为四分之一拍,节拍值只能是它的整数倍。音 符频率(Hz)简谱码(T值)音 符频率(Hz)简谱码(T值)低1DO26263628#4FA#74064860#1DO#27763731中5SO 78464898低2RE29463835#5SO#83164923#2RE#31163928中6LA88064968低3M33064103#693264994低4FA34964204中7SI98865030#4FA#37064260高1DO104665058低5SO39264261#1DO#110965085#5SO#41564400高2RE117565110低6LA44064443#2RE#124565124#646664524高3M131865157低7SI49464524高4FA139765178中1DO52364331#4FA#1480651894.C调各音符频率与计数值T的对照表如下表所示:5 . 每个音符使用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节拍曲调值DELAY曲调值DELAY调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒 四分之一拍延时代码设计:1/4拍的延迟时间=187毫秒DELAY: MOV R7,#2D2: MOV R4,#187D3: MOV R3,#248DJNZ R3,$DJNZ R4,D3DJNZ R7,D2RET6. 建立音乐代码库 (1)先找出乐曲的最低音和最高音范围,然后确定音符表T的顺序。(2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。(3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。(4)音符节拍码00H为音乐结束标记。7.歌曲设计根据音乐软件的设计方法,简谱对应的简谱码、T值、节拍数如表所示。简谱发音简谱码T值节拍码节拍数低7低音Si16452411/41中音Do26458022/42中音Re36468433/43中音Mi464777414中音Fa56482051+1/45中音So66489861+1/26中音La764968827中音Ti865030A2+1/2高1高音Do965058C
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号