单片机演奏音乐的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机演奏音乐的实现

要单片机8031产生音频脉冲,只要算出某一音频的周期,然后用计数器计数1/2 此周期,计时到即将输出脉冲的I/O管脚反相,再重计时输出,既可在此I/O管脚得到此音频的脉冲。

用8031内部定时/计数器计数,使其工作于模式1,要得到不同频率的音频信号,只要改变其计数值即可。如要产生频率为f的音频信号,计数器计数如下:

N=2-10/f(采用6M晶振)

表1为C调各音符频率与计数值N的对照表

一、硬件

用广州单片机实验室设计开发的ZH5101单板机,从其扩展口P1口的P1.0管脚拉出一根线,外加如右下图所示的电路,就做成了会奏乐的单片机。

二、软件设计

要输出某一曲调,必须知道此曲调所包括的音符以及每个音符所占的节拍。本软件将一个音符用一个字节的代码表示。字节高四位代表简码,低四位代表音符的节拍数,设1/4拍所占时间为T,则一个节拍的时间为4T,如某一音符节拍为2/4拍,则声音的延续时间为2T,在2T时间里,P1.0输出的即为此音符的音频脉冲。

为使读者能进一步了解此软件的设计思想,现举例如下:

如要输出曲调|63 43 26|,此谱只有4个音符,可先对这4个音符建一计数值表TAB如表2,再根据每个音符的简码号极其节拍数依次将其代码存于TAB1地址开始的存储单元,高四位存简码号,低四位存节拍。如6的简码号为1,节拍数为2/4,即2T,则写入的数据代码为12H,高四位为1,低四位为2(2T),这样根据以上曲调从TAB1开始处依次写入:12H,32H,42H,32H,24H,14H便组成了音符代码表(表3)。

程序运行时,从代码表中依次读出各音符代码,根据高位的简码号从TAB表中取出相应的计数值送THO TLO,再根据低位的节拍数确定每个音符相应的延时时间。本程序流程图如下:如果读者手头没有单片机实验板,不妨向本站邮购。邮购价:¥110(包括邮费)

表1

表2

表3

相关文档
最新文档