官术网_书友最值得收藏!

項(xiàng)目1 認(rèn)識(shí)單片機(jī)及其開發(fā)環(huán)境

1.1 項(xiàng)目提出

1.任務(wù)

利用單片機(jī)系統(tǒng)播放一段音樂。

2.要求

(1)按照所給電路圖連接單片機(jī)系統(tǒng)。

(2)將所給單片機(jī)程序調(diào)試、編譯下載至單片機(jī)中,運(yùn)行單片機(jī)系統(tǒng)。

3.播放音樂的單片機(jī)電路圖

用單片機(jī)I/O口P1.7擴(kuò)展蜂鳴器演奏一首曲子。

4.音樂程序

    /* ***********************************
    這是一首 2002年第一場(chǎng)雪的曲子
    * ***********************************/
    #include<reg51.h>       /*8051單片機(jī)資源說明*/
    sbit SPK=P1^7;                 //音樂輸出口
    void Delayms(unsigned char ms);     //節(jié)拍延時(shí)
    unsigned int data j;
    unsigned char code song[636]={      //歌曲數(shù)組,格式為:頻率常數(shù),節(jié)拍常數(shù)
    0xFF,0xFF,4,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x5B,4,
    0xFD,0x08,2,0xFC,0xAB,2,
    0xFC,0x0B,2,0xFC,0x0B,2,
    0xFF,0xFF,2,0xFC,0x0B,2,
    0xFC,0xAB,2,0xFC,0xAB,2,
    0xFC,0xAB,2,0xFC,0xAB,2,
    0xFC,0xAB,4,0xFC,0xAB,2,
    0xFC,0xAB,2,
    0xFB,0x8F,2,0xFC,0x0B,2,
    0xFC,0x0B,4,0xFF,0xFF,8,
    0xFF,0xFF,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,4,0xFD,0x08,2,
    0xFD,0x08,2,
    0xFD,0x5B,4,0xFD,0x08,2,
    0xFC,0xAB,4,0xFD,0x08,6,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFC,0xAB,4,0xFC,0xAB,2,
    0xFC,0xAB,2,0xFC,0xAB,2,
    0xFC,0x0B,2,0xFC,0x0B,4,
    0xFF,0xFF,4,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,
    0xFD,0x5B,4,0xFD,0x08,2,
    0xFC,0xAB,4,0xFD,0x08,6,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFC,0xAB,4,0xFC,0xAB,2,
    0xFC,0xAB,2,0xFC,0xAB,2,
    0xFC,0x0B,2,0xFC,0x0B,4,
    0xFF,0xFF,4,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,
    0xFD,0x5B,4,0xFD,0x08,2,
    0xFD,0x5B,2,0xFC,0xAB,2,
    0xFC,0x0B,2,0xFC,0x0B,4,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x03,2,
    0xFB,0x8F,4,0xFB,0x8F,2,
    0xFB,0x03,2,
    0xFC,0x0B,4,0xFB,0x8F,2,
    0xFC,0x0B,2,0xFB,0x03,2,
    0xFA,0x14,2,0xFA,0x14,4,
    0xFF,0xFF,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x5B,4,0xFD,0x08,2,
    0xFD,0x5B,2,0xFC,0xAB,2,
    0xFC,0x0B,2,0xFC,0x0B,4,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xfc,0xab,4,0xfc,0xab,2,
    0xfc,0xab,2,0xfb,0x8f,2,
    0xfc,0x0b,2,0xFC,0x0B,4,
    0xFF,0xFF,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,4,
    0xFD,0x08,2,
    0xfD,0x5b,4,0xfD,0x08,2,
    0xfc,0xab,4,0xfc,0x0b,6,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x03,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x03,2,
    0xFC,0x0B,4,0xFB,0x8F,2,
    0xFC,0x0B,2,0xFB,0x03,2,
    0xFA,0x14,2,0xFA,0x14,4,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFB,0x03,2,0xFB,0x03,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFA,0x14,1,0xF9,0x5B,1,
    0xF8,0x2A,2,0xF8,0x2A,4,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFB,0x8F,2,0xFC,0x08,2,
    0xFC,0x08,2,0xFC,0x08,10,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFB,0x03,2,0xFB,0x03,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFA,0x14,1,0xF9,0x5B,1,
    0xF8,0x2A,2,0xF8,0x2A,4,
    0xFF,0xFF,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x8F,2,0xFB,0x8F,2,
    0xFB,0x03,2,0xFA,0x14,2,
    0xFC,0xAB,2,0xFD,0x08,2,
    0xFD,0x08,2,0xFD,0x08,2,
    0xFF,0xFF,4,0xFF,0xFF,4};
    void main()
    { TMOD=0x01;
      IE=0x82;
      while(1)
      { j=0;
        while (j<636)
        { TR0=1;
          if ((song[j]==0xff)&&(song[j+1]==0xff))
          TR0=0;             //休止符用0xff,0xff表示出現(xiàn)休止符時(shí)CT0禁止,不發(fā)聲
          Delayms(song[j+2]);   //每一音符唱多長(zhǎng)
            j=j+3;
          }
          }
    }
    /* 音調(diào)程序*/
    void timer0()interrupt 1 using 1  //每一音符唱多高
    {   TH0=song[j];
            TL0=song[j+1];
          SPK = !SPK;
    }
    /* 節(jié)拍程序*/
    void Delayms(unsigned char ms) //基本延時(shí)子程序(1/16拍的時(shí)間)
    { unsigned int i;
      while(ms--)
          {for(i=0;i<10300;i++);  //節(jié)拍快慢控制
          }
      TR0=0;
    }
主站蜘蛛池模板: 化隆| 门头沟区| 龙里县| 大同县| 黄龙县| 德昌县| 开阳县| 滨州市| 喜德县| 全南县| 西丰县| 钟祥市| 建昌县| 行唐县| 鹤庆县| 荥经县| 屯留县| 新津县| 开阳县| 且末县| 仪陇县| 贵德县| 孙吴县| 福安市| 栖霞市| 丰原市| 南和县| 大荔县| 策勒县| 许昌市| 长沙市| 涟源市| 乌拉特中旗| 潼关县| 鹿邑县| 常德市| 济宁市| 龙南县| 商都县| 梁山县| 竹北市|