單片機(jī)原理運(yùn)用及八音盒設(shè)計_第1頁
單片機(jī)原理運(yùn)用及八音盒設(shè)計_第2頁
單片機(jī)原理運(yùn)用及八音盒設(shè)計_第3頁
單片機(jī)原理運(yùn)用及八音盒設(shè)計_第4頁
單片機(jī)原理運(yùn)用及八音盒設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2009級電3信息工程單片機(jī)八音盒設(shè)計報告書設(shè)計題目單片機(jī)八音盒設(shè)計姓名 蔡強(qiáng)劉天富學(xué)號2009034203620090342065學(xué)院工程技術(shù)學(xué)院專業(yè)電子信息工程班 級09級3班指導(dǎo)教師胡新新2012年5月5日一、指導(dǎo)教師評語二、成績單片機(jī)八音盒設(shè)計指導(dǎo)教師簽名:2011年 月fi指導(dǎo)教師簽名:2011年 月 日驗收蓋章2011年刀日目錄一、單片機(jī)設(shè)計課程的目的和基本要求4二、八音盒的設(shè)計要求4三、關(guān)于 at89s52431、對于at89s52的性能介紹432、at89s52的管腳介紹5五、硬件原理及設(shè)計說明10六、軟件設(shè)計流程圖10七、程序輸入窗口、編碼及音樂程序117.1程序輸入窗口11

2、7.2編碼117.3音樂程序12八、仿真和調(diào)試19九、元器件清單20十、電路總圖211. 電路圖212. pcb223. 實物圖22h-一、實驗總結(jié)23十二、參考文獻(xiàn)23一、單片機(jī)設(shè)計課程的目的和基本要求大學(xué)本科生動手能力的培養(yǎng)和提高時大學(xué)本科的一個重要內(nèi)容。本次課程的 設(shè)計目的,是讓我們通過課程設(shè)計建立起單片機(jī)應(yīng)用系統(tǒng)的概念,根據(jù)系統(tǒng)設(shè) 計要求,掌握初步的單片機(jī)系統(tǒng)設(shè)計方法,讓學(xué)生的動手能力和對單片機(jī)系統(tǒng) 從硬件系統(tǒng)和軟件系統(tǒng)設(shè)計兩個方面都得到實際的提高。為今后的畢業(yè)設(shè)計打 下良好的基礎(chǔ)。課程設(shè)計的基本要求有:(1)在課程設(shè)計過程中,學(xué)會使用89s52片機(jī)及相應(yīng)繪圖軟件,根據(jù)設(shè)計要求 設(shè)計,

3、編程,運(yùn)行,調(diào)試最后提供課程設(shè)計報告;(2)課程設(shè)計應(yīng)由學(xué)生本人獨立完成,嚴(yán)禁抄襲;(3)認(rèn)真編寫課程設(shè)計報告。二、八音盒的設(shè)計要求單片機(jī)八音盒的設(shè)計基本要求是設(shè)計一個八音盒,并且編寫相應(yīng)的軟件,完 成八音盒的任務(wù),該控制任務(wù)應(yīng)完成下列功能:(1)使用七段數(shù)碼管顯示目前演奏的歌曲編號;(2)用按鍵操作來選擇演奏哪一首歌曲(建幾首歌曲旋律,按下單鍵變可以演 奏歌曲);(3)演奏時可以按鍵中斷。三、關(guān)于at89s5231、對于at89s52的性能介紹at89s52是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomfalsh programmable and erasable read onl

4、y memory)的低電壓,高性能 cmos8 位 微處理器,俗稱單片機(jī)。該器件采用atmel高密度非易失存儲器制造技術(shù)制造, 與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍 存儲器組合在單個芯片中,atmel的at89c51是一種高效微控制器,為很多嵌入 式控制系統(tǒng)提供了一種靈活性高且價廉的方案。它可以提供以下的功能標(biāo)準(zhǔn):(1)4k的字節(jié)閃爍存儲器;(2) 128字節(jié)隨機(jī)存取數(shù)據(jù)存儲器;(3) 32 個 i/o 口;(4) 2個16位定時/計數(shù)器;(5)1個5向量兩級中斷結(jié)構(gòu);(6) 1個串行通信口;(7) 片內(nèi)振蕩器和時鐘電路。另外at89s2還可以警醒ohz

5、的驚濤邏輯操作,并支持兩種軟件的節(jié)點模式。3.2, at89s52的管腳介紹1/ pl.0/12ver?402小pl1/12exp0.(¥aix)393 ,pl2p0.1/ad1384八p1.3p0.2/ad2心 375小pl.4po.3/ad3366 “/ p1.5/mdsip0.4/mmc 357 “/p1.2msopo.5/ad58 / p1.7/sckp0.2ad6c 339 ,rstp0.7/ad7c 3210小p3.0/rxdea/vpp3111小p3.1/txdale/prog3012八p3.2/麗psen心 2913 ,p3.3/int1p2.7/a152814小/

6、p3.4/top2.6/a142715 ,p3.5/t1p2.5/a132616亠/ p3.6/rp2.4/a122517 “> p3.7而p2.3/a11八2418 “xial2p2.2/al 0c 2319八xial1p2.i/a9小2220gndp2.0/a821圖1. 1at89s52的管腳圖40腳vcc:供電電壓。20腳gnd:接地。pod: p0 口為一個8位漏級開路雙向i/o 口,每腳可吸收8ttl門電流。當(dāng)p1 口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0口作為原碼輸入口,當(dāng)fiash進(jìn)

7、行校驗時,p0輸出原碼,此時p0外部必須 被拉高。p1 口: p1 口是一個內(nèi)部提供上拉電阻的8位雙向i/o 口,p1 口緩沖器能接收輸出4ttl n電流。p1 口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1 口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。 在flash編程和校驗時,p1 口作為第八位地址接收。p2 口: p2 口為一個內(nèi)部上拉電阻的8位雙向i/o 口,p2 口緩沖器可接 收,輸出4個ttl門電流,當(dāng)p2 口被寫“1”時,其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時,p2 口的管腳被外部拉低,將輸出 電流。這是由于內(nèi)部上拉的緣故。p2 口當(dāng)用于外部程

8、序存儲器或16位地址 外部數(shù)據(jù)存儲器進(jìn)行存取時,p2 口輸出地址的高八位。在給出地址“1”時, 它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2 口輸 出其特殊功能寄存器的內(nèi)容。p2 口在flash編程和校驗時接收高八位地址 信號和控制信號。p3 口: p3 口管腳是8個帶內(nèi)部上拉電阻的雙向i/o 口,可接收輸出4 個ttl n電流。當(dāng)p3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3 口將輸出電流(ill)這是由于上拉的緣故。p3 口也可作為at89s52特殊功能口,如下表所示: 口管腳備選功能p3.0 rxd (串行輸入口)p3.

9、1 txd (串行輸出口)p3.2 /into (外部中斷0)p3.3 /inti (外部中斷1)p3.4 to (記時器0外部輸入)p3.5 t1 (記時器1外部輸入)p3.6 /wr (外部數(shù)據(jù)存儲器寫選通)p3.7 /rd (外部數(shù)據(jù)存儲器讀選通)p3 口同時為閃爍編程和編程校驗接收一些控制信號。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機(jī)器周期的高電平時間。ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址 的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6o因此它

10、可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh 地址上置0。此時,ale只有在執(zhí)行movx, movc指令是ale才起作用。另 外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。/psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個 機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen 信號將不出現(xiàn)。/ea/vpp:當(dāng)/ea保持低電平時,則在此期間外部程序存儲器(ooooh-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將 內(nèi)

11、部鎖定為reset;當(dāng)/ea端保持高電平時,此間內(nèi)部程序存儲器。在flash 編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。3. 振蕩器特性:xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為 片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,xtal2 應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘 信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。4. 芯片擦除:整個perom陣列和三個鎖定位的電擦除可通過正確的控制信號組合

12、,并保 持ale管腳處于低電平10ms來完成。在芯片擦操作中,代碼陣列全被寫“1” 且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,at89c51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種 軟件可選的掉電模式。在閑置模式下,cpu停止工作。但ram,定時器,計數(shù)器, 串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存ram的內(nèi)容并且凍結(jié)振蕩器, 禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。四、總體設(shè)計(1) 要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/音頻),然后將此周期除以2, 即為半周期的時間,利用定時器計時這個半周期時間,每當(dāng)計時到后就將輸出脈沖的i/o反相,然后重復(fù)

13、計時此半周期時間再對i/o 口反相,就可在i/o腳上 得到此頻率的脈沖(2) 利用8051的內(nèi)部定時器使其工作在計數(shù)器模式m0de1下,改變記數(shù)值th0及tl0以產(chǎn)生不同頻率的方法。例如頻率為523hz,其周期t二1/523二1912微 秒,因此只要令計數(shù)器定時956/1=956在每記數(shù)9次時將i/o 口反相,就可得到 中音 do (523hz) o記數(shù)脈沖值與頻率的關(guān)系公式如下:n=fi/2/fr n:記數(shù)值fi:內(nèi)部計時一次為1微秒.故其頻率為1mhzfr;要產(chǎn)生的頻率(3) :起記數(shù)值的求法如下:t=65536-n=65536-fi / 2 / fr例如:設(shè) k=65536, f=100

14、0000=fi = lmhz,求低音 do (523hz),高音的 do(1046hz)的記數(shù)值。t=65536-n=65536-fi /2/fr=655361000000/2 /fr=65536500000/fr低音 do 的 t=65536-500000 / 262 = 63627中音 do 的 t=65536-500000 / 523 = 64580低音 do 的 t=65536-500000 / 1047 = 65059表4. 1調(diào)個音符頻率與計數(shù)值t的對照表音符頻率簡碼值(t值)音符頻率簡碼值(t值)低ido26263628#4fa#74064860# ido#27763731中5s

15、o78464898低2re29463853#5so#83164934#2re#31163928中6la88064968低3m33064021#693264994低4fa34964103中7si98865030#4fa#37064185高ido104665058低6so39264260#ido#110965085#5so#41564331高2re117565110低6la44064400#2re#124565134#646664463高3m131865157低si49464524高4fa139765178中1do52364580#4fa#148065198#ido #55464633高5so15

16、6865217中2re58764684#5so#166165235#2re #62264732高6la176065252中3m65964777#6186565268中4fa69864820高7si1967五、硬件原理及設(shè)計說明當(dāng)鍵盤有鍵按下時,判斷鍵值,啟動計數(shù)器to,產(chǎn)生一定頻率的脈沖,驅(qū) 動蜂鳴器,放出樂曲。同時啟動定時器t1,顯示歌曲號。(1)硬件電路中用into、/a71分別接si、s2作為上、下一曲的功能鍵(2) 用 pl. 0-p1. 6 控制七段碼 a, b, c, d, e, f。(3) 用p2.1 口控制喇叭。(4) 電路為12mhz晶振頻率工作,起振電路中cl, c2均為3

17、0pfo六、軟件設(shè)計流程圖圖1. 2軟件設(shè)計流程圖七、程序輸入窗口.編碼及音樂程序7.1程序輸入窗口圖7.1 keil3境下的程序輸入窗口7.2編碼建立音樂的步驟:(1)先把樂譜的音符找出,然后建立t值表的順序;(2)把t值表建立在table1,構(gòu)成發(fā)音符的計數(shù)值放在"tables(3)簡譜碼(音符)為高位,節(jié)拍為(節(jié)拍數(shù))低四位,音符節(jié)拍碼放在程序 的table處。表7.1拍與節(jié)拍的對照節(jié)拍碼節(jié)拍數(shù)節(jié)拍碼節(jié)拍數(shù)11/4節(jié)拍11/8拍22/4節(jié)拍21/4拍33/4節(jié)拍33/8拍41拍41/2拍51又1/4節(jié)拍55/8拍61又1/2節(jié)拍63/4拍82拍81拍a2又1/2節(jié)拍a1又1/節(jié)

18、拍c3拍c1又1/2節(jié)拍f3又3/4節(jié)拍表7.2簡譜對應(yīng)的簡譜碼.t值.節(jié)拍數(shù)簡譜發(fā)音簡譜碼t值節(jié)拍碼節(jié)拍數(shù)5低音so16426011/4拍6低音la26440022/4拍7低音ti36452433/4拍1中音do46458041拍2中音re56468451又1/4拍3中音mi66477761又2/1拍4中音fa76482082拍5中音so864898a2又1/2拍6中音la964968c3拍7中音tia65030f3又3/4拍1高音dob650582高音rec651103高音mid651574高音fae651785高音sof65217不發(fā)音073音樂程序#include vreg52.h&g

19、t;#define uchar unsigned char#define ulong unsigned long#define true 1#define false 0sbit speaker = p2 a 2;sbit p1_o = p3 a 2;sbit pl_l = p3 a 3;sbit pause = p3 a 5; uchar temp;揚(yáng)聲器驅(qū)動位選歌開關(guān)選歌開關(guān)暫停開關(guān)uchar timer_h? timerj, time;字形表03code uchar tab = 0x79, 0x24, 0x30,0x19;code uchar fre_h = 0x00,0xf2, 0xf

20、3, 0xf5, 0xf5,0xf6, 0xf7,0xf8,0xf9, 0xf9, oxfa, oxfa, oxfb, oxfb, oxfc,oxfc, oxfc, oxfd, oxfd, oxfd, oxfd, oxfe,oxfe, oxfe, oxfe, oxfe, oxfe, oxfe, oxff;音調(diào)表高8位code uchar fre_l = 0x00,0x42, oxcl, 0x17, 0xb6, oxdo, oxdl, 0xb6,0x21, oxel, 0x8c, oxd& 0x68, 0xe9, 0x5b,0x8f, oxee, 0x44, 0x6b, 0xb4, 0x

21、f4, 0x2d,0x47, 0x77, 0xa2, 0xb6, oxda, oxfa, 0x16;音調(diào)表低8位code uchar ptr260 = 4,1, 2, 5,1, 6,7,1, 6, 6,1, 2, 6,1, 2,6,1,2,6,1,2,4,1,2,6,1,2,5,1,12,6,1,2, 4,1,6, 4,1,4, 0,0, 2, 4,1,2,4,1, 2, 4,1, 2, 4,1, 2, 3,1, 3, 2,1,1,1,1,10,0,0, 2,1,2, 2,1,2, 2,1,2, 2,1, 2, 2, 5,1, 2, 6,1, 2,1, 2, 4,1, 2, 2,3,2, 6,

22、 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,1, 2,1, 7,1, 2, 6,1,12, 7,1, 2, 7,1, 2,7,1,2,7,1,2,7,1,2 j, 2,2,2,2,6,5,1,4, 0,0, 2, 7,1,2, 7,1,2,1,2, 2,2, 2, 2,1, 2, 2, 7,1, 2,1, 2,12, 0, 0,32,(),(),0同桌的你0,0,12,62,7,1,2,1,2,6,7,1,2,1.2, 4, 3, 2,4, 7,1,12,3,1,2,3,1,2,6.1, 6, 5,1, 2, 6,1, 4,1, 2, 4, 5,1,12,3, 1,

23、4, 4, 1,6, 3, 1,2, 6, 1,4, 1,2, 4,3.1, 8,0,0, 2,1, 2, 2,1, 2, 2,1, 2, 2,7.1.6.4.1.2.4.1.4.7.1.4.7.1, 8,0,0,4, 6,1,2, 7,1,2,1,2, 6, 7,1,2,1, 2, 4, 3, 2, 4, 7,1,12, 3,1, 2, 3,1, 2,6,1,6, 5, 1,2, 6, 1,4, 1,2, 4, 5,1,12,2.1.2, 3,1,2, 4,1,4,1,2, 2, 7,1,4,1,2,6,2,2,2,2,2,2,3,2,2,1,2,10,1, 2, 2, 7,1, 2, 6,

24、1, 2, 6,1, 2, 7,1, 4,5.1, 4, 6,1,12, 0, 0,32, 0, 0, 0天空之城6,0, 2, 6,0, 2,1,1, 2, 2,1,2, 3,1,6,52, 32,12, 24, 6, 0, &0,0, 2,1,1, 2, 2,1,2, 3,1,2, 5,1,6,5.1, 2, 6,1, 4, 2,1, 4, 3,1, 8, 3,1, 4,3.1, 2, 5,1, 2, 6, 1, 8, 5, 1, 6, 6, 1, 2,1, 2, 2, 7,1,1, 6,1,1, 5,1, 2, 6,1, 2,3.1.4.1.1, 2, 2,1,1, 2,1,1,

25、 3,1,6,5.1, 2,1,1, 2,1,1, 2, 6,0, 2,1,1, 2,2.1.1, 2,1,1,3,1,2,6,1, 2, 5,1,12,0,0, 4, 3,1, & 6,1,6, 6,1,2, 5,1,2,42, 34, 2& 36, 52,6,0, 2,1,1, 2, 2,1,4, 0,0, 4,1,1, 2,2,1, 2, 3,1, 4, 3,1, 3, 5,1,1, 6,1, 4,1, 2, 4, 7,1,2, 6,1, 2, 5,1, 2, 3,1, 2,6,1,32, 0, 0,32, 0, 0, 0,讓我們蕩起雙槳1.1.4, 5,1,4, 4,1

26、,4, 3,1,7,0, 0,1,3.1.4.4.1, 2,3,1,9,0,0,1,3,1,4,4, 1,4, 3, 1,4, 4, 1,4, 3, 1,4, 2,1,2,1.1, 6, 0,0, 4,1,1, 4, 3,1,4, 5,1,4,6,1衛(wèi),0,0,1, 6,1,2, 6,1,2, 5,1,4,2.1.4, 2,1,4, 4,1,2, 3,1,18,1,1,4,3,1,4, 5,1,4,6,1,11,0,0,1,6,1,2,6,1, 2, 5,1, 4, 2,1, 4, 2,1, 4, 4,1, 4,0,0, 1,2, 1,4, 3, 1,4, 6, 0,7, 0,0,1,;voi

27、d delay(uchar t)延遲函數(shù)6, 0,4, 7, 0,4,1,1, 8,7,0,4,1,1,20,0, 0,32, 0, 0, 0童話uchar tl;ulong t2;for(tl = 0; tl < t; +tl)for(t2 = 0; t2 < 3000; +;/6mstro = false;void delay50()/去抖延時函數(shù)10 msuchar ij; for(i=20;i>0;i-) for(j=250;j>0;j-);void play()tho = timer_h;tl0 = timer_l;tro = true;delay(time)

28、;播放函數(shù)讀入初值延時uchar getkeyoif(pl_o=o)delay50(); if(pl_o=o) while(!pl_0);return 1;if(pl_l=o)按鍵檢測判斷前一曲鍵是否按下/10ms延時判斷松手判斷后一曲鍵是否按下delay50();/10ms延時if(pl_l=o)while(!pl_l);return 2;if(pause=o)delay50(); if(pause=o) while(!pause);return 3;return 0;判斷暫停鍵是否按下/10ms延時int main()uchar k, i, istkey, ent;uchar stop;p

29、l = oxff;tmod = 0x01;et0 = l;ea=1;time = 1;i = 0;while(l)while(time ii k + time = 0) temp=getkey();switch(temp)/k選音節(jié)case 1 : if(cnt=o) cnt=3;else ent;jbreak;case 2 : cnt+ ;if(cnt>3) cnt=o; break;case 3 :stop=stop; break;temp=0;if (-stop) continue; 若暫停開關(guān)打開則不播放更新數(shù)碼管顯示判斷歌曲是否改變及是否播放完重新定位歌曲到開頭pl = tab

30、cnt;if (k + time = 0) cnt+;if(cnt>3) cnt=0;i = 0;time = 1;istkey = ent;delay(2);continue;else if(cnt != istkey)if(cnt>3) cnt=0;i = 0;重新定位歌曲到開頭time = 1;istkey = ent;delay(2);continue;k = ptrcnti + 7 * ptrcnti + 1;取得頻率表索引timer_h = fre_hk;取得計時器數(shù)據(jù)timerj = fre_lk;time = ptrcnti + 2;取得時長i+=3;跳到下一音節(jié)p

31、lay();/播放當(dāng)前音節(jié))return 0;中斷函數(shù)停止計時讀入初值/重新開始計時void int_0() interrupt 1tro = false;speaker = !speaker;tho = timer_h;tlo = timerj;tro = true;八、仿真和調(diào)試設(shè)計的電路在proteus軟件內(nèi)畫圖,打開成單片機(jī)軟件開發(fā)系統(tǒng)ke訂,選擇 89s52機(jī),在其中編寫程序,運(yùn)行生成一個后綴名為hex的文件,然后將該文件 下載到proteus中的at89s52機(jī)中進(jìn)行仿真,觀察實驗現(xiàn)象。仿真能實現(xiàn)不妨 映月,按鍵選擇曲目、暫停、播放功能。程序調(diào)試中出現(xiàn)的問題及解決的辦法:(1)有時

32、會出現(xiàn)程序一點錯誤也沒有,但就是不能正常運(yùn)行的現(xiàn)象,最 后我們發(fā)現(xiàn)是因為程序中有的指令書寫得不規(guī)范導(dǎo)致的,例如有的ret返回指 令一定要按正確格式書寫或在兩行指令間最好不要留空行。(2) 程序中的跳轉(zhuǎn)指令的運(yùn)用很重要,為保險起見,都用ljmp,我們就遇 到過跳轉(zhuǎn)指令用錯程序無法正常運(yùn)行的現(xiàn)象。當(dāng)用jnz指令時,跳轉(zhuǎn)范圍比較 少,這時要用一個標(biāo)號中轉(zhuǎn)。(3) 編程時要注意,在程序開始時,要寫入各定時器中斷的入口地址。(4) 編程過程中要注意加注釋或分割線,否則,在程序過長時容易變得 很亂,不便于查找或更改。(5) 編程前要加流程圖,這樣會使思路清晰,例如數(shù)字音樂盒的設(shè)計思 路完全可以按著mp3的

33、工作方式列寫流程圖。(6) lcd計時正常顯示的解決辦法:a. 兩個定時器同時工作,存在中斷時序問題,剛開始時我們把定時器1設(shè) 定在方式3,計250us,由于定時中斷過于頻繁,使cpu負(fù)載過大,導(dǎo)致音樂不 能正常播放,時間不能正常顯示。解決辦法:將定時器1設(shè)定在工作方式1, 16位計數(shù),計50ms,效果有很大 改觀。但還有問題。b. 當(dāng)音樂為全4拍起始時,此時音樂節(jié)奏與定時器t1中斷頻率錯開,lcd 顯示和音樂播放都會好一些。c. 另外,在歌曲中,當(dāng)遇到一個音符發(fā)音為4拍,在編曲中為*ch,因時 間較長,當(dāng)定時器t1此時來中斷時,就會對歌曲播放產(chǎn)生影響,若改為發(fā)音一拍,中斷對歌曲播放影響減弱,

34、但音樂效果變差。改進(jìn)方案:若采用可以定時時間更長的單片機(jī),可以避免所有問題。九、元器件清單名稱數(shù)量(個)型號備注電阻10560q (7 個)lk(l 個),4. 7k(1個),10k(l 個)數(shù)碼管17seg-digital按鈕4button單片機(jī)1at89s52三極管12n2905揚(yáng)聲器1speaker電源15v電容330pf(2 個),10uf(l 個)晶振1crystal十、電路總圖1.電路圖10voc fcdsdpyikac 10ufji_+5vcdn211122l20430pfpi.(mp1.1/12ex<cpo.wado矽pl.2p0.1md1-38/ pi.3po.2/.a

35、d237pl.4p0mxd3 36p15wsipo.4/.ad435>pl(ymsdpl7/sckrsi*po.5/ad5p0.zad6p0.7/ad734宀33+5vp33rxdtaapp-3ltip3.i/w/l&pw5g0 30r p3.2/iyffrpsen29p33ikhp2.7/m5小28/ p3.4/k)p2.6/m427p3.smp2.5v/m3c26* p3.(vwr"p2.4/a1225p3.7/rd"p2ma1124xial2p2.2/a1oc 23xial1gndp2.o'a822a 21r14.7ku1vlu2. pcb”o" 只” l八人aaaaii

溫馨提示

  • 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

提交評論