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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5680|回復: 2
打印 上一主題 下一主題
收起左側

單片機音樂盒proteus仿真和源碼 內附三首小音樂

[復制鏈接]
跳轉到指定樓層
樓主
內附三首小音樂。


全部源碼和仿真下載:
音樂會.zip (61.05 KB, 下載次數: 140)


單片機源程序:
  1. #include<reg51.h>
  2. sbit fx_buzzer=P3^7; //蜂鳴器音樂輸出,可根據需要自行修改

  3. sbit music_1 = P2^0;        //第一首音樂
  4. sbit music_2 = P2^1;        //第二首音樂
  5. sbit music_3 = P2^2;        //第二首音樂



  6. unsigned int tone; //簡譜音調計數

  7. unsigned char fx_timeh,fx_timel,music,speed; //fx_timeh:TH0初值,fx_timel:TL0初值; music =1播放,=0停止

  8. unsigned char code fx_tone0[]={ //音調對應定時器初值
  9. 0xFC,0x8E, 0xFC,0xED, 0xFD,0x43, //中音
  10. 0xFD,0x6A, 0xFD,0xB3, 0xFD,0xF3, 0xFE,0x2D,
  11. 0xFE,0x47, 0xFE,0x76, 0xFE,0xA1, //高音
  12. 0xFE,0xC7, 0xFE,0xD9, 0xFE,0xF9, 0xFF,0x16
  13. };

  14. unsigned char code songbie[]={//送別
  15. 0x54,0x32,0x52,0x88,0x64,0x84,0x58,0x54,0x12,0x22,0x34,0x22,0x12,0x2c,0x04,
  16. 0x54,0x32,0x52,0x86,0x72,0x64,0x84,0x58,0x54,0x22,0x32,0x46,0x72,0x1c,
  17. 0x64,0x8c,0x74,0x62,0x72,0x88,0x62,0x72,0x82,0x62,0x52,0x32,0x12,0x2f,
  18. 0x54,0x32,0x52,0x86,0x72,0x64,0x84,0x58,0x54,0x22,0x32,0x46,0x72,0x1c,
  19. 0x64,0x8c,0x74,0x62,0x72,0x88,0x62,0x72,0x82,0x62,0x52,0x32,0x12,0x2f,
  20. 0x54,0x32,0x52,0x86,0x72,0x64,0x84,0x58,0x54,0x22,0x32,0x46,0x72,0x1c,
  21. 0xff};

  22. unsigned char code qnzl[]={ //千年之戀
  23. 0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,
  24. 0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,0x32,0x31,
  25. 0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,0x31,
  26. 0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,0x32,
  27. 0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,
  28. 0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,0x63,0xA1,
  29. 0xA2,0x62,0x92,0x82,0x52,0x31,0x51,0x63,0x51,0x63,
  30. 0x51,0x63,0x51,0x62,0x82,0x7C,0x02,0x61,0x71,0x82,
  31. 0x71,0x62,0xA2,0x71,0x76,0x61,0x71,0x82,0x71,0x62,
  32. 0x52,0x31,0x36,0x61,0x71,0x82,0x71,0x62,0xA3,0x73,
  33. 0x62,0x53,0x42,0x63,0x83,0x83,0x91,0x91,0x61,0x71,
  34. 0x82,0x71,0x62,0x0A2,0x71,0x76,0x61,0x71,0x82,0x71,
  35. 0x62,0x52,0x31,0x36,0x61,0x71,0x82,0x71,0x62,0xA3,
  36. 0x73,0x62,0x53,0x42,0x82,0x88,0x02,0x74,0x93,0x89,
  37. 0xff};

  38. unsigned char code laohu[]={                  //兩只老虎
  39. 0x14,0x14,0x24,0x34,0x14,0x14,0x24,0x34,0x14,
  40. 0x34,0x44,0x58,0x34,0x44,0x58,
  41. 0x53,0x61,0x53,0x41,0x34,0x14,
  42. 0x53,0x61,0x53,0x41,0x34,0x14,
  43. 0x14,0x54,0x18,
  44. 0x14,0x54,0x18,
  45. 0xFF};

  46. unsigned char keyValue;           //存儲按下的鍵值

  47. void init() //初始化函數
  48. {
  49.         EA=1;//開總中斷
  50.         TMOD=0x10;//定時器0工作在方式1
  51.         TH1=0;
  52.         TL1=0;
  53.         ET1=1;
  54.         music=1; //默認播放
  55.         tone=0;
  56.         speed=20;         //播放速度
  57. }


  58. void fx_delay(unsigned char i) //音長延時函數
  59. {
  60.         unsigned int j,k;
  61.         for(i;i>0;i--)
  62.                 for(k=speed;k>0;k--)
  63.                         for(j=625;j>0;j--);
  64. }


  65. void play(unsigned char *temp) //音階播放函數
  66. {
  67.         if(speed<1) speed=1; //速度范圍設定
  68.         if(speed>60) speed=60;
  69.         while(1)
  70.         {
  71.                 if(!music) break;
  72.         
  73.                 if(music==2) {tone=0;music=1;break;} //配合按鈕換歌
  74.                 if(temp[tone]==0xff){tone=0;break;};
  75.                 if(temp[tone]/16!=0) //取高4位的音階判斷
  76.                 {
  77.                         fx_timeh=fx_tone0[temp[tone]/16*2-2];
  78.                         fx_timel=fx_tone0[temp[tone]/16*2-1];
  79.                         TR1=1;
  80.                 }
  81.                 fx_delay(temp[tone]%16); //取數的低4位
  82.                 TR1=0;
  83.                 tone++;
  84.         }
  85.         TR1=0;
  86. }


  87. void fx_tone() interrupt 3 //用于產生各種音調
  88. {
  89.         TH1=fx_timeh;
  90.         TL1=fx_timel;
  91.         fx_buzzer=~fx_buzzer;
  92. }

  93. void Delay10ms(unsigned int n)  //延時函數,延時10ms
  94. {  
  95.     unsigned char a, b;  
  96.     for (; n>0; n--)  
  97.     {  
  98.         for (b=38; b>0; b--)  
  99.         {  
  100.             for (a=130; a>0; a--);  
  101.         }  
  102.     }      
  103. }  


  104. void EX0_INT(void) interrupt 0   //外部INT0
  105. {
  106.         if(tone !=0 ) music = 2;


  107.         if(music_1 == 0)
  108.                 {
  109.                         Delay10ms(1);
  110.                         if(music_1 == 0)
  111.                         {
  112.                                 while(music_1 == 0);        //等待松開按鈕
  113.                                 keyValue = 1; //播放第一首音樂-送別
  114.                         }
  115.                 }
  116.                
  117.                 if(music_2 == 0)
  118.                 {
  119.                         Delay10ms(1);
  120.                         if(music_2 == 0)
  121.                         {
  122.                                 while(music_2 == 0);        //等待松開按鈕
  123.                                 keyValue = 2; //播放第二首音樂
  124.                         }
  125.                 }
  126.                
  127.                 if(music_3 == 0)
  128.                 {
  129.                         Delay10ms(1);
  130.                         if(music_3 == 0)
  131.                         {
  132.                                 while(music_3 == 0);        //等待松開按鈕
  133.                                 keyValue = 3; //播放第三首音樂
  134.                         }
  135.                         
  136.                 }

  137. }

  138. //主函數
  139. void main()
  140. {
  141.         init(); //初始化函數
  142.         //play(song1); //音階播放函數

  143.         IT0=1;          //外部中斷INT0位下降沿觸發
  144.         EX0=1;          //開INT0中斷允許
  145.         


  146. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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

使用道具 舉報

沙發
ID:858740 發表于 2020-12-11 15:55 | 只看該作者
沒有proteus仿真電路圖?
回復

使用道具 舉報

板凳
ID:328014 發表于 2020-12-11 16:18 | 只看該作者
lixinxian 發表于 2020-12-11 15:55
沒有proteus仿真電路圖?

那個dsn文件就是Proteus仿真圖,需要先下載安裝Proteus7.8版本才能打開,其他版本都不行
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费一区二区 | 综合久久久久久久 | 亚洲一区二区免费视频 | 天天色影视综合 | 成人精品一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 一级黄色生活视频 | 亚洲成av人影片在线观看 | 国产激情视频 | 亚洲精品二区 | 中文字幕第一页在线 | 久久噜噜噜精品国产亚洲综合 | 91夜色在线观看 | 亚洲国产成人精品久久 | 国产成人自拍一区 | 色婷婷精品 | 一级黄色在线 | 日韩精品在线看 | 久久免费精品视频 | 午夜影院在线观看视频 | 久久久av中文字幕 | 国产免费一区二区 | 免费在线看黄 | 国产精品国产三级国产aⅴ中文 | 日韩中文字幕免费在线 | 国产激情三区 | 一区二区蜜桃 | 欧美在线色视频 | 日韩中文字幕视频 | 国产高清在线观看 | 婷婷丁香在线视频 | 亚洲高清一区二区三区 | 在线免费激情视频 | 国产精品视频一区二区三区不卡 | 亚洲黄色av | 成人免费影院 | 精品国产欧美一区二区 | 色综合桃花网 | 日韩视频在线免费观看 | 自拍偷拍亚洲欧美 | 国产免费一区二区三区 |