当时的许多用单片机完成音乐演奏的体系都是使用开发板结合仿真器完成的,这种办法不是很杂乱,完成也较便利,可是调试不是很便利,且本钱也较高。 本文提出的一种依据Proteus的单片机演奏音乐的办法,十分简略有用,且该办法依据软件来完成的,所以本钱十分低,调试便利,作用也很不错,适合于喜好音乐的单片机学习者。 单片机体系的规划分两大部分:硬件规划部分和软件规划部分。
1 硬件规划
硬件部分比较简略,假如在开发板上做试验可仿下面图1 电路衔接。
AT89C51 单片机的P2.5 口操控一个8550 的三极管,三极管操控电磁蜂鸣器的电源通断。
假如用Proteus 软件来仿真的话,电路愈加简略,见图2。
图2 在Proteus 环境下用单片机操控蜂鸣器发声的原理图。
需求的要害元件:单片机和蜂鸣器。
为了便于软件编程,先要了解单片机歌唱的基本原理。
什么是声响呢?声响是空气的振动,不同的振动频率咱们就能够听到不同腔调的声响。 音的频谱规模约在几十到几千赫兹。
其次,怎么让蜂鸣器发声?蜂鸣器有许多品种,但大致分为两类:有源式(直流电就发声,但频率单一);无源式(依据输入方波频率而宣布不同的声响)。 这儿挑选无源式蜂鸣器。
单片机歌唱的基本原理:使用程序来操控单处机某个口线出必定频率的方波到蜂鸣器,蜂鸣器就能够宣布必定腔调的声响,若再使用不同的延时程序改动输出频率,就能够改动腔调,从而就可让单片机宣布”1″、”2″,”3″,”4″,”5″,”6″,”7″的音乐。
2 软件规划
经过软件延时或许定时器延时来的方法以不同频率改动口线的的凹凸电平状况来完成的。 假如仅仅让蜂鸣器发声这现已够了。 可是咱们要的是歌唱,所以还有一些工作需求作。
2.1 腔调
输出不同频率的方波,以完成1、2、3、4 等的不同腔调;比方,宣布200Hz 的音频,其周期为1/200s,即5ms. 这样,当 P2.5 的高电平或低电平的持续时间为2.5ms 时,就能宣布200HZ 的腔调。 咱们能够写一个延时子程序,用R3 来供给参数,R3=1 时,延时为20us,那么R3 取2500/20=125(7DH)时,就能够宣布200Hz 的腔调,供给不同的R3 常数,能够得到不同的腔调改变。
使用通用发声程序能够编写乐曲演奏程序,乐曲是依照必定的凹凸,长短和强弱的联系组成的腔调,在一首乐曲中,每音符的音高和音长与频率和节拍有关(如图3 所示)。
图3 音符的音高和音长与频率的联系
图3 画出了两个音阶(一个音阶是8 个音符)的钢琴键和每个键的音符名及其频率(HZ),低音阶以低C(130.8Hz)到中C(261.7Hz)高音阶以中C 到高C(523.3Hz)黑键比它周围的白键高半个音或低半个音。 组成乐曲的每个音符的频率和持续时间是乐曲程序发声所需求的两个重要数据。 频率能够从图中得到,音符的持续时间可依据乐曲速度及每个音符的节拍数来确认,是能够从曲谱中得到的。