版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 單片機(jī)原理課程設(shè)計(jì)報(bào)告</p><p><b> 題目:音樂(lè)盒的設(shè)計(jì)</b></p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p><b> 摘要</b></p><p><b> 第一章 緒論</b></p
2、><p><b> 1.1課程設(shè)計(jì)目的</b></p><p><b> 1.2課程設(shè)計(jì)任務(wù)</b></p><p><b> 1.3課程設(shè)計(jì)要求</b></p><p><b> 1.4課程設(shè)計(jì)意義</b></p><p>&
3、lt;b> 第二章 設(shè)計(jì)原理</b></p><p><b> 2.1基本原理簡(jiǎn)述</b></p><p><b> 2.2設(shè)計(jì)方案</b></p><p> 第三章 音樂(lè)播放器的硬件電路</p><p> 3.1 AT89C51單片機(jī)</p><p&
4、gt; 3.2 單片機(jī)CPU結(jié)構(gòu) </p><p><b> 3.3引腳介紹</b></p><p><b> 3.4 電路連線</b></p><p> 第四章 軟件編程設(shè)計(jì)</p><p><b> 4.1編程方案</b></p><p>
5、<b> 第五章 心得體會(huì)</b></p><p><b> 第一章 緒論</b></p><p><b> 1.1課程設(shè)計(jì)目的</b></p><p> 應(yīng)用單片機(jī),利用它的原理組成一個(gè)音樂(lè)播放器。本課程設(shè)計(jì)是主干實(shí)踐課。課程的任務(wù)在于提高學(xué)生綜合運(yùn)用所學(xué)知識(shí)理論、分析解決問(wèn)題的能力。<
6、;/p><p><b> 1.2課程設(shè)計(jì)任務(wù)</b></p><p> 以單片機(jī)為核心部件組成一個(gè)音樂(lè)播放器;</p><p> 利用單片機(jī)的定時(shí)器產(chǎn)生樂(lè)譜的各種頻率方波,由蜂鳴器發(fā)出聲音;</p><p> 定義按鍵,能相應(yīng)的播放出歌曲;</p><p><b> 1.3課程設(shè)計(jì)
7、要求</b></p><p> 能用鍵盤選擇不同的歌曲,至少兩首以上,并寫出課程設(shè)計(jì)報(bào)告。</p><p> 1.4課程設(shè)計(jì)的意義</p><p> 通過(guò)自己動(dòng)手設(shè)計(jì)單片及組成的器件,在軟件及硬件上進(jìn)一步了解單片機(jī)的原理,深入了解了單片機(jī)C51語(yǔ)言的實(shí)際應(yīng)用,能更深地理解課堂上所學(xué)的內(nèi)容,鞏固C語(yǔ)言程序編寫,體會(huì)作為一名設(shè)計(jì)人員所需要具備的各種能力
8、,學(xué)會(huì)理論知識(shí)聯(lián)系實(shí)際,提高我們發(fā)現(xiàn)問(wèn)題,分析問(wèn)題,解決問(wèn)題和實(shí)踐動(dòng)手的能力。</p><p> 第二章 設(shè)計(jì)原理及總體方案選擇</p><p><b> 2.1 設(shè)計(jì)原理</b></p><p><b> 音調(diào)的確定</b></p><p> 不同音高的樂(lè)音是用C、D、E、F、G、A、B來(lái)
9、表示,這7個(gè)字母就是音樂(lè)的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡(jiǎn)譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來(lái)米發(fā)梭拉西”的讀音,這是唱曲時(shí)樂(lè)音的發(fā)音,所以叫“音調(diào)”,即Tone。把C、D、E、F、G、A、B這一組音的距離分成12個(gè)等份,每一個(gè)等份叫一個(gè)“半音”。兩個(gè)音之間的距離有兩個(gè)“半音”,就叫“全音”。在鋼琴等鍵盤樂(lè)器上,C–D、D–E、F–G、G–A、A–B兩音之間隔著一個(gè)黑鍵,他們之間的距離
10、就是全音;E–F、B–C兩音之間沒(méi)有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上﹟號(hào)或者b號(hào)的叫變化音。﹟叫升記號(hào),表示把音在原來(lái)的基礎(chǔ)上升高半音,b叫降記音,表示在原來(lái)的基礎(chǔ)上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中
11、音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音R</p><p> 1)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳上得到此頻率的脈沖。</p><p> 2)利用AT89C51的內(nèi)部定時(shí)器使其
12、工作在計(jì)數(shù)器模式MODE1下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。</p><p> 此外結(jié)束符和休止符可以分別用代碼00H和FFH來(lái)表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。</p><p> 3)例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每次技術(shù)956次時(shí)將I/O反
13、相,就可得到中音DO(523Hz)。</p><p> 計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:</p><p> N=Fi2Fr</p><p> N:計(jì)算值;Fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1MHz;</p><p> 其計(jì)數(shù)值的求法如下:</p><p> T=65536-N=65536-Fi
14、2Fr</p><p> 例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的計(jì)算值</p><p> T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr</p><p> 低音DO的T=65536-500000/26
15、2=63627</p><p> 低音DO的T=65536-500000/523=64580</p><p> 低音DO的T=65536-500000/1047=65059</p><p> C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如下表所示。</p><p> C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表</p><p><
16、;b> 節(jié)拍的確定</b></p><p> 若要構(gòu)成音樂(lè),光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂(lè)具有旋律(固定的律動(dòng)),而且可以調(diào)節(jié)各個(gè)音的快滿度?!肮?jié)拍”,即Beat,簡(jiǎn)單說(shuō)就是打拍子,就像我們聽音樂(lè)不自主的隨之拍手或跺腳。若1拍實(shí)0.5s,則1/4 拍為0.125s。至于1拍多少s,并沒(méi)有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點(diǎn),有些人慢一點(diǎn),只要聽的悅耳就
17、好。音持續(xù)時(shí)間的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。</p><p> 一首音樂(lè)是由許多不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對(duì)應(yīng)的延時(shí),構(gòu)成音樂(lè)。了解音樂(lè)的一些基礎(chǔ)知識(shí),我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂(lè)。對(duì)于單片機(jī)來(lái)說(shuō),產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)產(chǎn)生這樣的方波頻率信號(hào)。因此,需要弄清楚音樂(lè)中的音符和對(duì)應(yīng)的頻率
18、,以及單片機(jī)定時(shí)計(jì)數(shù)的關(guān)系。</p><p> 表4.2節(jié)拍與節(jié)拍碼對(duì)照</p><p> 每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,圖5.2為節(jié)拍碼的對(duì)照。如果1拍為0.4秒,1/4拍實(shí)0.1秒,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1/4拍為1DELAY,則1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY時(shí)間,其余的節(jié)拍就是它的倍數(shù),
19、如圖5.3為1/4和1/8節(jié)拍的時(shí)間設(shè)定。</p><p> 表4.3 1/4和1/8節(jié)拍的時(shí)間設(shè)定</p><p><b> 編碼</b></p><p> do re mi fa so la si分別編碼為1~7,重音do編為8,重音re編為9,停頓編為0。播放長(zhǎng)度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個(gè)十
20、六分音符,編為4,其它的播放時(shí)間以此類推。音調(diào)作為編碼的高4位,而播放時(shí)間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個(gè)編碼。以0xff作為曲譜的結(jié)束標(biāo)志。</p><p> 舉例1:音調(diào)do,發(fā)音長(zhǎng)度為兩拍,即二分音符,將其編碼為0x18。</p><p> 舉例2:音調(diào)re,發(fā)音長(zhǎng)度為半拍,即八分音符,將其編碼為0x22</p><p> 歌曲播放的設(shè)計(jì)。先將歌曲
21、的簡(jiǎn)譜進(jìn)行編碼,儲(chǔ)存在一個(gè)數(shù)據(jù)類型為unsigned char 的數(shù)組中。程序從數(shù)組中取出一個(gè)數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時(shí)器0,使之定時(shí)操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時(shí)時(shí)間,接著調(diào)用軟件延時(shí)。</p><p> 表4.4 簡(jiǎn)譜對(duì)應(yīng)的簡(jiǎn)譜碼、T值、節(jié)拍數(shù)</p><p> 為簡(jiǎn)便起見,以一定的頻率方波產(chǎn)生的音在其每個(gè)周期內(nèi)高低幅值得時(shí)
22、間各占一半因此,輸出引腳在每個(gè)方波周期內(nèi)要?jiǎng)幼鲀纱危阂淮紊撸淮谓档?。即輸出引腳的頻率是原音頻率的兩倍。</p><p> 方波的產(chǎn)生由定時(shí)器控制。定時(shí)器T0工作在定時(shí)方式1,改變TH0及TL0,產(chǎn)生不同的音頻頻率。必須考慮到中斷響應(yīng)時(shí)間的影響,尤其在高音部分,若忽略中斷響應(yīng)時(shí)間,會(huì)使音頻頻率比標(biāo)準(zhǔn)值低幾十Hz,相當(dāng)于1/4音程,很容易聽出來(lái),對(duì)低音部分影響不大。一般中斷響應(yīng)時(shí)間為3~6個(gè)機(jī)器周期,經(jīng)過(guò)反復(fù)試
23、驗(yàn)取5個(gè)機(jī)器周期作為校正最為恰當(dāng),表1中所給的定時(shí)初值就是考慮中斷響應(yīng)后的定時(shí)常數(shù)。另外,為避免T1中斷可能引起雜音,應(yīng)將定時(shí)器T0中斷設(shè)為高優(yōu)先級(jí)。這樣編寫出來(lái)的程序播放的音與標(biāo)準(zhǔn)音叉進(jìn)行差頻校音,非常準(zhǔn)確和諧。</p><p> 音樂(lè)播放器的基本硬件電路有六部分組成:?jiǎn)纹瑱C(jī)、時(shí)鐘與復(fù)位電路、選擇按鍵輸入電路、音頻發(fā)生器、音頻放大器和揚(yáng)聲器。音樂(lè)播放器硬件電路設(shè)計(jì)框圖如圖2.1所示。</p>&
24、lt;p> 圖2.1 音樂(lè)播放器硬件電路設(shè)計(jì)框圖</p><p> 利用單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器T0與P1.1引腳配合,構(gòu)成音頻發(fā)生器,驅(qū)動(dòng)揚(yáng)聲器輸出。</p><p><b> 2.2 設(shè)計(jì)方案</b></p><p> 實(shí)現(xiàn)4個(gè)按鍵選擇4首歌曲,能夠?qū)崿F(xiàn)音樂(lè)播放。</p><p> 簡(jiǎn)單說(shuō)明:控制鍵
25、盤,使其IRQ引腳接單片機(jī)的外部中斷0,一旦有鍵按下就對(duì)應(yīng)一首曲播放目。停止按鍵可以使用外部中斷1來(lái)實(shí)現(xiàn)。</p><p> 各音調(diào)對(duì)應(yīng)的定時(shí)器初始裝載表也以數(shù)組的形式按升調(diào)順序存儲(chǔ),并按前面所述將各歌曲的對(duì)應(yīng)音調(diào)和節(jié)拍存儲(chǔ)在數(shù)組中,有按鍵按下時(shí),將對(duì)應(yīng)歌曲的數(shù)組首地址傳給全局指針,利用相應(yīng)的處理函數(shù)調(diào)出音調(diào)對(duì)應(yīng)的定時(shí)器裝載值表,給定時(shí)器裝載初值并啟動(dòng),產(chǎn)生控制揚(yáng)聲器的方波,根據(jù)低半字節(jié)控制延時(shí)時(shí)間,即音調(diào)的發(fā)
26、音長(zhǎng)短。</p><p> 第三章 音樂(lè)播放器的硬件電路</p><p> 3.1 AT89C51單片機(jī)</p><p> AT89C51是美國(guó)ATMEL公司推出的系列單片機(jī),將多種功能的8位CPU與FPEROM(快閃可編程/擦除只讀存儲(chǔ)器)結(jié)合在一個(gè)芯片上,是一種低功耗、高性能的CMOS控制器,為很多嵌入式控制應(yīng)用提供了非常靈活而又價(jià)格適宜的方案,其性能價(jià)格
27、比遠(yuǎn)高于同類芯片。它與MCS-51指令系統(tǒng)兼容,片內(nèi)FPEROM允許對(duì)程序存儲(chǔ)器在線重復(fù)編程,也可用常規(guī)的EPROM編程器編程,可循環(huán)寫入/擦除1000次。89C51內(nèi)含4KB的FPEROM,一般的EEPROM的字節(jié)擦除時(shí)間和寫入時(shí)間基本上均為10ms,對(duì)于任一個(gè)實(shí)時(shí)控制系統(tǒng)來(lái)說(shuō),這樣長(zhǎng)的時(shí)間是不可能在線修改程序的。</p><p> 3.2 AT89C51用戶系統(tǒng)</p><p>
28、CPU為Atmel公司生產(chǎn)的89C51/89C52/89C55等。出廠所配晶振頻率為11.0592MH,每個(gè)機(jī)器周期為1.085us,用戶更換晶振以提高速度;</p><p> 存貯器為64K,前4K/8K20K在CPU內(nèi)部,其它程序在EPR0M27512中;</p><p> 數(shù)據(jù)存貯器為32K(62256),地址為8000—FFFFH;</p><p>
29、Ⅰ/O擴(kuò)展8155,片內(nèi)RAM地址∶200O-20FFH ;</p><p> 8155命令口地址為∶2100H ;</p><p> A口地址∶21O1H B口地址:2102H C口地址:2103H ;</p><p> T低八位∶2104H T高八位∶2105H ;</p><p> 多路模擬開關(guān)的使用∶ </p>
30、<p> IN0∶P1=0F8H IN4:P1=0FCH IN1∶P1=0F9H IN5:P1=OFDH </p><p> IN2∶P1=0FAH IN5:P1=0FEH IN3∶P1=0FBH IN7:P1=0FFH </p><p> 不掉電數(shù)據(jù)存貯器為∶500EH-507FH ;</p><p> 控制板∶160x1O9(m
31、m) 供電∶+5V300mA +12V100mA -12V100mA ;</p><p> AT89C51是一種低功耗、高性能的片內(nèi)含有4KB快閃可編程/擦除只讀存儲(chǔ)器(FPEROM-Flash Programmable and Eraseable Read Only Memory)的8位CMOS微控制器,使用高密度、非易失存儲(chǔ)技術(shù)制造,并且與80C51引腳和指令系統(tǒng)完全兼容;</p><p
32、><b> 主要性能: </b></p><p> 與MCS-51 微控制器產(chǎn)品系列兼容;</p><p> 片內(nèi)有4KB可在線重復(fù)編程的快閃擦寫存儲(chǔ)器 。</p><p><b> 3.3 引腳介紹</b></p><p> AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器
33、(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATM
34、EL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖3.2所示</p><p> 圖3.7 89C51引腳圖</p><p><b> 3.4 電路連線</b></p><p> 利用wave6000仿真軟件電路連線較為簡(jiǎn)
35、單:</p><p> 電路內(nèi)置為12MHZ晶振頻率工作</p><p> P1.0控制蜂鳴器。</p><p> 鍵盤接口KEY與CS0連接</p><p><b> 軟件編程設(shè)計(jì)</b></p><p><b> 4.1 編程方案</b></p>
36、<p> #include<reg51.h></p><p> #define LEDLen 6</p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> xdata unsigned char OUTBIT
37、 _at_ 0x8002; // 位控制口</p><p> xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口</p><p> xdata unsigned char IN _at_ 0x8001; // 鍵盤讀入口</p><p> sbit speaker=P1^0;//接喇叭或蜂鳴器的接
38、口</p><p> uint h,i,j;</p><p><b> uint hz;</b></p><p> uchar jiep;</p><p><b> bit flag;</b></p><p> uint code fre[]={ 64400,645
39、24,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217};</p><p> uchar code sing1[]={6,9, 6,3, 7,12, 6,12, 9,12, 8,24, </p><p> 6,9, 6,3, 7,12,6,12, 10,12, 9,24, </p>
40、<p> 6,9, 6,3, 13,12, 11,12, 8,12, 7,12,</p><p> 12,9, 12,3, 11,12, 9,12, 10,12, 9,24};</p><p> //歌譜 2個(gè)一組(0,0)(音調(diào),節(jié)拍)(生日歌)</p><p> uchar code sing2[]={4,3,4,3,5,3,6,3,6,3
41、,5,3,4,3,3,3, 2,3,2,3,3,3,4,3, 4,4,3,2,3,6,</p><p> 4,3,4,3,5,3,6,3,6,3,5,3,4,3,3,3, 2,3,2,3,3,3,4,3, 3,4,2,2,2,6,</p><p> 3,3,3,3,4,3,2,3,3,3,4,1,5,2,4,3,2,3,3,3,4,1,5,2,4,3,2,3,2,3,3,3
42、,6,6,</p><p> 4,3,4,3,5,3,6,3,6,3,5,3,4,3,3,3, 2,3,2,3,3,3,4,3, 3,4,2,2,2,6,</p><p><b> };</b></p><p> //歌譜 2個(gè)一組(0,0)(音調(diào),節(jié)拍)(歡樂(lè)頌)</p><p> void Delay(
43、unsigned char CNT)</p><p><b> {</b></p><p> unsigned char i;</p><p> while (CNT-- !=0)</p><p> for (i=100; i !=0; i--);</p><p><b> }
44、</b></p><p> code unsigned char KeyTable[] = </p><p> { // 鍵碼定義</p><p> 0x16, 0x15, 0x14, 0xff,</p><p> 0x13, 0x12, 0x11, 0x10,</p><p> 0x0d,
45、0x0c, 0x0b, 0x0a,</p><p> 0x0e, 0x03, 0x06, 0x09,</p><p> 0x0f, 0x02, 0x05, 0x08,</p><p> 0x00, 0x01, 0x04, 0x07</p><p><b> };</b></p><p>
46、 unsigned char TestKey()</p><p><b> {</b></p><p> OUTBIT = 0; // 輸出線置為0</p><p> return (~IN & 0x0f); // 讀入鍵狀態(tài)(高四位不用)</p><p><b> }
47、</b></p><p> unsigned char GetKey()</p><p><b> {</b></p><p> unsigned char Pos;</p><p> unsigned char i;</p><p> unsigned char k;<
48、;/p><p><b> i = 6;</b></p><p> Pos = 0x20; // 找出鍵所在列</p><p><b> do {</b></p><p> OUTBIT = ~ Pos;</p><p> Pos >>= 1;<
49、/p><p> k = ~IN & 0x0f;</p><p> } while ((--i != 0) && (k == 0));</p><p> if (k != 0) // 鍵值 = 列 x 4 + 行</p><p><b> {</b&g
50、t;</p><p><b> i *= 4;</b></p><p> if (k & 2)</p><p><b> i += 1;</b></p><p> else if (k & 4)</p><p><b> i += 2;&l
51、t;/b></p><p> else if (k & 8)</p><p><b> i += 3;</b></p><p> OUTBIT = 0;</p><p> do Delay(10); while (TestKey()); // 等鍵釋放</p><p>
52、return(KeyTable[i]); // 取出鍵碼</p><p> } else return(0xff);</p><p><b> }</b></p><p> void init () //初始化</p><p><b> {</b></p><p>
53、 EA=1; //中斷允許總開關(guān)打開</p><p> TMOD=0x11; //定時(shí)器0、1都工作在方式1</p><p> ET0=1; //定時(shí)器T0中斷允許</p><p> ET1=1; //定時(shí)器T1中斷允許</p><p> i=0;j=0; </p><p
54、><b> flag=1;</b></p><p><b> }</b></p><p> void sing()</p><p><b> {</b></p><p> if(flag==1)</p><p><b> {&
55、lt;/b></p><p> h=sing1[j]; //取音符</p><p> jiep=sing1[j+1]; //取節(jié)拍</p><p> j=j+2; //下一個(gè)音符</p><p> if(j>166) j=0;</p><p&
56、gt; hz=fre[h];</p><p> TH0=(hz)/256;</p><p> TL0=(hz)%256; //置定時(shí)器初值</p><p><b> flag=0;</b></p><p><b> TR0=1;</b></p><p&g
57、t; TR1=1; //開定時(shí)器</p><p><b> }</b></p><p><b> }</b></p><p> void sang()</p><p><b> {</b></p><p> if(
58、flag==1)</p><p><b> {</b></p><p> h=sing2[j];</p><p> jiep=sing2[j+1];</p><p><b> j=j+2;</b></p><p> if(j>166) j=0;</p&g
59、t;<p> hz=fre[h];</p><p> TH0=(hz)/256;</p><p> TL0=(hz)%256;</p><p><b> flag=0;</b></p><p><b> TR0=1;</b></p><p><b
60、> TR1=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> void main()</p><p> {uchar temp;</p><p><b> init();<
61、/b></p><p> while (1) </p><p><b> {</b></p><p> if (TestKey()) //查看是否有鍵按下</p><p> temp= (GetKey() & 0x0f); //取出鍵值</p>&l
62、t;p> if(temp==1) //如果按下的是1,則播放第一首歌曲</p><p><b> { </b></p><p> sing(); //播放第一首歌曲</p><p> Delay(1); //延時(shí)<
63、;/p><p><b> }</b></p><p> else if(temp==2) //如果按下的是2,則播放第二首歌曲</p><p><b> {</b></p><p> sang(); //播放第一首歌曲</p
64、><p> Delay(1); //延時(shí)</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void time0() interrup
65、t 1 //定時(shí)器0</p><p><b> {</b></p><p> TH0=(hz)/256;</p><p> TL0=(hz)%256;</p><p> if(!flag) speaker=!speaker; </p><p> else TR0=0;
66、 //節(jié)拍未結(jié)束則繼續(xù)翻轉(zhuǎn)形成脈沖,結(jié)束則關(guān)定時(shí)器</p><p><b> }</b></p><p> void time1() interrupt 3</p><p><b> {</b></p><p> TH1=(15536)/256;</p>&
67、lt;p> TL1=(15536)%256;</p><p><b> --jiep;</b></p><p> if(jiep==0)</p><p> flag=1; //本節(jié)拍結(jié)束,另flog等于1,即關(guān)定時(shí)器0</p><p><b> }</b>
68、;</p><p><b> 第五章 心得體會(huì)</b></p><p> 課程設(shè)計(jì)結(jié)束了,我收獲了很多在課堂上無(wú)法學(xué)到的知識(shí),不僅是硬件發(fā)設(shè)計(jì)能力,軟件的編程能力也得到了大幅度的提高。本次課程設(shè)計(jì)的題目是音樂(lè)播放器,其要求是運(yùn)用C51語(yǔ)言進(jìn)行編程,實(shí)現(xiàn)可以播放多首歌曲,通過(guò)數(shù)字鍵進(jìn)行控制播放歌曲的曲目。</p><p> 剛拿到這個(gè)題目時(shí)
69、,我們覺(jué)得挺簡(jiǎn)單,但當(dāng)我們著手做的時(shí)候,卻毫無(wú)頭緒。我們?cè)诰W(wǎng)絡(luò)上下載了一些關(guān)于用單片機(jī)設(shè)計(jì)音樂(lè)播發(fā)器的內(nèi)容。對(duì)課題有了大體的了解。之后就開始設(shè)計(jì)理圖,程序流程圖,并嘗試編寫程序慢慢有了點(diǎn)進(jìn)展。</p><p> 在課程實(shí)習(xí)過(guò)程中,硬件使用的都是實(shí)驗(yàn)箱,沒(méi)有太大的問(wèn)題存在,自己只需明白硬件功能,清楚實(shí)現(xiàn)方法,連好需要的幾根線就可以了。軟件設(shè)計(jì)一直困擾著我們,很難找到突破口。程序調(diào)試過(guò)程是一個(gè)需要細(xì)心和毅力的過(guò)程,
70、當(dāng)它脫離正常軌跡不按照應(yīng)該的步驟進(jìn)行時(shí),我們就要一步一步的調(diào)試,找錯(cuò)誤,找漏洞。老天不負(fù)有心人,當(dāng)?shù)谝淮握麄€(gè)系統(tǒng)成功實(shí)現(xiàn)預(yù)設(shè)功能。我們體會(huì)到艱辛和磨難后的喜悅。</p><p> 雖然我們完成的還不夠完美,但我們已經(jīng)盡力了,相信老師也看到了在本次的設(shè)計(jì)中,我們一起構(gòu)思、設(shè)計(jì)、編程、調(diào)試,這不僅鞏固了我們的基礎(chǔ)知識(shí),也進(jìn)一步培養(yǎng)了我們親身實(shí)踐動(dòng)手的能力,這對(duì)我們將來(lái)的工作和研究都是大有好處的。團(tuán)隊(duì)合作真的很重要。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--音樂(lè)盒
- 音樂(lè)盒單片機(jī)課程設(shè)計(jì)
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告 音樂(lè)盒設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字音樂(lè)盒
- 單片機(jī)課程設(shè)計(jì)--- 數(shù)字音樂(lè)盒
- 課程設(shè)計(jì)-基于單片機(jī)的音樂(lè)盒的設(shè)計(jì)
- 基于51單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字音樂(lè)盒設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)《數(shù)字音樂(lè)盒的設(shè)計(jì)》
- 單片機(jī)課程設(shè)計(jì)-基于單片機(jī)的數(shù)字音樂(lè)盒設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字音樂(lè)盒的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的數(shù)字音樂(lè)盒
- 電子音樂(lè)盒(單片機(jī)課程設(shè)計(jì))
- 電子音樂(lè)盒(單片機(jī)課程設(shè)計(jì))
- 單片機(jī)音樂(lè)盒設(shè)計(jì)
- 電子音樂(lè)盒單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子音樂(lè)盒的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論