首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 常用文档 > 单片机教程28课:单片机音乐程序设计

单片机教程28课:单片机音乐程序设计

资料介绍
单片机资料

 利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机
的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。
 
单片机的基本发音实验
 
  我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个
口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发
出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频
率,从而改变音调。
 
  例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接
接在P1口线上),其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中
存放延时常数,对200HZ音频,其周期为1/200秒,即5ms。这样,当P1.4的高电平或低电
平的持续时间为2.5ms,即R3的时间常数取2500/20=125(7DH)时,就能发出200HZ的音调
。将上述程序键入学习机,并持续修改R3的常数能感到音调的变化。乐曲中,每一音符
对应着确定的频率,表1给出C调时各音符频率及其对应的时间常数。读者能根据表1所供
给的常数,将其16进制代码送入R3,反复练习体会。根据表1能奏出音符。仅这还不够,
要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。
 
音符的节拍我们能用定时器T0来控制,送入不一样的初值,就能产生不一样的定时时间
。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。其它节拍与时间的对应关系见表
2。
 
但时,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实
现不一样节拍。我们能用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过
判别中断计数器的值来控制节拍时间的长短。表2中也给出了各种节拍所对应的时间常数
。例如对1/4拍音符,定时时间为0.1
单片机教程28课:单片机音乐程序设计
本地下载

评论