基于51單片機(jī)的音樂盒的設(shè)計-論文_第1頁
基于51單片機(jī)的音樂盒的設(shè)計-論文_第2頁
基于51單片機(jī)的音樂盒的設(shè)計-論文_第3頁
基于51單片機(jī)的音樂盒的設(shè)計-論文_第4頁
基于51單片機(jī)的音樂盒的設(shè)計-論文_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、- 摘 要: 隨著人類社會的不斷繁榮與開展,人們對自身生活品質(zhì)的要求也變得越來越高,在聽覺方面?zhèn)鹘y(tǒng)的音樂盒能帶給人們的更多的只是美好的回憶,而由于單片機(jī)具有的體積小、本錢低、運(yùn)算快和功耗小等特點(diǎn)得到了人們越來越廣泛的運(yùn)用。本設(shè)計是一個基于STC89C52系列單片機(jī)的音樂盒,依據(jù)單片機(jī)技術(shù)及原理,通過硬件電路的制作以及軟件編譯,設(shè)計制作出一個插卡式音樂盒。該音樂盒主要是由按鍵電路、繼電器電路、LCD顯示電路以及揚(yáng)聲器組成。使用五個按鍵控制音樂盒,分別用來控制音樂盒的播放/暫停,復(fù)位,切換上一曲/下一曲,本音樂盒利用優(yōu)盤共存有五首歌曲。本設(shè)計利用KEIL編程軟件對音樂盒源程序進(jìn)展編程并調(diào)試,之后下

2、載進(jìn)51單片機(jī)中使用。關(guān)鍵詞:單片機(jī) 音樂盒 LCDAbstract With the continuous development of human society, people's quality of life demands are increasingly high, the traditional music bo* in the auditory aspectto bring people more good memories, but due to the microputer has the advantages of small volume, low cost,

3、 low power consumption and fast operation has been more and more e*tensive use. The design is based on the music bo* STC89C52 Series MCU, based on single chip microputer principle, the hardware circuit and software pilation, designed to produce aplug-in music bo*. The music bo* is posed of a key cir

4、cuit, a relay circuit,LCD display circuit and a loudspeaker. The use of four buttons control themusic bo*es, music bo*es were used to control the play / pause, switch on a /the ne*t song, the music bo* using the USB coe*ist with five songs. The design of programming on the music bo* and debug source

5、 code using KEIL programming software, then download into 51 single chip processor.Keywords: SCM Music Bo* LCD目 次目 次31 引言41.1 音樂盒的意義41.2 研究容52.1系統(tǒng)總體框架圖62.2音樂盒的設(shè)計原理62.3 單片機(jī)芯片概述73 硬件電路設(shè)計83.1 單片機(jī)最小系統(tǒng)原理圖83.1.1 復(fù)位電路83.1.2 晶振電路9時鐘電路93.2 LCD顯示模塊93.3 繼電器模塊11電磁繼電器的工作原理和特性123.3.2 固態(tài)繼電器的工作原理和特性123.3.3 繼電器主要產(chǎn)品技

6、術(shù)參數(shù)123.4 按鍵模塊133.5 其它134 軟件設(shè)計144.1 軟件總體流程圖144.2播放/暫停子程序154.3 LCD顯示模塊軟件設(shè)計174.3.1 LCD的初始化函數(shù)174.3.2 LCD與繼電器的函數(shù)185 系統(tǒng)實(shí)現(xiàn)195.1 硬件調(diào)試205.1.1 按鍵控制的實(shí)現(xiàn)205.1.2 LCD顯示215.1.3 其他21總 結(jié)22致23參考文獻(xiàn)24附錄A 元器件清單25附錄B 源程序261 引言在進(jìn)入21世紀(jì)后,單片機(jī)產(chǎn)品的開展正朝著高性能和多品種方向,并且開展趨勢是進(jìn)一步朝著CMOS化、小體積、低功耗、大容量、高性能、低價格以及外圍的電路裝化等幾個方面去開展。單片機(jī)的應(yīng)用的重要意義還

7、是在于它是從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。過去必須要由模擬電路或者數(shù)字電路才可以實(shí)現(xiàn)的大局部的功能,現(xiàn)在已能完全可以用單片機(jī)通過軟件的方法來實(shí)現(xiàn)了。這種由軟件去代替硬件的控制技術(shù)也稱之為微控制技術(shù),這是傳統(tǒng)控制技術(shù)的一次革命。單片機(jī)可以說滲透到了我們生活的各個方面,幾乎難以找到哪個領(lǐng)域里沒有單片機(jī)的蹤跡。導(dǎo)彈中的導(dǎo)航裝置,飛機(jī)里安裝的各種儀表的控制,計算機(jī)里的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸方面,工業(yè)自動化過程中實(shí)時控制和數(shù)據(jù)處理方面,生活中被廣泛使用的各種智能IC卡,民用的高檔轎車的平安保障系統(tǒng),攝像機(jī)、錄像機(jī)、全自動洗衣機(jī)所涉及的控制方面,以及遠(yuǎn)程控制的玩具、電子寵物等等,這些全都是離不

8、開單片機(jī)的。而伴隨著科學(xué)技術(shù)的不斷進(jìn)步和社會的持續(xù)開展,人類所接觸的更種信息也在不斷增加并且信息變得越來越復(fù)雜。面對著浩如煙海的繁雜信息,人們目前已經(jīng)能利用計算機(jī)等工具快速、精準(zhǔn)地對其進(jìn)展快速處理,但要想將其處理完畢的信息及時、清晰地傳遞給其他人,還必須要尋找更加卓越的顯示技術(shù)去實(shí)現(xiàn)它。而單片機(jī)技術(shù)與液晶顯示技術(shù)的結(jié)合,恰恰使得信息的傳輸交流向著智能化可視化方向進(jìn)展快速開展。1.1 音樂盒的意義音樂盒的起源,可以追溯到中世紀(jì)歐洲文藝復(fù)興時期。當(dāng)時為了使教會的鐘塔報時,而將大小的鐘表裝上了機(jī)械裝置,被稱之為“可發(fā)出聲音的組鐘。音樂盒已有著300多年的開展歷史,是人類文明開展的歷史見證。傳統(tǒng)的音樂

9、盒大多是機(jī)械音樂盒,其工作的原理是通過齒輪來帶動一個帶有鐵釘?shù)蔫F桶轉(zhuǎn)動,鐵桶上的鐵釘撞擊用鐵片制成的琴鍵,從而發(fā)出聲音。但是,機(jī)械式的音樂盒體積較大,比較笨重,并且發(fā)音單調(diào)。水和灰塵等外在因素,容易使得部金屬發(fā)音條變形,從而會造成發(fā)音跑調(diào)。此外,機(jī)械音樂盒放音時為了能讓音色穩(wěn)定,必須要放平不能動搖,而且價格昂貴,不能夠?qū)崿F(xiàn)大批量生產(chǎn)。1.2 研究容 利用STC89C52單片機(jī),結(jié)合LCD顯示模塊、繼電器驅(qū)動模塊、音頻解碼電路 ,完成音樂盒的播放;具體設(shè)計實(shí)現(xiàn)的功能如下1通過按鍵控制多首音樂播放,并可通過按鍵選擇一個開場,一個暫停,一個翻上首,一個翻下首;2通過顯示電路顯示播放歌曲名或編號;2

10、系統(tǒng)總體設(shè)計2.1系統(tǒng)總體框架圖音樂盒的系統(tǒng)構(gòu)造是以STC89C52單片機(jī)位控制核心,加上5個按鍵、繼電器、揚(yáng)聲器、LCD顯示模塊組成。單片機(jī)負(fù)責(zé)接收按鍵的輸入,根據(jù)輸入控制音樂播放曲目和LCD顯示屏顯示歌曲名以及揚(yáng)聲器發(fā)音。系統(tǒng)組成框圖如圖2.1所示。 揚(yáng)聲器 繼電器 顯示模塊 音頻解碼 STC89C52 單片機(jī) 按鍵圖2-1 系統(tǒng)總體框架圖 2.2音樂盒的設(shè)計原理利用KEIL軟件編音樂盒寫程序,將編寫好的程序下載進(jìn)51單片機(jī),利用單片機(jī)控制LCD顯示歌曲名,之后將所需要播放的歌曲放入U盤,利用由繼電器控制音頻解碼電路來實(shí)現(xiàn)音樂的播放,再通過按鍵實(shí)現(xiàn)上一首和下一首及暫停播放。2.3 單片機(jī)芯

11、片概述STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,置4KB EEPROM,MA*810復(fù)位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷構(gòu)造兼容傳統(tǒng)51的5向量2級中斷構(gòu)造,全

12、雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停頓工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停頓,直到下一個中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。原理圖如下 圖 2-2 單片機(jī)引腳圖3 硬件電路設(shè)計3.1 單片機(jī)最小系統(tǒng)原理圖 圖 3-1 單片機(jī)最小系統(tǒng)原理圖3.1.1 復(fù)位電路復(fù)位電路:由兩個電容串聯(lián)電阻構(gòu)成,由圖3.1并結(jié)合"電容電壓不能夠突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電時,RST腳將會出現(xiàn)高電平,并且,這

13、個高電平持續(xù)的時間是由電路中的RC值來決定的.典型的51單片機(jī)中當(dāng)RST腳的高電平持續(xù)兩個機(jī)器周期以上時就將復(fù)位,所以,適當(dāng)?shù)慕M合RC的取值就可以保證可靠的復(fù)位.一般教科書中推薦C 取10u,R取8.2K.當(dāng)然也還是有其他取法的,但原則就是要讓RC的組合可以在RST腳上產(chǎn)生至少2個機(jī)械周期的高電平.至于如何具體得定量計算,可以參考實(shí)際電路分析相關(guān)書籍.a.復(fù)位操作復(fù)位是單片機(jī)里的初始化操作。其主要的功能是把PC初始化為0000H,使得單片機(jī)從0000H單元開場來執(zhí)行程序。除了在進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行時出錯或是操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為了擺脫困境,也需要按復(fù)位鍵重新啟動。

14、b.復(fù)位信號RST引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平時有效,其有效時間是應(yīng)持續(xù)24個振蕩周期(即二個機(jī)器周期)以上。假設(shè)是使用頻率為6MHz的晶振,則其復(fù)位信號持續(xù)時間要超過4us才能夠完成復(fù)位操作。3.1.2 晶振電路晶振電路:典型的晶振取11.0592MHz(因?yàn)槭强梢詼?zhǔn)確的得到9600波特率和19200波特率,用在有串口通訊的場合)/12MHz(產(chǎn)生準(zhǔn)確的uS級時歇,來方便定時操作)單片機(jī):一片STC89C52/S51或其他51系列兼容單片機(jī)時鐘電路STC89C52部有一個可用于構(gòu)成振蕩器的高增益反相放大器,而引腳R*D與T*D分別是這個放大器的輸入端和輸出端。時鐘可由部方式產(chǎn)生或

15、外部方式產(chǎn)生。部方式的時鐘電路在R*D和T*D引腳上可外接定時元件,而部振蕩器就能產(chǎn)生自激振蕩。定時元件通常是采用石英晶體及電容組成的并聯(lián)諧振回路。晶體的振蕩頻率可以在1.212MHz之間選擇,一般電容值在530pF之間選擇,電容值的大小可以對頻率起到微調(diào)的作用。3.2 LCD顯示模塊LCD原理圖如以下圖圖 3-2 LCD原理圖 LCD(Liquid Crystal Display)是利用液晶分子的物理構(gòu)造以及光學(xué)特性來進(jìn)展顯示的一種技術(shù)。液晶分子的特性:液晶分子是一種介于固體和液體之間的棒狀構(gòu)造的大分子物質(zhì);并且在自然形態(tài)下,具有光學(xué)各向異性的特點(diǎn),在電(磁)場的作用下,呈各向同性特點(diǎn):下面

16、以直視型的簡單多路TN/STN LCD Panel(液晶顯示面板)的根本構(gòu)造來介紹LCD的根本顯示原理,示意圖如圖 圖 3-3 LCD的根本顯示原理 3.2.1 LCD顯示屏的特點(diǎn)a、顯示質(zhì)量高 由于液晶顯示器中每一個點(diǎn)在收到信號之后就會一直保持那種色彩和亮度,且恒定發(fā)光,而不會像陰極射線管顯示器CRT那樣要去不斷刷新亮點(diǎn)。因此,液晶顯示器不僅顯示畫質(zhì)高而且絕對不會閃爍,可以把眼睛疲勞降到最低。 b、沒有電磁輻射 傳統(tǒng)的顯示器的顯示材料是熒光粉,是通過電子束撞擊熒光粉來實(shí)現(xiàn)顯示,當(dāng)電子束在打到熒光粉上的一剎那間是會產(chǎn)生強(qiáng)大的電磁輻射的,盡管目前有許多的顯示器產(chǎn)品在處理輻射問題上進(jìn)展了很多比較有

17、效的處理,盡可能的把輻射量降到最低水平,但是要徹底消除是十分困難的。相對來講,液晶顯示器在防止輻射方面是具有先天優(yōu)勢的,因?yàn)樗揪筒淮嬖谌魏屋椛?。在電磁波的防方面,液晶顯示器也是有自己獨(dú)特的優(yōu)勢,它采用了十分嚴(yán)格的密封技術(shù)將來自驅(qū)動電路里的少量電磁波封閉在了顯示器中,然而普通顯示器為了散發(fā)熱量的需求,必須要盡可能地讓部的電路與空氣相接觸,這樣部電路所產(chǎn)生的電磁波也就大量地向外“泄漏了。 c、可視面積大對于尺寸一樣的顯示器來講,液晶顯示器的可視面積是要更大一些。液晶顯示器的可視面積和它的對角線尺寸是一樣的。而陰極射線管顯示器顯像管前面板四周是有一英寸左右的邊框不能用于顯示的。 d、應(yīng)用圍廣 最

18、初的液晶顯示器因?yàn)闊o法用來顯示細(xì)膩的字符,所以通常應(yīng)用在電子表、計算器上。但隨著液晶顯示技術(shù)的不斷開展和進(jìn)步,字符顯示開場變得越來越細(xì)膩起來,同時也開場支持根本的彩色顯示,并逐步被用于液晶電視、攝像機(jī)的液晶顯示器上、掌上游戲機(jī)上。3.3 繼電器模塊繼電器是一種由電子控制的器件,它具有控制系統(tǒng)又稱之輸入回路和被控制系統(tǒng)又稱之輸出回路,通常被應(yīng)用于自動控制電路中,它實(shí)際上就是用較小的電流去控制較大電流的一種“自動開關(guān)。所以在電路中起著自動調(diào)節(jié)、平安保護(hù)、轉(zhuǎn)換電路等作用。電磁繼電器的工作原理和特性電磁式繼電器大都是由鐵芯、線圈、銜鐵、觸點(diǎn)簧片等組成的。只需要在線圈兩端加上一定的電壓,線圈中就會有一定

19、的電流經(jīng)過,從而產(chǎn)生了電磁效應(yīng),而銜鐵就將會在電磁力吸引的作用下抑制返回彈簧的拉力吸向鐵芯,之后帶動銜鐵的動觸點(diǎn)與靜觸點(diǎn)常開觸點(diǎn)吸合。當(dāng)線圈斷電之后,電磁的吸力也隨之消失,銜鐵就會在彈簧的反作用力下返回原來的位置,使動觸點(diǎn)與原來的靜觸點(diǎn)常閉觸點(diǎn)相吸合。這樣通過吸合、釋放,從而到達(dá)了在電路之中的導(dǎo)通、切斷的目的。而對于繼電器中的“常開、常閉兩觸點(diǎn),可以這樣來區(qū)分:繼電器線圈未通電時候處于斷開狀態(tài)的靜觸點(diǎn),稱為“常開觸點(diǎn);反之處于接通狀態(tài)的靜觸點(diǎn)稱為“常閉觸點(diǎn)。 3.3.2 固態(tài)繼電器的工作原理和特性固態(tài)繼電器是一種由兩個接線端為輸入端,另兩個接線端作為輸出端的四端器件,中間是采用隔離器件實(shí)現(xiàn)輸入

20、輸出的電隔離。固態(tài)繼電器按負(fù)載電源類型可分為交流型和直流型。按開關(guān)型式可將其分為常開型和常閉型。按隔離型式可將其分為混合型、變壓器隔離型和光電隔離型,而以光電隔離型為最多。3.3.3 繼電器主要產(chǎn)品技術(shù)參數(shù)1、額定工作電壓其是指繼電器正常工作時候線圈所需要的電壓。根據(jù)繼電器的型號的不同,可以是交流電壓,也能夠是直流電壓。2、直流電阻其是指繼電器中線圈的直流電阻,能夠通過萬能表測量。3、吸合電流其是指繼電器能夠產(chǎn)生吸合動作的最小電流。當(dāng)在正常使用時,給定的電流必須要略大于吸合電流,這樣繼電器才能夠穩(wěn)定地工作。而對于線圈所加的工作電壓,一般是不要超過額定工作電壓的1.5倍,否則會產(chǎn)生較大的電流而把

21、線圈燒毀。4、釋放電流 其是指繼電器產(chǎn)生釋放動作的最大電流。當(dāng)繼電器吸合狀態(tài)的電流減小到一定程度時,繼電器就會恢復(fù)到未通電的釋放狀態(tài)。這時的電流遠(yuǎn)遠(yuǎn)小于吸合電流。 5、觸點(diǎn)切換電壓和電流 其是指繼電器所允許加載的電壓和電流。它決定了繼電器能夠控制電壓和電流的大小,使用時不能超過此值,否則就會很容易損壞繼電器的觸點(diǎn)。3.4 按鍵模塊按鍵模塊原理圖如下:3-4 按鍵原理圖按鍵初步設(shè)計是由五個按鍵來完成所有的操作,它們的功能分別是:上一曲、下一曲、暫停、復(fù)位和控制復(fù)位。3.5 其它揚(yáng)聲器是一種將電信號轉(zhuǎn)變?yōu)槁曅盘柕膿Q能器件,揚(yáng)聲器的性能優(yōu)劣對音質(zhì)造成的影響很大。揚(yáng)聲器在音響設(shè)備中是一個最為薄弱的器件

22、,而相對于音響效果而言,它又是一個最為重要的部件。揚(yáng)聲器的種類繁多,而且價格相差也很大。音頻電能通過電磁,壓電或者靜電效應(yīng),使其紙盆或膜片振動并和周圍的空氣產(chǎn)生共振共鳴從而發(fā)出聲音。低檔的塑料音箱因其箱體薄弱而無法抑制諧振,無音質(zhì)可言(但也有局部設(shè)計好的塑料音箱要遠(yuǎn)遠(yuǎn)好于劣質(zhì)的木質(zhì)音箱);木制音箱降低了箱體諧振時所造成的音染,音質(zhì)要普遍好于塑料音箱,通常多媒體音箱都是雙單元二分頻設(shè)計的,一個較小的揚(yáng)聲器用來負(fù)責(zé)中高音的輸出,而另一個較大的揚(yáng)聲器則負(fù)責(zé)中低音的輸出。4 軟件設(shè)計4.1 軟件總體流程圖軟件程序主要實(shí)現(xiàn)LCD顯示模塊、控制揚(yáng)聲器模塊、按鍵模塊等。LCD顯示模塊:用來顯示播放的歌曲名;

23、揚(yáng)聲器模塊:用來播放歌曲;按鍵模塊:就是用來控制歌曲播放和暫停,以及切換上一曲下一曲。主模塊流程圖如圖4.1所示: 開場 初始化上一曲/下 一曲 歌曲查詢 LCD顯示播放/暫停 等待播放 播放歌曲判斷是否繼續(xù) 圖 4-1 軟件總體流程圖總體流程圖主程序:void main() unsigned char num; char gequ111="QiJiShiJie" /寫入歌曲名 char gequ27="QiuHua" char gequ311="ShenShenAi" char gequ411="TianLanLan&qu

24、ot; char gequ517="WoCongCaoYuanLai" char gequ615="ZhongGuoWeiDao" char gequ711="ZiYouZiZai" char gequ86="gequ8" 單片機(jī)中寫入的歌曲名4.2播放/暫停子程序播放/暫停在程序利用部中斷T0口。將T0口設(shè)為計數(shù)中斷并工作在方式2下。標(biāo)識符初值賦值為R1=00H,計數(shù)初值設(shè)為TH0=0FFH,TL0=0FFH。當(dāng)按鍵第一次產(chǎn)生中斷信號時,播放/暫停子程序改變標(biāo)志符R1,將其賦值為01H。此時播放器由暫停狀態(tài)進(jìn)入播

25、放狀態(tài)。當(dāng)按鍵第二次產(chǎn)生中斷信號時,播放/暫停子程序判斷R1是否為02H后,將R1再次賦值為00H。此時,播放器由播放狀態(tài)進(jìn)入暫停狀態(tài)。 開場 標(biāo)識符R0=00HR0是否為 00H 暫停播放播放/暫停 將R0賦值00H將R0賦值01HR0是否為02H 圖4-2 播放流程代碼實(shí)現(xiàn)如下: POP DPL ;恢復(fù)現(xiàn)場 POP DPH POP ACC SETB EA RETI ;中斷返回START_PAUSE:CPL F0 ;開場/暫停中斷處理程序,將標(biāo)置位取反 F0,RETURN ;為1返回 SETB TR0 ;為0則播放RETURN: RETI ;中斷返回DELAY: MOV 27H,26H ;音

26、樂演奏控制D2: MOV 28H,*125D3: MOV 29H,*248 DJNZ 29H,$ DJNZ 28H,D3 DJNZ 27H,D2 DJNZ R2,DELAY RET4.3 LCD顯示模塊軟件設(shè)計4.3.1 LCD的初始化函數(shù) void LCD_Init(void) LCD_Write_(0*38); /*顯示模式設(shè)置*/ DelayMs(5); LCD_Write_(0*38); DelayMs(5); LCD_Write_(0*38); DelayMs(5); LCD_Write_(0*38); LCD_Write_(0*08); /*顯示關(guān)閉*/ LCD_Write_(0*

27、01); /*顯示清屏*/ LCD_Write_(0*06); /*顯示光標(biāo)移動設(shè)置*/ DelayMs(5); LCD_Write_(0*0C); /*顯示開及光標(biāo)設(shè)置*/4.3.2 LCD與繼電器的函數(shù) LCD_Write_String(5,0,"YinYueHe"); while (1) if(key0=0) DelayMs(20); /延時 if(key0=0) /條件選擇 while(!key0); JiDianQi=0; / LCD的顯示和繼電器控制揚(yáng)聲器的同步 if(key1=0) DelayMs(20); if(key1=0) while(!key1); J

28、iDianQi=1;5 系統(tǒng)實(shí)現(xiàn)本設(shè)計實(shí)現(xiàn)的是音樂盒的播放以及用LCD顯示屏顯示播放曲目,系統(tǒng)的硬件實(shí)現(xiàn)如以下圖所示: 圖5-1 歌曲切換 圖 5-2 歌曲切換5.1 硬件調(diào)試5.1.1 按鍵控制的實(shí)現(xiàn)本設(shè)計過按鍵實(shí)現(xiàn)控制上一曲、下一曲、音樂暫停和音樂開場,如以下圖: 圖5-3 顯示電路的實(shí)現(xiàn)5.1.2 LCD顯示本設(shè)計中利用LCD顯示實(shí)現(xiàn)歌曲曲目的顯示,如以下圖: 圖 5-4 LCD顯示5.1.3 其他 軟件局部主要是利用KEIL軟件編寫的音樂盒單片機(jī)程序的運(yùn)行成功。如圖 圖 5-5軟件實(shí)現(xiàn)總 結(jié)單片機(jī)音樂盒的設(shè)計在經(jīng)歷了近兩個月后終于根本完成了,在當(dāng)時選擇這個題目時覺得一點(diǎn)思路都沒有,之后

29、在和教師討論以及向其他同學(xué)請教之后確定了以STC89C52單片機(jī)為根底的數(shù)字音樂盒。音樂盒的主要組成局部有LCD顯示、單片機(jī)最小系統(tǒng)、繼電器電路、揚(yáng)聲器組成;經(jīng)過不斷的修改與完善音樂盒可以實(shí)現(xiàn)使用LCD顯示播放的歌曲名、用按鍵控制音樂的播放/暫停和切換上一曲/下一曲,通過這次的畢業(yè)設(shè)計我了解了如何使用keil軟件來編寫所需要的程序,怎么去合理的設(shè)計一個電路,更收獲了單獨(dú)做一個設(shè)計所需要的經(jīng)歷;這些都是在本次設(shè)計中我所學(xué)到的,讓我受益匪淺。然而,伴隨著收獲的往往還有遺憾,在這次的設(shè)計中我所做的音樂盒還有一些瑕疵和還未實(shí)現(xiàn)的功能;音樂盒是將放在U盤的歌曲通過音頻解碼后使用由繼電器控制的揚(yáng)聲器播放的

30、,但是,如果U盤的歌曲更換時,LCD的顯示必須要再次通過Keil軟件來添加新的歌曲曲名,否則就無法顯示著一點(diǎn)是十分麻煩的。而且在原來的方案中,音樂盒播放時是想使用跑馬燈來渲染的,但是由于程序編寫存在問題使得跑馬燈設(shè)計失敗。參考文獻(xiàn)1羅亞非.凌陽16位單片機(jī)應(yīng)用根底M,:航空航天大學(xué),2003.2 雷思孝.凌陽單片機(jī)原理及實(shí)用技術(shù)M,電子科技大學(xué),2004.3 黃智偉.凌陽單片機(jī)課程設(shè)計指導(dǎo)M,:航空航天大學(xué),2006.11.4 廣弟,朱月秀,王秀山.單片機(jī)根底M,:航空航天大學(xué),2001.7.5 曙光,郭萬有,頌華.可編程邏輯器件原理開發(fā)與應(yīng)用M,:電子科技大學(xué), 2000.6 建忠.單片機(jī)原

31、理及應(yīng)用M,電子科技大學(xué),2021.2. 7 康華光. 模擬電子技術(shù)根底(第四版)M, :華中理工大學(xué),1999.8 譚浩強(qiáng).C語言程序設(shè)計第二版M,:清華大學(xué),1991.9 小忠,黃寧. 單片機(jī)接口技術(shù)實(shí)用子程序M,:人民郵電, 2005.10 黃智偉.全國大學(xué)生電子設(shè)計競賽系統(tǒng)設(shè)計M,:航空航天大學(xué),2006.6.11 賈立新,王涌.電子系統(tǒng)設(shè)計與實(shí)踐M,:清華大學(xué),2007.附錄A 元器件清單表1 元器件清單STC89C52 1個LCD顯示屏1個揚(yáng)聲器 1個繼電器 1個按鍵 5個電源線 1根附錄B 源程序*include<reg52.h> /包含頭文件,一般情況不需要改動,頭

32、文件包含特殊功能存放器的定義*include<intrins.h>*define RS_CLR RS=0 *define RS_SET RS=1*define RW_CLR RW=0 *define RW_SET RW=1 *define EN_CLR EN=0*define EN_SET EN=1*define _Nop() _nop_() /定義空指令*define DataPort P0sbit RS = P24; /定義端口 sbit RW = P25;sbit EN = P26;sbit SDA=P21; /模擬I2C數(shù)據(jù)傳送位sbit SCL=P20; /模擬I2C時鐘

33、控制位sbit key0=P10;sbit key1=P11;sbit key2=P12;sbit key3=P13;sbit JiDianQi=P14; bit ack; /應(yīng)答標(biāo)志位void DelayUs2*(unsigned char t);/函數(shù)聲明 void DelayMs(unsigned char t);/*- uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的圍是 0255 這里使用晶振12M,準(zhǔn)確延時請使用匯編,大致延時 長度如下 T=t*2+5 uS -*/void DelayUs2*(unsig

34、ned char t) while(-t);/*- mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的圍是 0255 這里使用晶振12M,準(zhǔn)確延時請使用匯編-*/void DelayMs(unsigned char t) while(t-) /大致延時1mS DelayUs2*(245); DelayUs2*(245); /*- 啟動總線-*/void Start_I2c() SDA=1; /發(fā)送起始條件的數(shù)據(jù)信號 _Nop(); SCL=1; _Nop(); /起始條件建立時間大于4.7us,延時 _Nop(); _

35、Nop(); _Nop(); _Nop(); SDA=0; /發(fā)送起始信號 _Nop(); /起始條件鎖定時間大于4 _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; /鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) _Nop(); _Nop();/*- 完畢總線-*/void Stop_I2c() SDA=0; /發(fā)送完畢條件的數(shù)據(jù)信號 _Nop(); /發(fā)送完畢條件的時鐘信號 SCL=1; /完畢條件建立時間大于4 _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; /發(fā)送I2C總線完畢信號 _Nop(); _Nop(); _Nop

36、(); _Nop();/*- 字節(jié)數(shù)據(jù)傳送函數(shù) 函數(shù)原型: void SendByte(unsigned char c);功能: 將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對 此狀態(tài)位進(jìn)展操作.(不應(yīng)答或非應(yīng)答都使ack=0 假) 發(fā)送數(shù)據(jù)正常,ack=1; ack=0表示被控器無應(yīng)答或損壞。-*/void SendByte(unsigned char c) unsigned char Bitt; for(Bitt=0;Bitt<8;Bitt+) /要傳送的數(shù)據(jù)長度為8位 if(c<<Bitt)&0*80)SDA=1; /判斷發(fā)送位 else SD

37、A=0; _Nop(); SCL=1; /置時鐘線為高,通知被控器開場接收數(shù)據(jù)位 _Nop(); _Nop(); /保證時鐘高電平周期大于4 _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); SDA=1; /8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位 _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA=1)ack=0; else ack=1; /判斷是否接收到應(yīng)答信號 SCL=0; _Nop(); _Nop();/*- 字節(jié)數(shù)據(jù)傳送函數(shù) 函數(shù)原型: unsigned char RcvByte();功

38、能: 用來接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應(yīng)答信號), 發(fā)完后請用應(yīng)答函數(shù)。 -*/unsigned char RcvByte() unsigned char retc; unsigned char Bitt; retc=0; SDA=1; /置數(shù)據(jù)線為輸入方式 for(Bitt=0;Bitt<8;Bitt+) _Nop(); SCL=0; /置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位 _Nop(); _Nop(); /時鐘低電平周期大于4.7us _Nop(); _Nop(); _Nop(); SCL=1; /置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效 _Nop(); _Nop(); retc=ret

39、c<<1; if(SDA=1)retc=retc+1; /讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中 _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); return(retc);/*- 應(yīng)答子函數(shù)原型: void Ack_I2c(void);-*/void Ack_I2c(void) SDA=0; _Nop(); _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); /時鐘低電平周期大于4 _Nop(); _Nop(); _Nop(); SCL=0; /清時鐘線,鉗住I2C總線以便繼續(xù)接收 _Nop(); _Nop(); /*- 非應(yīng)答

40、子函數(shù)原型: void NoAck_I2c(void);-*/void NoAck_I2c(void) SDA=1; _Nop(); _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); /時鐘低電平周期大于4 _Nop(); _Nop(); _Nop(); SCL=0; /清時鐘線,鉗住I2C總線以便繼續(xù)接收 _Nop(); _Nop(); /*- 向無子地址器件發(fā)送字節(jié)數(shù)據(jù)函數(shù) 函數(shù)原型: bit ISendByte(unsigned char sla,ucahr c); 功能: 從啟動總線到發(fā)送地址,數(shù)據(jù),完畢總線的全過程,從器件地址sla. 如果返回1表示操作成

41、功,否則操作有誤。注意: 使用前必須已完畢總線。-*/*bit ISendByte(unsigned char sla,unsigned char c) Start_I2c(); /啟動總線 SendByte(sla); /發(fā)送器件地址 if(ack=0)return(0); SendByte(c); /發(fā)送數(shù)據(jù) if(ack=0)return(0); Stop_I2c(); /完畢總線 return(1);*/*- 向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù) 函數(shù)原型: bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigne

42、d char no); 功能: 從啟動總線到發(fā)送地址,子地址,數(shù)據(jù),完畢總線的全過程,從器件 地址sla,子地址suba,發(fā)送容是s指向的容,發(fā)送no個字節(jié)。 如果返回1表示操作成功,否則操作有誤。注意: 使用前必須已完畢總線。-*/bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) unsigned char i; Start_I2c(); /啟動總線 SendByte(sla); /發(fā)送器件地址 if(ack=0)return(0); SendByte(suba); /發(fā)送

43、器件子地址 if(ack=0)return(0); for(i=0;i<no;i+) SendByte(*s); /發(fā)送數(shù)據(jù) DelayMs(1); if(ack=0)return(0); s+; Stop_I2c(); /完畢總線 return(1);/*- 向無子地址器件讀字節(jié)數(shù)據(jù)函數(shù) 函數(shù)原型: bit IRcvByte(unsigned char sla,ucahr *c); 功能: 從啟動總線到發(fā)送地址,讀數(shù)據(jù),完畢總線的全過程,從器件地 址sla,返回值在c. 如果返回1表示操作成功,否則操作有誤。注意: 使用前必須已完畢總線。-*/*bit IRcvByte(unsigned char sla,unsigned char

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論