单片机音乐播放器程序设计(共14页).doc

上传人:飞****2 文档编号:14247916 上传时间:2022-05-03 格式:DOC 页数:14 大小:77.50KB
返回 下载 相关 举报
单片机音乐播放器程序设计(共14页).doc_第1页
第1页 / 共14页
单片机音乐播放器程序设计(共14页).doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《单片机音乐播放器程序设计(共14页).doc》由会员分享,可在线阅读,更多相关《单片机音乐播放器程序设计(共14页).doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上实验报告 51单片机设计音乐播放器随着科技的发展,音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。目前单片机以其体积小、价格低、编程灵活等特点在这一领域独领风骚。一、系统功能要求:1、具有自动循环播放所有乐曲功能。2、具有单独选择某首乐曲循环播放功能。3、具有顺序查找乐曲循环播放功能。4、具有停止播放功能。二、系统整体方案提示:利用AT89S52产生乐曲音符,再把乐普翻译成计算机音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。由于音符和节拍是由计算机产生的,所以发音音符和节拍准确。1、循环播放:按下K1键即可实现。2、顺序查找乐曲循环播放

2、:按下K2键即可实现。3、停止播放:按下K3键即可实现。4、单独选择某首乐曲循环播放:按下K4K7键即可实现。系统整体方案框图如下:利用AT89C51产生乐曲音符,再把乐普翻译成绩算计音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。由于音符和节拍是由计算机产生的,所以发音音符和节拍准确。整体框图如图图一所示。三、硬件系统原理图:硬件系统原理图如下页图:1)单片机:选择AT89S52,由于AT89S52是一个低电压,高性能CMOS8位单片机,内含4k bytes的可反复擦鞋的制度程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高

3、密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机AT89S52提供了高性价比的解决方案。其内部有足够本系统对存储器的要求,不用外扩。2)按键控制电路:如图由P1口作为输入,构成矩阵式按键接口方式。 3)输出控制:此部分的放大电路简单容易实现。主要采用了一个小功率PNP型硅管9012,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定。分压电阻分别选择1K和5.5K。嗡宁器一端接+5V电压,一端接晶体管的发射极。由P3.0 输出预定的方波,加到晶体管进行放大, 再输出到蜂鸣器,很好的实现了频率、声音的转换。

4、4)复位:复位是由外部的复位电路来实现的。四、系统软件设计1、 单片机演奏乐曲的原理通过控制定时器的定时时间来产生不同频率的方波,驱动喇叭发出不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。把乐谱中的音符和相应的节拍变换为定常数和延迟常数,作为数据表格存放在存储器中。由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。当延迟时间到时,再查下一个音符的定时常数和延迟常数。依次下去,就可以自动演奏乐曲。单片机所用的晶振的频率为6MHz,琴键所对应音符、频率及定时常数三者之间的对应关系如下所示。C调音符71234567频率(Hz)494

5、524588660698784880988半周期(ms)1.010.950.850.760.720.640.570.51定时值FE07FE25FE57FE84FE98FEC0FEE3FF012、程序执行流程图1)说明:l软件执行顺序:先识别按键,再计算键值,根据键值执行相应的音乐播放程序。2乐曲存放约定:连续两个单元的内容为0FFH,0FFH作为上一首乐曲结束标志。2)系统程序流程图: 3、乐演奏程序清单 ORG 0000H LJMP KEY1 ORG 001BH MOV TH1,R1 MOV TL1,R0 CPL P3.0 RETI ORG 300H AJMP KEY1KS1: MOV A,

6、#FFH MOV P1,A MOV A,P1;读P1口键值 CPL A;A取反,无键按下则全“0” ANL A,0FH;屏蔽A高半字节 RETKEY1: ACALL KS1;检查是否有键闭合 JNZ LK1;A非“0”则转移 ACALL D10ms;显示一次(延时10 ms) AJMP KEY1LK1: ACALL D10ms;有键闭合二次消抖延时20 ms ACALL D10ms ACALL KS1;再检查有键闭合否 JNZ LK2;有键闭合,转LK2 ACALL D10ms AJMPKEY1;经去抖动确认无键闭合,延时10 ms后转KEY1LK2: MOV R2,#0EH;扫描初值进R2

7、MOV R4,#00H;扫描列号送R4LK4: MOV P1,A;扫描初值送P1口 MOV A,P1;读P1口 JB ACC.0,LONE;ACC.0=1,第0行无键闭合,转LONE MOV A,#00H;装第0行行值 AJMP LKPLONE: JB ACC.1,LTWO;ACC.1=1,第1行无键闭合,转LTWO MOV A,#04H;装第1行行值 AJMP LKPLTWO: JBACC.2,LTHR;ACC.2=1,第2行无键闭合,转LTHR MOV A,#08H;装第2行行值 AJMP LKPLTHR: JB ACC.3,NEXT;ACC.3=1,第3行无键闭合则转NEXT MOV A

8、,#0CH;装第3行行值 LKP: ADD A,R4;计算键值 PUSH ACC;保护键值,将键值入栈 LK3: ACALL D10ms;延时10ms消抖 ACALL KS1;查键是否继续闭合,若闭合再延时 JNZ LK3 POP ACC;若键起,则键码送A RET NEXT: INC R4;扫描列号加1 MOV A,R2 JNB ACC.3,KND;笫3位为“0”,已扫完最高列则转KEND RLA A;循环左移一位 MOV R2,A AJMP LK4;进行下一列扫描 KEND: AJMP KEY1;扫描完毕,开始新的一轮 LONE: JB ACC.1,LTWO MOV A,#04H AJMP

9、 LKP LTWO: JB ACC.2,LTHR MOV A,#08H AJMP LKPLTHR: JB ACC.3,NEXT MOV A,#0CH LKP: ADD A,R4 PUSH ACC LK3: ACALL D10ms JNZ LK3 POP ACC RET NEXT: INC R4 MOV A,R2 JNB ACC.3,KND RLA A MOV R2,A AJMP LK4 KEND: AJMP KEY1 K1: MOV DPTR,#TAB1 LJMP START K2: MOV DPTR,#TAB2 LJMP START K3: MOV DPTR,#TAB3 LJMP START

10、 K4: MOV DPTR,#TAB4 LJMP START K5: MOV DPTR,#TAB5 LJMP START START: MOV TMOD,#10H MOV IE,#88H MOVC A,A+DPTR MOV R0,A INC DPTR CLR A MOVC A,A+DPTR MOV R0,A ORL A,R1 JZ NEXT0 MOV R0,A ANL A,R1 CJNE A,#0FFH,NEXT SJMP KEY NEXT: MOV TH1,R1 MOV TR1,R0 SETB TR1 SJMP NEXT1 NEXT0: CLR TR1 NEXT1: CLR A INC DP

11、TR MOVC A,A+DPTR MOV R2,A LOOP1: LCALL D200 DJNZ R2,LOOP1 INC DPTR LJMP LOOP D200: MOV R4,#81H D200B: MOV A,#0FFH D200A: DEC A JNZ D200A DEC R4 CJNE R4,#00H,D200B RET D10ms: MOV R7,#05H LP1: MOV R6,#0F9H NOP NOP LP2: DJNZ R6,LP2 DJNZ R7,LP1 RET RETITAB1: DB 0FEH,25H,02H,0FEH,25H,02H DB 0FEH,25H,04H,

12、0FDH,80H,04H DB 0FEH,84H,02H,0FEH,84H,02H DB 0FEH,84H,04H,0FEH,25H,04H DB 0FEH,25H,02H,0FEH,84H,02H DB 0FEH,0C0H,04H,0FEH,0C0H,04H DB 0FEH,98H,02H,0FEH,84H,02H DB 0FEH,57H,08H,00H,00H,04H DB 0FFH,0FFHTAB2: DB 0FEH,0E3H,01H,0FEH,0E3H,02H,0FEH,0E3H,01H DB 0FEH,033H,01H,0FEH,0C0H,01H,0FEH,84H,02H DB 0F

13、EH,84H,02H,0FEH,57H,02H DB 0FEH,57H,04H DB 0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H DB 0FEH,57H,01H,0FEH,57H,02H,0FEH,84H,01H,0FDH,0C8H,01H DB 0FEH,57H,04H DB 00H,00H,04H DB 0FFH,0FFHTAB3: DB 0FEH,0C0H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H, DB 0FEH,0E3H,03H,0FEH,57H,02H ,0FEH,0C0H,04H,00H,00H D

14、B 01H,00H,00H,01H,00H,00H,01H,0FEH,0C0H,04H,0FEH,0C0H,02H DB 0FEH,0E3H,02H,0FEH,84H,04H,0FEH,84H,04H,0FEH,57H,02H DB 0FEH,25H,04H,00H,00H,01H,00H,00H,01H,00H,00H,01H DB 0FEH,0E3H,04H,0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H DB 0FEH,57H,04H,0FEH,84H,04H,0FEH,01H,04H,0FEH,0E3H,04H DB 0FEH,0E3H,04H,0F

15、EH,0C0H,04H,0FEH,0E3H,04H,0FEH,84H,04H DB 0FEH,0C0H,04H,00H,00H,02H,00H,00H,02H,00H,00H,02H DB 0FFH,0FFHTAB4: DB 0FEH,84H,04H,0FEH,84H,02H,0FEH,84H,02H DB 0FEH,0C0H,02H,0FEH,0C0H,04H,0FEH,0E3H,04H DB 0FEH,0C0H,04H,0FEH,57H,02H,0FEH,84H,02H DB 0FEH,25H,04H,00H,00H,04H DB 0FEH,57H,04H,0FEH,57H,02H,0FE

16、H,57H,02H DB 0FEH,57H,02H,0FEH,57H,04H,0FEH,25H,02H DB 0FEH,07H,04H,0FEH,57H,02H,0FDH,0C6H,02H DB 0FDH,80H,04H,00H,00H,04H DB 0FEH,25H,04H,0FEH,25H,02H,0FEH,25H,02H DB 0FEH,25H,02H,0FEH,25H,04H,0FEH,57H,04H DB 0FEH,0E3H,04H,0FEH,0E3H,04H DB 0FEH,0E3H,02H,0FEH,0C0H,02H,0FEH,98H,04H DB 0FFH,0FFHTAB5:

17、DB 0FEH,25H,02H,0FEH,25H,02H DB 0FEH,25H,04H,0FDH,80H,04H DB 0FEH,84H,02H,0FEH,84H,02H DB 0FEH,84H,04H,0FEH,25H,04H DB 0FEH,25H,02H,0FEH,84H,02H DB 0FEH,0C0H,04H,0FEH,0C0H,04H DB 0FEH,98H,02H,0FEH,84H,02H DB 0FEH,57H,08H,00H,00H,04H DB 0FEH,0E3H,01H,0FEH,0E3H,02H,0FEH,0E3H,01H DB 0FEH,033H,01H,0FEH,

18、0C0H,01H,0FEH,84H,02H DB 0FEH,84H,02H,0FEH,57H,02H DB 0FEH,57H,04H DB 0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H DB 0FEH,57H,01H,0FEH,57H,02H,0FEH,84H,01H,0FDH,0C8H,01H DB 0FEH,57H,04H DB 00H,00H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H, DB 0FEH,0C0H,04H,0FEH,0E3H,03H,0FEH,57H,02H DB 0FEH,0C0H,04H,0

19、0H,00H,01H,00H,00H,01H,00H,00H,01H,0FEH,0C0H,04H DB 0FEH,0C0H,02H,0FEH,0E3H,02H,0FEH,84H,04H,0FEH,84H,04H DB 0FEH,57H,02H 0FEH,25H,04H,00H,00H,01H,00H,00H,01H,00H,00H,01H DB 0FEH,0E3H,04H,0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H DB 0FEH,57H,04H,0FEH,84H,04H,0FEH,01H,04H,0FEH,0E3H,04H DB 0FEH,0E3H,0

20、4H,0FEH,0C0H,04H,0FEH,0E3H,04H,0FEH,84H,04H DB 0FEH,0C0H,04H,00H,00H,04H,00H,00H,04H,00H,00H,04H DB 0FEH,84H,04H,0FEH,84H,02H,0FEH,84H,02H DB 0FEH,0C0H,02H,0FEH,0C0H,04H,0FEH,0E3H,04H DB 0FEH,0C0H,04H,0FEH,57H,02H,0FEH,84H,02H DB 0FEH,25H,04H,00H,00H,04H DB 0FEH,57H,04H,0FEH,57H,02H,0FEH,57H,02H DB

21、0FEH,57H,02H,0FEH,57H,04H,0FEH,25H,02H DB 0FEH,07H,04H,0FEH,57H,02H,0FDH,0C6H,02H DB 0FDH,80H,04H,00H,00H,04H DB 0FEH,25H,04H,0FEH,25H,02H,0FEH,25H,02H DB 0FEH,25H,02H,0FEH,25H,04H,0FEH,57H,04H DB 0FEH,0E3H,04H,0FEH,0E3H,04H DB 0FEH,0E3H,02H,0FEH,0C0H,02H,0FEH,98H,04H DB 0FFH,0FFH END 五、小结l通过本次实验了解计算机发出不同音调声音的编程方法。2通过本次实验熟悉单片机应用系统的开发过程和方法。3通过本次实验如何查找自己所需要的材料。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁