




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、航空航天大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:基于 51 单片机的音乐盒的设计与实现目录第1章总体设计方案 1.1 设计原理 11.2 设计思路 11.3 实验环境 2第2章 详细设计方案 2.1 硬件电路设计 2.2 主程序设计 2.3 功能模块的设计与实现第3章 结果测试及分析 . 3. 36 7. 103.1 结果测试 103.2 结果分析 10参考文献 11附录1:元件清单 . 12附录2: 总电路图 13附录3: 程序代码 14第 1章 总体设计方案1.1 设计原理电子音乐已广泛地应用于社会生活的各个领域。其类型从音乐卡片到CD、MP3 等多种多样,制作原
2、理也各不相同。声音是通过振动产生的。单片机对某一 I/O 引脚以一定的频率循环置 1 和清 0,这一引脚便产生一定频率的方波,该方波 通过放大后作用于扬声器便产生一定频率的声音。若改变输出方波的频率,产生 的声音也就改变了。通过控制输出方波的时间长短 , 声音的长短也就得到控制。 因此,根据乐谱,单片机就可产生电子音乐。音乐中最关键的两个要素是音符和 节拍。单片机控制的音乐发生器系统由硬件电路和软件两部分构成。利用单片机 控制的电子音乐发生器软硬件上具有独特的优点,系统的开发周期短,成本低, 电路制作容易。更换歌曲时,硬件电路无需作任何修改,只需修改软件即可实 现。软件编程时,可用 51 系列
3、单片机的汇编语言。同时还可根据个人的习好通 过软件改变节拍的延时时间,增加电子音乐的趣味性。1.2 设计思路采用汇编语言程序设计的方法结合硬件电路设计方法,利用 Lab6000 实验箱 上已有芯片来实现音乐盒的各项功能。1) 提出方案利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O 反相, 然后重复计时此半周期时间再对 I/O 口反相就可在 I/O 脚上得到此频率的脉冲。 当键盘有键按下时,判断键值,启动计数器 T0,产生一定频率的脉冲,驱动蜂鸣 器,放出乐曲。同时在 LCD显示歌曲序号和歌曲名称。2) 总体方案实现(1) 要产生音频脉冲, 只要算出某一音频的周期 (1/ 音频
4、 ) ,然后将此周期除以 2, 即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出 脉冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 口反相,就可在 I/O 脚上 得到此频率的脉冲。(2) 利用 8051 的部定时器使其工作在计数器模式 MODE1下, 改变记数值 TH0 及 TL0以产生不同频率的方法。 例如频率为 523HZ,其周期 T=1/523=1912微秒, 因 此只要令计数器定时 956/1=956 在每记数 9 次时将 I/O 口反相, 就可得到中音 D0(523HZ)。1.3 实验环境硬件环境: Lab6000实验箱, PC机。软件环境: Wave应
5、用软件。第 2 章 详细设计方案2.1 硬件电路设计硬件电路的设计需要借助 Protel 软件来实现。 基于单片机音乐盒的硬件电路 设计是由 8751单片机芯片、 晶振电路、键控电路、播音电路和显示电路几部分组 成,总体框架图如图 2.1 所示。图 2.1 硬件电路连线图1)单片机电路的设计图 2.2 是 8751 单片机图, 8751 单片机是把那些作为控制应用所必需的基本 容都集成在一个尺寸有限的集成电路芯片上,除模拟比较器外其部结构与 8051 部结构基本一致。如果按功能划分,它由如下功能部件组成,即微处理器、数据 存储器、程序存储器、并行 I/O 口、串行口、定时器 / 计数器、中断系
6、统及特殊功 能寄存器。它们都是通过片单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控 制方式。在 8751 单片机中存在中断源, 其中有两个外部中断源、 两个部中断源和 一个串行中断源。通过 TXAL1与 TXAL2输入时钟信号,通过 p0.0p0.7 输出控制 现实控制信号的显示,通过 P1.0 输出控制蜂鸣器发声,有 INT0,INT1,T1 分别作为上一曲、下一曲和开始暂停的控制输入图 2.2 8751 单片机2)键控电路的设计如图 2.3 控制电路所示,下一曲按键与单片机的 INT1 相连、上一曲按键与 INT0 相
7、连、开始/暂停键与 T1相连。当电键按下时接口接低电平,从而实现对音 乐播放器的控制。下一曲按键接通实现下一曲更换,上一曲按键接通实现上一曲 更换,开始 /暂停按键接通实现开始 / 暂停操作。3)显示电路的设计如果所有的发光二极管的阴极接在一起, 称之为共阴极结构,则数码管显示 段输入高电平有效,当某段输入高电平该段便发光;使用时管子的上下端正中间 的两个或者一个(部公共端已经接在一起)接线端接低电平,其它的每段显示如 图 2.4 所示。 本次课设通过单片机的 P0.0-P0.7 分别与数码管的 a 、b 、c 、d、e 、 f 、g、dp 间接连接,从而显示播放音乐的序号。4)晶振电路的设计
8、如图 2.5 所示,晶振电路由两个 22pF 的电容和一个 6Mhz的晶体振荡器组成。 图中第一条输入线与 8751 单片机的 X1相连接,图中第二条输入线与单片机的 X2 相连接。晶振电路为单片机提供时间信号,为音乐的播放节拍控制提供基本时间 单位。5)播音电路的设计如图 2.6 播音电路所示,播音电路是由数字扬声器连接 p1.0 接口实现音乐的 输出。如果通过 p1.0 直接接通扬声器, 肯定不会发出音乐, 这里还需要通过一个 三极管将电流放大,然后通过单片机调用相应程序, 并将音乐信号由 p1.0 口输出, 驱动扬声器发出美妙的音乐。图 2.6 播音电路2.2 主程序设计主程序实现对单片
9、机进行初始化后,进入曲目识别子程序,进行歌曲曲目判 断。确定歌曲曲目后,数码管再进行显示。然后,子程序对是否播放进行循环判 断,得到播放中断的指令后再进行播放。执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。在播放音乐 的过程中,查表子程序循环判断音乐是否结束。当音乐结束时,程序跳转回曲目 识别子程序。主程序流程图如图 2.7 所示。初始化数码管显示歌曲号开始等待按键,是否(播放 / 暂停,上一 N 曲,下一有曲)?YY依据选择的按键,播放相应的歌曲或者暂停歌曲是否歌曲结束结束图 2.7 主程序流程图2.3 功能模块的设计与实现功能模块包括,对开始 / 暂停,上一曲,下一曲三个中断子程
10、序的设计,具体的设计与实现如下几点所示:1)播放/ 暂停子程序功能模块的设计与实现播放/暂停在程序利用部中断 T0 口。将 T0口设为计数中断并工作在方式 2下。标识符初值赋值为 R1=00H,计数初值设为 TH0=0FFH,TL0=0FF。H当按键第次产生中断信号时, 播放/ 暂停子程序改变标志符 R1,将其赋值为 01H。此时播放器由暂停状态进入播放状态。 当按键第二次产生中断信号时, 播放/ 暂停子程序判 断 R1 是否为 02H后,将 R1再次赋值为 00H。此时,播放器由播放状态进入暂停状态。具体流程图如图 2.8 所示。开始播放音乐按暂停标识符 R0=01H将 R0 赋值为 00H
11、/播放键产生中 断图 2.8 播放 / 暂停子程序功能图2)曲目选择子程序功能模块的设计与实现曲目选择子程序分为上一曲子程序和下一曲子程序。上一曲和下一曲功能实 现方式类似,分别由外部中断 INT 0和外部中断 INT 1。下面以实现上一曲功能为例: 首先设置标识符 R7初始值为 00H。当按键产生中断信号,上一曲中断子程序改变 标识符 R7的值为 01H并改变曲目 R0的值。播放子程序判断出标识符 R7改变后, 先将 R7赋值为 00H,然后跳转到曲目识别子程序。具体流程图如图 2.9 所示。开始图 2.9 曲目选择子程序功能图第 3 章 结果测试及分析3.1 结果测试音乐播放器很好的实现了
12、播放 /暂停、上一曲、下一曲的功能, 并满足了数码 管显示的特殊要求。 音效良好, 能很好听出乐曲的曲名。 当然设计的音乐播放器 也存在着不足之处。 8 位 LED数码管只能显示 10 以的歌曲曲目,超过 10 将无法 显示。3.2 结果分析调试过程中所遇到的问题:(1)在歌曲中,当遇到一个音符发音为 4拍,在编曲中为 *CH,因时间较长, 当定时器 T1此时来中断时,就会对歌曲播放产生影响, 若改为发音一拍, 中断对 歌曲播放影响减弱,但音乐效果变差。改进方案:若采用可以定时时间更长的单片机,可以避免所有问题。(2)数码管显示的时间与真正的时间进度不一致。 原因分析:定时器初值设置有误。本次
13、设计的晶振为 6MHZ,而程序中的初值 却设置成了 6MHZ晶振所采用的值 5000,导致显示的时间比真正的时间要慢。参考文献1 王爱英. 计算机组成与设计 M. 北京:教育, 20032 素行. 微型计算机系统原理及应用 M. 北京:清华大学, 19963 雪兰. 汇编语言程序设计 M. 北京:清华大学, 20064 龚尚福. 微机原理与接口技术 M. :电子科技大学, 20032005 王中民. 微型计算机原理 M. :电子科技大学, 20036 美明,温冬婵 .IBM-PC 汇编语言程序设计 M. 北京:清华大学,附 录 1 元件清单名称数量(个)型号备注电阻3数码管17SEG-DIGI
14、TAL开关3BUTTON单片机1AT89C51三极管32N3906扬声器1SPEAKER电源25V电容322pf(2 个 )晶振1CRYSTAL译码器174LS138地址锁存器174LS373七路反向器1ULN2003A三态反向八 D 锁存器174LS374附 录 2 总电路图附 录 3 程序代码N EQU 3ORG 0000HAJMP MAINORG 0003H AJMP LAST_SONGORG 000BHAJMP F_T0ORG 0013H AJMP NEXT_SONGORG 001BHAJMP START_PAUSEORG 0030HMAIN:MOV DPTR,#TABLEMOV R0
15、,#30HMOV R5,#00HMOV R6,#1SET_TAB:设置每首歌曲的入口信息,存放在以30H开始的存储MOV A,R5 ;单元中。 MOVC A,A+DPTR MOV R0,A INC R5 INC R0 MOV A,R5 MOVC A,A+DPTR MOV R0,A INC R5 INC R0 MOV A,R5 MOVC A,A+DPTR MOV R0,A INC R0 INC R5 MOV A,R5 MOVC A,A+DPTR MOV R0,A INC R0 INC R5 INC R6CJNE R6,#N+1,SET_TABMOV TMOD, #61HMOV TH1,#0FFH
16、MOV TL1,#0FFHSETB ET1SETB ET0SETB PT1SETB IT0SETB IT1SETB EX1SETB EX0SETB EASETB TR1SETB P1.0CLR F0MOV 22H,#01HMOV DPTR,#OUT_TABMOV A,22HMOVC A,A+DPTRMOV DPTR,#8004HMOVX DPTR,AMOV DPTR,#8002HMOV A,#01HMOVX DPTR,AMOV R7,#00HSTART0:MOV R4,#00HMOV R0,#30HMOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,
17、R0INC R0MOV A,R4INC R4MOVC A,A+DPTRMOV 26H,A设置 F0=0,用来作暂停 / 播放的标置位用将歌曲的节拍表的入口地址送到 DPTR取出第一节拍数将取出的音符数 +节拍数保存在职 26H 单元中NEXT:MOV R0,#30HMOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4MOVC A,A+DPTRJZ END0MOV R1,AANL A,#0FHMOV R2,AMOV A,R1SWAP AANL A,#0FHJNZ SINGCLR TR0SJMP SING1SI
18、NG: DEC AMOV R3,ARL AMOV DPH,R0INC R0MOV DPL,R0INC R0MOVC A,A+DPTRMOV 21H,AMOV TH0,AMOV A,R3RL AINC AMOVC A,A+DPTRMOV 20H,AMOV TL0,ASETB TR0SING1:LCALL DELAYJB F0,L1AJMP NEXT开始取出歌曲的第一个数据不为 0,取出节拍数开始唱 , 进行相应的数据处理L1: CLR TR0JB F0,$AJMP NEXTEND0: CLR TR0MOV A,22HCJNE A,#N,L2MOV 22H,#01HMOV R7,#00HMOV D
19、PTR,#8004HMOV A,#06HMOVX DPTR,AMOV DPTR,#8002HMOV A,#01HMOVX DPTR,AAJMP L3L2: MOV A,R7 ; 没有全部唱完, 唱下一首 ,歌曲的入口信息调整 ADD A,#4MOV R7,AINC 22HCLR EAPUSH DPHPUSH DPLMOV A,22HMOVC A,A+DPTRMOV DPTR,#8004HMOVX DPTR,AMOV DPTR,#8002HMOV A,#01HMOVX DPTR,APOP DPLPOP DPHL3: SETB EAAJMP START0F_T0: MOV TH0,21H ; 定时
20、器 0 置初值MOV TL0,20HCPL P1.0RETINEXT_SONG: PUSH ACC; 下一曲中断程序处理,保护现场PUSH DPHPUSH DPLCLR EAMOV A,22HCJNE A,#N,L4MOV R7,#00HMOV 22H,#01HAJMP BACKL4:INC 22HMOV A,R7ADD A,#4MOV R7,A BACK: MOV R4,#00HMOV DPTR,#OUT_TABMOV A,22HMOVC A,A+DPTRMOV DPTR,#8004HMOVX DPTR,AMOV DPTR,#8002HMOV A,#01HMOVX DPTR,A, 同时MOV
21、 B,R0; 对下首要演唱的歌曲的几分拍进行调整对 R0 中的容进行保护MOV R4,#00HMOV R0,#30HMOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4MOVC A,A+DPTRMOV 26H,ADEC R4MOV R0,BPOP DPLPOP DPHPOP ACCSETB EARETILAST_SONG: PUSH ACCPUSH DPHPUSH DPLCLR EAMOV A,22HCJNE A,#1,L5MOV 22H,#N将 R7 指向最后一首歌曲MOV B,#4MOV A,#N-1M
22、UL ABMOV R7,AAJMP BACK2L5: DEC 22HMOV A,R7SUBB A,#4MOV R7,ABACK2: MOV R4,#00HMOV DPTR,#OUT_TABMOV A,22H MOVC A,A+DPTR MOV DPTR,#8004H MOVX DPTR,AMOV DPTR,#8002HMOV A,#01H MOVX DPTR,AMOV B,R0MOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4MOVC A,A+DPTRMOV 26H,ADEC R4MOV R0,BPOP
23、DPLPOP DPHPOP ACCSETB EARETISTART_PAUSE:CPL F0JB F0,RETURN ;F0 为 1 ,停止SETB TR0RETURN: RETIDELAY: MOV 27H,26HD2: MOV 28H,#100D3: MOV 29H,#200DJNZ 29H,$DJNZ 28H,D3DJNZ 27H,D2DJNZ R2,DELAYRETOUT_TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,73H ; 共 阴数码管显视用TABLE: DW SONG1,TABLE1,
24、SONG2,TABLE2,SONG3,TABLE3TABLE1:DW 64580,64684,64777,64820,64898,64968,65030DW 63628,63835,64021,64103,64260,64400,64524SONG1:DB 04HDB 32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,32H,32H,21H,31H, 24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2
25、H,14H,14H,32H,52H,52H,32H,52H,54H,3 2H,34H,31H,21H,12H,24H,24HDB34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H, 32H,0E2H,0E2H,0D1H,0E1H,0D4HDB 22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H, 31H,31H,32H,54H,52H,32H,52H,52H,32HDB 32H,2
26、1H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H, 31H,52H,31H,12H,32H,12H,32H,32H,54H,52HDB 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 00HTABLE2:DW 63835,64021,64103,64260,64400,64524,64580,64684,64777DW 64820,64898,64968,65030,65058,65110,65157,
27、65178SONG2:DB 02HDB 04H,94HDB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4HDB 04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92HDB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8HDB 00HTABLE3:DW64898,64968,65030,65086,65135,65158,65199,64260,64400,64524
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业自动化技术的进步及产业应用
- 工业设计与产品市场定位的协同发展
- 工业设计与产品创新的关系
- 工作中的创新思维方法与应用
- 工作与生活平衡的实践与思考
- 工作报告撰写技巧与规范
- 工程机械设计的绿色化及可持续性研究
- 工程机械动载控制系统的设计与实践
- 工程项目中信息化监理服务模式创新
- 工程机机制造的现代化技术趋势
- ic封装公司运营管理方案
- 软件项目管理 复习题(附参考答案)
- 有机电子学课件
- 我国煤机装备制造业发展现状与展望
- 围术期患者转运专家共识(2021版)
- GB/T 43200-2023机器人一体化关节性能及试验方法
- 工商业用户安全用气培训课件
- 产品方案技术白皮书模板(含系统架构说明书)
- 能源动力类能源与动力工程专业
- 橡胶与人类-青岛科技大学中国大学mooc课后章节答案期末考试题库2023年
- 福建省漳州实小教育集团2023届数学三下期末检测模拟试题含解析
评论
0/150
提交评论