基于单片机的音乐播放器的仿真与制作
0 引言
播放音乐最简单的方法就是采用专用音乐芯片,该方法的缺点是音乐芯片只能一次性烧录,播放的内容不可变。而采用单片机播放音乐则能克服这一缺点,其播放的内容以及歌曲的数量都可以随时修改。同时,使用软件Proteus在产品开发的初期对设计进行仿真无疑是一种提高效率和降低成本的好办法,但是仿真毕竟有一定的局限性,要实践起来可能会碰到一些问题。为此,本文通过Proteus软件对用AT89S52单片机播放音乐进行了仿真,指出了实际制作过程中需要注意的地方。
1 硬件电路设计
1.1 仿真软件Proteus简介
Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,它支持单片机且元件库齐全,使用方便,是不可多得的专业单片机软件仿真系统。目前可支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
1.2 电路设计
图1所示是单片机音乐播放器的仿真原理图。在Proteus仿真软件中,按一下按钮,蜂鸥器即可播放音乐。
事实上,按照图1所示原理图来焊接电路,其结果可能没有任何效果。而图2所示才是单片机音乐播放器的实际制作电路。与图1相比,实际电路多了两个部分:一是单片机左边最小系统所需的电路部分,而仿真软件中则将这些省略了;另一个是单片机右边多了一个三极管。之所以要加这个三极管,主要是为了放大蜂鸣器的驱动电流,而仿真软件里面所有的元件都是理想元件,所以,仿真能实现的效果,实际做出来往往没有效果。因此,要想在实际中实现满意的效果还要凭借硬件经验进行反复的摸索和尝试。
2 软件设计
2.1 播放原理
声音的频谱范围通常约为几十到几千赫兹,通过程序控制单片机的I/O口可输出不同频率的矩形波。当该矩形波的频率位于声音频谱范围内时,在单片机的I/O口接上喇叭就能发出声音。然后利用延时程序控制矩形波的高、低电平持续时间,即改变矩形波的频率,即可产生不同的音调,从而发出不同的声音,再让矩形波输出的长短对应节拍,就可以实现单片机对音乐的演奏。
2.2 音调和节拍编码
单片机奏乐只需弄清楚两个概念,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。
由于各个音调对应的频率是已知的,因此,播放音乐时,应对乐曲中出现的音调进行编码,并找出单片机播放这些音调所对应的定时初值。表1所列是音调编码与定时器的初值表,其中频率是已知的,编码可以自己设置,而定时初值是怎样得来的呢?下面以“低6”为例进行说明。“低6”的频率f为440 Hz,其对应的周期为:T=1/f=1/440=272μs。单片机上对应蜂鸣器的I/O口来回取反的时间应为:t=T/2=2272/2=1136μs。单片机奏乐时,其定时器为工作方式1,若以振荡器的十二分频信号为计数脉冲,如果单片机晶振为12MHz,则1μs计数一次。所以,对于“低6”,其定时器的初值应该是:216-1136=64400。
相关文章
- 2022-07-15基于FPGA的2M误码测试仪设计
- 2023-04-26地铁列车运行引起的振动对精密仪器的影响研究
- 2022-06-14基于CAN_BUS的控制器调试系统的设计
- 2023-12-06双导联输人心电采集控制系统
- 2023-05-23智能车磁导航中的信号调理电路设计
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。