




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)及dsp課程設(shè)計(jì)報(bào)告智能數(shù)字音樂盒專 業(yè): 電子信息工程 班 級: 姓 名: 學(xué) 號: 指導(dǎo)教師: 時(shí) 間:2014-06-162014-06-27通信與電子工程學(xué)院摘要單片機(jī)自20世紀(jì)70年代問世以來,以其極高的性能價(jià)格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。而51單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。本課程設(shè)計(jì)是基于mcs51系列單片機(jī)所設(shè)計(jì)的,用stc89c52芯片控制的智能數(shù)字音樂盒,整個(gè)系統(tǒng)可以由電路硬件控制,也可由android手機(jī)客戶端軟件進(jìn)行控制。本系統(tǒng)包括stc89c52單片機(jī)最小系統(tǒng)、按鍵電路、蜂鳴器及l(fā)cd1602顯示電路、藍(lán)牙模塊、安卓手機(jī)客戶端組成
2、,共可以播放6首歌曲,按鍵電路可以實(shí)現(xiàn)進(jìn)入藍(lán)牙控制、播放、暫停、下一首等功能,手機(jī)客戶端可以實(shí)現(xiàn)釋放藍(lán)牙控制、上一首、下一首、播放等功能;lcd1602可以顯示正在播放的歌曲和時(shí)間,蜂鳴器播放音樂。其中手機(jī)客戶端是由谷歌公司開發(fā)的手機(jī)編程軟件appinventor開發(fā)的。關(guān)鍵詞:stc89c52、智能數(shù)字音樂盒、蜂鳴器、lcd1602、appinventor、藍(lán)牙目 錄內(nèi)容-1一、 設(shè)計(jì)題目:智能數(shù)字音樂盒-1二、 設(shè)計(jì)目的和要求-1三、 方案論證-1四、 總體設(shè)計(jì)(硬件部分)-14.1、框圖設(shè)計(jì)-14.2、電路原理圖-24.3、主要模塊功能說明-24.3.1、 stc89c52單片機(jī)-24.
3、3.2、 lcd1602液晶顯示屏-44.3.3 、hc-05藍(lán)牙模塊-4五、 總體設(shè)計(jì)(軟件部分)-45.1、程序流程圖-45.1.1、stc89c52單片機(jī)部分-45.1.2、appinventor手機(jī)客戶端部分-55.2、主要模塊程序說明-65.2.1、蜂鳴器唱歌子程序-6(1)、音調(diào)的產(chǎn)生-6(2)、節(jié)拍的確定-7(3)、音符的編碼-75.2.2、lcd1602顯示子程序-85.2.3、串口初始化及串口中斷服務(wù)子程序-8六、 仿真過程綜述-8七、 調(diào)試中遇到的難點(diǎn)及解決辦法-97.1、硬件焊接部分-97.2、軟件調(diào)試部分-10八、 課設(shè)結(jié)果及實(shí)物展示-108.1、實(shí)物展示-108.2、
4、心得體會-11九、 參考文獻(xiàn)-11附錄-12源程序-12內(nèi) 容一、 設(shè)計(jì)題目:智能數(shù)字音樂盒二、 設(shè)計(jì)目的和要求目的:為了進(jìn)一步鞏固學(xué)習(xí)的理論知識,增強(qiáng)對所學(xué)知識的實(shí)際應(yīng)用能力和運(yùn)用所學(xué)的知識解決實(shí)際問題的能力,通過設(shè)計(jì)在鞏固所學(xué)知識的基礎(chǔ)之上具有初步的單片機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用能力。通過本設(shè)計(jì),能綜合運(yùn)用單片機(jī)技術(shù)原理與應(yīng)用、dsp原理與應(yīng)用c語言程序設(shè)計(jì)以及數(shù)字電路、模擬電路等課程的內(nèi)容,為以后從事電子產(chǎn)品設(shè)計(jì)、軟件編程、系統(tǒng)控制等工作奠定一定的基礎(chǔ)。學(xué)會使用keil c和proteus等軟件,用c語言或匯編語言編寫一個(gè)較完整的實(shí)用程序,并仿真運(yùn)行,保證設(shè)計(jì)的正確性。并且了解單片機(jī)接口應(yīng)用開發(fā)的
5、全過程:分析需求、設(shè)計(jì)原理圖、選用元器件、布線、編程、調(diào)試等?;疽螅河脝纹瑱C(jī)設(shè)計(jì)一音樂播放器可以通過按鍵播放多首音樂;擴(kuò)展部分:用手機(jī)控制音樂播放器播放音樂。三、 方案論證方案1:用8個(gè)矩陣按鍵控制音樂的播放。6個(gè)按鍵選擇6首不同的音樂播放,其余兩個(gè)按鍵,一個(gè)控制音樂的停止,一個(gè)控制進(jìn)入手機(jī)控制模式。按下前六個(gè)鍵中的一個(gè),便開始播放音樂。在顯示方面,用數(shù)碼管顯示正在播放的音樂個(gè)數(shù)。方案2:用4個(gè)獨(dú)立按鍵來實(shí)現(xiàn)音樂的選擇播放,第一個(gè)按鍵實(shí)現(xiàn)手機(jī)控制,第二個(gè)按鍵播放音樂,第三個(gè)按鍵暫停播放,第四個(gè)按鍵切換歌曲進(jìn)入下一首。用lcd1602顯示歌曲信息。為使電路簡單,能顯示更多的信息,并方便以后擴(kuò)
6、展,可能播放更多的音樂,選擇方案2。四、 總體設(shè)計(jì)(硬件部分)4.1、框圖設(shè)計(jì)框圖設(shè)計(jì)是為了能夠從整體上把握系統(tǒng)的各個(gè)大的模塊以及各個(gè)模塊之間的聯(lián)系。同時(shí)羅列出需要主要使用到的各個(gè)器件,以方面系統(tǒng)開發(fā)中器件的選取。通過框圖設(shè)計(jì),讓設(shè)計(jì)者從整體上把握系統(tǒng)的開發(fā)。本系統(tǒng)設(shè)計(jì)的框圖如下圖4-1所示。stc89c52最小系統(tǒng)lcd1602顯示電路按鍵電路手機(jī)客戶端蜂鳴器藍(lán)牙模塊圖4-1 系統(tǒng)結(jié)構(gòu)框圖4.2、電路原理圖本系統(tǒng)由stc89c52最小系統(tǒng)、四個(gè)按鍵電路、lcd1602顯示電路、蜂鳴器等組成。由于proteus仿真軟件沒有藍(lán)牙,所以在仿真時(shí)省略了此部分電路,但在程序調(diào)試時(shí),根據(jù)實(shí)物測試通過。電
7、路原理圖如圖4-2所示圖4-2 電路原理圖4.3、主要模塊功能說明4.3.1、 stc89c52單片機(jī) stc89c52是stc公司生產(chǎn)的一種低功耗、高性能cmos8位微控制器,具有 8k在系統(tǒng)可編程flash存儲器。stc89c52使用經(jīng)典的mcs-51內(nèi)核,但做了很多的改進(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 口線,看門狗定時(shí)器,內(nèi)置4kb eeprom,max810復(fù)位電路,3個(gè)
8、16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。 另外 stc89c52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。4.3.2、 lcd1602液晶顯示屏 1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶模塊。它由若干個(gè)5x7或者5x11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距
9、的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形。1602lcd是指顯示的內(nèi)容16x2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。(1) 引腳功能第1腳:vss為地電源。第2腳:vdd接5v正電源。第3腳:vl為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對比度。第4腳:rs為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:r/w為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)rs和r/w共同為低電平時(shí)可以寫入指令或者顯示地址
10、,當(dāng)rs為低電平r/w為高電平時(shí)可以讀忙信號,當(dāng)rs為高電平r/w為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:e端為使能端,當(dāng)e端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極(2) 操作時(shí)序 rsr/w操作說明00寫入指令碼d0d701讀取輸出的d0d7狀態(tài)字10寫入數(shù)據(jù)d0d711從d0d7讀取數(shù)據(jù)注:關(guān)于e=h脈沖開始時(shí)初始化e為0,然后置e為1,再清0。讀取狀態(tài)字時(shí),注意d7位,d7=1,禁止讀寫操作;d7=0,允許讀寫操作;所以對控制器每次進(jìn)行讀寫操作前,必須進(jìn)行讀寫檢測。(3) 指令集:0x38:設(shè)置16*2顯示,5*
11、7點(diǎn)陣,8位數(shù)據(jù)接口0x01:清屏0x0f:開顯示,顯示光標(biāo),光標(biāo)閃爍0x08:只開顯示0x0e:開顯示,顯示光標(biāo),光標(biāo)不閃爍0x0c:開顯示,不顯示光標(biāo)0x06:地址加1,當(dāng)寫入數(shù)據(jù)的時(shí)候光標(biāo)右移0x02:地址計(jì)數(shù)器ac=0;此時(shí)地址為0x80,光標(biāo)歸原點(diǎn),但是ddram中斷內(nèi)容不變0x18:光標(biāo)和顯示一起向左移動(4) lcd1602讀寫時(shí)序圖如圖4-3、4-4所示(第一個(gè)為讀時(shí)序,第二個(gè)為寫時(shí)序)圖4-3讀時(shí)序圖4-4寫時(shí)序4.3.3 、hc-05藍(lán)牙模塊hc-05 嵌入式藍(lán)牙串口通訊模塊(以下簡稱模塊)具有兩種工作模式:命令響應(yīng)工作 模式和自動連接工作模式,在自動連接工作模式下模塊又可
12、分為主(master)、從(slave) 和回環(huán)(loopback)三種工作角色。當(dāng)模塊處于自動連接工作模式時(shí),將自動根據(jù)事先設(shè)定 的方式連接的數(shù)據(jù)傳輸;當(dāng)模塊處于命令響應(yīng)工作模式時(shí)能執(zhí)行下述所有 at 命令,用戶可向模塊發(fā)送各種 at 指令,為模塊設(shè)定控制參數(shù)或發(fā)布控制命令。通過控制模塊外部引腳(pio11)輸入電平,可以實(shí)現(xiàn)模塊工作狀態(tài)的動態(tài)轉(zhuǎn)換。(1)、串口模塊用到的引腳定義:、pio8 連接 led,指示模塊工作狀態(tài),模塊上電后閃爍,不同的狀態(tài)閃爍間隔不同。、pio9 連接 led,指示模塊連接成功,藍(lán)牙串口匹配連接成功后,led 長亮。 、pio11 模塊狀態(tài)切換腳,高電平-at 命
13、令響應(yīng)工作狀態(tài),低電平或懸空-藍(lán)牙常規(guī)工作狀態(tài)。、模塊上已帶有復(fù)位電路,重新上電即完成復(fù)位。(2)、常用at指令集、測試指令:(34腳至高一次)指令 響應(yīng) 參數(shù)at ok 無、模塊復(fù)位:(34腳至高一次)指令 響應(yīng) 參數(shù)at+reset ok 無、獲取軟件版本號:(34腳一直至高,再給模塊上電,波特率為38400)指令 響應(yīng) 參數(shù)at+version? ok param:軟件版本號+version:、恢復(fù)默認(rèn)狀態(tài):(34腳至高一次)指令 響應(yīng) 參數(shù)at+orgl ok 無、設(shè)置/查詢串口參數(shù):(34腳至高一次或一直至高)指令響應(yīng) 參數(shù) at+uart=, ok param1:波特率(bits/
14、s)at+ uart?+ uart=,ok 取值如下(十進(jìn)制):(4800、9600、19200、38400、57600、115200、23400、460800、921600、1382400)param2:停止位01 位,12 位param3:校驗(yàn)位0none,1odd,2even。默認(rèn)設(shè)置:9600,0,0五、 總體設(shè)計(jì)(軟件部分)5.1、程序流程圖5.1.1、stc89c52單片機(jī)部分 單片機(jī)主程序可以分為兩部分,一是按鍵控制播放音樂部分,而是接受藍(lán)牙數(shù)據(jù)串口中斷部分:當(dāng)按下bluetoothmusic鍵時(shí),串口初始化,等待串口中斷,在串口中斷里,根據(jù)接收的數(shù)據(jù)控制釋放藍(lán)牙連接、播放、下一
15、首、上一首并在lcd1602上顯示歌曲信息;當(dāng)bluetoothmusic鍵沒按下時(shí),進(jìn)入按鍵掃描,根據(jù)獲得的鍵值控制播放、暫停、下一首,并在lcd1602上顯示歌曲信息。單片機(jī)總程序流程圖如圖5-1所示。開始系統(tǒng)初始化顯示歡迎界面while(1)循環(huán)鍵盤掃描flag_blue=1?是 否鍵盤掃描串口初始化按鍵控制播放串口中斷控制播放lcd1602顯示歌曲信息圖5-1 單片機(jī)總程序流程圖5.1.2、appinventor手機(jī)客戶端部分對于這部分程序,由于appinventor是基于安卓的開發(fā)工具,這里不做詳細(xì)介紹,只將工程最終界面截圖加在報(bào)告中此處,如圖5-2和5-3所示。圖5-2 appin
16、ventor designer版面圖5-3 appinventor blocks版面5.2、主要模塊程序說明5.2.1、蜂鳴器唱歌子程序(1)、音調(diào)的產(chǎn)生頻率的高低決定了音調(diào)的高低。音樂的十二平均率規(guī)定:每兩個(gè)八度音(如簡譜中的中音1和高音1)之間的頻率相差一倍。在兩個(gè)八度音之間又分為十二個(gè)半音。另外,音名a(簡譜中的低音6)的頻率為440hz,音名b到c之間、e到f之間為半音,其余為全音。由此可以計(jì)算出簡譜中從低音1到高音1之間每個(gè)音名對應(yīng)的頻率,所有不同頻率的信號都是從同一個(gè)基準(zhǔn)頻率分頻得到的。、要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間。利用
17、定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的i/o反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對i/o反相,就可在i/o腳上得到此頻率的脈沖。、利用at89c52的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式方式1下,改變計(jì)數(shù)值th0及tl0以產(chǎn)生不同頻率的方法。此外結(jié)束符和休止符可以分別用代碼00h和ffh來表示,若查表結(jié)果為00h,則表示曲子終了;若查表結(jié)果為ffh,則產(chǎn)生相應(yīng)的停頓效果。、例如頻率為523hz,其周期t=1/523=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每次技術(shù)956次時(shí)將i/o反相,就可得到中音do(523hz)。計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:n=fi/2/f
18、rn:計(jì)算值;fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1mhz;、其計(jì)數(shù)值的求法如下:初值t=65536-n=65536-fi/2/fr例如:設(shè)k=65536,f=1000000=fi=1mhz,求低音do(261hz)、中音do(523hz)、高音的do(1046hz)的計(jì)算值t=65536-n=65536-fi/2/fr=65536-1000000/2/fr=65536-500000/fr低音do的t=65536-500000/262=63628,中音do的t=65536-500000/523=64580,低音do的t=65536-500000/1047=65058。c調(diào)各音符頻率與計(jì)數(shù)值t
19、的對照表如圖5-4所示。5-4 c調(diào)各音符頻率與計(jì)數(shù)值t的對照表(2)、節(jié)拍的確定若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動),而且可以調(diào)節(jié)各個(gè)音的快滿度?!肮?jié)拍”,即beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實(shí)0.5s,則1/4拍為0.125s。至于1拍多少s,并沒有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點(diǎn),有些人慢一點(diǎn),只要聽的悅耳就好。音持續(xù)時(shí)間的長短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。一首音樂是由許多不同的音符組成的,而每個(gè)音符對應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對應(yīng)的
20、延時(shí),構(gòu)成音樂。了解音樂的一些基礎(chǔ)知識,我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂。對于單片機(jī)來說,產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機(jī)的定時(shí)/計(jì)數(shù)器來產(chǎn)生這樣的方波頻率信號。因此,需要弄清楚音樂中的音符和對應(yīng)的頻率,以及單片機(jī)定時(shí)計(jì)數(shù)的關(guān)系。節(jié)拍與節(jié)拍碼對照如5-5所示。5-5 節(jié)拍與節(jié)拍碼對照圖每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,圖5-5為節(jié)拍碼的對照。如果1拍為0.4秒,1/4拍實(shí)0.1秒。(3)、音符的編碼do、re、mi、fa、so、la、si分別編碼為17,重音do編為8,重音re編為9,停頓編為0。播放長度以十六分音符為單位,一拍即四分音
21、符等于4個(gè)十六分音符,編為4,其它的播放時(shí)間以此類推。音調(diào)作為編碼的高4位,而播放時(shí)間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個(gè)編碼。以0xff作為曲譜的結(jié)束標(biāo)志。舉例1:音調(diào)do,發(fā)音長度為兩拍,即二分音符,將其編碼為0x18;舉例2:音調(diào)re,發(fā)音長度為半拍,即八分音符,將其編碼為0x22;歌曲播放的設(shè)計(jì)。先將歌曲的簡譜進(jìn)行編碼,儲存在一個(gè)數(shù)據(jù)類型為unsignedchar的數(shù)組中。程序從數(shù)組中取出一個(gè)數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時(shí)器0,使之定時(shí)操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時(shí)時(shí)間,接著調(diào)用定時(shí)器延時(shí)。5.2.2、lcd1602顯示子程序 在
22、lcd1602的驅(qū)動程序設(shè)計(jì)中,主要有讀忙、寫指令、寫數(shù)據(jù)、初始化四種。具體程序見附錄。(1)、讀忙子程序在向lcd中寫入數(shù)據(jù)時(shí),為了保證lcd能夠響應(yīng)單片機(jī),最好在向lcd中寫入數(shù)據(jù)或者指令之前先判斷l(xiāng)cd是否處于空閑狀態(tài)。lcd忙的標(biāo)志是向lcd中隨便寫入一個(gè)指令,如果lcd數(shù)據(jù)口的最高位被lcd拉為低電平,則lcd已經(jīng)處于空閑狀態(tài)。(2)、初始化在lcd初次工作時(shí),需要將lcd初始化。主要有系統(tǒng)功能設(shè)置、顯示和光標(biāo)設(shè)置、模式設(shè)置等。(3)、寫指令寫指令和寫數(shù)據(jù)是整個(gè)lcd的驅(qū)動基礎(chǔ)。如初始化設(shè)置就是通過調(diào)用這個(gè)子函數(shù)來實(shí)現(xiàn)的。在向lcd中寫入指令之前,需要先選定指令寄存器(rs=0),然
23、后向lcd的8位數(shù)據(jù)口寫入指令,接著使能lcd。該指令就被寫入了lcd中。(4)、寫數(shù)據(jù)寫數(shù)據(jù)與寫指令相同,其唯一的區(qū)別是寄存器的選擇。如果將數(shù)據(jù)口中的數(shù)據(jù)寫入指令寄存器,就是寫指令;如果將寫入數(shù)據(jù)寄存器(rs1=1),就是寫數(shù)據(jù)。5.2.3、串口初始化及串口中斷服務(wù)子程序(1)、串口初始化設(shè)置串口工作方式1,1個(gè)起始位,1個(gè)停止位,8位數(shù)據(jù),波特率9600。波特率由定時(shí)器t1產(chǎn)生。(2)、串口中斷服務(wù)子程序在此子程序中,若接受到藍(lán)牙的數(shù)據(jù)為0x00,則上一首;若為0x01,則下一首;若為0x02,則播放;若為0x03,則斷開藍(lán)牙連接,進(jìn)入按鍵模式。六、 仿真過程綜述圖6-1 proteus仿
24、真圖如圖6-1為proteus仿真圖,此時(shí)正在按鍵模式下,播放第六首歌曲,為龐龍的兩只蝴蝶,可以通過按鍵stop停止播放,也可以按復(fù)位鍵使整個(gè)系統(tǒng)復(fù)位。暫停播放時(shí),按鍵next可以進(jìn)入下一首歌曲,按鍵start時(shí)可以播放第六首。暫停時(shí),也可按鍵bluetooth進(jìn)入手機(jī)控制模式,但由于此處不支持串口通信,無法仿真,因此在實(shí)物上調(diào)試程序時(shí)可以實(shí)現(xiàn)藍(lán)牙控制音樂的播放。另外,在仿真時(shí)蜂鳴器發(fā)出的聲音噪音很大,但在實(shí)物上,聲音很悅耳。七、 調(diào)試中遇到的難點(diǎn)及解決辦法7.1、硬件焊接部分在proteus仿真成功后,用altiumdesigner10電路設(shè)計(jì)軟件進(jìn)行電路原理圖設(shè)計(jì)及pcb繪制,為了使整個(gè)系
25、統(tǒng)占用的電路板資源最少,其中有的走線用的導(dǎo)線連接,在電路板打孔,這樣可以減少pcb的復(fù)雜程度,大大簡化電路設(shè)計(jì)過程,更有效地完成設(shè)計(jì)。此處設(shè)計(jì)了八個(gè)矩陣按鍵,既可以滿足本系統(tǒng)四個(gè)獨(dú)立按鍵的需求,也方便以后擴(kuò)展使用。altiumdesigner10電路原理圖及pcb圖如圖7-1及7-2所示。7-1 altiumdesigner10電路原理圖7-2 altiumdesigner10 pcb設(shè)計(jì)圖在實(shí)物焊接過程中,依次焊接單片機(jī)最小系統(tǒng)電路、按鍵電路、蜂鳴器電路、lcd1602液晶顯示電路,并且每焊完一部分,就用萬用表測試其電路的連通性及穩(wěn)定性,以確保整個(gè)系統(tǒng)設(shè)計(jì)的成功率。(注:藍(lán)牙模塊可即插即用,
26、此處不需要設(shè)計(jì)電路) 7.2、軟件調(diào)試部分在軟件設(shè)計(jì)過程中,依次設(shè)計(jì)了lcd1602驅(qū)動子程序、播放音樂子程序、鍵盤掃描子程序、定時(shí)器初始化定時(shí)器中斷子程序、串口初始化及串口中斷服務(wù)子程序,在子程序里逐步調(diào)試仿真并在實(shí)物上加以修正。其中l(wèi)cd1602驅(qū)動子程序的設(shè)計(jì)過程參考了lcd1602數(shù)據(jù)手冊及參考例程,設(shè)計(jì)出了忙檢測、寫指令、寫數(shù)據(jù)、1602初始化、設(shè)置顯示坐標(biāo)、指定位置寫字符、指定位置寫字符串等子程序;音樂播放函數(shù)的設(shè)計(jì),查閱了單片機(jī)蜂鳴器播放音樂的原理及音樂樂譜的組成要素,這部分設(shè)計(jì)較為復(fù)雜,但在查閱了相關(guān)例程后,終于設(shè)計(jì)成功,兩個(gè)定時(shí)器t0、t1分別存放音符和音長;串口中斷子程序的
27、設(shè)計(jì)參考了單片機(jī)課本上對相應(yīng)寄存器的介紹和設(shè)置及相關(guān)例程;而手機(jī)客戶端程序的設(shè)計(jì)比較簡單,因?yàn)閍ppinventor提供了各個(gè)子程序塊,開發(fā)者只需排積木似的傻瓜式變成即可,程序見圖5-3,在這里不再贅述。八、 課設(shè)結(jié)果及實(shí)物展示8.1、實(shí)物展示圖8-1 智能音樂盒實(shí)物展示本次課設(shè)最后的實(shí)物圖如圖8-1所示。其由智能音樂盒、藍(lán)牙模塊(由于需要3.3v電壓,所以增加了之前做過的電源模塊)、安卓手機(jī)客戶端組成。整個(gè)系統(tǒng)通過usb線由電腦供電,避免了調(diào)試過程使用電池供電的消耗。在實(shí)物調(diào)試過程中,由于串口部分沒有進(jìn)行仿真,故遇到了一些困難,藍(lán)牙接收不到數(shù)據(jù),串口無法正確接收等,在仔細(xì)查閱了hc-05數(shù)據(jù)
28、手冊后,利用at指令修改了藍(lán)牙波特率參數(shù)為9600baud(初始值為38400baud,無法用單片機(jī)產(chǎn)生38400baud);并且了解到了手機(jī)藍(lán)牙發(fā)送的是十六進(jìn)制數(shù),因此在客戶端設(shè)計(jì)時(shí)應(yīng)用了bluetoothclient1的send1bytenumber,即發(fā)送一字節(jié)數(shù)字(0,1,2,3),首先用串口助手查看是否能正確接收,在串口助手尚能正確接收顯示時(shí),再連接單片機(jī)看串口中斷是否發(fā)生,最后一步步調(diào)試成功。8.2、心得體會通過本次課程設(shè)計(jì),再一次復(fù)習(xí)了單片機(jī)的內(nèi)容,掌握了單片機(jī)定時(shí)器、串口、中斷等部分的c語言編程和復(fù)位電路的設(shè)計(jì),掌握了波特率的設(shè)置;并學(xué)會了lcd1602字符型液晶的顯示原理及軟
29、件編程,學(xué)會了獨(dú)立鍵盤的使用(掃描法),并掌握了單片機(jī)通過蜂鳴器播放音樂的原理和軟件編程。同時(shí),還學(xué)到了一些課外知識,了解了hc-05藍(lán)牙模塊的使用及at指令修改藍(lán)牙設(shè)置;學(xué)會了利用手機(jī)藍(lán)牙發(fā)送數(shù)據(jù)控制單片機(jī)的知識,這部分應(yīng)用了單片機(jī)的串口通信;并進(jìn)一步熟悉了appinventor安卓軟件開發(fā)工具的變成及應(yīng)用。雖然,在此過程中遇到很多困難,但我從沒放棄,不斷地發(fā)現(xiàn)問題,查閱資料,認(rèn)真思考,解決問題,最后成功的完成了本次課設(shè)數(shù)字音樂盒的基礎(chǔ)要求部分設(shè)計(jì),并自由擴(kuò)展了手機(jī)藍(lán)牙控制部分,使本系統(tǒng)實(shí)現(xiàn)了智能化。因?yàn)槭謾C(jī)外圍電路的設(shè)計(jì)一直是我感興趣的,所以整個(gè)系統(tǒng)設(shè)計(jì)過程都很認(rèn)真。最后,我總結(jié)的一句話是
30、:要相信你永遠(yuǎn)不會是第一個(gè)遇到這種問題的人,遇到問題不是問題,在網(wǎng)絡(luò)發(fā)達(dá)的今天,我們應(yīng)該學(xué)會搜索知識,學(xué)習(xí)課外知識,有想法就有動力,就要想辦發(fā)去實(shí)現(xiàn),我們應(yīng)該享受解決問題的過程和成功解決后的喜悅。九、 參考文獻(xiàn)1 張毅剛. 單片機(jī)原理及應(yīng)用m. 北京:高等教育出版社,2010.2 張敏霞. c語言程序設(shè)計(jì)教程m. 北京:電子工業(yè)出版社,2011.3 郭天祥. 新概念51單片機(jī)c語言教程m. 北京:電子工業(yè)出版社,2009.4 閻石. 數(shù)字電子技術(shù)基礎(chǔ)m. 北京:高等教育出版社,2006.5 童詩白. 模擬電子技術(shù)基礎(chǔ)m. 北京:高等教育出版社,2006.6 david wolber. app
31、inventor create your own android apps,2011.附錄源程序#include#define uint unsigned int#define uchar unsigned char#define lcd1602_data p0 /1602液晶數(shù)據(jù)口sbit lcd1602_rs=p20; /1602液晶寫命令/數(shù)據(jù)sbit lcd1602_rw=p21; /1602液晶讀/寫控制 sbit lcd1602_en=p22; /1602液晶使能控制sbit beepio = p30 ; /蜂鳴器3.0sbit blue=p10; /藍(lán)牙按鍵sbit play=p
32、11;sbit esc=p12; /取消播放音樂sbit down=p13; /下一首sbit gnd=p14; /改為四個(gè)獨(dú)立鍵盤char number; /歌曲編號bit flag; /播放標(biāo)志bit flag_blue=0; /藍(lán)牙連接與釋放:flag_blue=1,連接;flag_blue=0,釋放char t;char count,sec,min; /歌曲時(shí)間顯示uchar buf; /串口接收數(shù)據(jù)uchar code fairy_tale;uchar code love_transfer;uchar code girl_with_wing;uchar code the_same_s
33、ong;uchar code two_butterfly;uchar code coral_sea;char music=1,2,3,4,5,6; /歌曲編號char code song17= 1.fairy tale ,2.love transfer ,3.girl with wing, 4.the same song ,5.two butterfly ,6.coral sea ;char code singer12= guang liang,chen yixun ,rong zuer , liu chang ,pang long ,zhou jielun;uchar code lamp=0
34、xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/以下為播放音樂的設(shè)置#define system_osc 12000000#define sound_space 4/5uint code fretab12 = 262,277,294,311,330,349,369,392,415,440,466,494 ; /c調(diào)歌曲12個(gè)半音的原始頻率表uchar code signtab7 = 0,2,4,5,7,9,11 ; /17在頻率表中的位置uchar code lengthtab7= 1,2,4,8,16,32,64 ; uchar sound_temp_th0,
35、sound_temp_tl0; /音符定時(shí)器初值暫存 uchar sound_temp_th1,sound_temp_tl1; /音長定時(shí)器初值暫存bit stop; /播放暫停標(biāo)志bit stop_blue=0;/暫停標(biāo)志/*延時(shí)函數(shù)(單位ms)*/ void delay(uint z) uint x; uchar y; for(x=z;x0;x-) for(y=112;y0;y-);/* *lcd1602驅(qū)動程序*/*忙檢測*/ void lcd1602_check_busy() lcd1602_data = 0xff; lcd1602_rs = 0 ; lcd1602_rw = 1 ;
36、lcd1602_en = 0 ; delay(1); lcd1602_en = 1 ; while(lcd1602_data & 0x80) ; lcd1602_en = 0 ; /*寫指令 */ void lcd1602_write_cmd(uchar cmd) lcd1602_check_busy(); lcd1602_rs = 0 ; lcd1602_rw = 0 ; lcd1602_data = cmd ; lcd1602_en = 1 ; delay(5); lcd1602_en = 0 ;/*寫數(shù)據(jù)*/ void lcd1602_write_data(uchar dat) lcd1
37、602_check_busy(); lcd1602_rs = 1 ; lcd1602_rw = 0 ; lcd1602_data = dat ; lcd1602_en = 1 ; delay(5); lcd1602_en = 0 ;/*1602初始化*/ void lcd1602_init() lcd1602_write_cmd(0x01); /清屏 delay(20); lcd1602_write_cmd(0x38); /8位數(shù)據(jù),雙列顯示,5*7字形 delay(20); lcd1602_write_cmd(0x0c); /開顯示,關(guān)光標(biāo),光標(biāo)不閃爍 delay(20);/*設(shè)置顯示坐標(biāo)*
38、/ void lcd1602_set_postion(uchar x , uchar y)if(!y)lcd1602_write_cmd(0x80+x) ;else if(y)lcd1602_write_cmd(0xc0+x) ;/*指定位置寫字符*/ void lcd1602_write_char(uchar x , uchar y , uchar chardata) lcd1602_set_postion(x,y) ; lcd1602_write_data(chardata) ;/*指定位置寫字符串*/ void lcd1602_write_string(uchar x , uchar y
39、 , uchar *string) lcd1602_set_postion(x,y) ; while(*string) != 0) lcd1602_write_data(*string) ; string+ ; /* *播放音樂函數(shù)*/void initialsound() beepio = 0; sound_temp_th1 = (65535-(1/1200)*system_osc)/256; / 計(jì)算tl1應(yīng)裝入的初值 音長 (10ms的初裝值) sound_temp_tl1 = (65535-(1/1200)*system_osc)%256; / 計(jì)算th1應(yīng)裝入的初值 th1 = so
40、und_temp_th1; /音長初值裝入定時(shí)器t1 tl1 = sound_temp_tl1; tmod = 0x11; /工作方式1 et0 = 1; /允許定時(shí)器t0中斷 et1 = 0; tr0 = 0; tr1 = 0; ea = 1;void beeptimer0() interrupt 1 /音符發(fā)生中斷,按鍵 if(esc=0) delay(5); if(esc=0) stop=1;/停止播放 while(!esc); / beepio = !beepio; th0 = sound_temp_th0; /定時(shí)器0重裝初值 tl0 = sound_temp_tl0;/*void
41、play(unsigned char *sound,unsigned char signature,unsigned octachord,unsigned int speed) /sound為演奏歌曲歌名,signature是指樂曲升多少個(gè)半音演奏, /octachord:降八度, 2:不升不降, 3:升八度,speed歌曲演奏速度 unsigned int newfretab12; /新的頻率表 unsigned char i,j; unsigned int point,ldiv,ldiv0,ldiv1,ldiv2,ldiv4,currentfre,temp_t,soundlength; /
42、point 指針?biāo)饕?,ldiv音符演奏的長度(多少個(gè)10ms),currentfre 查出對應(yīng)音符的頻率 /soundlength歌曲長度,temp_t計(jì)算計(jì)數(shù)器初值 unsigned char tone,length,sl,sh,sm,slen,xg,fd;/tone音調(diào),length音長, for(i=0;i 11) /進(jìn)入高音音域 j = j-12; newfretabi = fretabj*2; /頻率翻倍速 else newfretabi = fretabj; if(octachord = 1) /需要降八度 newfretabi=2; else if(octachord = 3) /需要升八度 newfretabi=2; /否則不用改! soundlength = 0; while(soundsoundleng
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療服裝購銷合同范本
- 獸醫(yī)免疫學(xué)模擬試題
- 初級經(jīng)濟(jì)師(人力資源專業(yè))模擬習(xí)題
- 廚具公司合同范本
- 下學(xué)期八年級英語教學(xué)總結(jié) -教學(xué)工作總結(jié)
- 中藥炮制題庫(含答案)
- 植物生產(chǎn)與環(huán)境測試題含參考答案
- 關(guān)于社保補(bǔ)充合同范本
- 一年級小學(xué)生入隊(duì)申請書
- 一年級下冊語文教學(xué)反思
- GB/T 24474.2-2020乘運(yùn)質(zhì)量測量第2部分:自動扶梯和自動人行道
- GB/T 17689-2008土工合成材料塑料土工格柵
- GB/T 13734-2008耳穴名稱與定位
- 適航法規(guī)基礎(chǔ)培訓(xùn)
- 2023版初中化學(xué)跨學(xué)科實(shí)踐活動(化學(xué))
- 植物保護(hù)學(xué)通論-植物病害分析課件
- 藥品經(jīng)營質(zhì)量管理規(guī)范(GSP)實(shí)用教程教學(xué)課件
- 外研社一起英語四年級下冊課文
- DB32-T 2705-2014公路工程地質(zhì)勘察監(jiān)理規(guī)程-(高清現(xiàn)行)
- After-Effects影視特效設(shè)計(jì)教程完整版全套ppt課件
- 醫(yī)療設(shè)備清單
評論
0/150
提交評論