基于Proteus的单片机演奏音乐的实现
时间:08-27
来源:互联网
点击:
长数为192(即C0H)。
2.3 电路实现
因为一首曲子不止一个音符,我们不可能对每一个音符的音阶都去手工的提供时间常数,为了实现的简化,我们编制一个将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成的表格,在程序里用查表指令依次查出每一个音符的频率和对应节拍时间,产生音符并控制节奏,就可以实现演奏效果。
此外,结束符和体止符可以分别用代码00H 和FFH 来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。
为了产生手弹的节奏感,在某些音符(例两个相同音符)音插入一个时间单位的频率略有不同的音符。
程序框图如下图4. 本程序演奏的是民歌八月桂花遍地开,C 调,节奏为94 拍/min。
用Keil 对程序进行编译,见图5,具体方法可文献[5],编译无误后生成。hex 文件,然后双击Proteus环境下的原理图中的AT89C51,找到这个。 hex 文件,然后点按钮Play,这时单片机控制的蜂鸣器就可以开始播放音乐了。
图4 程序流程图
图5 在Keil 环境下对程序进行编译
3 结论
以上介绍的方法已通过测试,运行良好。 对初学单片机者有一定的启示作用。 读者也可以自行找出一首歌,将乐曲翻译成码表输入单片机,而程序不变。 本实验方法简便,即使不懂音乐的人,也可方便地将一首陌生的曲子翻译成代码。
- DIY你的电子玩具:网络音乐电台,给你系统解决方案、软硬件设计实现(04-16)
- 变频器在音乐喷泉上的应用(12-20)
- 单片机音乐-输出口P0.4 STC89C52RC测试通过(11-30)
- 基于51单片机的数字音乐盒C语言驱动程序(11-28)
- 基于单片机设计的音乐马桶(11-28)
- mcu音乐程序的设计与实验(11-27)