<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機C語言程序設(shè)計:按鍵控制定時器選播多段音樂

          單片機C語言程序設(shè)計:按鍵控制定時器選播多段音樂

          作者: 時間:2013-08-31 來源:網(wǎng)絡(luò) 收藏

          /* 名稱:選播多段音樂


          說明:本例內(nèi)置 3 段音樂,K1 可啟動


          停止音樂播放,K2 用于選擇音樂段。


          */


          #includereg51.h>


          #includeintrins.h>


          #define uchar unsigned char


          #define uint unsigned int

          sbit K1=P1^0; //播放和停止鍵


          sbit SPK=P3^7; //蜂鳴器


          uchar Song_Index=0,Tone_Index=0; //當前音樂段索引,音符索引


          //數(shù)碼管段碼表


          uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


          //標準音符頻率對應(yīng)的延時表


          uchar code HI_LIST[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};


          uchar code LO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};


          //三段音樂的音符


          uchar code Song[][50]=


          {


          {1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1},


          {3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,53,3,2,1,1,-1},


          {3,2,1,3,2,1,1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1}


          };


          //三段音樂的節(jié)拍


          uchar code Len[][50]=


          {


          {1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2,-1},


          {1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,-1},


          {1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1}

          };

          //外部中斷 0

          void EX0_INT() interrupt 0

          {

          TR0=0;播放結(jié)束或者播放中途切換歌曲時停止播放

          Song_Index=(Song_Index+1)%3;跳到下一首的開頭


          Tone_Index=0;


          P2=DSY_CODE[Song_Index]; //數(shù)碼管顯示當前音樂段號

          }

          // 0 中斷函數(shù)


          void T0_INT() interrupt 1


          {


          TL0=LO_LIST[Song[Song_Index][Tone_Index]];


          TH0=HI_LIST[Song[Song_Index][Tone_Index]];


          SPK=~SPK;


          }


          //延時


          void DelayMS(uint ms)


          {


          uchar t;


          while(ms--) for(t=0;t120;t++);


          }

          c語言相關(guān)文章:c語言教程


          蜂鳴器相關(guān)文章:蜂鳴器原理

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();