基于51单⽚机的⾳乐盒的设计与实现
沈阳航空航天⼤学
课程设计报告
课程设计名称:单⽚机系统综合课程设计
课程设计题⽬:基于51单⽚机的⾳乐盒的设计与实现
汇编语言清华大学出版社沈阳航空航天⼤学课程设计报告
⽬录
第1章总体设计⽅案 (1)
1.1设计原理 (1)
1.2设计思路 (1)
1.3实验环境 (2)
第2章详细设计⽅案 (3)
2.1硬件电路设计 (3)
2.2主程序设计 (6)
2.3功能模块的设计与实现 (7)
第3章结果测试及分析 (10)
3.1结果测试 (10)
3.2结果分析 (10)
参考⽂献 (11)
附录1:元件清单 (12)
附录2:总电路图 (13)
附录3:程序代码 (14)
第1章总体设计⽅案
1.1设计原理
电⼦⾳乐已⼴泛地应⽤于社会⽣活的各个领域。其类型从⾳乐卡⽚到CD、MP3 等多种多样,制作原理也各不相同。声⾳是通过振动产⽣的。单⽚机对某⼀I/O引脚以⼀定的频率循环置1和清0,这⼀引脚便产⽣⼀定频率的⽅波,该⽅波通过放⼤后作⽤于扬声器便产⽣⼀定频率的声⾳。若改变输出⽅波的频率,产⽣的声⾳也就改变了。通过控制输出⽅波的时间长短,声⾳的长短也就得到控制。因此,根据乐谱,单⽚机就可产⽣电⼦⾳乐。⾳乐中最关键的两个要素是⾳符和节拍。单⽚机控制的⾳乐发⽣器系统由硬件电路和软件两部分构成。利⽤单⽚机控制的电⼦⾳乐发⽣器软硬件上具有独特的优点,系统的开发周期短,成本低,电路制作容易。更换歌曲时,硬件电路⽆需作任何修改,只需修改软件即可实现。软件编程时,可⽤51系列单⽚机的汇编语⾔。同时还可根据个⼈的习好通过软件改变节拍的延时时间,增加电⼦⾳乐的趣味性。
1.2 设计思路
采⽤汇编语⾔程序设计的⽅法结合硬件电路设计⽅法,利⽤Lab6000实验箱上已有芯⽚来实现⾳乐盒的各项功能。
1)提出⽅案
利⽤定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O⼝反相就可在I/O 脚上得到此频率的脉冲。当键盘有键按下时,判断键值,启动计数器T0,产⽣⼀定频率的脉冲,驱动蜂鸣器,放出乐曲。同时在LCD显⽰歌曲序号和歌曲名称。
2) 总体⽅案实现
(1)要产⽣⾳频脉冲,只要算出某⼀⾳频的周期(1/⾳频),然后将此周期除以
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应⽤软件。
第2章详细设计⽅案
2.1 硬件电路设计
硬件电路的设计需要借助Protel软件来实现。基于单⽚机⾳乐盒的硬件电路设计是由8751单⽚机芯⽚、晶振电路、键控电路、播⾳电路和显⽰电路⼏部分组成,总体框架图如图2.1所⽰。
图2.1 硬件电路连线图
1)单⽚机电路的设计
图2.2是8751单⽚机图,8751单⽚机是把那些作为控制应⽤所必需的基本内容都集成在⼀个尺⼨有限的集成电路芯⽚上,除模拟⽐较器外其内部结构与8051内部结构基本⼀致。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并⾏I/O⼝、串⾏⼝、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过⽚内单⼀总线连接⽽成,其基本结构依旧是CPU加上外围芯⽚的传统结构模式。但对各种功能部件的控制是采⽤特殊功能寄存器的集中控制⽅式。在8751单⽚机中存在中断源,其中有两个外部中断源、两个内部中断源和⼀个串⾏中断源。通过TXAL1 与TXAL2输⼊时钟信号,通过p0.0~p0.7输出控制现实控制信号的显⽰,通过P1.0输出控制蜂鸣器发声,有INT0,INT1,
T1分别作为上⼀曲、下⼀曲和开始暂停的控制输⼊。
图2.2 8751单⽚机
2)键控电路的设计
如图2.3控制电路所⽰,下⼀曲按键与单⽚机的INT1相连、上⼀曲按键与INT0相连、开始/暂停键与T1相连。当电键按下时接⼝接低电平,从⽽实现对⾳乐播放器的控制。下⼀曲按键接通实现下⼀曲更换,
上⼀曲按键接通实现上⼀曲更换,开始/暂停按键接通实现开始/暂停操作。
图2.3 键控电路
3)显⽰电路的设计
如果所有的发光⼆极管的阴极接在⼀起,称之为共阴极结构,则数码管显⽰段输⼊⾼电平有效,当某段输⼊⾼电平该段便发光;使⽤时管⼦的上下端正中间的两个或者⼀个(内部公共端已经接在⼀起)接线端接低电平,其它的每段显⽰如图2.4所⽰。本次课设通过单⽚机的P0.0-P0.7分别与数码管的a、b、c、d、e、f、g、dp间接连接,从⽽显⽰播放⾳乐的序号。
图2.4 数码管
4)晶振电路的设计
如图2.5所⽰,晶振电路由两个22pF的电容和⼀个6Mhz的晶体振荡器组成。图中第⼀条输⼊线与8751单⽚机的X1相连接,图中第⼆条输⼊线与单⽚机的X2相连接。晶振电路为单⽚机提供时间信号,为⾳乐的播放节拍控制提供基本时间单位。
图2.5 晶振电路
5)播⾳电路的设计
如图2.6播⾳电路所⽰,播⾳电路是由数字扬声器连接p1.0接⼝实现⾳乐的输出。如果通过p1.0直接接通扬声器,肯定不会发出⾳乐,这⾥还需要通过⼀个三极管将电流放⼤,然后通过单⽚机调⽤相应程序,并将⾳乐信号由p1.0⼝输出,驱动扬声器发出美妙的⾳乐。
图2.6 播⾳电路
2.2 主程序设计
主程序实现对单⽚机进⾏初始化后,进⼊曲⽬识别⼦程序,进⾏歌曲曲⽬判断。确定歌曲曲⽬后,数码管再进⾏显⽰。然后,⼦程序对是否播放进⾏循环判断,得到播放中断的指令后再进⾏播放。
执⾏播放后,关闭数码管显⽰并调⽤查表⼦程序进⾏播放⾳乐。在播放⾳乐的过程中,查表⼦程序循环判断⾳乐是否结束。当⾳乐结束时,程序跳转回曲⽬识别⼦程序。
主程序流程图如图2.7所⽰。
图2.7 主程序流程图
2.3 功能模块的设计与实现
功能模块包括,对开始/暂停,上⼀曲,下⼀曲三个中断⼦程序的设计,具体的设计与实现如下⼏点所⽰:
1)播放/暂停⼦程序功能模块的设计与实现
播放/暂停在程序利⽤内部中断T0⼝。将T0⼝设为计数中断并⼯作在⽅式2下。标识符初值赋值为R1=00H,计数初值设为
TH0=0FFH,TL0=0FFH。当按键第⼀次产⽣中断信号时,播放/暂停⼦程序改变标志符R1,将其赋值为01H。此时播放器由暂停状态进⼊播放状态。当按键第⼆次产⽣中断信号时,播放/暂停⼦程序判断R1是否为02H后,将R1再次赋值为00H。此时,
播放器由播放状态进⼊暂停状态。具体流程图如图2.8所⽰。
2)曲⽬选择⼦程序功能模块的设计与实现
曲⽬选择⼦程序分为上⼀曲⼦程序和下⼀曲⼦程序。上⼀曲和下⼀曲功能实现⽅式类似,分别由外部中断0INT 和外部中断
1INT 。下⾯以实现上⼀曲功能为例:⾸先设置标识符R7初始值为00H 。当按键产⽣中断信号,上⼀曲中断⼦程序改变标识符R7的值为01H 并改变曲⽬R0的值。播放⼦程序判断出标识符R7改变后,先将R7赋值为00H ,然后跳转到曲⽬识别⼦程序。具体流程图如图2.9所⽰。
图2.9 曲⽬选择⼦程序功能图
沈阳航空航天⼤学课程设计报告第3章编程下载与硬件测试第3章结果测试及分析
3.1 结果测试
⾳乐播放器很好的实现了播放/暂停、上⼀曲、下⼀曲的功能,并满⾜了数码管显⽰的特殊要求。⾳效良好,能很好听出乐曲的曲名。当然设计的⾳乐播放器也存在着不⾜之处。8位LED数码管只能显⽰10以内的歌曲曲⽬,超过10将⽆法显⽰。
3.2 结果分析
调试过程中所遇到的问题:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。