新闻中心

EEPW首页>嵌入式系统>设计应用> 基于Proteus的单片机演奏系统的设计

基于Proteus的单片机演奏系统的设计

作者: 时间:2012-10-10 来源:网络 收藏

2.3 电路实现

因为一首曲子不止一个音符,我们不可能对每一个音符的音阶都去"手工"的提供时间常数,为了实现的简化,我们编制一个将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成的表格,在程序里用查表指令依次查出每一个音符的频率和对应节拍时间,产生音符并控制节奏,就可以实现演奏效果。

此外,结束符和体止符可以分别用代码00H 和FFH 来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。

为了产生手弹的节奏感,在某些音符(例两个相同音符)音插入一个时间单位的频率略有不同的音符。

程序框图如下图4. 本程序演奏的是民歌"八月桂花遍地开",C 调,节奏为94 拍/min。

用Keil 对程序进行编译,见图5,具体方法可文献[5],编译无误后生成。hex 文件,然后双击环境下的原理图中的AT89C51,找到这个。 hex 文件,然后点按钮Play,这时控制的蜂鸣器就可以开始播放音乐了。


图4 程序流程图


图5 在Keil 环境下对程序进行编译

3 结论

以上介绍的方法已通过测试,运行良好。 对初学者有一定的启示作用。 读者也可以自行找出一首歌,将乐曲翻译成码表输入,而程序不变。 本实验方法简便,即使不懂音乐的人,也可方便地将一首陌生的曲子翻译成代码。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭