html点击播放生日快乐歌曲大全,播放生日快乐歌曲.doc

播放生日快乐歌曲

安徽冶金科技职业学院

实 训 报 告

课题名称 播放生日快乐歌

系 部

班 级

学生姓名

指导教师

年 月 日

播放生日快乐歌的原理:

通过80C51乐曲播放电路中,P1.7接发声器SOND,P1.0接启动键,按一次K0就播放一遍生日快乐歌;控制输出方波形频率用定时/计数器比延时程序更加准确,根据C音调、半周期和fosc=12MHz条件下选播放乐曲除了控制频率还有控制时间的问题用26]和生日快乐歌曲音符节拍长度数组L[26],两数组序号具有对应关系。

例如200ms;遇休止符0;停止发音频,但仍当做一个音符,按其节拍长短控制定时时间。当一个音符播放结束,T1停,转入下一个音符,中间间隔延时10ms。

设计算3CB0H

因此3c,TL1=0xb0

生日快乐歌曲编程:

#include //包含访问sfr库函数regsbit K0=P1^0; //定义启动键

sbit SOND=P1^7; //定义发声器unsigned char i,j; //定义字符型循环变量iunsigned char code th[22]={ //定义音符频率定时数组高

0,196,202,208,211,216,220,224,226,229,232,233,236,238,240,241,242,244,244,246,267,248};

unsigned char code tl[22]={ //定义音符频率定时数组低

0,12,27,21,7,4,16,12,4,12,9,20,2,8,6,2,22,5,26,1,4,3};

unsigned char s[26]={ //定义生日快乐歌曲音符序数数组

12,12,13,12,15,14,12,12,13,12,16,15,12,12,19,17,15,14,13,0,18,18,17,15,16,15};

unsigned char L[26]={ //定义生日快乐歌曲音符节拍长度数组4,4,8,8,8,16,4,4,8,8,8,16,4,4,8,8,8,8,16,8,4,4,8,8,8,16};

void main(){ //主函数

unsigned int t; //定义循环变量t

TMOD=0x10; //T0定时器方式1定时器方式1

TH1=0x3c;TL1=0xb0; //置1初值0ms

IP=0x02;IE=0x8a; //置0为高优先级中断,0、1开中断

while(1){ //无限循环

while(K0==1); //等待按0按下while(K0==0); //等待按0释放for(i=0;i<26;i++){ //歌曲音符节拍循环

if(s[i]==0) {SOND=0; //若歌曲音符序数为

TR0=0;} //T0停止运行

else {TH0=th[s[i]]; //否则,置0初值TL0=tl[s[i]]; //置0初值低

TR0=1;} //T0运行

j=L[i];TR1=1; //置0ms计数器初值,1运行

while(TR1==1); //等待1停止运行

TR0=0;SOND=0; //T0停止运行,停止发声

for(t=0;t<2000;t++);}}} //音符间隔延时为0ms

void t0() interrupt 1 { //T0中断函数

SOND=~SOND; //输出取反(产音频方波)TH0=th[s[i]]; TL0=tl[s[i]];} //重置0初

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值