求高手:基于单片机的音乐门铃 设计要有完整的C语言程序。

音乐两只老虎?我去。我找高手。不是找商人。... 音乐两只老虎?
我去。我找高手。不是找商人。
展开
 我来答
liuwenwu2010
推荐于2017-10-14 · 超过11用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:39.2万
展开全部
#include<reg52.h> //包含52单片机寄存器定义的头文件

sbit sound=P3^7; //将sound位定义为P3.7
unsigned int C; //储存定时器的定时常数
//以下是C调中音的音频宏定义

#define dao 523 //将"dao"宏定义为中音"1"的频率523Hz
#define re 587 //将"re"宏定义为中音"2"的频率587Hz
#define mi 659 //将"mi"宏定义为中音"3"的频率659Hz
#define fa 698 //将"fa"宏定义为中音"4"的频率698Hz
#define sao 784 //将"sao"宏定义为中音"5"的频率784Hz
#define la 880 //将"la"宏定义为中音"6"的频率880Hz
#define xi 987 //将"xi"宏定义为中音"7"的频率523Hz

/*******************************************

函数功能:1个延时单位,延时200ms

******************************************/

void delay()
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
}

/*******************************************
函数功能:主函数
******************************************/

void main(void)
{
unsigned char i,j;

//以下是《两只老虎》歌曲

unsigned int code f[]={dao,re,mi,dao, //每行对应一小节音符
dao,re,mi,dao,
mi,fa,sao,
mi,fa,sao,
sao,la,sao,fa,mi,dao,
sao,la,sao,fa,mi,dao,
dao,sao,dao,
dao,sao,dao,
0xff}; //以0xff作为音符的结束标志

//以下是简谱中每个音符的节拍

//"4"对应4个延时单位,"2"对应2个延时单位,"1"对应1个延时单位
unsigned char code JP[ ]={2,2,2,2,
2,2,2,2,
2,2,3,
2,2,3,
1,2,2,1,2,2,
1,2,2,1,2,2,
2,2,2,
2,2,2,
};

EA=1; //开总中断
ET0=1; //定时器T0中断允许
TMOD=0x00; // 使用定时器T0的模式1(13位计数器)
while(1) //无限循环
{
i=0; //从第1个音符f[0]开始播放
while(f[i]!=0xff) //只要没有读到结束标志就继续播放
{
C=460830/f[i];
TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法
TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法
TR0=1; //启动定时器T0
for(j=0;j<JP[i];j++) //控制节拍数
delay(); //延时1个节拍单位
TR0=0; //关闭定时器T0
i++; //播放下一个音符
}
}

}

/***********************************************************

函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频的方波

************************************************************/

void Time0(void ) interrupt 1 using 1
{
sound=!sound; //将P3.7引脚输出电平取反,形成方波
TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法
TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法
}
匿名用户
2012-06-10
展开全部
问题是我怎么找到两只老虎的曲谱呢
伤脑筋
450,你太狠了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式