⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 利用定时器和蜂鸣器唱歌.txt

📁 视频课程中的源码.C51编写,适合初学者
💻 TXT
字号:
#include "reg51.h"

unsigned char Count;

sbit _Speak =P2^3 ;               //蜂鸣器控制脚 

unsigned char code SONG[] ={      //祝你平安

0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,
0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,
0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,
0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,
0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,
0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,
0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,
0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,
0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,
0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,

0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,
0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,
0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,
0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,
0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,
0x10,0x40,0x10,0x20,0x10,

0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,

//路边的野华不要采

0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,
0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,
0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,
0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,
0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,
0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,
0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,
0x40,0x20,0x15,0x1F,

0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,
0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,
0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,
0x80,0x00,

};

void Time0_Init()  //定时器0初始化函数

{

      TMOD = 0x01;  //工作模式选择

      IE       = 0x82;  //中断设置

      TH0  = 0xD8;   //装初值

      TL0  = 0xEF; //12MZ晶振,10ms

}

 

void Time0_Int() interrupt 1  //定时器0中断子函数

{

      TH0 = 0xD8;

      TL0 = 0xEF;

      Count++;              //长度加1

}

/*-------------------------------------------------

功能:1MS延时子程序

-------------------------------------------------*/

void Delay_xMs(unsigned int x)

{

    unsigned int i,j;

    for( i =0;i < x;i++ )

    {

        for( j =0;j<3;j++ );

    }

}

/*-------------------------------------------------

功能:歌曲播放子程序i为播放哪一段曲目

-------------------------------------------------*/

void Play_Song(unsigned char i)

{

      unsigned char Temp1,Temp2;

      unsigned int Addr;

      Count = 0;                               //中断计数器清0

      Addr = i * 217;

      while(1)

      {

            Temp1 = SONG[Addr++];

          if ( Temp1 == 0xFF )          //休止符

          {

                TR0 = 0;

                Delay_xMs(100);

          }

          else if ( Temp1 == 0x00 )   //歌曲结束符

          {

                return;

          }

          else

          {

                Temp2 = SONG[Addr++];

                TR0 = 1;

                while(1)

               {

                   _Speak = ~_Speak;

                   Delay_xMs(Temp1);

                   if ( Temp2 == Count )

                   {

                         Count = 0;

                         break;

                   }

             }

          }

      }

}

/*-------------------------------------------------

功能:主程序

-------------------------------------------------*/

void main()

{

      Time0_Init();              //定时器0中断初始化

      while(1)

      {

            Play_Song(0);       //播放

      }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -