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

📄 世上只有妈妈好.txt

📁 51单片机播放音乐电路仿真和代码.rar
💻 TXT
字号:
//《世上只有妈妈好》51单片机C语言程序和音乐采灯程序
              //2007-5-22             作者:徐学军  
              //此程序在硬件上调试通过
              //本程序的单片机晶振采用11.0592MHZ
              //此程序的流水灯随音乐的节拍的快慢而动

              //程序对应的单片机的完整的电路图已经插在了程序中,可以单击放大查看
              #include <reg51.h>
              sbit             speaker=P2^3;         //接音频放大电路,
              //sbit             speaker=P3^2;
              sbit             sw=P3^0;          //电后位后,sw合上后就开始放音乐,灯开始闪动,sw断开,音乐停 止,             灯也同时停止闪动
              unsigned char timer0h,timer0l,time,led=1,j=0;
              unsigned char           flagd=0;
               //世上只有妈妈好数据表
              code unsigned char sszymmh[]={ 6,2,3,             5,2,1,             3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
                                             6,2,4,             3,2,2,             5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
                                             6,1,1,             5,2,1,             3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
                                             5,2,1,             6,2,1,             3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
                                             2,2,1,             1,2,1,             6,1,1, 1,2,1, 5,1,6, 0,0,0 
                                             }             ;
              // 音阶频率表 高八位
code unsigned char FREQH[]={
                                       0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 
                                       0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
                                            0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
                                       0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
                                      } ;
                // 音阶频率表 低八位
code unsigned char FREQL[]={
                                        0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
                                        0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
                                             0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 
                                        0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
                                       };
                    void delay(unsigned char t)
                              {
                                    unsigned char t1;
                                    unsigned long t2;
                                    for(t1=0;t1<t;t1++)
                                       {
                               
                                         for(t2=0;t2<8000;t2++)
                                             {
                                              ;
                                             }                                
                                       }
                                 TR0=0;
                               }
                     void t0int() interrupt 1
                                 {
                                  TR0=0;
                                  speaker=!speaker;
                                  TH0=timer0h;
                                  TL0=timer0l;
                                  TR0=1;
                                 }
                      void song()
                                 {
                                  TH0=timer0h;
                                  TL0=timer0l;
                                  TR0=1;
                                  delay(time);                       
                                 }
                     void main(void)
                                    {
                                     unsigned char k,i;
                                     TMOD=1; //置CT0定时工作方式1
                                    EA=1;ET0=1;//IE=0x82 //CPU开中断,CT0开中断 
                                    while(1)
                                       {
                                         i=0;
                                         time=1;
                                         sw=1;                             
                                         while(time)
                                            {  
                                                if(sw)
                                                  {P1=0;i=0;continue;}
                                                if(j==8)
                                            {
                                             //led=1;
                                             j=0;flagd=~flagd;
                                             if(flagd)
                                                {
                                                  led=0x80;
                                                   }
                                                 else
                                                   {
                                                    led=1;
                                                    }
                                         } 
 
                                        else
                                             {
                                              P1=~led;
                                              if(flagd)
                                                {
                                                  led=led>>1;
                                                   }
                                                 else
                                                   {
                                                    led=led<<1;
                                                    }
                                              j++;                                     
                                             }                                  
                                             k=sszymmh[i]+7*sszymmh[i+1]-1;
                                             timer0h=FREQH[k];
                                             timer0l=FREQL[k];
                                             time=sszymmh[i+2];
                                             i=i+3;
                                             song();
                                            }
                                        } 
                                    }

⌨️ 快捷键说明

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