基于51單片機的音樂盒的設(shè)計畢業(yè)設(shè)計_第1頁
基于51單片機的音樂盒的設(shè)計畢業(yè)設(shè)計_第2頁
基于51單片機的音樂盒的設(shè)計畢業(yè)設(shè)計_第3頁
基于51單片機的音樂盒的設(shè)計畢業(yè)設(shè)計_第4頁
基于51單片機的音樂盒的設(shè)計畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、進51單片機中使用。關(guān)鍵詞:單片機 音樂盒 lcd abstract with the continuous development of human society, peoples quality of life demands are increasingly high, the traditional music box in the auditory aspectto bring people more good memories, but due to the microcomputer has the advantages of small volume, low cost, l

3、ow power consumption and fast operation has been more and more extensive use. the design is based on the music box stc89c52 series mcu, based on single chip microcomputer principle, the hardware circuit and software compilation, designed to produce aplug-in music box. the music box is composed of a

4、key circuit, a relay circuit,lcd display circuit and a loudspeaker. the use of four buttons control themusic boxes, music boxes were used to control the play / pause, switch on a /the next song, the music box using the usb coexist with five songs. the design of programming on the music box and debug

5、 source code using keil programming software, then download into 51 single chip processor.keywords: scm music box lcd 目 次目 次31 引言41.1 音樂盒的意義41.2 研究內(nèi)容52.1系統(tǒng)總體框架圖62.2音樂盒的設(shè)計原理62.3 單片機芯片概述73 硬件電路設(shè)計83.1 單片機最小系統(tǒng)原理圖83.1.1 復(fù)位電路83.1.2 晶振電路93.1.3時鐘電路93.2 lcd顯示模塊93.3 繼電器模塊113.3.1電磁繼電器的工作原理和特性123.3.2 固態(tài)繼電器的工作原理

6、和特性123.3.3 繼電器主要產(chǎn)品技術(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)實現(xiàn)195.1 硬件調(diào)試205.1.1 按鍵控制的實現(xiàn)205.1.2 lcd顯示215.1.3 其他21總 結(jié)22致謝23參考文獻24附錄a 元器件清單25附錄b 源程序261 引言在進入21世紀(jì)后,單片機產(chǎn)品的發(fā)展正朝著高性能和多品種方向,并且發(fā)展趨勢是進一步朝著cmos化、小體積、低功耗、大容量、高性能、低價格以及外圍的電路內(nèi)裝化

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

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

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

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

11、樂的播放,再通過按鍵實現(xiàn)上一首和下一首及暫停播放。2.3 單片機芯片概述stc89c52是stc公司生產(chǎn)的一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash存儲器。stc89c52使用經(jīng)典的mcs-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得stc89c52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,512字節(jié)ram, 32 位i/o 口線,看門狗定時器,內(nèi)置4kb eeprom,max810復(fù)位電路,3個16 位定時器/計數(shù)器,4

12、個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。另外 stc89c52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,cpu 停止工作,允許ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作頻率35mhz,6t/12t可選。原理圖如下 圖 2-2 單片機引腳圖3 硬件電路設(shè)計3.1 單片機最小系統(tǒng)原理圖 圖 3-1 單片機最小系統(tǒng)原理圖3.1.1 復(fù)位電路 復(fù)位電路:由兩個電容串聯(lián)電阻構(gòu)成,由圖3.1并結(jié)合電容電壓不能夠突變的性質(zhì),可以

13、知道,當(dāng)系統(tǒng)一上電時,rst腳將會出現(xiàn)高電平,并且,這個高電平持續(xù)的時間是由電路中的rc值來決定的.典型的51單片機中當(dāng)rst腳的高電平持續(xù)兩個機器周期以上時就將復(fù)位,所以,適當(dāng)?shù)慕M合rc的取值就可以保證可靠的復(fù)位.一般教科書中推薦c 取10u,r取8.2k.當(dāng)然也還是有其他取法的,但原則就是要讓rc的組合可以在rst腳上產(chǎn)生至少2個機械周期的高電平.至于如何具體得定量計算,可以參考實際電路分析相關(guān)書籍.a.復(fù)位操作復(fù)位是單片機里的初始化操作。其主要的功能是把pc初始化為0000h,使得單片機從0000h單元開始來執(zhí)行程序。除了在進入系統(tǒng)的正常初始化之外,當(dāng)由于程序運行時出錯或是操作錯誤使系統(tǒng)

14、處于死鎖狀態(tài)時,為了擺脫困境,也需要按復(fù)位鍵重新啟動。b.復(fù)位信號rst引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平時有效,其有效時間是應(yīng)持續(xù)24個振蕩周期(即二個機器周期)以上。若是使用頻率為6mhz的晶振,則其復(fù)位信號持續(xù)時間要超過4us才能夠完成復(fù)位操作。3.1.2 晶振電路晶振電路:典型的晶振取11.0592mhz(因為是可以準(zhǔn)確的得到9600波特率和19200波特率,用在有串口通訊的場合)/12mhz(產(chǎn)生精確的us級時歇,來方便定時操作)單片機:一片stc89c52/s51或其他51系列兼容單片機3.1.3時鐘電路 stc89c52內(nèi)部有一個可用于構(gòu)成振蕩器的高增益反相放大器,而引腳r

15、xd與txd分別是這個放大器的輸入端和輸出端。時鐘可由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部方式的時鐘電路在rxd和txd引腳上可外接定時元件,而內(nèi)部振蕩器就能產(chǎn)生自激振蕩。定時元件通常是采用石英晶體及電容組成的并聯(lián)諧振回路。晶體的振蕩頻率可以在1.212mhz之間選擇,一般電容值在530pf之間選擇,電容值的大小可以對頻率起到微調(diào)的作用。3.2 lcd顯示模塊lcd原理圖如下圖圖 3-2 lcd原理圖 lcd(liquid crystal display)是利用液晶分子的物理結(jié)構(gòu)以及光學(xué)特性來進行顯示的一種技術(shù)。液晶分子的特性:液晶分子是一種介于固體和液體之間的棒狀結(jié)構(gòu)的大分子物質(zhì);并且在自然形態(tài)

16、下,具有光學(xué)各向異性的特點,在電(磁)場的作用下,呈各向同性特點:下面以直視型的簡單多路tn/stn lcd panel(液晶顯示面板)的基本結(jié)構(gòu)來介紹lcd的基本顯示原理,示意圖如圖 圖 3-3 lcd的基本顯示原理 3.2.1 lcd顯示屏的特點a、顯示質(zhì)量高 由于液晶顯示器中每一個點在收到信號之后就會一直保持那種色彩和亮度,且恒定發(fā)光,而不會像陰極射線管顯示器(crt)那樣要去不斷刷新亮點。因此,液晶顯示器不僅顯示畫質(zhì)高而且絕對不會閃爍,可以把眼睛疲勞降到最低。 b、沒有電磁輻射 傳統(tǒng)的顯示器的顯示材料是熒光粉,是通過電子束撞擊熒光粉來實現(xiàn)顯示,當(dāng)電子束在打到熒光粉上的一剎那間是會產(chǎn)生強

17、大的電磁輻射的,盡管目前有許多的顯示器產(chǎn)品在處理輻射問題上進行了很多比較有效的處理,盡可能的把輻射量降到最低水平,但是要徹底消除是十分困難的。相對來講,液晶顯示器在防止輻射方面是具有先天優(yōu)勢的,因為它根本就不存在任何輻射。在電磁波的防范方面,液晶顯示器也是有自己獨特的優(yōu)勢,它采用了十分嚴格的密封技術(shù)將來自驅(qū)動電路里的少量電磁波封閉在了顯示器中,然而普通顯示器為了散發(fā)熱量的需求,必須要盡可能地讓內(nèi)部的電路與空氣相接觸,這樣內(nèi)部電路所產(chǎn)生的電磁波也就大量地向外“泄漏”了。 c、可視面積大對于尺寸相同的顯示器來講,液晶顯示器的可視面積是要更大一些。液晶顯示器的可視面積和它的對角線尺寸是相同的。而陰極

18、射線管顯示器顯像管前面板四周是有一英寸左右的邊框不能用于顯示的。 d、應(yīng)用范圍廣 最初的液晶顯示器因為無法用來顯示細膩的字符,所以通常應(yīng)用在電子表、計算器上。但隨著液晶顯示技術(shù)的不斷發(fā)展和進步,字符顯示開始變得越來越細膩起來,同時也開始支持基本的彩色顯示,并逐步被用于液晶電視、攝像機的液晶顯示器上、掌上游戲機上。3.3 繼電器模塊繼電器是一種由電子控制的器件,它具有控制系統(tǒng)(又稱之輸入回路)和被控制系統(tǒng)(又稱之輸出回路),通常被應(yīng)用于自動控制電路中,它實際上就是用較小的電流去控制較大電流的一種“自動開關(guān)”。所以在電路中起著自動調(diào)節(jié)、安全保護、轉(zhuǎn)換電路等作用。3.3.1電磁繼電器的工作原理和特性

19、電磁式繼電器大都是由鐵芯、線圈、銜鐵、觸點簧片等組成的。只需要在線圈兩端加上一定的電壓,線圈中就會有一定的電流經(jīng)過,從而產(chǎn)生了電磁效應(yīng),而銜鐵就將會在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,之后帶動銜鐵的動觸點與靜觸點(常開觸點)吸合。當(dāng)線圈斷電之后,電磁的吸力也隨之消失,銜鐵就會在彈簧的反作用力下返回原來的位置,使動觸點與原來的靜觸點(常閉觸點)相吸合。這樣通過吸合、釋放,從而達到了在電路之中的導(dǎo)通、切斷的目的。而對于繼電器中的“常開、常閉”兩觸點,可以這樣來區(qū)分:繼電器線圈未通電時候處于斷開狀態(tài)的靜觸點,稱為“常開觸點”;反之處于接通狀態(tài)的靜觸點稱為“常閉觸點”。 3.3.2 固態(tài)繼

20、電器的工作原理和特性固態(tài)繼電器是一種由兩個接線端為輸入端,另兩個接線端作為輸出端的四端器件,中間是采用隔離器件實現(xiàn)輸入輸出的電隔離。固態(tài)繼電器按負載電源類型可分為交流型和直流型。按開關(guān)型式可將其分為常開型和常閉型。按隔離型式可將其分為混合型、變壓器隔離型和光電隔離型,而以光電隔離型為最多。3.3.3 繼電器主要產(chǎn)品技術(shù)參數(shù)1、額定工作電壓 其是指繼電器正常工作時候線圈所需要的電壓。根據(jù)繼電器的型號的不同,可以是交流電壓,也能夠是直流電壓。2、直流電阻 其是指繼電器中線圈的直流電阻,能夠通過萬能表測量。3、吸合電流 其是指繼電器能夠產(chǎn)生吸合動作的最小電流。當(dāng)在正常使用時,給定的電流必須要略大于吸

21、合電流,這樣繼電器才能夠穩(wěn)定地工作。而對于線圈所加的工作電壓,一般是不要超過額定工作電壓的1.5倍,否則會產(chǎn)生較大的電流而把線圈燒毀。4、釋放電流 其是指繼電器產(chǎn)生釋放動作的最大電流。當(dāng)繼電器吸合狀態(tài)的電流減小到一定程度時,繼電器就會恢復(fù)到未通電的釋放狀態(tài)。這時的電流遠遠小于吸合電流。 5、觸點切換電壓和電流 其是指繼電器所允許加載的電壓和電流。它決定了繼電器能夠控制電壓和電流的大小,使用時不能超過此值,否則就會很容易損壞繼電器的觸點。3.4 按鍵模塊按鍵模塊原理圖如下:3-4 按鍵原理圖按鍵初步設(shè)計是由五個按鍵來完成所有的操作,它們的功能分別是:上一曲、下一曲、暫停、復(fù)位和控制復(fù)位。3.5

22、其它 揚聲器是一種將電信號轉(zhuǎn)變?yōu)槁曅盘柕膿Q能器件,揚聲器的性能優(yōu)劣對音質(zhì)造成的影響很大。揚聲器在音響設(shè)備中是一個最為薄弱的器件,而相對于音響效果而言,它又是一個最為重要的部件。揚聲器的種類繁多,而且價格相差也很大。音頻電能通過電磁,壓電或者靜電效應(yīng),使其紙盆或膜片振動并和周圍的空氣產(chǎn)生共振(共鳴)從而發(fā)出聲音。低檔的塑料音箱因其箱體單薄而無法克服諧振,無音質(zhì)可言(但也有部分設(shè)計好的塑料音箱要遠遠好于劣質(zhì)的木質(zhì)音箱);木制音箱降低了箱體諧振時所造成的音染,音質(zhì)要普遍好于塑料音箱,通常多媒體音箱都是雙單元二分頻設(shè)計的,一個較小的揚聲器用來負責(zé)中高音的輸出,而另一個較大的揚聲器則負責(zé)中低音的輸出。

23、4 軟件設(shè)計4.1 軟件總體流程圖軟件程序主要實現(xiàn)lcd顯示模塊、控制揚聲器模塊、按鍵模塊等。lcd顯示模塊:用來顯示播放的歌曲名;揚聲器模塊:用來播放歌曲;按鍵模塊:就是用來控制歌曲播放和暫停,以及切換上一曲下一曲。主模塊流程圖如圖4.1所示: 開始 初始化 上一曲/下 一曲 歌曲查詢 lcd顯示播放/暫停 等待播放 播放歌曲判斷是否繼續(xù) 圖 4-1 軟件總體流程圖總體流程圖主程序:void main() unsigned char num; char gequ111=qijishijie; /寫入歌曲名 char gequ27=qiuhua; char gequ311=shenshenai

24、; char gequ411=tianlanlan; char gequ517=wocongcaoyuanlai; char gequ615=zhongguoweidao; char gequ711=ziyouzizai; char gequ86=gequ8; 單片機中寫入的歌曲名4.2播放/暫停子程序播放/暫停在程序利用內(nèi)部中斷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)進入播放狀態(tài)。當(dāng)按鍵第二次產(chǎn)生中斷信號時,播放

25、/暫停子程序判斷r1是否為02h后,將r1再次賦值為00h。此時,播放器由播放狀態(tài)進入暫停狀態(tài)。 開始 標(biāo)識符r0=00hr0是否為 00h 暫停播放播放/暫停 將r0賦值00h將r0賦值01hr0是否為02h 圖4-2 播放流程代碼實現(xiàn)如下: pop dpl ;恢復(fù)現(xiàn)場 pop dph pop acc setb ea reti ;中斷返回start_pause:cpl f0 ;開始/暫停中斷處理程序,將標(biāo)置位取反 jb f0,return ;為1返回 setb tr0 ;為0則播放return: reti ;中斷返回delay: mov 27h,26h ;音樂演奏控制d2: mov 28h,

26、#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_com(0x38); /*顯示模式設(shè)置*/ delayms(5); lcd_write_com(0x38); delayms(5); lcd_write_com(0x38); delayms(5); lcd_write_com(0x38); lcd_write_com(0x08); /*顯示關(guān)閉*/ lcd_write_com(0

27、x01); /*顯示清屏*/ lcd_write_com(0x06); /*顯示光標(biāo)移動設(shè)置*/ delayms(5); lcd_write_com(0x0c); /*顯示開及光標(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的顯示和繼電器控制揚聲器的同步 if(key1=0) delayms(20); if(key1=0) while(!key1); jidian

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

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

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

31、西安:西安電子科技大學(xué), 2000.6 李建忠.單片機原理及應(yīng)用m,西安電子科技大學(xué)出版社,2008.2. 7 康華光. 模擬電子技術(shù)基礎(chǔ)(第四版)m, 武漢:華中理工大學(xué)出版社,1999.8 譚浩強.c語言程序設(shè)計(第二版)m,北京:清華大學(xué)出版社,1991.9 陳小忠,黃寧. 單片機接口技術(shù)實用子程序m,北京:北京人民郵電出版社, 2005.10 黃智偉.全國大學(xué)生電子設(shè)計競賽系統(tǒng)設(shè)計m,北京:北京航空航天大學(xué)出版社,2006.6.11 賈立新,王涌.電子系統(tǒng)設(shè)計與實踐m,北京:清華大學(xué)出版社,2007.附錄a 元器件清單 表1 元器件清單stc89c52 1個lcd顯示屏 1個揚聲器 1

32、個繼電器 1個按鍵 5個電源線 1根附錄b 源程序#include /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#include#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

33、; /模擬i2c數(shù)據(jù)傳送位sbit scl=p20; /模擬i2c時鐘控制位sbit key0=p10;sbit key1=p11;sbit key2=p12;sbit key3=p13;sbit jidianqi=p14; bit ack; /應(yīng)答標(biāo)志位void delayus2x(unsigned char t);/函數(shù)聲明 void delayms(unsigned char t);/*- us延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶振12m,精確延時請使用匯編,大致延時 長度如

34、下 t=tx2+5 us -*/void delayus2x(unsigned char t) while(-t);/*- ms延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶振12m,精確延時請使用匯編-*/void delayms(unsigned char t) while(t-) /大致延時1ms delayus2x(245); delayus2x(245); /*- 啟動總線-*/void start_i2c() sda=1; /發(fā)送起始條件的數(shù)據(jù)信號 _nop(); scl=1;

35、_nop(); /起始條件建立時間大于4.7us,延時 _nop(); _nop(); _nop(); _nop(); sda=0; /發(fā)送起始信號 _nop(); /起始條件鎖定時間大于4 _nop(); _nop(); _nop(); _nop(); scl=0; /鉗住i2c總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) _nop(); _nop();/*- 結(jié)束總線-*/void stop_i2c() sda=0; /發(fā)送結(jié)束條件的數(shù)據(jù)信號 _nop(); /發(fā)送結(jié)束條件的時鐘信號 scl=1; /結(jié)束條件建立時間大于4 _nop(); _nop(); _nop(); _nop(); _nop(); sda

36、=1; /發(fā)送i2c總線結(jié)束信號 _nop(); _nop(); _nop(); _nop();/*- 字節(jié)數(shù)據(jù)傳送函數(shù) 函數(shù)原型: void sendbyte(unsigned char c);功能: 將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對 此狀態(tài)位進行操作.(不應(yīng)答或非應(yīng)答都使ack=0 假) 發(fā)送數(shù)據(jù)正常,ack=1; ack=0表示被控器無應(yīng)答或損壞。-*/void sendbyte(unsigned char c) unsigned char bitcnt; for(bitcnt=0;bitcnt8;bitcnt+) /要傳送的數(shù)據(jù)長度為8位 if(cbit

37、cnt)&0x80)sda=1; /判斷發(fā)送位 else sda=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ù)

38、函數(shù)原型: unsigned char rcvbyte();功能: 用來接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應(yīng)答信號), 發(fā)完后請用應(yīng)答函數(shù)。 -*/unsigned char rcvbyte() unsigned char retc; unsigned char bitcnt; retc=0; sda=1; /置數(shù)據(jù)線為輸入方式 for(bitcnt=0;bitcnt8;bitcnt+) _nop(); scl=0; /置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位 _nop(); _nop(); /時鐘低電平周期大于4.7us _nop(); _nop(); _nop(); scl=1; /置時鐘線為

39、高使數(shù)據(jù)線上數(shù)據(jù)有效 _nop(); _nop(); retc=retc1; 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總線以便

40、繼續(xù)接收 _nop(); _nop(); /*- 非應(yīng)答子函數(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ù),

41、結(jié)束總線的全過程,從器件地址sla. 如果返回1表示操作成功,否則操作有誤。注意: 使用前必須已結(jié)束總線。-*/*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(); /結(jié)束總線 return(1);*/*- 向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù) 函數(shù)原型: bit isendstr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no); 功能: 從啟動總線到發(fā)送地址,子地址,數(shù)據(jù),結(jié)束總線的全過程,從器件 地址sla,子地址suba,發(fā)送內(nèi)容是s指向的內(nèi)容,發(fā)送no個字節(jié)。 如果返回1表示操作成功,否則操作有誤。注意: 使用前必須已結(jié)束總線。-*/bit isendstr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) unsigned char i; sta

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論