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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 153799|回復(fù): 22
打印 上一主題 下一主題
收起左側(cè)

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

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80436 發(fā)表于 2015-5-20 18:18 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 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. //延時(shí)
  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. { //播放各個(gè)音符,SONG_LONG 為拍子長度
  20.     for(j=0;j<SONG_LONG[i]*20;j++)
  21. {
  22.     beep=~beep;
  23. //SONG_TONE 延時(shí)表決定了每個(gè)音符的頻率
  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); //播放完后暫停一段時(shí)間
  37. }
  38. }
復(fù)制代碼





/*兩只蝴蝶歌曲*/  
/*******************************************/
  1. #include <reg51.h>             // 這是  單片機(jī)音樂代碼生成器  生成的代碼
  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. }
復(fù)制代碼

祝你平安:
  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延時(shí)子程序
  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;      //中斷計(jì)數(shù)器清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 )   //歌曲結(jié)束符
  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();   //定時(shí)器0中斷初始化
  84. while(1)
  85. {
  86.   Play_Song(0);  //播放
  87. }
  88. }
復(fù)制代碼



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



評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:92909 發(fā)表于 2015-10-19 13:34 | 只看該作者
你好,請問你有音樂代碼轉(zhuǎn)換器嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:93224 發(fā)表于 2015-10-22 18:52 來自觸屏版 | 只看該作者
求電路圖
回復(fù)

使用道具 舉報(bào)

地板
ID:93224 發(fā)表于 2015-10-22 18:53 來自觸屏版 | 只看該作者
求仿真圖
回復(fù)

使用道具 舉報(bào)

5#
ID:107927 發(fā)表于 2016-3-9 16:15 | 只看該作者
這三個(gè)怎么組到一起啊,通過按鍵控制播放哪首歌曲。
回復(fù)

使用道具 舉報(bào)

6#
ID:147796 發(fā)表于 2016-11-15 12:47 | 只看該作者
這三個(gè)怎么組到一起啊,通過按鍵控制播放哪首歌曲
回復(fù)

使用道具 舉報(bào)

7#
ID:137916 發(fā)表于 2017-1-25 11:10 | 只看該作者
很好用   厲害
回復(fù)

使用道具 舉報(bào)

8#
ID:158729 發(fā)表于 2017-1-26 19:00 | 只看該作者
感謝分享,雖然譜出來不太好聽
回復(fù)

使用道具 舉報(bào)

9#
ID:163075 發(fā)表于 2017-1-29 13:24 | 只看該作者
很有用啊
回復(fù)

使用道具 舉報(bào)

10#
ID:202137 發(fā)表于 2017-5-18 13:02 來自觸屏版 | 只看該作者
各位大神!求解釋
回復(fù)

使用道具 舉報(bào)

11#
ID:192926 發(fā)表于 2017-5-18 15:28 | 只看該作者
感謝分享。
回復(fù)

使用道具 舉報(bào)

12#
ID:239541 發(fā)表于 2017-10-18 20:08 | 只看該作者
最近想弄弄這個(gè)謝謝分享
回復(fù)

使用道具 舉報(bào)

13#
ID:241954 發(fā)表于 2017-10-22 22:24 | 只看該作者
超人強(qiáng) 發(fā)表于 2016-3-9 16:15
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

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

使用道具 舉報(bào)

14#
ID:241829 發(fā)表于 2017-10-28 19:48 | 只看該作者
請問為什么我添加到其他函數(shù)上

QQ圖片20171028194756.png (98.28 KB, 下載次數(shù): 132)

QQ圖片20171028194756.png
回復(fù)

使用道具 舉報(bào)

15#
ID:238749 發(fā)表于 2017-11-26 18:19 | 只看該作者
樓主能問下如何在播放音樂的同時(shí)在主函數(shù)里做其他的事情嗎,我在主函數(shù)的play之后寫的其他程序與蜂鳴器沖突。
回復(fù)

使用道具 舉報(bào)

16#
ID:272245 發(fā)表于 2018-1-16 14:44 | 只看該作者
我下載到單片機(jī)上不能用,蜂鳴器的端口改過了,這是怎么回事呢
回復(fù)

使用道具 舉報(bào)

17#
ID:283896 發(fā)表于 2018-2-13 20:07 | 只看該作者
求轉(zhuǎn)換器
回復(fù)

使用道具 舉報(bào)

18#
ID:338282 發(fā)表于 2018-5-25 18:42 | 只看該作者

加上最小系統(tǒng),把小喇叭接到p^5扣
回復(fù)

使用道具 舉報(bào)

19#
ID:351351 發(fā)表于 2018-7-15 17:36 | 只看該作者
stc12c5a60s2芯片可以能正常發(fā)音嗎?
回復(fù)

使用道具 舉報(bào)

20#
ID:382249 發(fā)表于 2018-8-16 18:28 | 只看該作者
可以正常發(fā)聲,但是部分代碼不明白,求教里面*20   和  /3  什么意思?
void PlayMusic()
{
uint i=0,j,k;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{ //播放各個(gè)音符,SONG_LONG 為拍子長度
    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++;
}
}
回復(fù)

使用道具 舉報(bào)

21#
ID:385303 發(fā)表于 2018-8-16 21:34 | 只看該作者
可以,能不能把電路圖分享出來啊
回復(fù)

使用道具 舉報(bào)

22#
ID:395167 發(fā)表于 2018-10-25 15:27 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

23#
ID:358405 發(fā)表于 2020-5-27 12:24 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 操人网站| 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 亚洲天堂一区二区 | 成人在线视频一区 | 国产偷自视频区视频 | 欧美色综合 | se婷婷| 免费毛片网| 伊人久久伊人 | 亚洲天堂网站 | 福利精品 | 一区二区三区免费网站 | 亚洲国产欧美在线 | 久久国产成人 | 亚洲精品福利视频 | 中文字幕国产一区 | 国产高清免费 | 亚洲一区视频在线 | 国产伦一区二区三区四区 | 欧美成人精品激情在线观看 | 国产一区二区三区在线免费 | 日本韩国电影免费观看 | 天天精品综合 | 久久精品视频在线观看 | 亚洲视频一区在线观看 | 久热精品在线 | www.亚洲免费 | 美女国产精品 | 中文字幕蜜臀 | 日本色综合| 亚洲一级毛片 | 一区二区三区亚洲视频 | 大象一区 | 91在线视频播放 | 日日操网站 | 在线观看你懂的网站 | 欧美一区二区三区四区视频 | 91视频免费观看 | 国产一级在线观看 | 91香蕉视频在线观看 | 日韩欧美高清dvd碟片 |