版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 電子科技發(fā)展日益迅速,與人們的生活也發(fā)生著愈加緊密的聯(lián)系。隨著人們精神追求的不斷提升,電子琴作為電子科技發(fā)展的標(biāo)志性產(chǎn)物,在人們的生活中扮演著非常重要的角色。單片機(jī)因其強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,應(yīng)用范圍已經(jīng)融入到生產(chǎn)生活的各個(gè)領(lǐng)域。本電子琴的設(shè)計(jì)在實(shí)現(xiàn)其基本彈奏功能的基礎(chǔ)上,添加了自動(dòng)播放音樂的功能。該系統(tǒng)采用AT
2、89C51單片機(jī)作為主控芯片,并設(shè)置矩陣鍵盤、揚(yáng)聲器、LED顯示器和二極管等外圍器件。通過按鍵實(shí)現(xiàn)音符的輸入及不同功能的選擇切換;使用二極管顯示被操作按鍵和程序存儲(chǔ)樂曲中音符所對應(yīng)的數(shù)字,在演奏時(shí)具有動(dòng)態(tài)閃爍的效果;而且還使用LED顯示器顯示被按下鍵的序號,以便使用者眼觀和耳聽相結(jié)合,準(zhǔn)確確定音符及其發(fā)音;最后通過揚(yáng)聲器發(fā)出相應(yīng)的音。</p><p> 音樂是由不同的音符組成的,而每個(gè)音符對應(yīng)著不同的頻率,因此
3、可以利用不同的頻率組合來實(shí)現(xiàn)想要表達(dá)的音樂。單片機(jī)可以通過定時(shí)/計(jì)數(shù)器T0產(chǎn)生不同頻率方波信號的方法產(chǎn)生音頻脈沖,使得該電子琴的功能實(shí)現(xiàn)更加容易。</p><p> 關(guān)鍵詞:電子琴;AT89C51單片機(jī);手動(dòng)彈奏;自動(dòng)播放 </p><p><b> Abstract</b></p><p> The Electronic Scien
4、ce and technology is developing rapidly, and it is closely related to people's life. Along with the unceasing promotion of the spiritual pursuit, the electronic organ is the symbol product of the electronic science a
5、nd technology development, and plays a very important role in people's life.. Because of its powerful control functions and flexible programming features, the application has been integrated into various fields of pr
6、oduction and life.. The design of the electronic</p><p> Music is composed of different notes, and each note is different frequency, so you can use different frequency combinations to achieve the music you
7、want to express. Single chip microcomputer can generate the audio pulse by the time / counter T0 to generate the different frequency square wave signal, making the function of the keyboard more easy.</p><p>
8、 Key words: Electronic organ; AT89C51 SCM; Manual playing; Automatic player</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><
9、p><b> 1. 緒論1</b></p><p> 1.1 設(shè)計(jì)背景1</p><p> 1.2 設(shè)計(jì)意義1</p><p> 1.3 設(shè)計(jì)內(nèi)容2</p><p> 2. 總體設(shè)計(jì)方案3</p><p> 2.1 設(shè)計(jì)要求3</p><p&g
10、t; 2.2 設(shè)計(jì)思路3</p><p> 2.3 設(shè)計(jì)方案3</p><p> 3. 硬件設(shè)計(jì)5</p><p> 3.1 硬件簡介5</p><p> 3.1.1 AT89C515</p><p> 3.1.2 LED顯示器7</p><p> 3.1.3 鍵盤
11、8</p><p> 3.2 硬件電路設(shè)計(jì)9</p><p> 3.2.1 單片機(jī)系統(tǒng)電路9</p><p> 3.2.2 顯示電路10</p><p> 3.2.3 揚(yáng)聲器模塊電路11</p><p> 3.3.4 外中斷控制電路12</p><p> 3.3.5 矩陣鍵
12、盤電路12</p><p> 4. 軟件設(shè)計(jì)13</p><p> 4.1 音樂產(chǎn)生的方法13</p><p> 4.1.1 音樂產(chǎn)生的原理13</p><p> 4.1.2 音樂實(shí)現(xiàn)過程14</p><p> 4.2 矩陣鍵盤識別處理程序18</p><p> 4.3
13、 顯示程序19</p><p> 4.4 外中斷控制程序19</p><p> 5. 系統(tǒng)仿真21</p><p> 5.1 Keil C5121</p><p> 5.1.1 Keil C51軟件簡介21</p><p> 5.1.2 程序編譯21</p><p>
14、5.2 Proteus22</p><p> 5.2.1 Proteus軟件簡介22</p><p> 5.2.2 電路編輯22</p><p> 5.3 仿真調(diào)試23</p><p> 5.3.1 硬件調(diào)試23</p><p> 5.3.2 軟件調(diào)試23</p><p>
15、 5.3.3 調(diào)試操作過程23</p><p><b> 結(jié) 論27</b></p><p><b> 致 謝28</b></p><p> 參 考 文 獻(xiàn)29</p><p><b> 附件130</b></p><p><
16、;b> 附件231</b></p><p><b> 附件332</b></p><p><b> 1. 緒論</b></p><p><b> 1.1 設(shè)計(jì)背景</b></p><p> 單片機(jī)(Microcontrollers)又被稱作單片
17、微控制器,它并不僅僅是完成某一個(gè)邏輯功能的芯片,而是一種集成電路芯片,是通過采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(有的可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小但是很完善的微型計(jì)算機(jī)系統(tǒng)[1]。</p><p> 由于體積小、功耗低、控制功能強(qiáng)、擴(kuò)
18、展靈活、微型化和使用方便等優(yōu)點(diǎn),以及單片機(jī)強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,使得單片機(jī)使用領(lǐng)域十分廣泛,甚至滲透到了我們生活的各個(gè)領(lǐng)域,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。</p><p> 由于單片機(jī)的諸多優(yōu)點(diǎn),使得應(yīng)用單片機(jī)所設(shè)計(jì)的產(chǎn)品通常具有很強(qiáng)的競爭力。生活和生產(chǎn)的各個(gè)領(lǐng)域中,單片機(jī)出現(xiàn)在任何有自動(dòng)控制要求的地方?,F(xiàn)在,盡管單片機(jī)的應(yīng)用已經(jīng)非常普遍,但依然有很多用單片機(jī)控制尚未實(shí)現(xiàn)的
19、領(lǐng)域,因此單片機(jī)的應(yīng)用仍然有很大的想象和拓展空間。</p><p> 單片機(jī)的開發(fā)和利用有助于提高產(chǎn)品的微型化、多功能化和智能化等。但是,單片機(jī)開發(fā)利用的價(jià)值絕不僅限于它廣闊的應(yīng)用范圍和帶來的巨大經(jīng)濟(jì)利益上,其更重要的意義在于:單片機(jī)的應(yīng)用從根本上改變了傳統(tǒng)控制系統(tǒng)設(shè)計(jì)的思想和方法,具有里程碑式的革命意義。</p><p><b> 1.2 設(shè)計(jì)意義</b><
20、;/p><p> 電子琴是電子科技發(fā)展的重要標(biāo)志,它是通過與音樂相結(jié)合設(shè)計(jì)制造的一種鍵盤樂器。在電子音樂這個(gè)領(lǐng)域里,作為一種極具創(chuàng)造性的產(chǎn)物,電子琴在現(xiàn)代音樂中扮演著非常重要的角色,并且因其良好的性能和方便的可操作性已被人們廣泛地使用于學(xué)習(xí)生活中。</p><p> 電子琴具有非常穩(wěn)定、準(zhǔn)確的演奏性能,而且還有很鮮明的強(qiáng)弱變化規(guī)律,能夠根據(jù)使用者的要求自主掌握其速度等特點(diǎn)。因此能夠有效地幫
21、助初學(xué)者由淺入深,比較容易地準(zhǔn)確掌握使用電子琴彈奏樂曲的技能,并且對其訓(xùn)練彈奏的穩(wěn)定性和準(zhǔn)確性有很好的作用。</p><p> 目前市場上的電子琴功能也越來越完善。使用單片機(jī)作為控制核心設(shè)計(jì)的電子琴系</p><p> 統(tǒng)是單片機(jī)開發(fā)和應(yīng)用的一項(xiàng)重要實(shí)踐,該系統(tǒng)具有簡單的硬件電路、完善的軟件功能、</p><p> 可靠的控制系統(tǒng)和很高的運(yùn)行穩(wěn)定性等優(yōu)點(diǎn),因此
22、為電子琴的推廣和使用提供了保障。</p><p> 以基于單片機(jī)的電子琴設(shè)計(jì)為選題,目的在于培養(yǎng)我們從日常生活著手,利用所學(xué)知識理論與實(shí)踐相結(jié)合,在實(shí)踐中進(jìn)一步完善理論的科學(xué)意識。通過這個(gè)選題,還可以更深層次地了解單片機(jī)技術(shù),更加熟練地掌握一些單片機(jī)芯片的開發(fā)和應(yīng)用。對目前應(yīng)用日益廣泛的單片機(jī)有一個(gè)更加理性的認(rèn)識,使所學(xué)理論和實(shí)踐很好的結(jié)合起來。</p><p><b> 1
23、.3 設(shè)計(jì)內(nèi)容</b></p><p> 本電子琴設(shè)計(jì)的主要內(nèi)容是用AT89C51單片機(jī)作為控制元件,設(shè)計(jì)一個(gè)含16個(gè)按鍵并添加多項(xiàng)功能的電子琴。該電子琴的硬件系統(tǒng)除以單片機(jī)作為主控核心外,外加4×4矩陣鍵盤、揚(yáng)聲器、二極管和LED顯示器等模塊組成核心主控制模塊。</p><p> 該電子琴是根據(jù)音樂是由許多不同的音階組成,而每個(gè)音階對應(yīng)著不同的頻率,通過不同頻率
24、的組合,來實(shí)現(xiàn)想要的音樂這一基本理論設(shè)計(jì)的。通過單片機(jī)定時(shí)/計(jì)數(shù)器T0產(chǎn)生不同頻率的方波信號產(chǎn)生不同的音階頻率,然后識別按鍵所代表的音階及其對應(yīng)的頻率來發(fā)音實(shí)現(xiàn)的。</p><p> 本文將對以單片機(jī)為控制核心設(shè)計(jì)電子琴的主要內(nèi)容進(jìn)行詳細(xì)分析。主要介紹基于單片機(jī)電子琴系統(tǒng)的硬件和軟件組成,并且分別從系統(tǒng)設(shè)計(jì)方案、主要硬件設(shè)備、各模塊電路設(shè)計(jì)以及各模塊的軟件實(shí)現(xiàn)進(jìn)行詳細(xì)闡述。</p><p&g
25、t; 在實(shí)現(xiàn)電子琴彈奏功能基礎(chǔ)上,本設(shè)計(jì)對電子琴的功能作了進(jìn)一步的擴(kuò)展,使其具有自動(dòng)播放所存曲目的功能,并且可以通過按鍵來實(shí)現(xiàn)兩大功能的切換選擇。本文也將對該部分設(shè)計(jì)加以分析并闡述。</p><p> 2. 總體設(shè)計(jì)方案</p><p><b> 2.1 設(shè)計(jì)要求</b></p><p> 本電子琴系統(tǒng)主要設(shè)計(jì)內(nèi)容按其功能分為手動(dòng)彈奏
26、和自動(dòng)播放音樂兩個(gè)部分。其實(shí)現(xiàn)過程采用匯編語言編程的方法。具體要求如下:</p><p> (1)能夠?qū)崿F(xiàn)電子琴的基本彈奏功能,并且可以彈奏簡單的樂曲。</p><p> ?。?)該電子琴使用16個(gè)按鍵,每個(gè)鍵分別代表一個(gè)音符。</p><p> (3)使用彈奏功能時(shí)能發(fā)出準(zhǔn)確的聲音,使用自動(dòng)播放音樂功能時(shí)可以播放已設(shè)定的音樂,不同功能的切換通過按鍵選擇來實(shí)現(xiàn)。
27、</p><p> ?。?)彈奏和自動(dòng)播放音樂時(shí),利用二極管組合的點(diǎn)亮個(gè)數(shù)表示音符所對應(yīng)的數(shù)字,達(dá)到二極管點(diǎn)亮個(gè)數(shù)伴隨音符閃爍的效果;彈奏時(shí)LED顯示器顯示按鍵的序號。</p><p><b> 2.2 設(shè)計(jì)思路</b></p><p> 從系統(tǒng)要求實(shí)現(xiàn)的手動(dòng)彈奏樂曲和自動(dòng)播放音樂兩大功能考慮。該電子琴硬件系統(tǒng)首先需要設(shè)置16個(gè)音符按鍵和揚(yáng)
28、聲器,通過查表程序按其對應(yīng)的頻率發(fā)音實(shí)現(xiàn)。自動(dòng)播放音樂是通過軟件編程的方法放置音樂代碼和相關(guān)播放程序來實(shí)現(xiàn)的。另外還需設(shè)置用來選擇手動(dòng)彈奏樂曲功能和自動(dòng)播放音樂功能的對應(yīng)功能鍵。</p><p> 從系統(tǒng)硬件結(jié)構(gòu)考慮,該電子琴系統(tǒng)需要設(shè)計(jì)AT89C51單片機(jī)電路、4×4矩陣鍵盤輸入電路、LED數(shù)碼管和二極管輸出顯示電路、功能鍵控制電路、揚(yáng)聲器相關(guān)電路以及電源電路等,并且能將這些硬件電路正確組合使之滿足
29、電子琴設(shè)計(jì)的基本要求。</p><p> 從系統(tǒng)軟件設(shè)計(jì)的方法考慮,該電子琴根據(jù)其要求實(shí)現(xiàn)的功能和程序設(shè)計(jì)技巧,主要采用模塊化程序設(shè)計(jì)的方法。包括主程序模塊、鍵盤識別程序模塊、LED數(shù)碼管和二極管顯示模塊、功能選擇控制模塊和揚(yáng)聲器音樂產(chǎn)生模塊等等。其中,功能選擇控制模塊使用外中斷控制和按鍵查詢兩種方式相結(jié)合的方法,實(shí)現(xiàn)其功能選擇切換功能。</p><p> 從音樂產(chǎn)生的原理考慮,該電子
30、琴的發(fā)音功能是通過對單片機(jī)進(jìn)行控制,利用軟件編程的方法使定時(shí)器產(chǎn)生不同頻率的音頻脈沖,然后驅(qū)動(dòng)揚(yáng)聲器發(fā)音實(shí)現(xiàn)的。其中節(jié)拍是通過調(diào)用延時(shí)程序的方法進(jìn)行控制的。因此把音樂的音符和相應(yīng)的節(jié)拍設(shè)置為定時(shí)常數(shù)和延時(shí)常數(shù)作為程序表存儲(chǔ)在單片機(jī)內(nèi)存中,由查表程序取出執(zhí)行可以實(shí)現(xiàn)音樂的自動(dòng)播放。</p><p><b> 2.3 設(shè)計(jì)方案</b></p><p> AT89C51
31、單片機(jī)具有一系列實(shí)用性的特點(diǎn),因此本電子琴系統(tǒng)硬件設(shè)計(jì)采用AT89C51單片機(jī)作為整個(gè)電路的核心控制元件。由于AT89C51單片機(jī)自身功能非常完備,因此在設(shè)計(jì)中不再需要擴(kuò)展外部存儲(chǔ)功能,依然能夠?qū)崿F(xiàn)電子琴的顯示、發(fā)音、狀態(tài)預(yù)設(shè)和動(dòng)態(tài)切換等基本功能,因而整體結(jié)構(gòu)比較簡單。</p><p> 該電子琴硬件系統(tǒng)采用AT89C51單片機(jī)作為主控芯片,并設(shè)置鍵盤、揚(yáng)聲器、顯示器等外圍器件。利用按鍵實(shí)現(xiàn)音符的輸入及不同功能
32、的選擇切換,二極管點(diǎn)亮個(gè)數(shù)表示被操作按鍵和程序存儲(chǔ)樂曲中音符所對應(yīng)的數(shù)字,LED顯示器顯示被按下鍵的序號,最后通過揚(yáng)聲器發(fā)出相應(yīng)的音。</p><p> 因此本電子琴系統(tǒng)是以AT89C51單片機(jī)為主控芯片,使得LED顯示器和二極管、4×4矩陣鍵盤、功能鍵和揚(yáng)聲器等各功能模塊協(xié)調(diào)工作。主電路由LED和二極管顯示電路、4×4矩陣鍵盤電路、功能鍵控制電路、揚(yáng)聲器、復(fù)位電路、晶振電路以及電源電路幾大
33、模塊組成。該電子琴系統(tǒng)硬件電路總體設(shè)計(jì)框圖如圖2.1所示:</p><p> 圖2.1 系統(tǒng)框圖</p><p> 該電子琴系統(tǒng)中使用AT89C51單片機(jī)接口來實(shí)現(xiàn)信號的輸入和輸出功能。其中P3.7引腳作為音頻輸出口,向揚(yáng)聲器發(fā)聲電路輸出信號;P1口作為鍵盤信號的輸入輸出口,實(shí)現(xiàn)鍵盤的輸入功能;使用P0口直接驅(qū)動(dòng)二極管,P2口直接驅(qū)動(dòng)LED顯示器,實(shí)現(xiàn)其顯示功能;P2.2和P2.3兩
34、個(gè)外部中斷輸入端分別連接自動(dòng)播放選擇功能鍵和彈奏選擇功能鍵。</p><p> 在電子琴開始工作時(shí),該系統(tǒng)默認(rèn)電子琴處于自動(dòng)播放內(nèi)置音樂狀態(tài),使用者可以通過功能鍵來選擇執(zhí)行手動(dòng)彈奏功能或音樂自動(dòng)播放功能。</p><p><b> 3. 硬件設(shè)計(jì)</b></p><p><b> 3.1 硬件簡介</b></
35、p><p> 3.1.1 AT89C51</p><p> AT89C51單片機(jī)是一種低電壓、高性能的CMOS8位微處理器,帶有4K字節(jié)的閃爍可編程可擦除只讀存儲(chǔ)器,而且它還是一種高效微控制器,將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,因此AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高但價(jià)格低廉的設(shè)計(jì)方案[2]。</p><p><b>
36、 ?。?)內(nèi)部結(jié)構(gòu)</b></p><p> 51系列單片機(jī)內(nèi)核其實(shí)質(zhì)是基于使用多個(gè)內(nèi)部寄存器結(jié)構(gòu)的累加器,用于數(shù)據(jù)儲(chǔ)存和外部設(shè)備的管理。作為微型機(jī)的一種,單片機(jī)也包括運(yùn)算器、控制器、存儲(chǔ)器、輸入/輸出接口電路這五個(gè)基本組成部分。AT89C51的內(nèi)部結(jié)構(gòu)框圖如圖3.1所示。</p><p> 外部時(shí)鐘源
37、 外部事件計(jì)數(shù)器</p><p> 外中斷 并行口 串行通信</p><p> 圖3.1 AT89C51單片機(jī)的內(nèi)部結(jié)構(gòu)</p><p> CPU即中央處理器,它是AT89C51單片機(jī)的核心部分。其結(jié)構(gòu)主要包括運(yùn)算器和控制器兩大部分,是分別用來完成單片機(jī)的運(yùn)算和控制功能的。其中運(yùn)算器是指單片機(jī)用于進(jìn)行算
38、術(shù)和邏輯運(yùn)算的運(yùn)算電路。運(yùn)算電路又包括算術(shù)邏輯單元ALU、累加器ACC、程序狀態(tài)字PSW和B寄存器等,其中算術(shù)邏輯單元ALU是運(yùn)算單元的核心;控制器是指單片機(jī)用來發(fā)出控制信號,指揮各部件協(xié)調(diào)工作的控制電路。控制電路包括程序計(jì)數(shù)器PC、指令寄存器、指令譯碼器、定時(shí)與控制電路等[1]。</p><p> AT89C51單片機(jī)芯片內(nèi)部存儲(chǔ)器包括供用戶使用的256個(gè)字節(jié)的RAM(地址范圍是00H~FFH)和供用戶使用的
39、共4KB個(gè)字節(jié)的ROM(地址范圍是0000H~FFFH)。</p><p> AT89C51單片機(jī)有2個(gè)16位的定時(shí)/計(jì)數(shù)器,用來實(shí)現(xiàn)單片機(jī)的定時(shí)或計(jì)數(shù)功能,并且根據(jù)該定時(shí)或計(jì)數(shù)結(jié)果對單片機(jī)進(jìn)行反饋控制。</p><p> AT89C51單片機(jī)共有4個(gè)用來實(shí)現(xiàn)數(shù)據(jù)并行輸入輸出的8位I/O口,分別是P0,P1,P2和P3。</p><p> AT89C51單片機(jī)
40、有一個(gè)全雙工UART(通用異步接受發(fā)送器)的串行I/O口(是P3.0和P3.1口線的第二功能),用來實(shí)現(xiàn)串行通信功能。</p><p> AT89C51單片機(jī)共有5個(gè)中斷源(其中2個(gè)外部中斷源)以滿足控制應(yīng)用的需求。每一個(gè)中斷源都有其對應(yīng)的的矢量地址、標(biāo)志位、優(yōu)先級和允許控制。</p><p> AT89C51單片機(jī)有一個(gè)內(nèi)振蕩器,它通過XTAL1引腳和XTAL2引腳與外接晶體振蕩器和
41、微調(diào)電容相連,用來為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。典型的晶振頻率為6~12MHZ。</p><p><b> ?。?)管腳介紹</b></p><p> AT89C51單片機(jī)是40引腳的雙列直插式集成電路芯片,許多管腳具有兩個(gè)功能。AT89C51引腳排列如圖3.2所示。</p><p> 主電源引腳VCC和GND功能如下:</p>
42、<p> VCC(40腳)— 接+5V電源。</p><p> GND(20腳)— 接數(shù)字電路地。</p><p> 主要控制信號引腳功能如下: </p><p> RST(9腳)— 復(fù)位輸入端。 </p>&
43、lt;p> PSEN(29腳)— 外部程序存儲(chǔ)器讀選通信號輸出端。 </p><p> EA(31腳)— 程序存儲(chǔ)器訪問控制信號。</p><p> ALE(30腳)— 地址鎖存信號輸出端。 圖3.2 AT
44、89C51引腳排列圖</p><p> 輸入/輸出端口引腳P0、P1、P2、P3(共32條口線)功能如下:</p><p> P0口(32腳~39腳)是一個(gè)復(fù)用端口??梢宰鳛閱纹瑱C(jī)數(shù)據(jù)并行輸入/輸出的通用8位準(zhǔn)雙向I/O端口(作輸入口時(shí)先向鎖存器寫“1”),口線是P0.0~P0.7。另外,P0口還是復(fù)用的地址/數(shù)據(jù)總線AD0~AD7。</p><p> P1口
45、(1腳~9腳)是一個(gè)通用的8位準(zhǔn)雙向I/O端口,其口線是P1.0~P1.7。</p><p> P2口(21腳~28腳)也是一個(gè)復(fù)用端口。從理論上講可以作為通用的8位準(zhǔn)雙向I/O端口使用,其口線是P2.0~P2.7。但在實(shí)際應(yīng)用中總是作為高位地址總線使用。</p><p> P3口(10腳~17腳)也是一個(gè)復(fù)用端口。使用時(shí)可以作為通用的8位準(zhǔn)雙向I/O端口,功能和操作方法與P1口相同,
46、其口線是P3.0~P3.7。P3口的第二功能分別是作為串行口輸入/輸出、外部中斷請求輸入、定時(shí)/計(jì)數(shù)器和外部數(shù)據(jù)存儲(chǔ)器讀/寫選通信號的控制端口使用。</p><p> 3.1.2 LED顯示器</p><p> 單片機(jī)開發(fā)應(yīng)用系統(tǒng)中使用的發(fā)光二極管顯示器(LED) 因其價(jià)格低廉、配置靈活以及與單片機(jī)接口方便等優(yōu)點(diǎn),使得在單片機(jī)的開發(fā)設(shè)計(jì)中使用非常廣泛。</p><p
47、> ?。?)LED顯示器的結(jié)構(gòu)</p><p> 通常所說的LED顯示器就是指七段LED顯示器,它的結(jié)構(gòu)是由七個(gè)發(fā)光二極管組成的,其排列形狀如圖3.3所示。LED顯示器是通過七段發(fā)光二極管的不同點(diǎn)亮組合來顯示數(shù)字、字母或其他符號的。此外,LED顯示器中還有一個(gè)用于顯示小數(shù)點(diǎn)的圓點(diǎn)型發(fā)光二極管(dp)。</p><p> 圖3.3 七段LED顯示器</p><p
48、> ?。?)LED顯示器的連接方法</p><p> LED顯示器的連接方法有共陽極連接和共陰極連接兩種:</p><p> 共陽極連接是指把發(fā)光二極管的陽極全部連在一起接+5V電源的接法。使用這種方法連接時(shí),只要給某一段的陰極端輸入低電平就可以使其電路導(dǎo)通而點(diǎn)亮。</p><p> 共陰極接法與共陽極接法恰好相反,它是把發(fā)光二極管的陰極通過接地全部連在
49、一起的接法。使用這種方法連接時(shí),只要給某一段的陽極端輸入高電平就可以使其電路導(dǎo)通而點(diǎn)亮。</p><p> LED顯示器是通過字形代碼來顯示數(shù)字或符號的。七段發(fā)光二極管和小數(shù)點(diǎn)位加起來共計(jì)8段,因此其字形代碼正好是一個(gè)字節(jié)的長度。規(guī)定各代碼位的對應(yīng)關(guān)系如表3.1所示。用LED顯示器顯示十六進(jìn)制數(shù)時(shí)所對應(yīng)的字形代碼如表3.2所示。</p><p> 表3.1 各代碼位的對應(yīng)關(guān)系</
50、p><p> 表3.2 十六進(jìn)制數(shù)字形代碼表</p><p><b> 3.1.3 鍵盤</b></p><p> 鍵盤是一種非常便捷有效的輸入設(shè)備。按照其結(jié)構(gòu)形式可以分為使用軟件方法產(chǎn)生鍵碼的非編碼式鍵盤和使用硬件方法產(chǎn)生鍵碼的編碼式鍵盤兩種基本類型。由于非編碼鍵盤結(jié)構(gòu)比較簡單,成本相對低廉等特點(diǎn),因此在單片機(jī)開發(fā)應(yīng)用中使用更加廣泛。非編碼
51、鍵盤接口技術(shù)的主要問題是確定被按下鍵的位置并根據(jù)其位置產(chǎn)生鍵碼,即所謂鍵的識別。</p><p> 非編碼鍵盤根據(jù)其與單片機(jī)的連接方法又可分為獨(dú)立聯(lián)接式和矩陣式兩種類型。</p><p> ?。?)獨(dú)立聯(lián)接式鍵盤</p><p> 獨(dú)立聯(lián)接式鍵盤的每一個(gè)鍵都獨(dú)自接通單片機(jī)的一條輸入數(shù)據(jù)線。任意一個(gè)鍵被按下接通時(shí),與之相連的輸入數(shù)據(jù)線即被清0變?yōu)榈碗娖剑话聪略?/p>
52、鍵時(shí)該線狀態(tài)為1即高電平。因此只需根據(jù)輸入線的電平狀態(tài)即可判斷是否有鍵被按下、按下的是哪一個(gè)鍵。</p><p> 這種鍵盤結(jié)構(gòu)的優(yōu)點(diǎn)是電路配置靈活,軟件結(jié)構(gòu)簡單。但每個(gè)按鍵都需占用一根輸入口線,因此當(dāng)按鍵數(shù)較多時(shí),輸入口線浪費(fèi)比較大,電路結(jié)構(gòu)也顯得非常繁雜。所以獨(dú)立聯(lián)接式鍵盤適用于按鍵數(shù)較少或者操作速度要求較高的情況。</p><p><b> ?。?)矩陣式鍵盤</b
53、></p><p> 矩陣式鍵盤中,每條水平線和垂直線在交叉處通過一個(gè)按鍵加以連接。利用這種矩陣結(jié)構(gòu)只需N+M條I/O口線(N和M分別是水平和垂直連線的數(shù)目)即可連接N×M個(gè)鍵。因此當(dāng)應(yīng)用系統(tǒng)所要求的按鍵數(shù)量較多時(shí),為了減少單片機(jī)I/O口的占用,通常采用矩陣式鍵盤。</p><p> 單片機(jī)系統(tǒng)在編程使用鍵盤時(shí)必須具有去抖動(dòng)、防串鍵、按鍵識別和產(chǎn)生鍵碼這4個(gè)基本功能。&
54、lt;/p><p> 3.2 硬件電路設(shè)計(jì)</p><p> 根據(jù)該電子琴要求實(shí)現(xiàn)的功能,其系統(tǒng)硬件電路將主要由AT89C51單片機(jī)電路、鍵盤輸入輸出電路、揚(yáng)聲器輸出電路、外中斷控制電路、LED顯示器和二極管輸出顯示電路等模塊組成。下文將分別對各模塊電路原理圖的設(shè)計(jì)進(jìn)行分析說明。</p><p> 3.2.1 單片機(jī)系統(tǒng)電路</p><p>
55、;<b> (1)時(shí)鐘電路</b></p><p> 時(shí)鐘電路用來驅(qū)動(dòng)單片機(jī)進(jìn)行工作,單片機(jī)的XTAL1、XTAL2引腳分別連接系統(tǒng)時(shí)鐘信號的輸入、輸出端??紤]到系統(tǒng)穩(wěn)定性、晶振精度和系統(tǒng)的抗干擾性,該系統(tǒng)晶振電路的設(shè)計(jì)使用兩個(gè)30pF的電容和一個(gè)12MHz的晶振,用來產(chǎn)生一個(gè)約等于12MHz的穩(wěn)定頻率,其輸入輸出端分別連在單片機(jī)XTAL1、XTAL2接口上。該時(shí)鐘電路原理圖如圖3.4所
56、示。</p><p><b> ?。?)復(fù)位電路</b></p><p> 復(fù)位電路的功能是設(shè)定單片機(jī)和該電子琴系統(tǒng)中其它功能部件工作的初始狀態(tài),即單片機(jī)的初始化操作。該電子琴系統(tǒng)的硬件復(fù)位電路設(shè)計(jì)采用上電復(fù)位,為了防止干擾串?dāng)n復(fù)位段,所以再接一個(gè)10nF的去耦電容[3]。復(fù)位電路原理圖如圖3.5所示。</p><p> 圖 3.4 時(shí)鐘電
57、路連接圖 圖 3.5 復(fù)位電路連接圖</p><p> 3.2.2 顯示電路</p><p> 該電子琴系統(tǒng)分別利用單片機(jī)的P2口和P0口直接驅(qū)動(dòng)控制LED顯示器的數(shù)字顯示和二極管的點(diǎn)亮顯示,LED顯示器和二極管的連接方法均采用共陽極連接,即公共端接電源。該模塊電路的連接方法是,用AT89C51單片機(jī)P2端口的P2.0~P2.7口線分別連接七段數(shù)碼管
58、的a~h筆段;P0端口的P0.0~P0.7口線分別連接一個(gè)二極管。</p><p> 當(dāng)使用電子琴的彈奏功能且有按鍵按下時(shí),LED數(shù)碼管將對應(yīng)顯示該鍵的編號,二極管點(diǎn)亮個(gè)數(shù)對應(yīng)該鍵所代表音符的數(shù)字加1的值,從而可以通過手動(dòng)和眼看來確定所按下的是哪個(gè)鍵,應(yīng)該發(fā)哪個(gè)音。LED顯示的數(shù)字以及二極管點(diǎn)亮個(gè)數(shù)與16個(gè)按鍵所代表的音符對應(yīng)關(guān)系如圖3.6所示。</p><p> 圖 3.6 按鍵與
59、音符、LED顯示值和二極管點(diǎn)亮個(gè)數(shù)對應(yīng)關(guān)系</p><p> 圖3.6中表示方法a/b/c,其中a表示該鍵所代表的音符,數(shù)字下面有著重號表示低</p><p> 音,數(shù)字上面有一點(diǎn)表示高音;b表示該鍵的鍵碼,即LED顯示的數(shù)字或字母;c表示該鍵所表示音符對應(yīng)的數(shù)字加1的值,即二極管對應(yīng)該鍵點(diǎn)亮的個(gè)數(shù)。</p><p> 當(dāng)切換到自動(dòng)播放音樂功能時(shí),二極管點(diǎn)亮個(gè)
60、數(shù)伴隨程序讀取的音符不同而閃爍,使人產(chǎn)生音樂感和節(jié)奏感。該模塊硬件電路原理圖如圖3.7所示。其中74LS245芯片是總線驅(qū)動(dòng)器,用于保證LED數(shù)碼管顯示時(shí)有足夠的亮度。</p><p> 圖 3.7 顯示電路連接圖 </p><p> 3.2.3 揚(yáng)聲器模塊電路</p><p> 該電子琴系統(tǒng)的揚(yáng)聲器模塊端口接AT89C51單片機(jī)的P3.5引腳。單片機(jī)可
61、以通過對P3.5引腳輸出信號頻率的控制對輸出音頻進(jìn)行控制,使得在使用彈奏功能和自動(dòng)播放功能時(shí)發(fā)出相應(yīng)的音。揚(yáng)聲器模塊硬件連線如圖3.8所示。</p><p> 圖3.8 揚(yáng)聲器電路連接圖圖3.9 外中斷控制電路連接</p><p> 3.3.4 外中斷控制電路</p><p> 該電子琴系統(tǒng)外部中斷控制電路是通過按鍵實(shí)現(xiàn)的,具有簡單直觀、易于控制的優(yōu)點(diǎn)。單片
62、機(jī)外中斷口P3.2引腳和P3.3引腳各自連接一個(gè)獨(dú)立按鍵,分別用來控制啟動(dòng)自動(dòng)播放功能和手動(dòng)彈奏功能。該模塊硬件連線如圖3.9所示。</p><p> 3.3.5 矩陣鍵盤電路</p><p> 鍵盤用來輸入音符。該模塊硬件電路的連接方法是,用AT89C51單片機(jī)的P1口接4×4矩陣鍵盤,其中P1.0~P1.3口線作為信號輸入端,分別連接矩陣鍵盤的第4列到第1列;P1.4~P
63、1.7口線作為信號輸出端,分別連接矩陣鍵盤的第1行到第4行。矩陣鍵盤模塊硬件連線如圖3.10示。</p><p> 圖 3.10 矩陣鍵盤電路連接</p><p> 使用彈奏功能時(shí),單片機(jī)首先給P1.4口輸出低電平“0”,再把P1口的電平信號輸入單片機(jī),然后通過將該信號數(shù)據(jù)屏蔽高四位后進(jìn)行判斷來確定第1行是否有鍵按下,按下的是哪一個(gè)鍵。如果P1口的值屏蔽高四位后低四位的值全為高電平,
64、則表示第1行沒有鍵被按下,否則的話第1行必定有鍵按下。P1.3引腳口變?yōu)榈碗娖綍r(shí),表示第1行第1列的鍵K1被按下去了,P1.2、P1.1、P1.0則分別表示K2、K3、K4鍵被按下了。</p><p> 單片機(jī)通過給P1.5、P1.6、P1.7分別輸出低電平來判斷第2、3、4行是否有鍵按下,判斷方法類似于給P1.4引腳輸出低電平判斷第一行是否有鍵按下。P1.3、P1.2、P1.0分別表示該行第1、2、3、4列的
65、電平,電平為高時(shí)該列沒有被按下,電平為低時(shí)則表示該列鍵被按下。</p><p><b> 4. 軟件設(shè)計(jì)</b></p><p> 4.1 音樂產(chǎn)生的方法</p><p> 4.1.1 音樂產(chǎn)生的原理</p><p> (1)音符頻率的產(chǎn)生</p><p> 聲音是由介質(zhì)按某一頻率振動(dòng)
66、產(chǎn)生的。音樂由不同的音符組成,而每個(gè)音符對應(yīng)著不同的頻率。因此可以利用單片機(jī)通過定時(shí)器/計(jì)數(shù)器T0產(chǎn)生不同頻率方波信號的方法產(chǎn)生音頻脈沖。</p><p> 要使AT89C51單片機(jī)產(chǎn)生音頻脈沖,算出某一音頻的半周期(1/頻率)時(shí)間后,使內(nèi)部定時(shí)器/計(jì)數(shù)器T0工作在計(jì)數(shù)模式MODE1下,并改變其計(jì)數(shù)值TH0和TL0計(jì)時(shí)此半周期時(shí)間。當(dāng)該半周期時(shí)間計(jì)時(shí)到后,將輸出脈沖的I/O口反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對I
67、/O反相,如此就可在I/O口得到該頻率的脈沖[4]。</p><p> 例如,C調(diào)中音DO的頻率為523Hz,其周期T=1/523=1912μs。因此只要令計(jì)數(shù)器每計(jì)時(shí)956μs/1μs=956次時(shí)將I/O反相,就可得到中音DO(523Hz)的音頻脈沖。由此可以總結(jié)得出計(jì)數(shù)脈沖值與頻率的關(guān)系式如式(1)所示:</p><p> N=fi÷2÷fr
68、 式(1)</p><p> 式中,N是計(jì)數(shù)值;fr是想要產(chǎn)生的頻率;fi是該系統(tǒng)單片機(jī)的機(jī)器頻率(當(dāng)晶體振蕩器為12MHz時(shí),機(jī)器頻率為1MHz)。</p><p> 其計(jì)數(shù)初值T的求法如下: T=65536-N=65536-fi÷2÷fr例如,當(dāng)fi=1MHz時(shí),C調(diào)低音DO(261Hz)、中音DO(523Hz)和高音DO
69、(1046Hz)的計(jì)數(shù)值分別為:</p><p> T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr</p><p> 低音DO的T=65536-500000/262=63627</p><p> 中音DO的T=65536-500000/523=6458
70、0</p><p> 高音DO的T=65536-500000/1046=65059</p><p> 單片機(jī)采用12MHZ晶振時(shí),C調(diào)時(shí)各音符的高音、中音、低音所對應(yīng)頻率與定時(shí)器/計(jì)數(shù)器T0的計(jì)數(shù)值對應(yīng)關(guān)系如表4.1所示。</p><p><b> ?。?)節(jié)拍的產(chǎn)生</b></p><p> 樂譜是由不同的音符和
71、節(jié)拍有機(jī)組合而成的。節(jié)拍即音符持續(xù)時(shí)間的長短,單片機(jī)對音樂節(jié)拍的控制是通過調(diào)用延時(shí)子程序的方法實(shí)現(xiàn)的,該延時(shí)子程序的延長的時(shí)間是根據(jù)節(jié)拍定的。如果設(shè)定該延時(shí)子程序的延時(shí)時(shí)間為1/4拍,即把1/4拍確定為基本時(shí)長的延時(shí)程序,則2/4拍只要調(diào)用兩次該延時(shí)子程序就可實(shí)現(xiàn),以此類推。因此對于某一確定的樂譜,只要知道該樂譜特定調(diào)的1/4拍時(shí)間就可以了。以一個(gè)節(jié)拍為單位(C調(diào)),1/4和1/8拍的延時(shí)值對照表如表4.2所示。</p>
72、<p> 表4.1 音符頻率表</p><p><b> 表4.2 曲調(diào)值表</b></p><p> 4.1.2 音樂實(shí)現(xiàn)過程</p><p> ?。?)彈奏音樂的實(shí)現(xiàn)</p><p> 彈奏音樂的實(shí)現(xiàn)是由單片機(jī)執(zhí)行鍵盤識別程序,然后通過軟件查詢按鍵所對應(yīng)音律表,給定時(shí)器/計(jì)數(shù)器T0賦初值產(chǎn)生音頻來完
73、成的。首先識別被按下的鍵碼值,然后根據(jù)不同的鍵碼值查詢音律表,對定時(shí)器T0送入不同的初值,調(diào)節(jié)T0的溢出時(shí)間,這樣就可以通過給P3.5引腳輸出不同音調(diào)頻率的方波,在揚(yáng)聲器上發(fā)出相應(yīng)頻率的聲音,形成音樂效果。T0中斷服務(wù)流程圖如圖4.1所示。</p><p> 該電子琴系統(tǒng)的16個(gè)鍵分別代表從低3M音到高4FA之間的16個(gè)音符。根據(jù)編程實(shí)現(xiàn)的方法,在程序中建立如下各音符對應(yīng)T值程序表:</p>&l
74、t;p> TABLE:DW 64021,64103,64260,64400 ;低3,低4,低5,低6</p><p> DW 64524,64580,64684,64777 ;低7,中1,中2,中3</p><p> DW 64820,64898,64968,65030 ;中4,中5,中6,中7</p><p> DW 65058,65110,6
75、5157,65178 ;高1,高2,高3,高4</p><p> 通過軟件實(shí)現(xiàn)查表的程序如下:</p><p> MOV A,KEYBUF ;KEYBUF表示鍵值</p><p> MOV B,#2 </p><p> MUL AB ;表按字存放,調(diào)整表指針</p><p>
76、; MOV TEMP,A</p><p> MOV DPTR,#TABLE ;指向程序表</p><p> MOVC A,@A+DPTR ;查表</p><p> MOV STH0,A</p><p> MOV TH0,A;將數(shù)據(jù)送高位TH0</p><p><b> INC TEMP
77、</b></p><p> MOV A,TEMP</p><p> MOVC A,@A+DPTR</p><p> MOV STL0,A圖4.1 T0中斷服務(wù)流程圖</p><p> MOV TL0,A;將數(shù)據(jù)送低位TL0</p><p> SETB TR0 ;啟動(dòng)定時(shí)
78、器T0 </p><p> ?。?)自動(dòng)播放音樂的實(shí)現(xiàn)</p><p> 自動(dòng)播放音樂的功能,是通過將需要播放音樂的音符以及節(jié)拍按順序編成一個(gè)程序表,然后當(dāng)程序進(jìn)入自動(dòng)播放模式時(shí)調(diào)用相應(yīng)程序并將其順序讀出實(shí)現(xiàn)的。</p><p> 樂曲中每一音符對應(yīng)著確定的頻率,在軟件實(shí)現(xiàn)過程中,將樂譜中的音符與其節(jié)拍用一個(gè)字節(jié)表示,這樣樂譜中順序出現(xiàn)的音符及
79、節(jié)拍就構(gòu)成一個(gè)程序表。其中每一字節(jié)的高四位表示音符碼,低四位表示節(jié)拍碼。在查表程序查表時(shí),將高四位的音符碼取出,然后根據(jù)音符碼查表得到T0的初值,通過定時(shí)器/計(jì)數(shù)器產(chǎn)生音頻脈沖;將低四位的節(jié)拍碼取出,通過調(diào)用對應(yīng)的延時(shí)程序得到節(jié)拍。這樣每個(gè)字節(jié)按順序讀出,就可以產(chǎn)生音符并控制節(jié)奏,實(shí)現(xiàn)音樂的自動(dòng)播放。</p><p> 本設(shè)計(jì)中程序?qū)懭氲念A(yù)制音樂是《蘭花草》和《綠島小夜曲》,下文將以《蘭花草》為例對軟件實(shí)現(xiàn)過程
80、進(jìn)行闡述,該樂曲簡譜如下:</p><p> 由簡譜可以看出該樂曲為C調(diào),其中最低音為低3M,最高音為中6LA,因此可以對低3音到中6音之間的音符確定其音符碼,其對應(yīng)關(guān)系如表4.3所示;以1/4拍時(shí)間為基本延時(shí)時(shí)間,節(jié)拍與節(jié)拍碼的對照關(guān)系如表4.4所示。</p><p> 表4.3 簡譜對應(yīng)音符碼</p><p> 表4.4 節(jié)拍碼對照表</p>
81、<p> 根據(jù)樂曲軟件編程實(shí)現(xiàn)的方法,對應(yīng)簡譜所寫《蘭花草》的程序代碼如下,其中節(jié)拍碼00H為音樂結(jié)束標(biāo)記:</p><p> SONG:DB 42H,82H,82H,82H,86H,72H ;我從山中來</p><p> DB 63H,71H,62H,52H,48H ;帶著蘭花草</p><p> D
82、B 0B2H,0B2H,0B2H,0B2H,0B6H,0A2H ;種在小園中</p><p> DB 83H,0A1H,0A2H,92H,88H ;希望花開早</p><p> DB 82H,0B2H,0B2H,0A2H,86H,72H ;一日看三回</p><p> DB 63H,71H,62H,52H,44H,12H,02H
83、 ;盼得花開時(shí)</p><p> DB 12H,62H,62H,52H,46H,82H ;蘭花卻依然</p><p> DB 73H,61H,52H,32H,48H ;苞也無一個(gè)</p><p><b> DB 00H</b></p><p> 通過查表程序?qū)?/p>
84、現(xiàn)自動(dòng)播放音樂功能的程序流程圖如圖4.2所示,程序如下:</p><p> NEXT:MOV 30H,#0 ;指向音樂開始音符</p><p> MOV 50H,#2</p><p> MOV A,30H </p><p> MOV DPTR,#SONG ;指向樂曲表頭
85、 </p><p> MOVC A,@A+DPTR ;查表取音符</p><p><b> MOV R2,A</b></p><p> JZ NEXT ;判斷是否終止</p><p> ANL A,#0FH</p><p> MOV R5,A
86、 </p><p><b> MOV A,R2</b></p><p><b> SWAP A</b></p><p> ANL A,#0FH </p><p> JNZ SING ;跳轉(zhuǎn)至播放音樂
87、 </p><p><b> CLR TR0</b></p><p> SING:DEC A ;節(jié)拍碼減1</p><p><b> ADD A,50H</b></p><p> MOV TEMP,A</p><p> MOV A,TEMP
88、 </p><p><b> RL A</b></p><p> MOV DPTR,#TABLE3 ;查詢音符對應(yīng)頻率 </p><p> MOVC A,@A+DPTR 圖4.2 自動(dòng)播放音樂程序流程圖 </p><p> MOV TH0,A
89、 ;將數(shù)據(jù)送高位TH0 </p><p> MOV A,TEMP</p><p> RL A </p><p><b> INC A</b></p><p> MOVC A,@A+DPTR
90、 </p><p> MOV TL0,A ;將數(shù)據(jù)送低位TH0</p><p> SETB TR0;啟動(dòng)定時(shí)器T0</p><p> SING1:LCALl DELAY;調(diào)用延時(shí)</p><p> INC 30H;指向下一音符</p><p> LJMP NEXT </p>
91、<p> 4.2 矩陣鍵盤識別處理程序 </p><p> 鍵盤處理程序的任務(wù)是:確定有無鍵按下、哪一個(gè)鍵按下、該鍵的功能是什么、另外還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。該系統(tǒng)鍵盤識別處理流程圖如圖4.3所示,程序如下:</p><p> MOV P1,#0FFH ;置P1口為輸入模式</p><p> CL
92、R P1.4 ;P1.4清零,按鍵第一行掃描</p><p> MOV A,P1 </p><p> ANL A,#0FH</p><p> XRL A,#0FH ;輸入按鍵狀態(tài)</p><p> JZ NOKEY1 ;無鍵按下時(shí)轉(zhuǎn)向下一行</p><p>
93、 LCALL DELY10MS ;延時(shí)10ms消抖</p><p><b> MOV A,P1</b></p><p> ANL A,#0FH</p><p> XRL A,#0FH</p><p><b> JZ NOKEY1</b></p><p><b
94、> MOV A,P1</b></p><p> ANL A,#0FH</p><p> CJNE A,#07H,NK1 ;K1鍵按下</p><p> MOV KEYBUF,#0 ;確定鍵碼值</p><p> LJMP DK1 ;轉(zhuǎn)向執(zhí)行按鍵功能</p><p> DK1A:
95、MOV A,P1 ;等待按鍵釋放子程序 </p><p> ANL A,#0FH 圖 4.3 鍵盤識別流程圖</p><p> XRL A,#0FH</p><p> JNZ DK1A </p>
96、;<p><b> 4.3 顯示程序</b></p><p> 該電子琴設(shè)計(jì)中用LED顯示器顯示0~F,分別表示16個(gè)按鍵的序號,用二極管組合的點(diǎn)亮個(gè)數(shù)來表示不同的音符,使得在彈奏的過程中達(dá)到動(dòng)態(tài)閃爍的效果。該顯示程序是按照檢測到的按鍵值,根據(jù)不同的鍵碼通過查表實(shí)現(xiàn)的方法實(shí)現(xiàn)的。對應(yīng)16個(gè)按鍵,根據(jù)各自顯示值的不同,建立如下顯示程序表,其中高位是二極管點(diǎn)亮個(gè)數(shù)對應(yīng)值,低位是
97、LED數(shù)碼管顯示值。:</p><p> TABLE1:DW 0FC0H,07F9H,03A4H,01B0H</p><p> DW 0099H,3F92H,1F82H,0FF8H</p><p> DW 0780H,0390H,0188H,0083H</p><p> DW 3FC6H,1FA1H,0F86H,078EH</p
98、><p> 通過查表發(fā)實(shí)現(xiàn)顯示功能的程序如下:</p><p> MOV A,KEYBUF ;傳送鍵碼值</p><p><b> MOV B,#2</b></p><p><b> MUL AB</b></p><p> MOV TEMP,A</p>
99、<p> MOV DPTR,#TABLE1 ;指向表頭</p><p> MOVC A,@A+DPTR ;查表</p><p> MOV P0,A ;將二極管顯示值傳送給P0口</p><p><b> INC TEMP</b></p><p> MOV A,TEMP&
100、lt;/p><p> MOV DPTR,#TABLE1</p><p> MOVC A,@A+DPTR</p><p> MOV P2,A ;將LED顯示值傳送給P2口</p><p> 4.4 外中斷控制程序</p><p> 該系統(tǒng)外中斷控制電路的軟件實(shí)現(xiàn)過程是,通過外中斷口連接的不同
101、功能鍵按下時(shí)給單片機(jī)輸入低電平而發(fā)出中斷請求信號,然后單片機(jī)響應(yīng)中斷并執(zhí)行中斷服務(wù)子程序,控制該系統(tǒng)執(zhí)行相應(yīng)的功能程序,最后單片機(jī)恢復(fù)現(xiàn)場并返回,如此往復(fù)執(zhí)行程序。</p><p> 外中斷0控制啟動(dòng)自動(dòng)播放功能的程序如下:</p><p> ZIDONG BIT P3.2</p><p> ORG 0003H;中斷入口地址</p><p
102、> LJMP ZD0;中斷服務(wù)程序入口</p><p> MOV TMOD,#01H </p><p> MOV IE,#87H;開中斷</p><p> SETB IT0;設(shè)中斷為邊沿觸發(fā)</p><p> SETB PX0;外中斷0優(yōu)先級控制</p><p> ZD0:C
103、LR EX0 </p><p> PUSH ACC ;保護(hù)現(xiàn)場</p><p><b> PUSH PSW </b></p><p> LCALL DELAY0;調(diào)用延時(shí)子程序</p><p> JB ZIDONG,TO1;判斷自動(dòng)播放功能鍵是否被按下</p><
104、p> K1:MOV SNB,#0;功能標(biāo)志位</p><p> TO1:POP PSW;恢復(fù)現(xiàn)場</p><p><b> POP ACC</b></p><p> SETB EX0;允許外中斷0中斷</p><p><b> RETI;返回</b></p>&
105、lt;p> 當(dāng)按下彈奏功能鍵向外中斷1時(shí)發(fā)出中斷請求時(shí),單片機(jī)執(zhí)行其服務(wù)子程序,并且設(shè)置功能標(biāo)志SNB的值為1,然后系統(tǒng)執(zhí)行相應(yīng)的彈奏功能程序,達(dá)到功能切換的目的。其外中斷1控制彈奏功能的子程序與外中斷0服務(wù)子程序相似。</p><p><b> 5. 系統(tǒng)仿真</b></p><p> 5.1 Keil C51</p><p>
106、 5.1.1 Keil C51軟件簡介</p><p> 由美國Keil Software公司出品的Keil C51軟件,是當(dāng)前普遍使用的兼容51系列單片機(jī)的軟件開發(fā)系統(tǒng)。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理等在內(nèi)的完整開發(fā)方案,以及提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具[5]。Keil C51的這些特點(diǎn)在開發(fā)大型軟件時(shí)體現(xiàn)出巨大的優(yōu)勢。</p><p> 5.1
107、.2 程序編譯</p><p> 安裝Keil μVision2 IDE后,采用標(biāo)準(zhǔn)AT89C51芯片建立名為MyProject的項(xiàng)目。具體操作過程如下所示:</p><p> 選擇新建項(xiàng)目選項(xiàng),在Create New Project對話框中選擇要保存項(xiàng)目文件的路徑,然后單擊保存項(xiàng)目名為MyProject的項(xiàng)目文件。</p><p> 進(jìn)行上述操作后在選擇單片
108、機(jī)型號的對話框中,先選擇ATMEL公司,然后選中AT89C51芯片,最后單擊“確定”按鈕。并且在彈出將8051初始化代碼復(fù)制到項(xiàng)目中的詢問窗口中單擊“是”按鈕完成該步驟。</p><p> 圖 5.1 程序編譯圖</p><p> 選擇新建文件選項(xiàng)在新建的項(xiàng)目窗口中建立一個(gè)源程序文件,然后在彈出的程序文本框中輸入設(shè)計(jì)的系統(tǒng)源程序,最后保存文件,確定其文件名為My,擴(kuò)展名為.asm。
109、 </p><p> 單擊項(xiàng)目窗口中的Source Group 1,在彈出的菜單中選擇Add Files to Group ’Source Group1’選項(xiàng)將前面建立的My.asm文件加入到項(xiàng)目中,其文件類型選擇Asm Source file 。 </p><p> 接下來對剛才新建的目標(biāo)進(jìn)行一些設(shè)置。在MyProject中選擇Options for Target‘T
110、arget 1‘選項(xiàng),然后在彈出的對話框進(jìn)行如下設(shè)置: </p><p> 在Target選項(xiàng)卡中設(shè)置單片機(jī)的工作頻率Xtal(MHZ)為11.0592MHz。</p><p> 在Output選項(xiàng)卡中選中生成HEX文件的Create HEX File選項(xiàng)。</p><p> 在Project中選擇Rebuild all target files選項(xiàng)編譯該電子
111、琴系統(tǒng)源程序,編譯連接成功后出現(xiàn)如圖5.1所示界面。 </p><p> 5.2 Proteus</p><p> 5.2.1 Proteus軟件簡介</p><p> Proteus軟件是一種EDA工具軟件,由英國Lab Center Electronics公司出版。它不僅具有其它EDA工具軟件的仿真功能,而
112、且還具有仿真單片機(jī)以及外圍器件的功能,因此該軟件是目前普遍使用的單片機(jī)及外圍器件的仿真工具。</p><p> Proteus軟件含有超過27000個(gè)仿真器件、多樣的激勵(lì)源、豐富的虛擬儀器和實(shí)用的PCB設(shè)計(jì)平臺(tái);支持主流的CPU類型、通用外設(shè)模型以及多種輸出格式;具有完善的電路仿真功能、高級圖形仿真功能(ASF)、單片機(jī)協(xié)同仿真功能、先進(jìn)的自動(dòng)布局/布線功能和完整的PCB設(shè)計(jì)功能。</p><
113、;p> 5.2.2 電路編輯</p><p> 安裝Proteus 7.8 Professional后,在原理圖編輯窗口繪制該系統(tǒng)電路原理圖。繪制步驟如下:</p><p> 單擊對象選擇按鈕,在彈出的元器件選擇窗口中分別輸入AT89C51(單片機(jī))、BUTTON(按鍵)、LED(二極管)、7SEG-MPX1-CA(LED顯示器)、74LS245(總線驅(qū)動(dòng)器)、CAP(電容)、
114、CRYSTAL(晶振)、RES(電阻)和SPEAKER(揚(yáng)聲器),然后在搜索結(jié)果欄中找到需要的元器件,并將其添加到對象選擇窗口。</p><p> 分別將AT89C51、BUTTON、LED、7SEG-MPX1-CA、74LS245、CAP、CRYSTAL、RES和SPEAKER放置到圖形編輯窗口。</p><p> 單擊繪圖工具欄中的“終端模式”按鈕,然后在對象選擇器窗口分別選中對象
115、POWER(電源)和GROUND(接地),并將其放置到圖形編輯窗口給系統(tǒng)硬件電</p><p> 路添加電源和接地引腳。</p><p> 在圖形編輯窗口,完成各對象之間的電路連線。</p><p> 圖5.2 系統(tǒng)電路原理圖</p><p> 選擇繪圖工具欄中的文字標(biāo)簽按鈕,在圖形編輯窗口,完成文字標(biāo)注的添加。完成如圖5.2所示的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)控制電子琴畢業(yè)論文
- 基于單片機(jī)控制電子琴畢業(yè)論文
- 畢業(yè)論文--基于單片機(jī)的簡單電子琴設(shè)計(jì)
- 基于51單片機(jī)的電子琴設(shè)計(jì)畢業(yè)論文
- 基于51單片機(jī)簡易電子琴設(shè)計(jì)畢業(yè)論文
- 聲光電子琴畢業(yè)論文--基于51單片機(jī)簡易電子琴設(shè)計(jì)
- 基于單片機(jī)的簡易電子琴的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的電子琴設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的簡易電子琴
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 基于單片機(jī)的電子琴設(shè)計(jì)
- 基于單片機(jī)的電子琴畢業(yè)設(shè)計(jì)
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)-- 基于單片機(jī)的電子琴設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的微型電子琴設(shè)計(jì)
- 基于at89s52單片機(jī)的電子琴設(shè)計(jì)畢業(yè)論文
- 單片機(jī)畢業(yè)設(shè)計(jì)電子琴
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的電子琴設(shè)計(jì)
- 基于單片機(jī)的電子琴設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 電子信息畢業(yè)設(shè)計(jì)論文 基于單片機(jī)的電子琴設(shè)計(jì)
評論
0/150
提交評論