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

下載本文檔

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

文檔簡介

1、基于單片機的音樂盒設(shè)計學(xué)生:XXX指導(dǎo)老師:XXX內(nèi)容摘要:本設(shè)計是一個基于AT89C51系列單片機的音樂盒,依據(jù)單片機技術(shù)原理,通過硬件電路制作以及軟件編譯,設(shè)計制作出一個多功能數(shù)字音樂盒。該音樂盒主要由按鍵電路、復(fù)位電路、時鐘電路以及蜂鳴器組成。使用兩個按鍵控制音樂盒,一個用來切換歌曲,另一個用來切換8路LED的變化花樣,本音樂盒共有兩首歌曲,花樣燈花樣共計3種。播放歌曲時,蜂鳴器發(fā)出某個音調(diào),與之對應(yīng)的LED亮起。本設(shè)計利用KEIL編程軟件對音樂盒源程序進行編程并調(diào)試,配合PROTEUS仿真軟件對硬件進行仿真調(diào)試,節(jié)約了設(shè)計時間。關(guān)鍵詞:音樂盒 AT89C51 KEIL PROTEUS

2、音調(diào)Design for AT89C51 digit music boxAbstract:The digest this text has introduced the basic AT89C51 digit music box,According to AT89C51 principle,take it by hardware circuit and software compile to made a multifunction digit music box.this box main form button circuit rest circuit clock circuit and

3、buzzer.Use two button to control it,the one use to change music ,and the other one made the LED change the kind of light.this box had two songs,and LED had three kind of light.then the music has playing,the buzzer will take among of tone,meanwhile LED will give out light.the design on the basic of K

4、EIL to compile and debugging this music box,at the same times match up PROTEUS to hardware going to simulation debugging,So save a lot of times.Keywords:music box AT89C51 KEIL PROTEUS Tone目 錄前言11概述21.1 課題意義21.2設(shè)計方案21.3研究內(nèi)容22 系統(tǒng)總體方案介紹32.1 系統(tǒng)組成框圖32.2 音樂盒的功能結(jié)構(gòu)圖32.3 主要設(shè)計軟件介紹42.3.1 PROTEUS軟件簡介42.3.2 KEIL

5、簡介43硬件設(shè)計53.1 總體設(shè)計框圖53.2各部分硬件設(shè)計及其原理53.2.1 AT89C51簡介53.2.2 LED顯示電路設(shè)計與原理63.2.3 時鐘振蕩電路63.3 硬件電路圖及功能74軟件設(shè)計84.1音調(diào)、節(jié)拍以及編碼的確定方法84.1.1 音調(diào)的確定94.1.2 節(jié)拍的確定104.1.3 編碼114.2 軟件程序設(shè)計124.2.1 程序流程圖及相應(yīng)代碼塊124.2.2 程序源代碼(見附錄A)175調(diào)試175.1 檢查硬件連接175.2 檢查軟件系統(tǒng)185.3 測試結(jié)果185.3.1總體運行圖185.3.2花樣燈3種花樣圖196 結(jié)束語20附錄21參考文獻30基于單片機的數(shù)字音樂盒設(shè)

6、計前言21世紀,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。單片機應(yīng)用的重要意義還在于它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。單片機滲透到我們生活

7、的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。隨著科學(xué)技術(shù)的進步和社會的發(fā)展,人類所接觸的信息也在不斷增加并且日益復(fù)雜。面對浩如煙海的信息,人們已經(jīng)能夠利用計算機等工具高效準確地對之進行處理,但要想將處理完的信息及時,清晰地傳遞給別人,還必須通過尋求更加卓越的顯示技術(shù)來實現(xiàn)。單片機技術(shù)與液晶顯示技術(shù)的結(jié)合,使信息傳輸交流向著智能可視化方向迅速發(fā)展。隨著人

8、類社會的發(fā)展,人們對視覺、聽覺方面的享受提出了越來越高的要求。小小的音樂盒可以給人們帶來美好的回憶,提高人們的精神文化享受。傳統(tǒng)音樂盒多是機械型的,體積笨重,發(fā)音單調(diào),不能實現(xiàn)批量生產(chǎn)。本文設(shè)計的音樂盒是以單片機為核心元件的電子式音樂盒,體積小,重量輕,能演奏和旋音樂,功能多,外觀效果多彩,使用方便,并具有一定的商業(yè)價值。1 概述本設(shè)計是以AT89C51芯片的電路為基礎(chǔ),外部加上放音設(shè)備,以此來實現(xiàn)音樂演奏控制器的硬件電路,通過軟件程序來控制單片機內(nèi)部的定時器使其演奏出優(yōu)美動聽的音樂。用戶可以按照自己的喜好選擇音樂并將其轉(zhuǎn)化成機器碼存入單片機的存儲器中。對于不同型號的單片機只需要相應(yīng)的改變一下

9、地址即可。該軟、硬件系統(tǒng)具有很好的通用性,很高的實際使用價值,為廣大的單片機和音樂愛好者提供了很好的借鑒。1.1 課題意義音樂盒的起源,可追溯至中世紀歐洲文藝復(fù)興時期。當(dāng)時為使教會的鐘塔報時,而將大小的鐘表裝上機械裝置,被稱為“可發(fā)出聲音的組鐘”。音樂盒有著300多年的發(fā)展歷史,是人類文明發(fā)展的歷史見證。傳統(tǒng)的音樂盒多是機械音樂盒,其工作原理是通過齒輪帶動一個帶有鐵釘?shù)蔫F桶轉(zhuǎn)動,鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機械式的音樂盒體積比較大,比較笨重,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào)。另外,機械音樂盒放音時為了讓音色穩(wěn)定,必須放平不能動搖

10、,而且價格昂貴,不能實現(xiàn)大批量生產(chǎn)。本文設(shè)計的音樂盒,是基于單片機設(shè)計制作的電子式音樂盒。與傳統(tǒng)的機械式音樂盒相比更小巧,音質(zhì)更優(yōu)美且能演奏和弦音樂。電子式音樂盒動力來源是電池,制作工藝簡單,可進行批量生產(chǎn),所以價格便宜。基于單片機制作的電子式音樂盒,控制功能強大,可根據(jù)需要選歌,使用方便。根據(jù)存儲容量的大小,可以盡可能多的存儲歌曲。另外,可以設(shè)計彩燈外觀效果,使音樂盒的功能更加豐富。1.2 設(shè)計方案設(shè)計一個基于AT89C51系列單片機的音樂盒,用按鍵切換演奏出不同樂曲。蜂鳴器發(fā)出某個音調(diào),與之相對應(yīng)LED亮起。使用兩個按鍵,一個用來切換歌曲,另一個切換八路LED變化花樣。1.3 研究內(nèi)容電路

11、有兩種工作模式:演奏音樂模式和花樣燈模式。演奏音樂模式:演奏完整的一首的歌曲,八路LED隨著音樂變化?;訜裟J剑喊寺稬ED變化出各種花樣,蜂鳴器隨著發(fā)出“嘀嘀”聲。按下按鍵1進入演奏音樂模式,再按切換歌曲,共兩首歌曲。按下按鍵2進入花樣燈模式,再按切換LED花樣,共三種花樣。此電路的程序只占用了1K左右,可編制更多的音樂和LED花樣,使系統(tǒng)的功能更加強大。2 系統(tǒng)總體方案介紹2.1 系統(tǒng)組成框圖音樂盒的系統(tǒng)結(jié)構(gòu)以AT89C51單片機位控制核心,加上2個按鍵、時鐘復(fù)位電路、蜂鳴器、LED模塊組成。單片機負責(zé)接收按鍵的輸入,根據(jù)輸入控制音樂播放曲目和音樂花樣燈的顯示樣式以及蜂鳴器發(fā)音。系統(tǒng)組成框

12、圖如圖2.1-1所示。圖2.1-1系統(tǒng)組成框圖2.2 音樂盒的功能結(jié)構(gòu)圖音樂盒的功能結(jié)構(gòu)如圖2.2-1所示。Key1負責(zé)切換播放歌曲,播放歌曲共2首,分別是揮著翅膀的女孩和寂寞沙洲冷。Key2負責(zé)切換LED顯示花樣,顯示花樣共3種,第一種順序顯示,第二種由兩邊向中間移動然后向兩邊移動,第三種循環(huán)顯示。圖2.2-1 音樂盒功能結(jié)構(gòu)圖2.3 主要設(shè)計軟件介紹本設(shè)計利用KEIL編程軟件對音樂盒源程序進行編程并調(diào)試,配合PROTEUS仿真軟件對硬件進行仿真調(diào)試,兩種軟件的簡介如下: PROTEUS軟件簡介Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件

13、中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學(xué)的教師、致力于單片機開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、A

14、RM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。 KEIL簡介單片機開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于MCS-51單片機的匯編軟件有早期的A51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片

15、機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN 98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,如果你使用C語言編程,那么Keil幾乎就是你的不二之選(目前在國內(nèi)你只能買到該軟件、而你買的仿真機也很可能只支持該軟件),即使不使用C語言而僅用匯編語言編

16、程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。3 硬件設(shè)計3.1 總體設(shè)計框圖圖3.1-1 總體設(shè)計框圖3.2 各部分硬件設(shè)計及其原理3.2.1 AT89C51簡介AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片

17、機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。外形及引腳排列如圖3.2-1所示。圖3.2-1 AT89C51系列單片機 LED顯示電路設(shè)計與原理LED顯示電路是由8個LED發(fā)光二極管組成,連接方式為共陽極,LED接到單片機的P 1口,若為低電平,可使LED亮起。發(fā)光二極管的亮、滅由內(nèi)部程序控制,

18、8個LED發(fā)光二極管分別對應(yīng)不同的音階,所以LED會隨著音階的變化按規(guī)律亮、滅。 時鐘振蕩電路AT89C5輸出端。這個放大器與作為反饋元件的片外石英晶體或者陶瓷諧振器一中有一個用于構(gòu)成內(nèi)部振蕩器高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和起構(gòu)成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1,C2雖然沒有什么嚴格的要求,但電容容量大小會輕微影響振蕩頻率的高低、振蕩器工作穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。振蕩器電路圖如下:圖3.2.3-1 單片機內(nèi)部、外部振蕩電路3.3 硬件電路圖及功能總體硬件電路實現(xiàn)功能如下,如圖3.3-

19、1所示,電路中用P3.2、P3.3控制按鍵。P1.0P1.7控制LED。P2.3控制蜂鳴器。電路為12MHZ晶振頻率工作,起振電路中C1、C2均為30PF。圖3.3-1 硬件電路圖4 軟件設(shè)計在本程序中設(shè)置了兩個標(biāo)志count1和count2,分別初始化為1和0。按鍵1使得count1在1和2之間切換,按鍵2使得count2在14之間切換。程序檢測count1的值,count1等于1時播放第一首歌曲,等于2時播放第二首。另一方面根據(jù)count2的值來切換LED的花樣。count1和count2的值是互斥的,設(shè)置count1等于1、2時,count2同時設(shè)置為0;設(shè)置count2等于14時,co

20、unt1也同時設(shè)置為0。4.1 音調(diào)、節(jié)拍以及編碼的確定方法一般說來,單片機演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能像電子琴那樣能奏出多種音色的聲音。因此單片機奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和節(jié)拍表示一個音符唱多長的時間。 音調(diào)的確定不同音高的樂音是用C、D、E、F、G、A、B來表示,這7個字母就是音樂的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀音,這是唱曲時樂音的發(fā)音,所以叫“音調(diào)”,即Tone。把C、D、E、F、G、A、B這一組音的距離分成12個等份,每一個等

21、份叫一個“半音”。兩個音之間的距離有兩個“半音”,就叫“全音”。在鋼琴等鍵盤樂器上,CD、DE、FG、GA、AB兩音之間隔著一個黑鍵,他們之間的距離就是全音;EF、BC兩音之間沒有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上號或者b號的叫變化音。叫升記號,表示把音在原來的基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587

22、Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294 Hz)的一倍。要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用定時器計時這半個周期時間,每當(dāng)計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部定時器使其工作在計數(shù)器模式MODE1下,改變計數(shù)值TH0及TL0。此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。例如頻率為523Hz,其周期T=1/523=1912us,因此

23、只要令計數(shù)器計時956us/1us=956,在每次技術(shù)956次時將I/O反相,就可得到中音DO(523Hz)。其計數(shù)值的求法如下:表4.1.1-1 C調(diào)各音符頻率與計數(shù)值T的對照表低音頻率T參數(shù)中音頻率T參數(shù)高音頻率T參數(shù)Do2621908229Do523956115Do10465757Do2771805217Do554903108Do11095454Re2941701204Re587852102Re11755151Re3111608193Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13

24、974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So83160272So16613636La4401136136La88056868La17603434La4641078129La93253664La18653232Si4941012121Si98850661Si19763030 節(jié)拍的確定若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動),而且可以調(diào)節(jié)各個音的快滿度?!肮?jié)拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實0.

25、5s,則1/4 拍為0.125s。至于1拍多少s,并沒有嚴格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點,有些人慢一點,只要聽的悅耳就好。音持續(xù)時間的長短即時值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。一首音樂是由許多不同的音符組成的,而每個音符對應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對應(yīng)的延時,構(gòu)成音樂。了解音樂的一些基礎(chǔ)知識,我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂。對于單片機來說,產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機的定時/計數(shù)器來產(chǎn)生這樣的方波頻率信號。因此,需要弄清楚音樂中的音符和對應(yīng)的頻率,以及單片機定時計數(shù)的關(guān)系。表4.1.2-1節(jié)拍與

26、節(jié)拍碼對照節(jié)拍碼節(jié)拍數(shù)節(jié)拍碼節(jié)拍數(shù)11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍每個音符使用1個字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,圖5.2為節(jié)拍碼的對照。如果1拍為0.4秒,1/4拍實0.1秒,只要設(shè)定延遲時間就可求得節(jié)拍的時間。假設(shè)1/4拍為1DELAY,則1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其余的節(jié)拍就是它的倍數(shù),如圖5.3為1/4和1/8節(jié)拍的時間設(shè)定。表-21/4和1/8節(jié)拍的時間

27、設(shè)定曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125毫秒調(diào)4/462毫秒調(diào)3/4187毫秒調(diào)3/494毫秒調(diào)2/4250毫秒調(diào)2/4125毫秒 編碼do re mi fa so la si分別編碼為17,重音do編為8,重音re編為9,停頓編為0。播放長度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個十六分音符,編為4,其它的播放時間以此類推。音調(diào)作為編碼的高4位,而播放時間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個編碼。以0xff作為曲譜的結(jié)束標(biāo)志。比如,音調(diào)do,發(fā)音長度為兩拍,即二分音符,將其編碼為0x18。歌曲播放的設(shè)計。先將歌曲的簡譜進行編碼,儲存在一個數(shù)據(jù)類型為un

28、signed char 的數(shù)組中。程序從數(shù)組中取出一個數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時器0,使之定時操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時時間,接著調(diào)用軟件延時。表-1簡譜對應(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又1/2拍4中音FA76482082拍5中音SO864898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高

29、音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF652174.2 軟件程序設(shè)計 程序流程圖及相應(yīng)代碼塊主程序流程圖圖4.2.1-1 主程序流程圖主程序代碼:main()uchar x;count1=0;/流水燈無花樣 count2=1;/唱第一首歌 P34=0;/選取矩陣鍵盤的一列 EA=1;/開總中斷EX0=1;/開外部中斷0 IT0=1;/外部中斷0下降沿觸發(fā)方式 EX1=1;/開外部中斷1 IT1=1;/外部中斷1下降沿觸發(fā)方式 TMOD=0x01;/定時器0工作在方式1 TH0=0;TL0=0;ET0=1;while(1)if(count

30、1!=0) /音樂停止,花樣燈開始按照花樣閃爍switch(count1) case 1:for(x=0;x14;x+)duan=1;P1=huayang1x;beep();delay1(300);duan=0;if(count1!=1)break;break;case 2:for(x=0;x0;x-) for(y=19000;y0;y-);void delay1(uint z)/延時1MSuint x,y;for(x=z;x0;x-) for(y=112;y0;y-); 程序源代碼(見附錄)5 調(diào)試5.1 檢查硬件連接在PROTUES檢查各硬件管腳是否連接正確,線路邏輯是否正確,例如:晶振電

31、路的連接,復(fù)位電路是否設(shè)計正確。5.2 檢查軟件系統(tǒng)根據(jù)系統(tǒng)的原理結(jié)構(gòu)檢查各流程圖是否正確,再根據(jù)流程圖來檢查程序是否也對。將所有程序組織起來,在軟件環(huán)境下運行,檢查程序是否正確。通過對硬件和軟件系統(tǒng)的認真檢查,反復(fù)測試,如果沒有出現(xiàn)問題即可把源程序編譯成HEX文件裝載到單片機中,對硬件進行仿真。5.3 測試結(jié)果總體運行圖圖5.3.1-1系統(tǒng)總體運行圖花樣燈3種花樣圖由于截圖只能看到靜態(tài)圖,不能看到整體圖樣,下面畫圖說明:圖5.3.2-1花樣燈第一種花樣燈顯為:從D1移D2,然后D1滅,再從D2移D3,然后D2滅。圖5.3.2-2第一種花樣第二種花樣燈顯示:從兩邊向中間移動,先D1移D8,再D

32、8移D2具體如圖。圖5.3.2-3第2種花樣第三種花樣燈顯示方式為:從D1移向D2,然后D1熄滅,再從D2移向D3,然后D2熄滅,以此往復(fù)循環(huán)。與第一種方式的不同之處為:當(dāng)D1移向D2時,D1不熄滅,再從D2移向D3時,D2也不熄滅,以此類推。圖-4 第3中花樣6 結(jié)束語單片機的設(shè)計至今為止已經(jīng)進入了令人鼓舞的階段,在進行了長達兩個多月的時間的摸索與實驗,使我不僅僅是對于單片機入門軟件與硬件的常用設(shè)計與功能,還使我對于一項設(shè)計研究的制作過程所需要的詳細步驟和具體的實現(xiàn)方法的力度的掌握。當(dāng)然在這次寶貴的課程設(shè)計活動中,經(jīng)驗才是對于我們最大的收獲,而且還增強了自身對未知問題以及對知識的深化認識的能

33、力,用受益匪淺這個詞語來概括這次難忘的活動我覺得再合適不過了。但是,光是完成了作品還是不可以自我滿足的,在從一開始的時候就懷著將作品制作得更加人性化,更加令人滿意,更加地使功能完美又方便地被應(yīng)用領(lǐng)域這個最終目的下,隨著對單片機這門學(xué)科的認識加深,到達了拓展的程度,我想這個目的將在不遠的時期內(nèi)被實現(xiàn)??傊@次設(shè)計從軟件編寫、調(diào)試到軟硬件聯(lián)機調(diào)試,我傾注了大量的時間和心血。真是曾經(jīng)為程序的編寫而冥思查找過,曾經(jīng)為無法找出錯誤而郁悶苦惱過,也曾經(jīng)為某一功能不能實現(xiàn)而猶豫彷徨過,但最終我成功了。我不僅品味到了結(jié)果的喜悅,更明白了過程的彌足珍貴。感謝我的導(dǎo)師XX老師,他嚴謹細致、一絲不茍的作風(fēng)一直是我

34、工作、學(xué)習(xí)中的榜樣;他們循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。感謝我的爸爸媽媽的養(yǎng)育之恩,無以回報,你們永遠健康快樂是我最大的心愿。感謝我的室友們,是你們和我共同維系著彼此之間兄弟般的感情,維系著寢室那份家的融洽。2年了,仿佛就在昨天。兩年里,我們沒有紅過臉,沒有吵過嘴,沒有發(fā)生上大學(xué)前所擔(dān)心的任何不開心的事情。只是今后大家就難得再聚在一起吃每年元旦那頓飯了吧,沒關(guān)系,各奔前程,大家珍重。我們在一起的日子,我會記一輩子的。在設(shè)計即將完成之際,我的心情無法平靜,從開始進入課題到設(shè)計的順利完成,有多少可敬的師長、同學(xué)、朋友給了我無言的幫助,在這里請接受我誠摯的謝意!附錄:程序源代碼及注釋

35、#include #define uchar unsigned char#define uint unsigned intsbit duan=P26;sbit key1=P32;/按key1可切換花樣sbit key2=P33;/按key2可切換歌曲sbit fm=P37;/蜂鳴器連續(xù)的IO口sbit P34=P34;/矩陣鍵盤的一列uchar code huayang1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf;/花樣1uchar code huayang2=0x7f,0xfe,0xbf,0xf

36、d,0xdf,0xfb,0xef,0xf7,0xef,0xfb,0xdf,0xfd,0xbf,0xfe;/花樣2uchar code huayang3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;char code huayang4= 0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0;uchar count1;/花樣標(biāo)志uchar count2;/歌曲標(biāo)志uchar timeh,timel,i;/-簡譜-/編程規(guī)則:字節(jié)高位是簡譜,低位是持續(xù)時間,/代

37、表多少個十六分音符/1-7代表中央C調(diào),8-E代表高八度,0代表停頓/最后的0是結(jié)束標(biāo)志uchar code qnzl= /千年之戀0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,/前奏0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,/竹林的燈火 到過的沙漠0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,/七色的國度 不斷飄逸風(fēng)中 0x32,0x31,

38、0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,/有一種神秘 灰色的旋渦 0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,/將我卷入了迷霧中 0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,/看不清的雙手 0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,/一朵花傳來誰經(jīng)過的溫柔 0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,/穿越千年的傷痛 0x61,0x71,0x82,0x71,0x62,0x

39、52,0x31,0x36,/只為求一個結(jié)果 0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,/你留下的輪廓 指引我 0x42,0x63,0x83,0x83,0x91,0x91,/黑夜中不寂寞 0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,/穿越千年的哀愁 0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,/是你在盡頭等我 0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,/最美麗的感動 會值得 0x42,0x82,0x88,0x02,0x74,0x

40、93,0x89,0xff/結(jié)束標(biāo)志/用一生守候;uchar code jmszl= /寂寞沙洲冷0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,/自你走后心憔悴0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,/白色油桐風(fēng)中紛飛0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,/落花似人有情 這個季節(jié)0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52,/河畔的風(fēng)放肆拼命地吹0x51,0x51,0x31,0x

41、32,0x31,0x32,0x81,0x72,0x63,/不斷撥弄離人的眼淚0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0x51,0x54,/那樣濃烈的愛再也無法給0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26,/傷感一夜一夜0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,/當(dāng)記憶的線纏繞過往支離破碎0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34,/是慌亂

42、占據(jù)了心扉 0x31,0x81,0x81,0x81,0x61,0x91,0x82,/有花兒伴著蝴蝶0x51,0x51,0x51,0x51,0x31,0x61,0x53,/孤雁可以雙飛0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26,/夜深人靜獨徘徊0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52,/當(dāng)幸福戀人寄來紅色分享喜悅0x31,0x31,0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56,/閉上雙眼難過頭也不敢回0x32,0x32,

43、0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34,/仍然撿盡寒枝不肯安歇微帶著后悔0x21,0x31,0x51,0x31,0x21,0x11,0x61,0x21,0x16,/寂寞沙洲我該思念誰0xff;/-簡譜音調(diào)對應(yīng)的定時器初值-/適合11.0592M的晶振uchar yinyue=0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x0,0x0;/將音調(diào)轉(zhuǎn)化為對應(yīng)的LED樣式void delay1(uint z);/延時1MSvoid delay(uint z);/延時165MS,即十六分音符void song();void beep();/蜂鳴器叫一聲main()uchar x;count1=0;/流水

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論