单片机音乐门铃实验报告 C语言,基于单片机的音乐门铃

你好!我的博客上有几个与音乐相关的程序,你只要稍微修改一下,就应该可以用了.

看看这个可不可以!

#include

sbit mic=P1^0; //定义喇叭接口

sbit key=P3^7;

bit flag; //定义标志位

unsigned char i; //定义变量

unsigned char song[]=

{

1,1,2,1,4,3,1,1,2,1,5,4,

1,1,8,6,4,3,2,7,7,6,4,5,4,0

}; //定义生日歌歌谱

int tone[]=

{

1276,1136,1012,956,851,758,716,638

}; //定义简谱音调

unsigned char beat[]=

{

20,20,40,40,40,80,20,20,40,40,40,80,

20,20,40,40,40,40,40,20,20,40,40,40,80

}; //定义节拍

unsigned char beath=(65536-50000)/256;

unsigned char beatl=(65536-50000)%256; //定义节拍变量

unsigned char time,j,k;

int toneh,tonel;

void main()

{ //IE=0x8a;

mic=0;

i=0;

time=30;

TMOD=1; //定义计时器工作方式

EA=1; //开总中断

if(key==0)

{

while(song[i]!=0)

{

toneh=(65536-tone[song[i]])/256;

tonel=(65536-tone[song[i]])%256;

TH0=toneh;

TL0=tonel;

ET0=1;

ET1=1;

TR0=1;

//for(j=150;j>0;j--)

// for(k=200;k>0;k--);

time=beat;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

flag=0;

TR1=1;

while(flag==0);

i++;

}

}

}

void time0() interrupt 1

{

TH0=toneh;

TL0=tonel;

mic=~mic;

}

void time1() interrupt 3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

if(--time==0)

{

flag=1;

TR1=0;

}

希望对你有用哦!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值