找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6356|回復(fù): 2
收起左側(cè)

單片機(jī)最小系統(tǒng)播放歡樂(lè)頌及最炫民族風(fēng)片段

[復(fù)制鏈接]
ID:76686 發(fā)表于 2015-4-12 02:19 | 顯示全部樓層 |閱讀模式
      學(xué)習(xí)單片機(jī),制作單片機(jī)最小系統(tǒng)是每個(gè)單片機(jī)愛(ài)好者的都經(jīng)歷過(guò)的階段,單片機(jī)最小系統(tǒng)制作好有什么用呢? 為提高單片機(jī)愛(ài)好者學(xué)習(xí)制作單片機(jī)最小系統(tǒng)興趣,這里介紹一個(gè)有趣的單片機(jī)小程序,就是用單片機(jī)最小系統(tǒng)播放歡樂(lè)頌及最炫民族風(fēng)片段。在按下圖制作好單片 機(jī)最小系統(tǒng)后,再增加三只元件:1個(gè)電阻、1個(gè)S9012三極管,1個(gè)8歐的小喇叭后,即可完成這個(gè)單片機(jī)最小系統(tǒng)播放歡樂(lè)頌及最炫民族風(fēng)片段的小試驗(yàn), 單片機(jī)愛(ài)好者通過(guò)這個(gè)小試驗(yàn)后,一定會(huì)大大增強(qiáng)對(duì)單片機(jī)學(xué)習(xí)的興趣。

       這個(gè)單片機(jī)最小系統(tǒng)播放歡樂(lè)頌及最炫民族風(fēng)片段的小試驗(yàn),由于電路比較簡(jiǎn)單,所以這里就不畫(huà)出原理圖了,直接給出試驗(yàn)的PCB圖,感興趣的愛(ài)好者可以按圖進(jìn)行焊接制作,制作好后向單片機(jī)內(nèi)燒寫(xiě)程序后安裝上去就可以工作,感受一下單片機(jī)的無(wú)窮勉力。
      焊好的單片機(jī)最小系統(tǒng)播放歡樂(lè)頌及最炫民族風(fēng)片段試驗(yàn)板的實(shí)物照片


       播放板的單片機(jī)最小系統(tǒng)PCB圖


       焊好的單片機(jī)最小系統(tǒng)播放試驗(yàn)板未裝單片機(jī)的照片

       焊好的單片機(jī)最小系統(tǒng)播放歡樂(lè)頌及最炫民族風(fēng)片段試驗(yàn)板的實(shí)物反面照片


程序源碼:完整下載地址: 單片機(jī)播放歡樂(lè)頌與最炫民族風(fēng)片段程序包.zip (204.72 KB, 下載次數(shù): 34)
  1. /******************************************************************************/
  2. /**程序名稱:?jiǎn)纹瑱C(jī)播放歡樂(lè)頌與最炫民族風(fēng)片段
  3. /**其    他:用于時(shí)鐘周期為12MHz的STC89C52單片機(jī)
  4. /**由電子樂(lè)屋整理制作,更詳細(xì)的制作資料請(qǐng)到電子樂(lè)屋下載http://hi.baidu.com/mifklrxdjqbadoq
  5. /******************************************************************************/
  6. #include<reg52.h>
  7. sbit BUZZER = P3^2;

  8. #define uchar unsigned char
  9. #define uint  unsigned int
  10. #define REST         36                        //休止符
  11. #define A                  0                  //低音1
  12. #define AB          1                  //低音1.5
  13. #define B                  2                  //低音2
  14. #define BC          3                  //低音2.5
  15. #define C                  4                  //低音3
  16. #define D                  5                  //低音4
  17. #define DE                 6                  //低音4.5
  18. #define E                 7                       //低音5
  19. #define EF          8                  //低音5.5
  20. #define F                  9                  //低音6
  21. #define FG          10          //低音6.5
  22. #define G                 11          //低音7
  23. #define L                  12          //中音1
  24. #define LM          13          //中音1.5
  25. #define M                  14          //中音2
  26. #define MN          15          //中音2.5
  27. #define N                  16                 //中音3
  28. #define O                  17          //中音4
  29. #define OP          18          //中音4.5
  30. #define P                  19          //中音5
  31. #define PQ          20          //中音5.5
  32. #define Q                  21          //中音6
  33. #define QR          22          //中音6.5
  34. #define R                  23          //中音7
  35. #define S                  24          //高音1
  36. #define SU          25          //高音1.5
  37. #define U                  26          //高音2
  38. #define UV          27          //高音2.5
  39. #define V                  28          //高音3
  40. #define W                  29          //高音4
  41. #define WX          30          //高音4.5
  42. #define X                  31          //高音5
  43. #define XY          32          //高音5.5
  44. #define Y                  33          //高音6
  45. #define YZ          34          //高音6.5
  46. #define Z                  35          //高音7

  47. //音階
  48. uchar code m_note[][2] = {
  49. {248,136},{248,243},{249,88},{249,184},{250,18},{250,103},{250,184},{251,3},{251,75},
  50. {251,143},{251,206},{252,11},{252,67},{252,121},{252,172},{252,219},{253,9},{253,51},
  51. {253,91},{253,129},{253,165},{253,199},{253,231},{254,5},{254,33},{254,60},{254,85},
  52. {254,109},{254,132},{254,153},{254,173},{254,192},{254,210},{254,227},{254,243},{255,2},
  53. {0,0},
  54. };


  55. //音符(1對(duì)應(yīng)三十二分音符,32對(duì)應(yīng)全音符)
  56. uchar code display[][2] = {
  57. //歡樂(lè)頌
  58. {N,8},{N,8},{O,8},{P,8},{P,8},{O,8},{N,8},{M,8},{L,8},{L,8},{M,8},{N,8},{N,12},{M,4},{M,8},{0xff,8},
  59. {N,8},{N,8},{O,8},{P,8},{P,8},{O,8},{N,8},{M,8},{L,8},{L,8},{M,8},{N,8},{M,12},{L,4},{L,8},{0xff,8},
  60. {M,8},{M,8},{N,8},{L,8},{M,8},{N,4},{O,4},{N,8},{L,8},{M,8},{N,4},{O,4},{N,8},{M,8},{L,8},{M,8},{E,8},
  61. {N,8},{N,8},{O,8},{P,8},{P,8},{O,8},{N,8},{M,8},{L,8},{L,8},{M,8},{N,8},{M,12},{L,4},{L,8},{0xff,8},
  62. {M,8},{M,8},{N,8},{L,8},{M,8},{N,4},{O,4},{N,8},{L,8},{M,8},{N,4},{O,4},{N,8},{M,8},{L,8},{M,8},{E,8},
  63. {N,8},{N,8},{O,8},{P,8},{P,8},{O,8},{N,8},{M,8},{L,8},{L,8},{M,8},{N,8},{M,12},{L,4},{L,8},{0xff,8},
  64. //樂(lè)譜(最炫民族風(fēng))
  65. {N,8},{F,4},{F,4},{L,8},{N,8},{M,4},{M,2},{N,2},{M,4},{L,4},
  66. {M,4},{L,4},{F,8},{N,8},{F,4},{F,4},{L,8},{N,8},
  67. {P,4},{M,2},{N,2},{M,4},{L,4},{M,4},{L,4},{G,4},{E,4},
  68. {N,8},{F,4},{F,4},{L,8},{N,8},{M,4},{M,2},{N,2},{M,4},{L,4},
  69. {M,4},{L,4},{F,4},{E,4},{N,8},{F,4},{F,4},{L,8},{N,8},
  70. {P,4},{N,4},{0xff,24},//前奏
  71. {F,8},{F,4},{E,4},{F,8},{F,4},{L,4},{L,8},{M,4},{L,4},{F,8},
  72. {0xff,8},{L,8},{L,4},{E,4},{L,4},{M,4},{N,4},{P,4},{P,4},{N,4},
  73. {M,8},{N,8},{0xff,8},{Q,4},{Q,4},{Q,4},{P,4},{N,4},{N,8},{L,4},
  74. {F,4},{F,4},{F,4},{N,4},{M,8},{0xff,8},{N,4},{N,4},{P,4},{N,4},
  75. {M,4},{N,4},{M,4},{L,4},{F,8},{E,8},{F,8},{0xff,8},
  76. {F,8},{F,4},{E,4},{F,8},{F,4},{L,4},{L,8},{M,4},{L,4},{F,8},
  77. {0xff,8},{L,8},{L,4},{E,4},{L,4},{M,4},{N,4},{P,4},{P,4},{N,4},
  78. {M,8},{N,8},{0xff,8},{Q,4},{Q,4},{Q,4},{P,4},{N,4},{N,8},{L,4},
  79. {F,4},{F,4},{F,4},{N,4},{M,8},{0xff,8},{N,4},{N,4},{P,4},{N,4},
  80. {M,4},{N,4},{M,4},{L,4},{F,8},{E,8},{F,8},{0xff,8},
  81. {N,4},{N,4},{P,4},{N,4},{N,4},{P,4},{P,4},{Q,4},{S,4},{Q,4},
  82. {P,8},{Q,8},{0xff,8}, //此處有變調(diào)
  83. {F,8},{F,4},{E,4},{F,8},{L,8},{M,4},{N,2},{M,2},{L,4},{M,4},
  84. {N,8},{0xff,8},{F,4},{Q,4},{Q,4},{P,4},{M,4},{N,2},{M,2},
  85. {L,4},{M,4},{N,8},{0xff,8},{0xff,16},{L,4},{F,4},{F,4},{L,4},
  86. {M,8},{E,4},{E,4},{N,4},{P,4},{N,4},{M,4},{L,8},{0xff,8},
  87. {F,4},{L,4},{M,4},{N,4},{M,4},{L,4},{E,4},{C,4},{F,8},{0xff,8},{0xff,16},
  88. {F,8},{F,4},{E,4},{F,8},{L,8},{M,4},{N,2},{M,2},{L,4},{M,4},
  89. {N,8},{0xff,8},{F,4},{Q,4},{Q,4},{P,4},{M,4},{N,2},{M,2},
  90. {L,4},{M,4},{N,8},{0xff,8},{0xff,16},{L,4},{F,4},{F,4},{L,4},
  91. {M,8},{E,4},{E,4},{N,4},{P,4},{N,4},{M,4},{L,12},{L,4},
  92. {F,4},{L,4},{M,4},{N,4},{P,4},{N,4},{N,4},{P,4},{Q,8},{0xff,8},{0xff,8},

  93. {Q,6}, {Q,2},{Q,4},{Q,4},{Q,6},{P,2},{N,4},{M,4},{M,6},{M,2},{N,6},{P,2},{N,6},{M,2},
  94. {L,6},{F,2},{F,8},{F,4},{E,4},{F,8},{F,4},{L,4}, {M,4},{N,2},{M,2},        {L,4},{M,4},{N,8},{0xff,8},
  95. {Q,4},{P,4},{N,4},{M,4},{P,4},{N,4},{M,4},{L,4},{L,8},{0xff,8},{F,2}, {A,2},{B,2},{C,2},{B,2},
  96. {A,2}, {F,2},{A,2},

  97. {N,4},{N,4},{P,4},{N,4},{N,4},{P,4},{P,4},{Q,4},{S,4},{Q,4},
  98. {P,8},{Q,8},{0xff,8}, //此處有變調(diào)
  99. {F,8},{F,4},{E,4},{F,8},{L,8},{M,4},{N,2},{M,2},{L,4},{M,4},
  100. {N,8},{0xff,8},{F,4},{Q,4},{Q,4},{P,4},{M,4},{N,2},{M,2},
  101. {L,4},{M,4},{N,8},{0xff,8},{0xff,16},{L,4},{F,4},{F,4},{L,4},
  102. {M,8},{E,4},{E,4},{N,4},{P,4},{N,4},{M,4},{L,8},{0xff,8},
  103. {F,4},{L,4},{M,4},{N,4},{M,4},{L,4},{E,4},{C,4},{F,8},{0xff,8},{0xff,16},
  104. {F,8},{F,4},{E,4},{F,8},{L,8},{M,4},{N,2},{M,2},{L,4},{M,4},
  105. {N,8},{0xff,8},{F,4},{Q,4},{Q,4},{P,4},{M,4},{N,2},{M,2},
  106. {L,4},{M,4},{N,8},{0xff,8},{0xff,16},{L,4},{F,4},{F,4},{L,4},
  107. {M,8},{E,4},{E,4},{N,4},{P,4},{N,4},{M,4},{L,12},{L,4},
  108. {F,4},{L,4},{M,4},{N,4},{P,4},{N,4},{N,4},{P,4},{Q,8},{0xff,8},{0xff,8},


  109. {0,0xff},
  110. };
  111. uchar time_h,time_l;
  112. void Delay(uchar x);

  113. void main()
  114. {
  115.         uchar j;
  116.         uint i;
  117.         TMOD = 0x01;
  118.         ET0 = 1;
  119.         EA = 1;
  120.         TR0 = 1;
  121.         i = 0;
  122.         j = 0;
  123.         while(1)
  124.         {
  125.                 while(display[i][1] != 0xff)
  126.                 {
  127.                         if(display[i][0] == 0xff)
  128.                         {
  129.                                 TR0 = 0;
  130.                                 Delay(display[i][1]);
  131.                             BUZZER = 1;       
  132.                         }
  133.                         else
  134.                         {
  135.                                 time_h = m_note[display[i][0]][0];
  136.                                 time_l = m_note[display[i][0]][1];
  137.                                 TH0 = time_h;
  138.                                 TL0 = time_l;
  139.                                 ET0 = 1;
  140.                                 TR0 = 1;
  141.                                 Delay(display[i][1]);
  142.                                 TR0 = 0;
  143.                                 ET0 = 0;
  144.                             BUZZER = 1;       
  145.                         }                       
  146.                         i++;
  147.                 }
  148.                 i = 0;
  149.         }
  150. }

  151. void Timer0() interrupt 1
  152. {
  153.         TR0 = 0;
  154.         TH0 = time_h;
  155.         TL0 = time_l;
  156.         BUZZER = ~BUZZER;
  157.         TR0 = 1;
  158. }

  159. void Delay(uchar x)
  160. {
  161.         uint i,j;
  162.         for(i = 0;i < x;i++)
  163.                 for(j = 0;j < 12000;j++);
  164. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:80953 發(fā)表于 2015-5-24 11:43 | 顯示全部樓層
挺好 請(qǐng)問(wèn)樂(lè)譜是怎么寫(xiě)的呢? 我按照你的做了一個(gè)但是想換一個(gè)音樂(lè) 求大神點(diǎn)明
回復(fù)

使用道具 舉報(bào)

ID:153199 發(fā)表于 2016-12-25 16:10 | 顯示全部樓層
不錯(cuò)的帖子,問(wèn)一下樓主如果用stc89c52,電路是否一樣
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表