久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 154196|回復: 22
收起左側

51單片機蜂鳴器播放音樂代碼(生日快樂 兩只蝴蝶 祝你平安)

  [復制鏈接]
ID:80436 發表于 2015-5-20 18:18 | 顯示全部樓層 |閱讀模式
本帖最后由 liuqq 于 2015-5-20 18:20 編輯

/*生日快樂歌曲*/
/*******************************************/
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit beep = P1^5;
  5. uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,
  6. 212,212,106,126,159,169,190,119,119,126,159,142,159,0};

  7. uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,
  8. 9,3,12,12,12,12,12,9,3,12,12,12,24,0};

  9. //延時
  10. void DelayMS(uint x)
  11. {
  12. uchar t;
  13. while(x--) for(t=0;t<120;t++);
  14. }

  15. void PlayMusic()
  16. {
  17. uint i=0,j,k;
  18. while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
  19. { //播放各個音符,SONG_LONG 為拍子長度
  20.     for(j=0;j<SONG_LONG[i]*20;j++)
  21. {
  22.     beep=~beep;
  23. //SONG_TONE 延時表決定了每個音符的頻率
  24.     for(k=0;k<SONG_TONE[i]/3;k++);
  25. }
  26.     DelayMS(10);
  27.     i++;
  28. }
  29. }


  30. void main()
  31. {

  32. beep=0;
  33. while(1)
  34. {
  35. PlayMusic(); //播放生日快樂
  36. DelayMS(500); //播放完后暫停一段時間
  37. }
  38. }
復制代碼





/*兩只蝴蝶歌曲*/  
/*******************************************/
  1. #include <reg51.h>             // 這是  單片機音樂代碼生成器  生成的代碼
  2. #define uchar unsigned char
  3. sbit beepIO=P1^5;                 // 輸出 為 P1.5  可以修改 成 其它 IO 口
  4. uchar m,n;
  5. uchar code T[49][2]={{0,0},
  6. {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
  7. {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
  8. {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
  9. {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
  10. };
  11. uchar code music[][2]={{0,4},
  12. {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},
  13. {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},
  14. {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},
  15. {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},
  16. {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},
  17. {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},
  18. {0xFF,0xFF}};
  19. void delay(uchar p)
  20. {
  21.     uchar i,j;
  22.     for(;p>0;p--)
  23.     for(i=181;i>0;i--)
  24.     for(j=181;j>0;j--);
  25. }
  26. void pause()
  27. {
  28.     uchar i,j;
  29.     for(i=150;i>0;i--)
  30.     for(j=150;j>0;j--);
  31. }
  32. void T0_int() interrupt 1
  33. {
  34. beepIO=!beepIO;
  35. TH0=T[m][0]; TL0=T[m][1];
  36. }
  37. void main()
  38. {
  39. uchar i=0;
  40. TMOD=0x01;  EA=1; ET0=1;
  41. while(1)
  42.       {
  43.         m=music[i][0];n=music[i][1];
  44.            if(m==0x00)
  45.              {TR0=0;delay(n);i++;}
  46.            else if(m==0xFF)
  47.              {TR0=0;delay(30);i=0;}
  48.            else if(m==music[i+1][0])
  49.              {TR0=1;delay(n);TR0=0;pause();i++;}
  50.            else
  51.              {TR0=1;delay(n);i++;}
  52.       }
  53. }
復制代碼

祝你平安:
  1. #include "reg52.h"
  2. unsigned char Count;
  3. sbit _Speak =P1^5 ;
  4. unsigned char code SONG[] ={      //祝你平安
  5. 0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
  6. 0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
  7. 0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
  8. 0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
  9. 0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
  10. 0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
  11. 0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
  12. 0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
  13. 0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
  14. 0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
  15. 0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
  16. 0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
  17. 0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
  18. 0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00};

  19. void Time0_Init()
  20. {
  21. TMOD = 0x01;
  22. IE   = 0x82;
  23. TH0  = 0xD8;
  24. TL0  = 0xEF;  //12MZ晶振,10ms
  25. }

  26. void Time0_Int() interrupt 1
  27. {
  28. TH0 = 0xD8;
  29. TL0 = 0xEF;
  30. Count++;   //長度加1
  31. }

  32. /*-------------------------------------------------
  33. 功能:1MS延時子程序
  34. -------------------------------------------------*/
  35. void Delay_xMs(unsigned int x)
  36. {
  37.     unsigned int i,j;
  38.     for( i =0;i < x;i++ )
  39.     {
  40.         for( j =0;j<3;j++ );
  41.     }
  42. }

  43. void Play_Song(unsigned char i)
  44. {
  45. unsigned char Temp1,Temp2;
  46. unsigned int Addr;
  47. Count = 0;      //中斷計數器清0
  48. Addr = i * 217;
  49. while(1)
  50. {
  51.   Temp1 = SONG[Addr++];
  52.      if ( Temp1 == 0xFF )          //休止符
  53.      {
  54.       TR0 = 0;
  55.       Delay_xMs(100);
  56.      }
  57.      else if ( Temp1 == 0x00 )   //歌曲結束符
  58.      {
  59.       return;
  60.      }
  61.      else
  62.      {
  63.       Temp2 = SONG[Addr++];
  64.       TR0 = 1;
  65.      while(1)
  66.      {
  67.        _Speak = ~_Speak;
  68.        Delay_xMs(Temp1);
  69.        if ( Temp2 == Count )
  70.        {
  71.         Count = 0;
  72.         break;
  73.        }
  74.       }
  75.      }
  76. }
  77. }
  78. /*-------------------------------------------------
  79. 功能:主程序
  80. -------------------------------------------------*/
  81. void main()
  82. {
  83. Time0_Init();   //定時器0中斷初始化
  84. while(1)
  85. {
  86.   Play_Song(0);  //播放
  87. }
  88. }
復制代碼



其他的可以使用音樂代碼轉換器轉換即可,不過很麻煩而已!。



評分

參與人數 1黑幣 +5 收起 理由
15479468 + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:92909 發表于 2015-10-19 13:34 | 顯示全部樓層
你好,請問你有音樂代碼轉換器嗎
回復

使用道具 舉報

ID:93224 發表于 2015-10-22 18:52 來自觸屏版 | 顯示全部樓層
求電路圖
回復

使用道具 舉報

ID:93224 發表于 2015-10-22 18:53 來自觸屏版 | 顯示全部樓層
求仿真圖
回復

使用道具 舉報

ID:107927 發表于 2016-3-9 16:15 | 顯示全部樓層
這三個怎么組到一起啊,通過按鍵控制播放哪首歌曲。
回復

使用道具 舉報

ID:147796 發表于 2016-11-15 12:47 | 顯示全部樓層
這三個怎么組到一起啊,通過按鍵控制播放哪首歌曲
回復

使用道具 舉報

ID:137916 發表于 2017-1-25 11:10 | 顯示全部樓層
很好用   厲害
回復

使用道具 舉報

ID:158729 發表于 2017-1-26 19:00 | 顯示全部樓層
感謝分享,雖然譜出來不太好聽
回復

使用道具 舉報

ID:163075 發表于 2017-1-29 13:24 | 顯示全部樓層
很有用啊
回復

使用道具 舉報

ID:202137 發表于 2017-5-18 13:02 來自觸屏版 | 顯示全部樓層
各位大神!求解釋
回復

使用道具 舉報

ID:192926 發表于 2017-5-18 15:28 | 顯示全部樓層
感謝分享。
回復

使用道具 舉報

ID:239541 發表于 2017-10-18 20:08 | 顯示全部樓層
最近想弄弄這個謝謝分享
回復

使用道具 舉報

ID:241954 發表于 2017-10-22 22:24 | 顯示全部樓層
超人強 發表于 2016-3-9 16:15
**** 作者被禁止或刪除 內容自動屏蔽 ****

# include <stdio.h>   //stdio.h    輸入輸出  printf     scanf(輸入)  在判斷選擇播放的歌
回復

使用道具 舉報

ID:241829 發表于 2017-10-28 19:48 | 顯示全部樓層
請問為什么我添加到其他函數上
QQ圖片20171028194756.png
回復

使用道具 舉報

ID:238749 發表于 2017-11-26 18:19 | 顯示全部樓層
樓主能問下如何在播放音樂的同時在主函數里做其他的事情嗎,我在主函數的play之后寫的其他程序與蜂鳴器沖突。
回復

使用道具 舉報

ID:272245 發表于 2018-1-16 14:44 | 顯示全部樓層
我下載到單片機上不能用,蜂鳴器的端口改過了,這是怎么回事呢
回復

使用道具 舉報

ID:283896 發表于 2018-2-13 20:07 | 顯示全部樓層
求轉換器
回復

使用道具 舉報

ID:338282 發表于 2018-5-25 18:42 | 顯示全部樓層

加上最小系統,把小喇叭接到p^5扣
回復

使用道具 舉報

ID:351351 發表于 2018-7-15 17:36 | 顯示全部樓層
stc12c5a60s2芯片可以能正常發音嗎?
回復

使用道具 舉報

ID:382249 發表于 2018-8-16 18:28 | 顯示全部樓層
可以正常發聲,但是部分代碼不明白,求教里面*20   和  /3  什么意思?
void PlayMusic()
{
uint i=0,j,k;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{ //播放各個音符,SONG_LONG 為拍子長度
    for(j=0;j<SONG_LONG[i]*20;j++)
{
    beep=~beep;
//SONG_TONE 延時表決定了每個音符的頻率
    for(k=0;k<SONG_TONE[i]/3;k++);
}
    DelayMS(10);
    i++;
}
}
回復

使用道具 舉報

ID:385303 發表于 2018-8-16 21:34 | 顯示全部樓層
可以,能不能把電路圖分享出來啊
回復

使用道具 舉報

ID:395167 發表于 2018-10-25 15:27 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:358405 發表于 2020-5-27 12:24 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 丁香在线视频 | 日本免费黄色 | 亚洲国产区 | 亚洲精品网站在线观看 | 国产91清纯白嫩初高中在线观看 | 亚洲天天看| 99cao| 99热最新网址 | 九九色综合 | 中文字幕一二区 | 国产视频a| 久久国产亚洲 | 日韩三级精品 | 亚洲一区二区在线免费观看 | 日日舔 | 久久天堂网 | 中文字幕av久久爽av | 特级毛片爽www免费版 | 国产精彩视频 | 中文字幕一区二区三区视频 | 日韩欧美亚洲国产 | 91狠狠 | 在线免费观看黄色片 | 久综合| 欧美精品成人 | 亚洲综合日韩 | 日本一级淫片色费放 | 91九色在线视频 | 国产精品第二页 | 日本a在线观看 | 中文av字幕 | 国产一级黄色大片 | 欧美精品入口蜜桃 | 九色视频丨porny丨丝袜 | 日韩色在线 | xxxxx国产| a在线免费观看 | 黄色一级在线观看 | 手机成人在线视频 | 日本天堂网 | 国产欧美日本 |