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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8844|回復: 9
收起左側

單片機按鍵切換下一首歌

[復制鏈接]
ID:332269 發表于 2018-10-13 19:01 | 顯示全部樓層 |閱讀模式
  1. #include "at89x51.h"
  2. #define uchar unsigned char
  3. #define uint unsinged int

  4. sbit speaker=P1^5;//蜂鳴器。按鍵默認的是P3.2腳(外部中斷0)
  5. uchar t0h,t0l,time,flag;
  6. //--------------------------------------
  7. //單片機晶振采用12MHz
  8. // 頻率-半周期數據表 高八位  本軟件共保存了四個八度的28個頻率數據
  9. uchar code FREQH[]={0x01,                                                                         //0的時候沒有音符
  10.                                         0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,                //低音1234567
  11.                                         0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,i
  12.                                         0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,                  //高音 234567
  13.                                         0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF};         //超高音 1234567
  14. //-----------------------------------------
  15. // 頻率-半周期數據表 低八位
  16. uchar code FREQL[]={0x01,                                                                         //0的時候沒有音符
  17.                                         0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,                //低音1234567
  18.                                         0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,i
  19.                                         0xEE,0x44,0x6B,0xB4,0xF4,0x2D,                   //高音 234567
  20.                                         0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16};        //超高音 1234567
  21. //--------------------------------------
  22. //一個音符有三個數字。前為第幾個音、中為第幾個八度、后為時長(以1/4拍為單位)。
  23. //6,2,6 分別代表:6,中音,6個1/4拍;
  24. //5,2,2 分別代表:5,中音,2個1/4拍;
  25. //3,2,4 分別代表:3,中音,4個1/4拍;
  26. //5,2,4 分別代表:5,中音,4個1/4拍;
  27. //1,3,4 分別代表:1,高音,4個1/4拍;
  28. //低音為1,中音為2,高音為3,超高音為4;
  29. //////////////////////////////////////////////////////////
  30. /********************世上只有媽媽好*********************/
  31. uchar code sszymmh[]={
  32.                                                 6,2,6,5,2,2,3,2,4,5,2,4,
  33.                                                 1,3,4,6,2,2,5,2,2,6,2,8,
  34.                                                 3,2,4,5,2,2,6,2,2,5,2,4,
  35.                                                 3,2,4,1,2,2,6,1,2,5,2,2,
  36.                                                 3,2,2,2,2,8,2,2,6,3,2,2,
  37.                                                 5,2,4,5,2,2,6,2,2,3,2,4,
  38.                                                 2,2,4,1,2,8,5,2,6,3,2,2,
  39.                                                 2,2,2,1,2,2,6,1,2,1,2,2,
  40.                                                 5,1,16,0,0,0};
  41. /**********************兩只耗子**********************/
  42. uchar code TwoMouse[]={
  43.                                                 3,2,2,6,2,2,7,2,2,5,2,2,
  44.                                                 3,2,2,6,2,2,7,2,2,5,2,2,
  45.                                                 7,2,2,1,3,2,2,3,4,
  46.                                                 7,2,2,1,3,2,2,3,4,
  47.                                                 2,3,1,3,3,1,2,3,1,1,3,1,7,2,2,5,2,2,
  48.                                                 2,3,1,3,3,1,2,3,1,1,3,1,7,2,2,5,2,2,
  49.                                                 6,2,2,2,2,2,5,2,4,6,2,2,2,2,2,5,2,4,
  50.                                                 0,0,0};
  51. /***********************兩只蝴蝶**********************/
  52. uchar code TwoButterfly[]={
  53.                                                 3,2,2,2,2,2,3,2,6,3,2,2,3,2,2,2,2,2,
  54.                                                 1,2,6,6,1,2,1,2,2,2,2,4,2,2,2,3,2,2,
  55.                                                 2,2,2,1,2,2,6,1,2,1,2,2,5,1,12,3,2,2,
  56.                                                 2,2,2,3,2,8,3,2,2,2,2,2,3,2,2,3,2,2,
  57.                                                 1,2,12,6,1,2,1,2,2,2,2,4,2,2,2,3,2,2,
  58.                                                 2,2,2,1,2,2,6,1,2,1,2,2,2,2,12,3,2,2,
  59.                                                 2,2,2,3,2,8,3,2,2,2,2,2,3,2,2,2,2,2,
  60.                                                 1,2,12,6,1,2,1,2,2,2,2,4,2,2,2,3,2,2,
  61.                                                 2,2,2,1,2,2,6,1,2,1,2,2,5,2,12,3,2,2,
  62.                                                 5,2,2,5,2,8,5,2,2,5,2,2,6,2,2,5,2,2,
  63.                                                 3,2,12,2,2,2,3,2,2,2,2,4,2,2,2,3,2,2,
  64.                                                 2,2,2,1,2,2,6,1,2,6,1,1,1,2,1,1,2,1,
  65.                                                 1,2,1,1,2,12,0,0,4,5,2,2,5,2,2,6,2,2,
  66.                                                 1,3,2,7,2,2,7,2,2,6,2,2,3,2,2,2,2,2,
  67.                                                 2,2,2,3,2,2,3,2,8,3,2,2,3,2,2,
  68.                                                 5,2,2,6,2,4,6,2,6,6,1,2,3,2,2,2,2,2,
  69.                                                 2,2,12,3,2,2,5,2,2,5,2,2,3,2,2,5,2,4,
  70.                                                 1,3,4,7,2,2,6,2,2,7,2,2,3,2,4,
  71.                                                 6,2,2,6,2,2,7,2,2,6,2,2,5,2,2,
  72.                                                 3,2,2,2,2,4,3,2,2,2,2,2,3,2,2,5,2,6,
  73.                                                 5,2,2,5,2,2,6,2,2,6,2,2,5,2,2,
  74.                                                 3,2,2,2,2,4,5,1,2,5,1,2,6,1,2,1,2,12,
  75.                                                 0,0,0};
  76. /*****************happy birthday***********************/
  77. uchar code Birthday[]={
  78.                                                 5,1,2,5,1,2,6,1,4,5,1,4,1,2,4,7,1,8,
  79.                                                 5,1,2,5,1,2,6,1,4,5,1,4,2,2,4,1,2,8,
  80.                                                 5,1,2,5,1,2,5,2,4,3,2,4,1,2,4,7,1,4,
  81.                                                 6,1,4,4,2,2,4,2,2,3,2,4,1,2,4,2,2,4,
  82.                                                 1,2,4,0,0,0};
  83. //-----------------------------------------------------
  84. void delay(uchar t)  //延時程序,控制發音的時間長度120ms(1/4拍)
  85. {
  86.         uchar a,b,c;
  87.         while(t--)  //四重循環,共延時t個1/4拍
  88.         {   
  89.                 for(c=193;c>0;c--)
  90.                         for(b=114;b>0;b--)
  91.                                 for(a=1;a>0;a--);
  92.         }
  93. //延時期間,可進入T0中斷去發音
  94.         TR0=0;      //關閉T0,停止發音
  95. }
  96. //--------------------------------------
  97. void singachar()      //演奏一個音符
  98. {
  99.         TR0=0;
  100.         TH0=t0h;    //控制音調
  101.         TL0=t0l;
  102.         TR0=1;      //啟動T0,由T0輸出方波去發音
  103.         delay(time);     //控制時間長度即 節拍
  104. }
  105. //--------------------------------------
  106. //**************演奏一首歌***********************************//
  107. void song()
  108. {
  109.         uchar k,i,*str;
  110.         i=0;
  111.         time=1;
  112.         while(time)
  113.         {
  114.                 switch(flag)
  115.                 {
  116.                         case 1:str=sszymmh;break;
  117.                         case 2:str=TwoButterfly;break;
  118.                         case 3:str=Birthday;break;
  119.                         case 4:str=TwoMouse;break;
  120.                 }
  121.                 k=str[i]+7*(str[i+1]);//第i個是音符,第i+1個是第幾個八度
  122.                 t0h=FREQH[k];//從數據表中讀出頻率數值
  123.                 t0l=FREQL[k];//實際上,是定時的時間長度
  124.                 time=str[i+2];//讀出時間長度數值節拍時間
  125.                 i+=3;
  126.                 singachar();
  127.         }
  128. }
  129. //-----------------------------------------------------
  130. void t0int() interrupt 1   //T0中斷程序,控制發音的音調
  131. {
  132.         TR0=0;      //先關閉T0
  133.         speaker=~speaker;   //輸出方波,發音
  134.         TH0=t0h;    //下次的中斷時間,這個時間,控制音調高低
  135.         TL0=t0l;
  136.         TR0=1;      //啟動T0
  137. }
  138. //-----------------------------------------------------
  139. void int0() interrupt 0   //T0中斷程序,控制發音的音調
  140. {
  141.         delay(1);
  142.         if(INT0==0)
  143.         {
  144.                 flag++;      //先關閉T0
  145.                
  146.                 if(flag>=5)
  147.                         flag=0;
  148.         }
  149.         while(INT0==0);
  150. }
  151. //--------------------------------------
  152. void main(void)
  153. {
  154.         TMOD=0x01;     //置T0定時工作方式1
  155.         IT0=1;
  156.         EX0=1;                 //外部中斷0
  157.         ET0=1;      //開T0中斷
  158.         EA=1;      //開CPU中斷
  159.         while(1)
  160.         {
  161.                 song();
  162.                 delay(2);
  163. /*                song(sszymmh);
  164.                 delay(20);
  165.                 song(TwoButterfly);
  166.                 delay(20);
  167.                 song(Birthday);
  168.                 delay(20);*/
  169.         }
  170. //發出一個音符
  171. }
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:399179 發表于 2018-10-13 19:31 來自手機 | 顯示全部樓層
努力學習!一定要看懂程序!樓主真厲害
回復

使用道具 舉報

ID:177599 發表于 2018-10-14 19:50 | 顯示全部樓層
說好的按鍵切換歌曲 按鍵呢
回復

使用道具 舉報

ID:332269 發表于 2018-10-16 20:57 | 顯示全部樓層
P32呀,INT0默認的
回復

使用道具 舉報

ID:357520 發表于 2018-10-16 21:19 | 顯示全部樓層
有個電路圖就更好了
回復

使用道具 舉報

ID:332269 發表于 2018-10-26 09:36 | 顯示全部樓層
jll586 發表于 2018-10-16 21:19
有個電路圖就更好了

就一個按鍵和一個蜂鳴器呀
回復

使用道具 舉報

ID:478505 發表于 2019-3-25 16:31 | 顯示全部樓層
樓主幸苦了!
回復

使用道具 舉報

ID:498164 發表于 2019-3-25 19:51 | 顯示全部樓層
看著很厲害 還要查樂譜  需要花時間
回復

使用道具 舉報

ID:784187 發表于 2020-6-22 14:44 | 顯示全部樓層
chaopping 發表于 2018-10-14 19:50
說好的按鍵切換歌曲 按鍵呢

采用外部中斷的方式切換歌曲,外部中斷就是按鍵
回復

使用道具 舉報

ID:867178 發表于 2020-12-24 16:25 | 顯示全部樓層
怎么用手機藍牙實現音樂播放啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久久久久久久久久 | 免费福利视频一区二区三区 | 国产亚洲精品久久久久动 | 免费看的av| 97影院在线午夜 | 久久综合一区二区 | 国产成人精品一区二区 | 男人的天堂久久 | 久久综合一区二区三区 | 国产高清一区二区三区 | 国产福利在线播放 | 九九久久99| 国产成人免费视频网站高清观看视频 | 国产欧美一区二区三区久久人妖 | 欧美视频在线播放 | 伊人久久成人 | 日韩欧美国产一区二区 | 久久久精品一区二区三区四季av | 欧美精品一区在线观看 | 91精品在线播放 | 国产精品美女www爽爽爽视频 | 成人免费淫片aa视频免费 | 久久精品97| 欧洲精品久久久久毛片完整版 | 夜夜爽99久久国产综合精品女不卡 | 精品日本久久久久久久久久 | 日本不卡一区二区三区 | 国产精品海角社区在线观看 | 九九久久99 | www.国产.com | 一区二区三区成人 | 久久精品欧美一区二区三区麻豆 | 在线视频a | 日韩高清黄色 | 91佛爷在线观看 | 欧美一区二区三区视频在线观看 | 97视频在线观看免费 | 日韩欧美精品在线 | 国产一区二区观看 | 国产日韩欧美激情 | 成人福利网站 |