欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)按鍵切換下一首歌 [打印本頁]

作者: 會(huì)飛的魚1710    時(shí)間: 2018-10-13 19:01
標(biāo)題: 單片機(jī)按鍵切換下一首歌
  1. #include "at89x51.h"
  2. #define uchar unsigned char
  3. #define uint unsinged int

  4. sbit speaker=P1^5;//蜂鳴器。按鍵默認(rèn)的是P3.2腳(外部中斷0)
  5. uchar t0h,t0l,time,flag;
  6. //--------------------------------------
  7. //單片機(jī)晶振采用12MHz
  8. // 頻率-半周期數(shù)據(jù)表 高八位  本軟件共保存了四個(gè)八度的28個(gè)頻率數(shù)據(jù)
  9. uchar code FREQH[]={0x01,                                                                         //0的時(shí)候沒有音符
  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. // 頻率-半周期數(shù)據(jù)表 低八位
  16. uchar code FREQL[]={0x01,                                                                         //0的時(shí)候沒有音符
  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. //一個(gè)音符有三個(gè)數(shù)字。前為第幾個(gè)音、中為第幾個(gè)八度、后為時(shí)長(zhǎng)(以1/4拍為單位)。
  23. //6,2,6 分別代表:6,中音,6個(gè)1/4拍;
  24. //5,2,2 分別代表:5,中音,2個(gè)1/4拍;
  25. //3,2,4 分別代表:3,中音,4個(gè)1/4拍;
  26. //5,2,4 分別代表:5,中音,4個(gè)1/4拍;
  27. //1,3,4 分別代表:1,高音,4個(gè)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)  //延時(shí)程序,控制發(fā)音的時(shí)間長(zhǎng)度120ms(1/4拍)
  85. {
  86.         uchar a,b,c;
  87.         while(t--)  //四重循環(huán),共延時(shí)t個(gè)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. //延時(shí)期間,可進(jìn)入T0中斷去發(fā)音
  94.         TR0=0;      //關(guān)閉T0,停止發(fā)音
  95. }
  96. //--------------------------------------
  97. void singachar()      //演奏一個(gè)音符
  98. {
  99.         TR0=0;
  100.         TH0=t0h;    //控制音調(diào)
  101.         TL0=t0l;
  102.         TR0=1;      //啟動(dòng)T0,由T0輸出方波去發(fā)音
  103.         delay(time);     //控制時(shí)間長(zhǎng)度即 節(jié)拍
  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個(gè)是音符,第i+1個(gè)是第幾個(gè)八度
  122.                 t0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值
  123.                 t0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度
  124.                 time=str[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值節(jié)拍時(shí)間
  125.                 i+=3;
  126.                 singachar();
  127.         }
  128. }
  129. //-----------------------------------------------------
  130. void t0int() interrupt 1   //T0中斷程序,控制發(fā)音的音調(diào)
  131. {
  132.         TR0=0;      //先關(guān)閉T0
  133.         speaker=~speaker;   //輸出方波,發(fā)音
  134.         TH0=t0h;    //下次的中斷時(shí)間,這個(gè)時(shí)間,控制音調(diào)高低
  135.         TL0=t0l;
  136.         TR0=1;      //啟動(dòng)T0
  137. }
  138. //-----------------------------------------------------
  139. void int0() interrupt 0   //T0中斷程序,控制發(fā)音的音調(diào)
  140. {
  141.         delay(1);
  142.         if(INT0==0)
  143.         {
  144.                 flag++;      //先關(guān)閉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定時(shí)工作方式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. //發(fā)出一個(gè)音符
  171. }
復(fù)制代碼

作者: 快樂眼淚    時(shí)間: 2018-10-13 19:31
努力學(xué)習(xí)!一定要看懂程序!樓主真厲害
作者: chaopping    時(shí)間: 2018-10-14 19:50
說好的按鍵切換歌曲 按鍵呢
作者: 會(huì)飛的魚1710    時(shí)間: 2018-10-16 20:57
P32呀,INT0默認(rèn)的
作者: jll586    時(shí)間: 2018-10-16 21:19
有個(gè)電路圖就更好了
作者: 會(huì)飛的魚1710    時(shí)間: 2018-10-26 09:36
jll586 發(fā)表于 2018-10-16 21:19
有個(gè)電路圖就更好了

就一個(gè)按鍵和一個(gè)蜂鳴器呀
作者: zjchen    時(shí)間: 2019-3-25 16:31
樓主幸苦了!
作者: 真想當(dāng)個(gè)散人    時(shí)間: 2019-3-25 19:51
看著很厲害 還要查樂譜  需要花時(shí)間
作者: whille    時(shí)間: 2020-6-22 14:44
chaopping 發(fā)表于 2018-10-14 19:50
說好的按鍵切換歌曲 按鍵呢

采用外部中斷的方式切換歌曲,外部中斷就是按鍵
作者: 2847194402    時(shí)間: 2020-12-24 16:25
怎么用手機(jī)藍(lán)牙實(shí)現(xiàn)音樂播放啊





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1