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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8903|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人在线视频 | 精品国产乱码久久久久久蜜臀 | 一区二区精品 | 亚州精品天堂中文字幕 | 91大神在线资源观看无广告 | 久久激情视频 | 夜夜草 | 91高清视频在线观看 | 成年人精品视频 | 日韩免费视频一区二区 | www.日日操 | 91麻豆精品国产91久久久资源速度 | 亚洲一区二区国产 | 福利片在线观看 | 日本高清中文字幕 | 91短视频网址 | 亚洲久久一区 | 在线亚洲人成电影网站色www | 国产精品视频偷伦精品视频 | 国产精品1区2区 | 久久不卡 | 日本中文字幕日韩精品免费 | 免费久久精品 | 欧美成人第一页 | 毛片链接 | 天天躁日日躁狠狠的躁天龙影院 | 日韩午夜在线播放 | 特级特黄特色的免费大片 | 自拍偷拍精品 | 久久精品视频播放 | 国产精品一区二区av | 五月天婷婷综合 | 99pao成人国产永久免费视频 | 成人精品一区二区三区四区 | 久久精品一区 | 国产精品一区二区三区久久 | 日韩精品在线观看免费 | 涩涩操 | 亚洲欧洲日韩精品 中文字幕 | 99热视| 久久专区 |