<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開(kāi)發(fā)網(wǎng)

      電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
      搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

      51單片機(jī)蜂鳴器播放音樂(lè)代碼

      作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2016/11/21

       /*生日快樂(lè)歌曲*/
      /*******************************************/

      #include <reg51.h>
      #define uint unsigned int
      #define uchar unsigned char
      sbit beep = P1^5;
      uchar code SONG_TONE[]={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 SONG_LONG[]={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};

      //延時(shí)
      void DelayMS(uint x)
      {
      uchar t;
      while(x--) for(t=0;t<120;t++);
      }

      void PlayMusic()
      {
      uint i=0,j,k;
      while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
      { //播放各個(gè)音符,SONG_LONG 為拍子長(zhǎng)度
          for(j=0;j<SONG_LONG[i]*20;j++)
      {
          beep=~beep;
      //SONG_TONE 延時(shí)表決定了每個(gè)音符的頻率
          for(k=0;k<SONG_TONE[i]/3;k++);
      }
          DelayMS(10);
          i++;
      }
      }


      void main()
      {

      beep=0;
      while(1)
      {
      PlayMusic(); //播放生日快樂(lè)
      DelayMS(500); //播放完后暫停一段時(shí)間
      }
      }

      /*兩只蝴蝶歌曲*/  
      /*******************************************/

      #include <reg51.h>             // 這是  單片機(jī)音樂(lè)代碼生成器  生成的代碼
      #define uchar unsigned char
      sbit beepIO=P1^5;                 // 輸出 為 P1.5  可以修改 成 其它 IO 口
      uchar m,n;
      uchar code T[49][2]={{0,0},
      {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
      {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
      {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
      {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
      };
      uchar code music[][2]={{0,4},
      {23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
      {23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,24},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{21,24},
      {23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
      {23,4},{26,4},{26,16},{26,4},{28,4},{26,4},{23,24},{21,4},{23,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{16,2},{19,2},{19,24},{0,20},
      {26,4},{26,4},{28,4},{31,4},{30,4},{30,4},{28,4},{23,4},{21,4},{21,4},{23,16},{0,4},{23,4},{23,4},{26,4},{28,8},{28,12},{16,4},{23,4},{21,4},
      {21,24},{23,4},{26,4},{26,4},{23,4},{26,8},{0,4},{31,8},{30,4},{28,4},{30,4},{23,8},{0,4},{28,4},{28,4},{30,4},{28,4},{26,4},{23,4},{21,8},{23,4},{21,4},{23,4},{26,16},
      {0xFF,0xFF}};
      void delay(uchar p)
      {
          uchar i,j;
          for(;p>0;p--)
          for(i=181;i>0;i--)
          for(j=181;j>0;j--);
      }
      void pause()
      {
          uchar i,j;
          for(i=150;i>0;i--)
          for(j=150;j>0;j--);
      }
      void T0_int() interrupt 1
      {
       beepIO=!beepIO;
       TH0=T[m][0]; TL0=T[m][1];
      }
      void main()
      {
       uchar i=0;
       TMOD=0x01;  EA=1; ET0=1;
       while(1)
            {
              m=music[i][0];n=music[i][1];
                 if(m==0x00)
                   {TR0=0;delay(n);i++;}
                 else if(m==0xFF)
                   {TR0=0;delay(30);i=0;}
                 else if(m==music[i+1][0])
                   {TR0=1;delay(n);TR0=0;pause();i++;}
                 else
                   {TR0=1;delay(n);i++;}
            }
      }

       

      /*祝你平安*/  
      /*******************************************/

      #include "reg52.h"
      unsigned char Count;
      sbit _Speak =P1^5 ;
      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};

      void Time0_Init()
      {
       TMOD = 0x01;
       IE   = 0x82;
       TH0  = 0xD8;
       TL0  = 0xEF;  //12MZ晶振,10ms
      }

      void Time0_Int() interrupt 1
      {
       TH0 = 0xD8;
       TL0 = 0xEF;
       Count++;   //長(zhǎng)度加1
      }

      /*-------------------------------------------------
      功能:1MS延時(shí)子程序
      -------------------------------------------------*/
      void Delay_xMs(unsigned int x)
      {
          unsigned int i,j;
          for( i =0;i < x;i++ )
          {
              for( j =0;j<3;j++ );
          }
      }

      void Play_Song(unsigned char i)
      {
       unsigned char Temp1,Temp2;
       unsigned int Addr;
       Count = 0;      //中斷計(jì)數(shù)器清0
       Addr = i * 217;
       while(1)
       {
        Temp1 = SONG[Addr++];
           if ( Temp1 == 0xFF )          //休止符
           {
            TR0 = 0;
            Delay_xMs(100);
           }
           else if ( Temp1 == 0x00 )   //歌曲結(jié)束符
           {
            return;
           }
           else
           {
            Temp2 = SONG[Addr++];
            TR0 = 1;
           while(1)
           {
             _Speak = ~_Speak;
             Delay_xMs(Temp1);
             if ( Temp2 == Count )
             {
              Count = 0;
              break;
             }
            }
           }
       }
      }
      /*-------------------------------------------------
      功能:主程序
      -------------------------------------------------*/
      void main()
      {
       Time0_Init();   //定時(shí)器0中斷初始化
       while(1)
       {
        Play_Song(0);  //播放
       }
      }

      Tags:51單片機(jī),編程,歌曲  
      責(zé)任編輯:admin
      相關(guān)文章列表
      PLC編程如何減少工作量?高手編程必須掌握的硬核知識(shí)
      25個(gè)三菱PLC編程常見(jiàn)問(wèn)題,你遇到過(guò)幾個(gè)?(一)
      51單片機(jī)零基礎(chǔ)入門(mén)
      三菱plc模擬量編程詳解 三菱plc編程問(wèn)題
      三菱plc模擬量編程 三菱FX系列PLC的FX2N-2AD使用舉例 FROM指令
      三菱plc模擬量編程 FX3U-4AD模塊的使用方法
      三菱PLC指令大全_三菱plc編程指令大全_特殊繼電器M清單_三菱PLC指
      三菱PLC編程實(shí)例 三菱FX-PLC轉(zhuǎn)孔動(dòng)力頭的控制程序 鉆床鉆孔控制程
      學(xué)三菱PLC編程應(yīng)該先學(xué)什么?
      基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_Proteus仿真+程序
      基于51單片機(jī)的數(shù)字電壓表(ADC0832)(Proteus仿真+程序)_基于
      PLC編程入門(mén)梯形圖,梯形圖入門(mén),梯形圖編程的規(guī)則與編程技巧
      超聲波測(cè)距+溫度+報(bào)警的單片機(jī)代碼_51單片機(jī)超聲波測(cè)距C語(yǔ)言程序
      基于51單片機(jī)的SHT11溫濕度測(cè)量?jī)x設(shè)計(jì)(源碼+仿真+文檔)
      基于51單片機(jī)的恒溫控制器系統(tǒng) protues+keil c
      51單片機(jī)數(shù)碼管顯示程序, 共陰數(shù)碼管顯示程序 數(shù)碼管原理(顯示
      三菱PLC模擬量輸入模塊編程及使用案例分析 梯形圖實(shí)例
      51單片機(jī)學(xué)習(xí)筆記直流電機(jī)驅(qū)動(dòng)(PWM)C語(yǔ)言程序
      MCU-51單片機(jī)直流電機(jī)驅(qū)動(dòng)(PWM)51單片機(jī)驅(qū)動(dòng)直流電機(jī)
      西門(mén)子PLC模擬量怎么編程?模擬量輸入模塊使用問(wèn)題,AIW和AQW
      請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱(chēng):
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      最新推薦
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線(xiàn)幫助 - 文章列表
      返回頂部
      刷新頁(yè)面
      下到頁(yè)底
      晶體管查詢(xún)
      主站蜘蛛池模板: 亚洲国产成人久久综合野外| 亚洲国产综合无码一区| 久久99精品久久久久久综合| 精品国产综合区久久久久久| 亚洲伊人tv综合网色| 69国产成人综合久久精品| 色噜噜狠狠色综合中国| 一本久道久久综合狠狠爱| 国产成人亚洲综合网站不卡| 国产色综合久久无码有码| 天天综合天天做天天综合| 久久狠狠一本精品综合网| 色综合小说久久综合图片| 国产色综合天天综合网| 狠狠综合久久综合中文88| 麻豆久久婷婷综合五月国产| 久久本道综合久久伊人| 午夜激情影院综合| 激情五月婷婷综合| 久久综合亚洲鲁鲁五月天| 一本色道久久综合网| 一本久道久久综合狠狠躁AV| 精品综合久久久久久98| 久久综合九色综合97伊人麻豆| 狠狠色丁香婷婷久久综合不卡| 九色综合狠狠综合久久| 婷婷激情五月综合| 国产综合久久久久鬼色| 欧美激情综合亚洲一二区| 色欲色香天天天综合网WWW| 伊人久久亚洲综合影院| 亚洲综合国产精品| 亚洲综合色区中文字幕| 色噜噜狠狠色综合网| 伊人狠狠色丁香综合尤物| 国产成人精品久久综合| 久久久久一级精品亚洲国产成人综合AV区 | 热久久综合这里只有精品电影| 久久一日本道色综合久久| 久久亚洲精品人成综合网| 亚洲综合精品第一页|