51单片机音乐_AD,Allegro,pads,PCB设计,电源模块,硬件,stm32,嵌入式,单片机,小北设计 Allegro,pads,PCB电路板设计,硬件及芯片资料分享—小北设计

51单片机音乐

51单片机 by AD,Allegro,pads,PCB设计,电源模块,硬件,stm32,嵌入式,单片机,小北设计

/*首先准备待播放音乐的两个延时数组,yin_fu[]延时数组决定了jiao_sheng= ~jiao_sheng输出
010101时,每个高脉冲或低脉冲的延时,从而形成某种频率的声音输出。jie_pai延时数
组控制着每个不同频率声音输出的时间长短,从而形成节拍效果,两个数组末尾的0为结束标志。
程序中第一个for循环内20为延时倍数,修改这个值可加快或减缓音乐的播放速度。由于
jie_pai[i] * 20会超过 uchar的最大值,因此注意将变量j定义为uint类型,内层for循环中
的3为频率增减调节,修改该值,如取值为1,2,3,4等,会整体调高或调低音调,但注意降
低该值时,应适当加大节拍延时,即加大20,否则可适当将20调小。

通过网盘分享的文件:单片机音乐

链接: https://pan.baidu.com/s/1i2XO9_8Cvxxx2DYLzW7Oow 提取码: skdn */

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit jiao_sheng=P3^7;
uchar code yin_fu[]={212,212,190,212,159,169,212,212,190,212,142,159,
212,212,106,126,159,169,190,119,119,126,159,142,159,0};
uchar code jie_pai[]={9,3,12,12,12,24,9,3,12,12,12,24,
9,3,12,12,12,12,12,9,3,12,12,12,24,0};
void yan_shi(uint ms)
{
uchar t;
while(ms--)
for(t=0;t<120;t++);
}
void bo_fang()
{
uint i=0,j,k;
while(jie_pai[i]!=0||yin_fu[i]!=0)// ||是逻辑或运算符, 其中一个为1,结果就为1;
{
for(j=0;j<jie_pai[i]*20;j++)
{
jiao_sheng=~jiao_sheng;
for(k=0;k<yin_fu[i]/3;k++);
}
yan_shi(10);
i++;
}
}
void main()
{
while(1)
{
bo_fang();
yan_shi(500);

}
}

    Message:

    Name:
    Email:
    Content:
PgUP ...
Allegro,pads,PCB电路板设计,电源模块件及芯片资料分享—小北设计