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

📄 51红外遥控蜂鸣器音乐.c

📁 51通过蜂鸣器唱歌
💻 C
字号:
/******************************************************
程序功能:利用定时器,实现设定的歌曲曲目的播放!
          一共提供了12首的歌曲
******************************************************/

#include <reg52.h>

/***********************************************
//注意:如果你用的是蜂鸣器,则是用P3.3口,如果用的是喇叭的,则是P3.7口
//用喇叭的时候请按照说明文档里面描述的正确接好
***********************************************/
sbit SPK=P1^0;  //蜂鸣器
//sbit SPK=P3^7;    //喇叭
sbit SPK1=P3^5;
unsigned char song_number=11;       //第几首歌曲号码
unsigned char code * data song;   //指向具体歌的指针
unsigned int data j;    //取码指针
unsigned char data i;   //用于循环
unsigned char data k;   //几个1/4拍
unsigned char data l;   //第几个码?


void delay(void);
unsigned char code yin[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,
                  0xFD,0x82,0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85};  //C调各音符频率与计数初值T的对照表
//第一首  干杯,朋友
unsigned char code song1[97]={0x34,0x32,0x32,0x34,0x42,0x51,
                             0x62,0x52,0x42,0x32,0x34,0x04,
                             0x74,0x74,0x62,0x62,0x64,
                    		 0x3c,0x04,
                             0x64,0x62,0x52,0x42,0x32,0x34,
                             0x33,0x31,0x32,0x72,0x76,0x72,
                             0x83,0x81,0x82,0x82,0x82,0x74,0x72,
                    		 0x7c,0x04,
                             0x63,0x61,0x62,0x62,0x64,0x72,0x82,
                             0x72,0x74,0x72,0x62,0x52,0x42,0x32,
                             0x42,0x44,0x42,0x42,0x52,0x62,0x52,
                    		 0x5c,0x04,
                             0x64,0x62,0x62,0x64,0x72,0x82,
                             0x72,0x74,0x72,0x62,0x52,0x42,0x32,
                             0x42,0x46,0x53,0x41,0x42,0x32,
                    		 0x3c,0x04,
                             0x44,0x48,0x02,0x32,
                			 0x3f,
                             0x44,0x48,0x02,0x32,
                			 0x3f,
                    		 0x34,0x0c,
                             0xFF};
//第二首 兰花草
unsigned char code song2[46]={0x12,0x52,0x52,0x52,0x56,0x42,
                             0x32,0x42,0x32,0x22,0x18,
                             0x82,0x82,0x82,0x82,0x86,0x72,
                             0xB2,0x72,0x72,0x62,0x58,
                             0x52,0x82,0x82,0x72,0x56,0x42,
                             0x32,0x42,0x32,0x22,0x16,0xB2,
                             0xB2,0x32,0x32,0x22,0x16,0x52,
                             0x42,0x32,0x22,0xC2,0x88,
                			 0xFF};
//第三首 两只蝴蝶
unsigned char code song3[131]={0x52,0x42,
                             0x58,0x02,0x42,0x52,0x42,
                             0x38,0x04,0x12,0x32,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x12,
                             0xC8,0x04,0x52,0x42,
                             0x58,0x02,0x42,0x52,0x42,
                             0x38,0x04,0x12,0x32,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x32,
                             0x48,0x04,0x52,0x42,
                             0x58,0x02,0x42,0x52,0x42,
                             0x38,0x04,0x12,0x32,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x11,0x31,
                             0xC8,0x04,0x52,0x72,
                             0x78,0x02,0x72,0x82,0x72,
                             0x58,0x04,0x42,0x42,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x12,
                             0x32,0x32,0x3C,
                             0x09,0x72,0x72,0x82,
                             0xA2,0x92,0x92,0x82,0x52,0x42,0x42,0x42,
                             0x58,0x02,0x52,0x52,0x72,
                             0x84,0x84,0x02,0x12,0x52,0x42,
                             0x48,0x04,0x52,0x72,
                             0x72,0x52,0x74,0x02,0xA4,0x92,
                             0x82,0x92,0x54,0x02,0x82,0x82,0x92,
                             0x82,0x72,0x52,0x42,0x02,0xC4,0x12,
                             0x3C,
                			 0xFF};
//第四首 祈祷
unsigned char code song4[37]={0xC4,0x12,0x32,0x44,0x42,0x52,
                             0x52,0x44,0x32,0x32,0x12,0x14,
                             0x12,0x12,0x32,0x42,0x54,0x44,
                             0x4F,
                             0xC4,0x12,0x32,0x44,0x42,0x72,
                             0x58,0x42,0x32,0x34,
                             0x14,0x12,0x32,0x34,0x32,0x12,
                             0x1F,
                			 0xFF};
//第五首 阳光总在风雨后
unsigned char code song5[144]={0x52,0x62,
                             0x74,0x74,0x74,0x34,
                             0x42,0x34,0x52,0x56,0x42,
                             0x34,0x34,0x14,0x32,0x12,
                             0x12,0xC2,0xC4,0x04,0x52,0x62,
                             0x74,0x74,0x74,0x34,
                             0x42,0x34,0x52,0x56,0x42,
                             0x34,0x32,0x12,0x12,0x34,0x42,
                             0x4C,0x52,0x42,
                             0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
                             0xC2,0x54,0x52,0x54,0x52,0x52,
                             0x42,0x32,0x32,0x12,0x32,0x42,0x32,0x52,
                             0x5C,0x52,0x42,
                             0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
                             0xC2,0x54,0x52,0x54,0x02,0x52,
                             0x52,0x42,0x32,0x12,0x32,0x84,0x72,
                             0x7F,
                             0x0F,
                             0x74,0x72,0x52,0x54,0x74,
                             0x82,0x52,0x52,0x72,0x78,
                             0x34,0x32,0x32,0x42,0x54,0x72,
                             0x7F,
                             0x86,0x82,0x72,0x52,0x54,
                             0x72,0x84,0x32,0x36,0x52,
                             0x42,0x52,0x42,0x32,0x34,0x12,0x32,
                             0x32,0x42,0x4C,
                             0x86,0x82,0x72,0x52,0x54,
                             0x72,0x84,0x52,0x56,0x52,
                             0x42,0x52,0x72,0x82,0x52,0x34,0x12,
                             0x12,0x32,0x3C,
                             0xFF}; 
//第六首   心心相印     			   
unsigned char code song6[85]={
0x04,0x24,0x14,0xC4,
0x54,0x54,0x48,
0x04,0x54,0x44,0x34,
0x22,0x14,0xB2,0xC8,
0x04,0x12,0xC2,0x16,0x12,
0x76,0x52,0x46,0x12,
0x3F,
0x04,0xB4,0xD4,0xC4,
0x14,0x28,0xC4,
0x14,0x12,0x32,0x16,0xC2,
0x54,0x78,0x34,
0x4C,0x42,0x52,
0x86,0x72,0x76,0x52,
0x74,0x28,0x42,0x52,
0x46,0x12,0x26,0x12,
0xCF,
0x04,0x24,0x14,0xC4,
0x56,0x52,0x48,
0x04,0x54,0x44,0x34,
0x22,0x14,0xB2,0xC8,
0x04,0x34,0x14,0xC4,
0x12,0x32,0x18,0x42,0x42,
0x74,0x58,0x44,
0x3F,
0xFF};
//第七首 最浪漫的事
unsigned char code song7[138]={0xC2,0xC2,0x12,
                             0x34,0x32,0x32,0x32,0x12,0x12,0x52,
                             0x54,0x02,0xC2,0x12,
                             0x32,0x32,0x32,0x32,0x34,0x52,0x72,
                             0x7C,0x02,0x72,
                             0x82,0x72,0x82,0x72,0x84,0x72,0x41,0x51,
                             0x52,0x41,0x31,0x34,0x02,0x32,0x32,0x12,
                             0x34,0x32,0x12,0x32,0x54,0x42,
                             0x32,0x32,0x32,0x32,0x34,0x52,0x72,
                             0x7C,0x72,0x72,
                             0x82,0x72,0x82,0x72,0x84,0x82,0x72,
                             0x42,0x52,0x42,0x34,0x12,0x12,0x32,
                             0xC4,0x52,0x42,0x34,0x12,0x12,
                             0x31,0x41,0x32,0x3C,
                             0x84,0x82,0x72,0x82,0x72,0x52,0x72,
                             0x78,0x02,0x72,0x82,0xA2,
                             0x84,0x82,0x72,0x82,0x72,0x82,0x32,
                             0x0A,0x72,0x82,0xA2,
                             0x38,0x02,0x32,0x42,0x52,
                             0x64,0x62,0x72,0x82,0x82,0x72,0x82,
                             0x82,0xA2,0x82,0x82,0x82,0xA2,0x82,0x72,
                             0x78,0x72,0x32,0x82,0x72,
                             0x78,0x72,0x82,0xA3,0x51,
                             0x42,0x51,0x41,0x3C,
                             0xFF};
//第八首 一生有你
unsigned char code song8[77]={0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x41,0x51,0x5C,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x31,0x41,0x4C,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x41,0x51,0x58,0x32,0x52,
                             0x4C,0x42,0x32,
                             0x34,0x32,0x42,0x48,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x72,0x41,0x51,0x5C,
                             0x04,0xC2,0xC2,0x32,0x32,0x42,0x42,
                             0x52,0x42,0x4C,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x41,0x51,0x58,0x32,0x52,
                             0x4C,0x42,0x32,
                             0x32,0x42,0x4C,
                			 0xFF};
//第九首  宁静的夏天
unsigned char code song9[]={
0X54,0XC4,0X12,0X32,0X34,
0X52,0X52,0X52,0X52,0X42,0X32,0X34,
0XC1,0XC2,0X52,0XC2,0X12,0X32,0X34,
0X11,0X12,0X31,0X12,0XC2,
0X78,0X72,0X52,0X52,0X42,
0X32,0X42,0X52,0X11,0XC1,0XC4,0XC1,0XC1,0XC1,0XC1,
0X12,0X32,0X32,0X12,0X42,0X42,0X44,
0XC2,0X12,0X32,0X42,0X52,0X72,0X72,0X82,
0X41,0X51,0X42,0X48,0X42,0X12,
0X3C,0X72,0X62,
0X3C,0X72,0X62,
0X3C,0X72,0X62,
0x21,0x31,0x41,0x51,0x61,0x71,0x81,0x91,0x61,0x71,0x81,0x91,
0X3F,
0X3F,
0X54,0XC2,0XC2,0X42,0XC2,0XC4,
0X34,0X32,0X42,0X52,0XC2,0XC4,
0XD2,0XC2,0X12,0X22,0X38,
0X12,0X22,0X32,0X42,0X48,
0xFF};
//第十首 老鼠爱大米
unsigned char code song10[]={
0x32,0x31,0x41,
0x52,0x52,0x42,0x31,0x41,0x44,0x31,0x41,
0x52,0x52,0x42,0x32,0x34,0x71,0x11,
0x74,0x71,0x71,0x11,0x31,0x34,0x32,
0x32,0x32,0x32,0x31,0x41,0x44,0x32,0x41,0x51,
0x52,0x52,0x72,0x81,0x41,0x44,0x52,0x41,0x31,
0x32,0x32,0x42,0x51,0x71,0x74,0x71,0x71,
0x12,0x31,0x31,0x31,0x52,0x42,0x32,0x32,0x41,0x31,
0x34,0x52,0x51,0x71,
0x72,0x71,0x71,0x72,0x71,0x81,0x84,0x52,0x42,
0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x52,
0x42,0x32,0x32,0x12,0x44,0x51,0x71,
0x72,0x72,0x71,0x82,0x71,0x84,0x52,0x42,
0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x51,0x41,
0x42,0x42,0x44,0x32,0x51,0x61,
0x72,0x42,0x44,0x52,0x41,0x31,
0x34,0x52,0x41,0x31,0x34,0x52,0x42,
0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x71,
0x82,0x81,0x71,0x72,0x81,0x71,0x74,0x51,0x41,0x31,
0x42,0x41,0x51,0x42,0x31,0x41,0x44,0x52,0x41,0x31,
0x34,0x52,0x41,0x31,0x34,0x52,0x42,
0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x41,
0x82,0x82,0xA2,0x71,0x81,0x72,0x71,0x51,0x41,0x31,
0x44,0x41,0x31,0x41,0x51,0x44,0x52,0x52,
0x42,0x31,0x34,0x52,0x41,0x31,
0x42,0x31,0x34,
0xFF};
//第十一首  偏偏喜欢你        			    
unsigned char code song11[]={
0XC2,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X4C,0X42,0X32,
0X74,0X82,0X74,0X82,0X72,
0X52,0X41,0X38,0X32,0X42,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0XC2,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X4C,0X42,0X32,
0X76,0X82,0X74,0X82,0X72,
0X53,0X41,0X38,0X32,0X42,
0X16,0XC2,0X72,0X52,0X41,0X51,0X12,
0XCC,0XC2,0XB2,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0X32,0X32,
0X26,0X22,0X24,0X42,0X32,
0x22,0x12,0x18,0x02,0x52,
0X46,0X12,0X44,0X72,0X82,
0X5C,0X52,0X52,
0X46,0X42,0X74,0X42,0X32,
0X36,0X42,0X58,
0X82,0X72,0X62,0X52,0X46,0X32,
0X3C,0X12,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X48,0X02,0X42,0X52,0X62,
0X76,0X82,0X74,0X82,0X72,
0X56,0X41,0X38,0X32,0X22,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0X04,0X04,0X04,0X04,
0xFF};
//第十二首
unsigned char code song12[]={
0x34,0x32,0x34,0x34,0x24,0x34,0x32,0x32,0x24,0x38,0x44,0x58,0x48,
0x34,0x32,0x34,0x34,0x24,0x38,0x34,0x7F,0x34,0x32,0x34,0x32,
0x24,0x38,0x34,0x24,0x38,0x44,0x58,0x48,0x34,0x32,0x34,0x34,
0x24,0x38,0x34,0x7F,0x16,0x4C,0x74,
0x78,0x64,0x54,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
0x14,0x12,0x21,0x11,0x78,0x68,0x3F,0x4C,0x74,
0x78,0x64,0x52,0x42,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
0x24,0x38,0x44,0x58,0x48,0x3C,
0xFF};



void main()
{                    //回main
    TMOD=0x10;       //timer0工作在方式1
    IE=0x88;         //EA=1;ETO=1;
    while(1)
 {                   //回xxxxxx
    
    song=song6;  
    //song=song[song_number];                              //演奏第三首
    j=0;
    while(1)                     //是否取到结束码
    {                                          //回22222
       k=*(song+j)&0x0F;                       //后4位为多少个1/4拍
       l=*(song+j)>>4;                         //song(song+j)[]中所放的每个字节
                                               //前4位乘2表示为音符频率在数组yin[]中的位置
      
       TH1=yin[2*l];                           //置初值
       TL1=yin[2*l+1];
       TR1=1;                                  //起动定时器0
       if ((yin[2*l]==0xff)&&(yin[2*l+1]==0xff)) //如果取到的都是休止符,则不输出音频
           {
               TR1=0;SPK=1;SPK1=1;
    		}
       for(i=k;i>0;--i)     //节拍K为多少就执行多少个1/4拍
           {
               delay();
           } 
       TR1=0;
       j++;
    }                                            //回22222
 }                                               //回xxxxxx
}                                                //回main

/*每个音符的发声*/
void timer1() interrupt 3 using 1 
{ 
     TH1=yin[2*l];
     TL1=yin[2*l+1];
	 SPK1=SPK;
     SPK = !SPK;
 	 SPK1=!SPK1;
     
}

/*延时1/4拍时间即187ms*/
void delay(void)
{
    unsigned char a,b,c;
    for(a=251;a>0;a--)
    for(b=106;b>0;b--)
    for(c=2;c>0;c--);
}

/*延时1/4拍时间即187ms*/
/*void delay(void)
{
    #pragma ASM
            MOV R7,#02
        D1: MOV R4,#125     
        D2: MOV R3,#248
            DJNZ R3,$
            DJNZ R4,D2
            DJNZ R7,D1
    #pragma ENDASM
}*/
    		

⌨️ 快捷键说明

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