资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
用使用定时器用使用定时器 T0 的中断控制播放音乐的中断控制播放音乐一闪一闪亮晶晶一闪一闪亮晶晶1. C 音调与频率的对应关系表 音调低 1(“dao” )低 2低 3低 4低 5低 6低 7频率262294330349392440494 音调1(中音“dao” )234567频率523587659698784880988 音调高 1高 2高 3高 4高 5高 6高 7 频率1064117513181397158617601967 2.定时常数 C 计算公式C=fususf460830 085. 12106T0 工作方式 0.最大计数为 8192,在已知定是常数为 C 的条件下,13 位计算器 的高 8 位和低 5 的初值可由以下公式设定 TH0=(8192-C)/32; TL0=(8192-C)%32; 3.简单乐谱 |1 1 5 5| 6 6 5 -| 4 4 3 3| 2 2 1 -| 5 5 4 4 | 3 3 2 -| 5 5 4 4 |3 3 2 -| 1 1 5 5 | 6 6 5 -| 4 4 3 3|2 2 1 -| 4.节拍控制本例简谱的节拍为每分钟 72 拍,则每个节拍需时间(1000*60ms)/72=833ms “1 “为 1 拍,需延时 833ms “2”为 1/2 拍,需延时 833/2ms “3“为 1/4,需延时 833/4ms5.程序/*-使用定时器 T0 的中断控制播放音乐一闪一闪亮晶晶 ,T0 工作方式 0,图表列出了 C 音调与频率的对应关系。*- */#includesbit sound=P37; /定义声音为引脚 P3.7unsigned int C; /存储定时器的定时常熟/以下是 C 调中音的音频定义#define dao 523 /讲“dao”宏定义为中音“1”的频率 523HZ#define re 587#define mi 659#define fa 698#define sao 784#define la 880#define xi 987/*-延时子程序 200ms-*/void delay()unsigned char i,j;for(i=0;i200;i+)for(j=0;j110;j+);/*-主函数 -*/ void main() unsigned char i,j; unsigned int code f=dao,dao,sao,sao,la,la,sao,fa,fa,mi,mi,re,re,dao,sao,sao,fa,fa,mi,mi,re,sao,sao,fa,fa,mi,mi,re,dao,dao,sao,sao,la,la,sao,fa,fa,mi,mi,re,re,dao,0xff; /以 0xff 作为音调的结束标志 /一下是简谱中的每个音调的节拍,4 对应 4 个延时单位,8 对应 8 个延时单位 unsigned char code JP=4,4,4,4, /每行对应一小节音频的节拍4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8 ,4,4,4,4,4,4,8,;EA=1; /开总中断ET0=1; /定时器 T0 中断允许TMOD=0x00; /使用定时器 T0 的方式 0(13 位计数器)while(1)i=0;/从第一个音调 f0开始播放while(fi!=0xff)/只要没有读到结束标志就继续播放C=460830/fi;TH0=(8192-C)/32; TL0=(8192-C)%32; TR0=1; for(j=0;jJPi;j+) delay(); TR0=0; i+; /*-定时器 T0 的中断服务子程序,使 P3.7 引脚输出音频的方波-*/void Time0(void) interrupt 1 using 1 sound=!sound;TH0=(8192-C)/32;TL0=(8192-C)%32;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号