资源简介

资源是51单片机使用蜂鸣器来播放音乐的实验例程,通过PWM信号来控制蜂鸣器,改变PWM的频率,可以改变蜂鸣器的发声音调,从而可以播放音乐。

资源截图

代码片段和文件信息

/********************************************************************/
//飞翔科技   助您成功
//网店地址:http://fxfreefly.taobao.com
/********************************************************************/
#include //包含头文件,一般情况不需要改动

sbit BUZZ=P1^0;     //定义蜂鸣器接口

code unsigned int toneH[10]={     //音调对应的定时器计数值的高8位 第一个音为低音7
0XF80XF80XF90XFA0XFA0XFB0XFB0XFC0XFC0XFC
};
code unsigned int toneL[10]={     //音调对应的定时器计数值的低8位
0X180X8C0X6B0X150X670X040X900X0C0X440XAC
};

code unsigned int soundtone[42]={
11556654433221
55443325544332
11556654433221
};

code unsigned int soundlong[42]={
11111121111112
11111121111112
11111121111112
};

unsigned int t;
unsigned char t_Ht_L;

/********************************************************************/
/*                         初始化定时器0                            */
/********************************************************************/
void init_T0(void)
{
TMOD|= 0x01;   //使用方式1,16位定时器      
TH0=0x00;       //给TH0和TL0赋初值,计数器由0开始计数,到65535溢出
TL0=0x00;
EA=1;            //总中断打开
ET0=1;           //定时器中断打开
TR0=0;           //关闭定时器
}

/********************************************************************/
/*                            延时函数                              */
/*               延时时间的计算对应单片机12MHz的晶振                */
/*            x为延时的ms数,例:x为10时,延时时间约为10ms          */
/********************************************************************/
void delay1ms(unsigned int x)
{
unsigned int ij;
for(j=0;j for(i=0;i<123;i++);
}

/********************************************************************/
/*                              主函数                              */
/********************************************************************/
void main(void) 
{
    init_T0();  
    for(;;) 
    {
        for(t=0;t<42;t++) 
        {
            t_H=toneH[soundtone[t]];     //提取音调对应的定时器初始值
            t_L=toneL[soundtone[t]];
         TH0=t_H;   //给TH0和TL0赋值
         TL0=t_L;
            TR0=1;              //打开定时器,蜂鸣器发声
            delay1ms(soundlong[t]*500);    //延时soundlong[t]指定的时间长度
            BUZZ=0;             //蜂鸣器不发声,停顿片刻
            TR0=0;
            delay1ms(50);
        }
        delay1ms(2000);
     } 
}

/********************************************************************/
/*                       定时器0中断服务程序                        */
/********************************************************************/
void T0_ISR(void) interrupt 1 using 1
{
TH0=t_H;   //给TH0和TL0重新赋值
TL0=t_L;
BUZZ=~BUZZ;      //BUZZ的值取反,改变蜂鸣器的状态。
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3729  2013-05-22 19:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶

     文件       2932  2020-03-06 09:18  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.c

     文件       1309  2013-05-22 19:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.hex

     文件       5396  2013-05-22 19:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.LST

     文件       5858  2013-05-22 19:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.M51

     文件       4318  2013-05-22 19:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.OBJ

     文件       1051  2013-06-03 22:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.Opt

     文件        246  2013-06-03 22:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.plg

     文件       2048  2012-09-13 22:08  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶.Uv2

     文件       1059  2013-05-22 19:42  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶_Opt.Bak

     文件          0  2012-09-13 22:04  073-蜂鸣器播放音乐-小星星亮晶晶\蜂鸣器播放音乐-小星星亮晶晶_Uv2.Bak

     目录          0  2020-02-07 17:49  073-蜂鸣器播放音乐-小星星亮晶晶

----------- ---------  ---------- -----  ----

                27946                    12


评论

共有 条评论