

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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)播放音樂(lè)的功能。該系統(tǒng)采用AT
2、89C51單片機(jī)作為主控芯片,并設(shè)置矩陣鍵盤(pán)、揚(yáng)聲器、LED顯示器和二極管等外圍器件。通過(guò)按鍵實(shí)現(xiàn)音符的輸入及不同功能的選擇切換;使用二極管顯示被操作按鍵和程序存儲(chǔ)樂(lè)曲中音符所對(duì)應(yīng)的數(shù)字,在演奏時(shí)具有動(dòng)態(tài)閃爍的效果;而且還使用LED顯示器顯示被按下鍵的序號(hào),以便使用者眼觀和耳聽(tīng)相結(jié)合,準(zhǔn)確確定音符及其發(fā)音;最后通過(guò)揚(yáng)聲器發(fā)出相應(yīng)的音。</p><p> 音樂(lè)是由不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同的頻率,因此
3、可以利用不同的頻率組合來(lái)實(shí)現(xiàn)想要表達(dá)的音樂(lè)。單片機(jī)可以通過(guò)定時(shí)/計(jì)數(shù)器T0產(chǎn)生不同頻率方波信號(hào)的方法產(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 硬件簡(jiǎn)介5</p><p> 3.1.1 AT89C515</p><p> 3.1.2 LED顯示器7</p><p> 3.1.3 鍵盤(pán)
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、盤(pán)電路12</p><p> 4. 軟件設(shè)計(jì)13</p><p> 4.1 音樂(lè)產(chǎn)生的方法13</p><p> 4.1.1 音樂(lè)產(chǎn)生的原理13</p><p> 4.1.2 音樂(lè)實(shí)現(xiàn)過(guò)程14</p><p> 4.2 矩陣鍵盤(pán)識(shí)別處理程序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軟件簡(jiǎn)介21</p><p> 5.1.2 程序編譯21</p><p>
14、5.2 Proteus22</p><p> 5.2.1 Proteus軟件簡(jiǎn)介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)試操作過(guò)程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)又被稱(chēng)作單片
17、微控制器,它并不僅僅是完成某一個(gè)邏輯功能的芯片,而是一種集成電路芯片,是通過(guò)采用超大規(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)的競(jìng)爭(zhē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ī)的開(kāi)發(fā)和利用有助于提高產(chǎn)品的微型化、多功能化和智能化等。但是,單片機(jī)開(kāi)發(fā)利用的價(jià)值絕不僅限于它廣闊的應(yīng)用范圍和帶來(lái)的巨大經(jīng)濟(jì)利益上,其更重要的意義在于:?jiǎn)纹瑱C(jī)的應(yīng)用從根本上改變了傳統(tǒng)控制系統(tǒng)設(shè)計(jì)的思想和方法,具有里程碑式的革命意義。</p><p><b> 1.2 設(shè)計(jì)意義</b><
20、;/p><p> 電子琴是電子科技發(fā)展的重要標(biāo)志,它是通過(guò)與音樂(lè)相結(jié)合設(shè)計(jì)制造的一種鍵盤(pán)樂(lè)器。在電子音樂(lè)這個(gè)領(lǐng)域里,作為一種極具創(chuàng)造性的產(chǎn)物,電子琴在現(xiàn)代音樂(lè)中扮演著非常重要的角色,并且因其良好的性能和方便的可操作性已被人們廣泛地使用于學(xué)習(xí)生活中。</p><p> 電子琴具有非常穩(wěn)定、準(zhǔn)確的演奏性能,而且還有很鮮明的強(qiáng)弱變化規(guī)律,能夠根據(jù)使用者的要求自主掌握其速度等特點(diǎn)。因此能夠有效地幫
21、助初學(xué)者由淺入深,比較容易地準(zhǔn)確掌握使用電子琴?gòu)椬鄻?lè)曲的技能,并且對(duì)其訓(xùn)練彈奏的穩(wěn)定性和準(zhǔn)確性有很好的作用。</p><p> 目前市場(chǎng)上的電子琴功能也越來(lái)越完善。使用單片機(jī)作為控制核心設(shè)計(jì)的電子琴系</p><p> 統(tǒng)是單片機(jī)開(kāi)發(fā)和應(yīng)用的一項(xiàng)重要實(shí)踐,該系統(tǒng)具有簡(jiǎn)單的硬件電路、完善的軟件功能、</p><p> 可靠的控制系統(tǒng)和很高的運(yùn)行穩(wěn)定性等優(yōu)點(diǎn),因此
22、為電子琴的推廣和使用提供了保障。</p><p> 以基于單片機(jī)的電子琴設(shè)計(jì)為選題,目的在于培養(yǎng)我們從日常生活著手,利用所學(xué)知識(shí)理論與實(shí)踐相結(jié)合,在實(shí)踐中進(jìn)一步完善理論的科學(xué)意識(shí)。通過(guò)這個(gè)選題,還可以更深層次地了解單片機(jī)技術(shù),更加熟練地掌握一些單片機(jī)芯片的開(kāi)發(fā)和應(yīng)用。對(duì)目前應(yīng)用日益廣泛的單片機(jī)有一個(gè)更加理性的認(rèn)識(shí),使所學(xué)理論和實(shí)踐很好的結(jié)合起來(lái)。</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矩陣鍵盤(pán)、揚(yáng)聲器、二極管和LED顯示器等模塊組成核心主控制模塊。</p><p> 該電子琴是根據(jù)音樂(lè)是由許多不同的音階組成,而每個(gè)音階對(duì)應(yīng)著不同的頻率,通過(guò)不同頻率
24、的組合,來(lái)實(shí)現(xiàn)想要的音樂(lè)這一基本理論設(shè)計(jì)的。通過(guò)單片機(jī)定時(shí)/計(jì)數(shù)器T0產(chǎn)生不同頻率的方波信號(hào)產(chǎn)生不同的音階頻率,然后識(shí)別按鍵所代表的音階及其對(duì)應(yīng)的頻率來(lái)發(fā)音實(shí)現(xiàn)的。</p><p> 本文將對(duì)以單片機(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)電子琴?gòu)椬喙δ芑A(chǔ)上,本設(shè)計(jì)對(duì)電子琴的功能作了進(jìn)一步的擴(kuò)展,使其具有自動(dòng)播放所存曲目的功能,并且可以通過(guò)按鍵來(lái)實(shí)現(xiàn)兩大功能的切換選擇。本文也將對(duì)該部分設(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)播放音樂(lè)兩個(gè)部分。其實(shí)現(xiàn)過(guò)程采用匯編語(yǔ)言編程的方法。具體要求如下:</p><p> ?。?)能夠?qū)崿F(xiàn)電子琴的基本彈奏功能,并且可以彈奏簡(jiǎn)單的樂(lè)曲。</p><p> ?。?)該電子琴使用16個(gè)按鍵,每個(gè)鍵分別代表一個(gè)音符。</p><p> ?。?)使用彈奏功能時(shí)能發(fā)出準(zhǔn)確的聲音,使用自動(dòng)播放音樂(lè)功能時(shí)可以播放已設(shè)定的音樂(lè),不同功能的切換通過(guò)按鍵選擇來(lái)實(shí)現(xiàn)。
27、</p><p> (4)彈奏和自動(dòng)播放音樂(lè)時(shí),利用二極管組合的點(diǎn)亮個(gè)數(shù)表示音符所對(duì)應(yīng)的數(shù)字,達(dá)到二極管點(diǎn)亮個(gè)數(shù)伴隨音符閃爍的效果;彈奏時(shí)LED顯示器顯示按鍵的序號(hào)。</p><p><b> 2.2 設(shè)計(jì)思路</b></p><p> 從系統(tǒng)要求實(shí)現(xiàn)的手動(dòng)彈奏樂(lè)曲和自動(dòng)播放音樂(lè)兩大功能考慮。該電子琴硬件系統(tǒng)首先需要設(shè)置16個(gè)音符按鍵和揚(yáng)
28、聲器,通過(guò)查表程序按其對(duì)應(yīng)的頻率發(fā)音實(shí)現(xiàn)。自動(dòng)播放音樂(lè)是通過(guò)軟件編程的方法放置音樂(lè)代碼和相關(guān)播放程序來(lái)實(shí)現(xiàn)的。另外還需設(shè)置用來(lái)選擇手動(dòng)彈奏樂(lè)曲功能和自動(dòng)播放音樂(lè)功能的對(duì)應(yīng)功能鍵。</p><p> 從系統(tǒng)硬件結(jié)構(gòu)考慮,該電子琴系統(tǒng)需要設(shè)計(jì)AT89C51單片機(jī)電路、4×4矩陣鍵盤(pán)輸入電路、LED數(shù)碼管和二極管輸出顯示電路、功能鍵控制電路、揚(yáng)聲器相關(guān)電路以及電源電路等,并且能將這些硬件電路正確組合使之滿(mǎn)足
29、電子琴設(shè)計(jì)的基本要求。</p><p> 從系統(tǒng)軟件設(shè)計(jì)的方法考慮,該電子琴根據(jù)其要求實(shí)現(xiàn)的功能和程序設(shè)計(jì)技巧,主要采用模塊化程序設(shè)計(jì)的方法。包括主程序模塊、鍵盤(pán)識(shí)別程序模塊、LED數(shù)碼管和二極管顯示模塊、功能選擇控制模塊和揚(yáng)聲器音樂(lè)產(chǎn)生模塊等等。其中,功能選擇控制模塊使用外中斷控制和按鍵查詢(xún)兩種方式相結(jié)合的方法,實(shí)現(xiàn)其功能選擇切換功能。</p><p> 從音樂(lè)產(chǎn)生的原理考慮,該電子
30、琴的發(fā)音功能是通過(guò)對(duì)單片機(jī)進(jìn)行控制,利用軟件編程的方法使定時(shí)器產(chǎn)生不同頻率的音頻脈沖,然后驅(qū)動(dòng)揚(yáng)聲器發(fā)音實(shí)現(xiàn)的。其中節(jié)拍是通過(guò)調(diào)用延時(shí)程序的方法進(jìn)行控制的。因此把音樂(lè)的音符和相應(yīng)的節(jié)拍設(shè)置為定時(shí)常數(shù)和延時(shí)常數(shù)作為程序表存儲(chǔ)在單片機(jī)內(nèi)存中,由查表程序取出執(zhí)行可以實(shí)現(xiàn)音樂(lè)的自動(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)比較簡(jiǎn)單。</p><p> 該電子琴硬件系統(tǒng)采用AT89C51單片機(jī)作為主控芯片,并設(shè)置鍵盤(pán)、揚(yáng)聲器、顯示器等外圍器件。利用按鍵實(shí)現(xiàn)音符的輸入及不同功能
32、的選擇切換,二極管點(diǎn)亮個(gè)數(shù)表示被操作按鍵和程序存儲(chǔ)樂(lè)曲中音符所對(duì)應(yīng)的數(shù)字,LED顯示器顯示被按下鍵的序號(hào),最后通過(guò)揚(yáng)聲器發(fā)出相應(yīng)的音。</p><p> 因此本電子琴系統(tǒng)是以AT89C51單片機(jī)為主控芯片,使得LED顯示器和二極管、4×4矩陣鍵盤(pán)、功能鍵和揚(yáng)聲器等各功能模塊協(xié)調(diào)工作。主電路由LED和二極管顯示電路、4×4矩陣鍵盤(pán)電路、功能鍵控制電路、揚(yáng)聲器、復(fù)位電路、晶振電路以及電源電路幾大
33、模塊組成。該電子琴系統(tǒng)硬件電路總體設(shè)計(jì)框圖如圖2.1所示:</p><p> 圖2.1 系統(tǒng)框圖</p><p> 該電子琴系統(tǒng)中使用AT89C51單片機(jī)接口來(lái)實(shí)現(xiàn)信號(hào)的輸入和輸出功能。其中P3.7引腳作為音頻輸出口,向揚(yáng)聲器發(fā)聲電路輸出信號(hào);P1口作為鍵盤(pán)信號(hào)的輸入輸出口,實(shí)現(xiàn)鍵盤(pán)的輸入功能;使用P0口直接驅(qū)動(dòng)二極管,P2口直接驅(qū)動(dòng)LED顯示器,實(shí)現(xiàn)其顯示功能;P2.2和P2.3兩
34、個(gè)外部中斷輸入端分別連接自動(dòng)播放選擇功能鍵和彈奏選擇功能鍵。</p><p> 在電子琴開(kāi)始工作時(shí),該系統(tǒng)默認(rèn)電子琴處于自動(dòng)播放內(nèi)置音樂(lè)狀態(tài),使用者可以通過(guò)功能鍵來(lái)選擇執(zhí)行手動(dòng)彈奏功能或音樂(lè)自動(dòng)播放功能。</p><p><b> 3. 硬件設(shè)計(jì)</b></p><p><b> 3.1 硬件簡(jiǎn)介</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)算器和控制器兩大部分,是分別用來(lái)完成單片機(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ī)用來(lái)發(fā)出控制信號(hào),指揮各部件協(xié)調(diào)工作的控制電路??刂齐娐钒ǔ绦蛴?jì)數(shù)器PC、指令寄存器、指令譯碼器、定時(shí)與控制電路等[1]。</p><p> AT89C51單片機(jī)芯片內(nèi)部存儲(chǔ)器包括供用戶(hù)使用的256個(gè)字節(jié)的RAM(地址范圍是00H~FFH)和供用戶(hù)使用的
39、共4KB個(gè)字節(jié)的ROM(地址范圍是0000H~FFFH)。</p><p> AT89C51單片機(jī)有2個(gè)16位的定時(shí)/計(jì)數(shù)器,用來(lái)實(shí)現(xiàn)單片機(jī)的定時(shí)或計(jì)數(shù)功能,并且根據(jù)該定時(shí)或計(jì)數(shù)結(jié)果對(duì)單片機(jī)進(jìn)行反饋控制。</p><p> AT89C51單片機(jī)共有4個(gè)用來(lái)實(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口線(xiàn)的第二功能),用來(lái)實(shí)現(xiàn)串行通信功能。</p><p> AT89C51單片機(jī)共有5個(gè)中斷源(其中2個(gè)外部中斷源)以滿(mǎn)足控制應(yīng)用的需求。每一個(gè)中斷源都有其對(duì)應(yīng)的的矢量地址、標(biāo)志位、優(yōu)先級(jí)和允許控制。</p><p> AT89C51單片機(jī)有一個(gè)內(nèi)振蕩器,它通過(guò)XTAL1引腳和XTAL2引腳與外接晶體振蕩器和
41、微調(diào)電容相連,用來(lái)為單片機(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> 主要控制信號(hào)引腳功能如下: </p><p> RST(9腳)— 復(fù)位輸入端。 </p>&
43、lt;p> PSEN(29腳)— 外部程序存儲(chǔ)器讀選通信號(hào)輸出端。 </p><p> EA(31腳)— 程序存儲(chǔ)器訪(fǎng)問(wèn)控制信號(hào)。</p><p> ALE(30腳)— 地址鎖存信號(hào)輸出端。 圖3.2 AT
44、89C51引腳排列圖</p><p> 輸入/輸出端口引腳P0、P1、P2、P3(共32條口線(xiàn))功能如下:</p><p> P0口(32腳~39腳)是一個(gè)復(fù)用端口??梢宰鳛閱纹瑱C(jī)數(shù)據(jù)并行輸入/輸出的通用8位準(zhǔn)雙向I/O端口(作輸入口時(shí)先向鎖存器寫(xiě)“1”),口線(xiàn)是P0.0~P0.7。另外,P0口還是復(fù)用的地址/數(shù)據(jù)總線(xiàn)AD0~AD7。</p><p> P1口
45、(1腳~9腳)是一個(gè)通用的8位準(zhǔn)雙向I/O端口,其口線(xiàn)是P1.0~P1.7。</p><p> P2口(21腳~28腳)也是一個(gè)復(fù)用端口。從理論上講可以作為通用的8位準(zhǔn)雙向I/O端口使用,其口線(xiàn)是P2.0~P2.7。但在實(shí)際應(yīng)用中總是作為高位地址總線(xiàn)使用。</p><p> P3口(10腳~17腳)也是一個(gè)復(fù)用端口。使用時(shí)可以作為通用的8位準(zhǔn)雙向I/O端口,功能和操作方法與P1口相同,
46、其口線(xiàn)是P3.0~P3.7。P3口的第二功能分別是作為串行口輸入/輸出、外部中斷請(qǐng)求輸入、定時(shí)/計(jì)數(shù)器和外部數(shù)據(jù)存儲(chǔ)器讀/寫(xiě)選通信號(hào)的控制端口使用。</p><p> 3.1.2 LED顯示器</p><p> 單片機(jī)開(kāi)發(fā)應(yīng)用系統(tǒng)中使用的發(fā)光二極管顯示器(LED) 因其價(jià)格低廉、配置靈活以及與單片機(jī)接口方便等優(yōu)點(diǎn),使得在單片機(jī)的開(kāi)發(fā)設(shè)計(jì)中使用非常廣泛。</p><p
47、> ?。?)LED顯示器的結(jié)構(gòu)</p><p> 通常所說(shuō)的LED顯示器就是指七段LED顯示器,它的結(jié)構(gòu)是由七個(gè)發(fā)光二極管組成的,其排列形狀如圖3.3所示。LED顯示器是通過(guò)七段發(fā)光二極管的不同點(diǎn)亮組合來(lái)顯示數(shù)字、字母或其他符號(hào)的。此外,LED顯示器中還有一個(gè)用于顯示小數(shù)點(diǎn)的圓點(diǎn)型發(fā)光二極管(dp)。</p><p> 圖3.3 七段LED顯示器</p><p
48、> ?。?)LED顯示器的連接方法</p><p> LED顯示器的連接方法有共陽(yáng)極連接和共陰極連接兩種:</p><p> 共陽(yáng)極連接是指把發(fā)光二極管的陽(yáng)極全部連在一起接+5V電源的接法。使用這種方法連接時(shí),只要給某一段的陰極端輸入低電平就可以使其電路導(dǎo)通而點(diǎn)亮。</p><p> 共陰極接法與共陽(yáng)極接法恰好相反,它是把發(fā)光二極管的陰極通過(guò)接地全部連在
49、一起的接法。使用這種方法連接時(shí),只要給某一段的陽(yáng)極端輸入高電平就可以使其電路導(dǎo)通而點(diǎn)亮。</p><p> LED顯示器是通過(guò)字形代碼來(lái)顯示數(shù)字或符號(hào)的。七段發(fā)光二極管和小數(shù)點(diǎn)位加起來(lái)共計(jì)8段,因此其字形代碼正好是一個(gè)字節(jié)的長(zhǎng)度。規(guī)定各代碼位的對(duì)應(yīng)關(guān)系如表3.1所示。用LED顯示器顯示十六進(jìn)制數(shù)時(shí)所對(duì)應(yīng)的字形代碼如表3.2所示。</p><p> 表3.1 各代碼位的對(duì)應(yīng)關(guān)系</
50、p><p> 表3.2 十六進(jìn)制數(shù)字形代碼表</p><p><b> 3.1.3 鍵盤(pán)</b></p><p> 鍵盤(pán)是一種非常便捷有效的輸入設(shè)備。按照其結(jié)構(gòu)形式可以分為使用軟件方法產(chǎn)生鍵碼的非編碼式鍵盤(pán)和使用硬件方法產(chǎn)生鍵碼的編碼式鍵盤(pán)兩種基本類(lèi)型。由于非編碼鍵盤(pán)結(jié)構(gòu)比較簡(jiǎn)單,成本相對(duì)低廉等特點(diǎn),因此在單片機(jī)開(kāi)發(fā)應(yīng)用中使用更加廣泛。非編碼
51、鍵盤(pán)接口技術(shù)的主要問(wèn)題是確定被按下鍵的位置并根據(jù)其位置產(chǎn)生鍵碼,即所謂鍵的識(shí)別。</p><p> 非編碼鍵盤(pán)根據(jù)其與單片機(jī)的連接方法又可分為獨(dú)立聯(lián)接式和矩陣式兩種類(lèi)型。</p><p> ?。?)獨(dú)立聯(lián)接式鍵盤(pán)</p><p> 獨(dú)立聯(lián)接式鍵盤(pán)的每一個(gè)鍵都獨(dú)自接通單片機(jī)的一條輸入數(shù)據(jù)線(xiàn)。任意一個(gè)鍵被按下接通時(shí),與之相連的輸入數(shù)據(jù)線(xiàn)即被清0變?yōu)榈碗娖剑话聪略?/p>
52、鍵時(shí)該線(xiàn)狀態(tài)為1即高電平。因此只需根據(jù)輸入線(xiàn)的電平狀態(tài)即可判斷是否有鍵被按下、按下的是哪一個(gè)鍵。</p><p> 這種鍵盤(pán)結(jié)構(gòu)的優(yōu)點(diǎn)是電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。但每個(gè)按鍵都需占用一根輸入口線(xiàn),因此當(dāng)按鍵數(shù)較多時(shí),輸入口線(xiàn)浪費(fèi)比較大,電路結(jié)構(gòu)也顯得非常繁雜。所以獨(dú)立聯(lián)接式鍵盤(pán)適用于按鍵數(shù)較少或者操作速度要求較高的情況。</p><p><b> ?。?)矩陣式鍵盤(pán)</b
53、></p><p> 矩陣式鍵盤(pán)中,每條水平線(xiàn)和垂直線(xiàn)在交叉處通過(guò)一個(gè)按鍵加以連接。利用這種矩陣結(jié)構(gòu)只需N+M條I/O口線(xiàn)(N和M分別是水平和垂直連線(xiàn)的數(shù)目)即可連接N×M個(gè)鍵。因此當(dāng)應(yīng)用系統(tǒng)所要求的按鍵數(shù)量較多時(shí),為了減少單片機(jī)I/O口的占用,通常采用矩陣式鍵盤(pán)。</p><p> 單片機(jī)系統(tǒng)在編程使用鍵盤(pán)時(shí)必須具有去抖動(dòng)、防串鍵、按鍵識(shí)別和產(chǎn)生鍵碼這4個(gè)基本功能。&
54、lt;/p><p> 3.2 硬件電路設(shè)計(jì)</p><p> 根據(jù)該電子琴要求實(shí)現(xiàn)的功能,其系統(tǒng)硬件電路將主要由AT89C51單片機(jī)電路、鍵盤(pán)輸入輸出電路、揚(yáng)聲器輸出電路、外中斷控制電路、LED顯示器和二極管輸出顯示電路等模塊組成。下文將分別對(duì)各模塊電路原理圖的設(shè)計(jì)進(jìn)行分析說(shuō)明。</p><p> 3.2.1 單片機(jī)系統(tǒng)電路</p><p>
55、;<b> (1)時(shí)鐘電路</b></p><p> 時(shí)鐘電路用來(lái)驅(qū)動(dòng)單片機(jī)進(jìn)行工作,單片機(jī)的XTAL1、XTAL2引腳分別連接系統(tǒng)時(shí)鐘信號(hào)的輸入、輸出端??紤]到系統(tǒng)穩(wěn)定性、晶振精度和系統(tǒng)的抗干擾性,該系統(tǒng)晶振電路的設(shè)計(jì)使用兩個(gè)30pF的電容和一個(gè)12MHz的晶振,用來(lái)產(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顯示器和二極管的連接方法均采用共陽(yáng)極連接,即公共端接電源。該模塊電路的連接方法是,用AT89C51單片機(jī)P2端口的P2.0~P2.7口線(xiàn)分別連接七段數(shù)碼管
58、的a~h筆段;P0端口的P0.0~P0.7口線(xiàn)分別連接一個(gè)二極管。</p><p> 當(dāng)使用電子琴的彈奏功能且有按鍵按下時(shí),LED數(shù)碼管將對(duì)應(yīng)顯示該鍵的編號(hào),二極管點(diǎn)亮個(gè)數(shù)對(duì)應(yīng)該鍵所代表音符的數(shù)字加1的值,從而可以通過(guò)手動(dòng)和眼看來(lái)確定所按下的是哪個(gè)鍵,應(yīng)該發(fā)哪個(gè)音。LED顯示的數(shù)字以及二極管點(diǎn)亮個(gè)數(shù)與16個(gè)按鍵所代表的音符對(duì)應(yīng)關(guān)系如圖3.6所示。</p><p> 圖 3.6 按鍵與
59、音符、LED顯示值和二極管點(diǎn)亮個(gè)數(shù)對(duì)應(yīng)關(guān)系</p><p> 圖3.6中表示方法a/b/c,其中a表示該鍵所代表的音符,數(shù)字下面有著重號(hào)表示低</p><p> 音,數(shù)字上面有一點(diǎn)表示高音;b表示該鍵的鍵碼,即LED顯示的數(shù)字或字母;c表示該鍵所表示音符對(duì)應(yīng)的數(shù)字加1的值,即二極管對(duì)應(yīng)該鍵點(diǎn)亮的個(gè)數(shù)。</p><p> 當(dāng)切換到自動(dòng)播放音樂(lè)功能時(shí),二極管點(diǎn)亮個(gè)
60、數(shù)伴隨程序讀取的音符不同而閃爍,使人產(chǎn)生音樂(lè)感和節(jié)奏感。該模塊硬件電路原理圖如圖3.7所示。其中74LS245芯片是總線(xiàn)驅(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、以通過(guò)對(duì)P3.5引腳輸出信號(hào)頻率的控制對(duì)輸出音頻進(jìn)行控制,使得在使用彈奏功能和自動(dòng)播放功能時(shí)發(fā)出相應(yīng)的音。揚(yáng)聲器模塊硬件連線(xiàn)如圖3.8所示。</p><p> 圖3.8 揚(yáng)聲器電路連接圖圖3.9 外中斷控制電路連接</p><p> 3.3.4 外中斷控制電路</p><p> 該電子琴系統(tǒng)外部中斷控制電路是通過(guò)按鍵實(shí)現(xiàn)的,具有簡(jiǎn)單直觀、易于控制的優(yōu)點(diǎn)。單片
62、機(jī)外中斷口P3.2引腳和P3.3引腳各自連接一個(gè)獨(dú)立按鍵,分別用來(lái)控制啟動(dòng)自動(dòng)播放功能和手動(dòng)彈奏功能。該模塊硬件連線(xiàn)如圖3.9所示。</p><p> 3.3.5 矩陣鍵盤(pán)電路</p><p> 鍵盤(pán)用來(lái)輸入音符。該模塊硬件電路的連接方法是,用AT89C51單片機(jī)的P1口接4×4矩陣鍵盤(pán),其中P1.0~P1.3口線(xiàn)作為信號(hào)輸入端,分別連接矩陣鍵盤(pán)的第4列到第1列;P1.4~P
63、1.7口線(xiàn)作為信號(hào)輸出端,分別連接矩陣鍵盤(pán)的第1行到第4行。矩陣鍵盤(pán)模塊硬件連線(xiàn)如圖3.10示。</p><p> 圖 3.10 矩陣鍵盤(pán)電路連接</p><p> 使用彈奏功能時(shí),單片機(jī)首先給P1.4口輸出低電平“0”,再把P1口的電平信號(hào)輸入單片機(jī),然后通過(guò)將該信號(hào)數(shù)據(jù)屏蔽高四位后進(jìn)行判斷來(lái)確定第1行是否有鍵按下,按下的是哪一個(gè)鍵。如果P1口的值屏蔽高四位后低四位的值全為高電平,
64、則表示第1行沒(méi)有鍵被按下,否則的話(huà)第1行必定有鍵按下。P1.3引腳口變?yōu)榈碗娖綍r(shí),表示第1行第1列的鍵K1被按下去了,P1.2、P1.1、P1.0則分別表示K2、K3、K4鍵被按下了。</p><p> 單片機(jī)通過(guò)給P1.5、P1.6、P1.7分別輸出低電平來(lái)判斷第2、3、4行是否有鍵按下,判斷方法類(lèi)似于給P1.4引腳輸出低電平判斷第一行是否有鍵按下。P1.3、P1.2、P1.0分別表示該行第1、2、3、4列的
65、電平,電平為高時(shí)該列沒(méi)有被按下,電平為低時(shí)則表示該列鍵被按下。</p><p><b> 4. 軟件設(shè)計(jì)</b></p><p> 4.1 音樂(lè)產(chǎn)生的方法</p><p> 4.1.1 音樂(lè)產(chǎn)生的原理</p><p> ?。?)音符頻率的產(chǎn)生</p><p> 聲音是由介質(zhì)按某一頻率振動(dòng)
66、產(chǎn)生的。音樂(lè)由不同的音符組成,而每個(gè)音符對(duì)應(yīng)著不同的頻率。因此可以利用單片機(jī)通過(guò)定時(shí)器/計(jì)數(shù)器T0產(chǎn)生不同頻率方波信號(hào)的方法產(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í)間再對(duì)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í)各音符的高音、中音、低音所對(duì)應(yīng)頻率與定時(shí)器/計(jì)數(shù)器T0的計(jì)數(shù)值對(duì)應(yīng)關(guān)系如表4.1所示。</p><p><b> ?。?)節(jié)拍的產(chǎn)生</b></p><p> 樂(lè)譜是由不同的音符和
71、節(jié)拍有機(jī)組合而成的。節(jié)拍即音符持續(xù)時(shí)間的長(zhǎng)短,單片機(jī)對(duì)音樂(lè)節(jié)拍的控制是通過(guò)調(diào)用延時(shí)子程序的方法實(shí)現(xiàn)的,該延時(shí)子程序的延長(zhǎng)的時(shí)間是根據(jù)節(jié)拍定的。如果設(shè)定該延時(shí)子程序的延時(shí)時(shí)間為1/4拍,即把1/4拍確定為基本時(shí)長(zhǎng)的延時(shí)程序,則2/4拍只要調(diào)用兩次該延時(shí)子程序就可實(shí)現(xiàn),以此類(lèi)推。因此對(duì)于某一確定的樂(lè)譜,只要知道該樂(lè)譜特定調(diào)的1/4拍時(shí)間就可以了。以一個(gè)節(jié)拍為單位(C調(diào)),1/4和1/8拍的延時(shí)值對(duì)照表如表4.2所示。</p>
72、<p> 表4.1 音符頻率表</p><p><b> 表4.2 曲調(diào)值表</b></p><p> 4.1.2 音樂(lè)實(shí)現(xiàn)過(guò)程</p><p> ?。?)彈奏音樂(lè)的實(shí)現(xiàn)</p><p> 彈奏音樂(lè)的實(shí)現(xiàn)是由單片機(jī)執(zhí)行鍵盤(pán)識(shí)別程序,然后通過(guò)軟件查詢(xún)按鍵所對(duì)應(yīng)音律表,給定時(shí)器/計(jì)數(shù)器T0賦初值產(chǎn)生音頻來(lái)完
73、成的。首先識(shí)別被按下的鍵碼值,然后根據(jù)不同的鍵碼值查詢(xún)音律表,對(duì)定時(shí)器T0送入不同的初值,調(diào)節(jié)T0的溢出時(shí)間,這樣就可以通過(guò)給P3.5引腳輸出不同音調(diào)頻率的方波,在揚(yáng)聲器上發(fā)出相應(yīng)頻率的聲音,形成音樂(lè)效果。T0中斷服務(wù)流程圖如圖4.1所示。</p><p> 該電子琴系統(tǒng)的16個(gè)鍵分別代表從低3M音到高4FA之間的16個(gè)音符。根據(jù)編程實(shí)現(xiàn)的方法,在程序中建立如下各音符對(duì)應(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> 通過(guò)軟件實(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)播放音樂(lè)的實(shí)現(xiàn)</p><p> 自動(dòng)播放音樂(lè)的功能,是通過(guò)將需要播放音樂(lè)的音符以及節(jié)拍按順序編成一個(gè)程序表,然后當(dāng)程序進(jìn)入自動(dòng)播放模式時(shí)調(diào)用相應(yīng)程序并將其順序讀出實(shí)現(xiàn)的。</p><p> 樂(lè)曲中每一音符對(duì)應(yīng)著確定的頻率,在軟件實(shí)現(xiàn)過(guò)程中,將樂(lè)譜中的音符與其節(jié)拍用一個(gè)字節(jié)表示,這樣樂(lè)譜中順序出現(xiàn)的音符及
79、節(jié)拍就構(gòu)成一個(gè)程序表。其中每一字節(jié)的高四位表示音符碼,低四位表示節(jié)拍碼。在查表程序查表時(shí),將高四位的音符碼取出,然后根據(jù)音符碼查表得到T0的初值,通過(guò)定時(shí)器/計(jì)數(shù)器產(chǎn)生音頻脈沖;將低四位的節(jié)拍碼取出,通過(guò)調(diào)用對(duì)應(yīng)的延時(shí)程序得到節(jié)拍。這樣每個(gè)字節(jié)按順序讀出,就可以產(chǎn)生音符并控制節(jié)奏,實(shí)現(xiàn)音樂(lè)的自動(dòng)播放。</p><p> 本設(shè)計(jì)中程序?qū)懭氲念A(yù)制音樂(lè)是《蘭花草》和《綠島小夜曲》,下文將以《蘭花草》為例對(duì)軟件實(shí)現(xiàn)過(guò)程
80、進(jìn)行闡述,該樂(lè)曲簡(jiǎn)譜如下:</p><p> 由簡(jiǎn)譜可以看出該樂(lè)曲為C調(diào),其中最低音為低3M,最高音為中6LA,因此可以對(duì)低3音到中6音之間的音符確定其音符碼,其對(duì)應(yīng)關(guān)系如表4.3所示;以1/4拍時(shí)間為基本延時(shí)時(shí)間,節(jié)拍與節(jié)拍碼的對(duì)照關(guān)系如表4.4所示。</p><p> 表4.3 簡(jiǎn)譜對(duì)應(yīng)音符碼</p><p> 表4.4 節(jié)拍碼對(duì)照表</p>
81、<p> 根據(jù)樂(lè)曲軟件編程實(shí)現(xiàn)的方法,對(duì)應(yīng)簡(jiǎn)譜所寫(xiě)《蘭花草》的程序代碼如下,其中節(jié)拍碼00H為音樂(lè)結(jié)束標(biāo)記:</p><p> SONG:DB 42H,82H,82H,82H,86H,72H ;我從山中來(lái)</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 ;希望花開(kāi)早</p><p> DB 82H,0B2H,0B2H,0A2H,86H,72H ;一日看三回</p><p> DB 63H,71H,62H,52H,44H,12H,02H
83、 ;盼得花開(kāi)時(shí)</p><p> DB 12H,62H,62H,52H,46H,82H ;蘭花卻依然</p><p> DB 73H,61H,52H,32H,48H ;苞也無(wú)一個(gè)</p><p><b> DB 00H</b></p><p> 通過(guò)查表程序?qū)?/p>
84、現(xiàn)自動(dòng)播放音樂(lè)功能的程序流程圖如圖4.2所示,程序如下:</p><p> NEXT:MOV 30H,#0 ;指向音樂(lè)開(kāi)始音符</p><p> MOV 50H,#2</p><p> MOV A,30H </p><p> MOV DPTR,#SONG ;指向樂(lè)曲表頭
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)至播放音樂(lè)
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 ;查詢(xún)音符對(duì)應(yīng)頻率 </p><p> MOVC A,@A+DPTR 圖4.2 自動(dòng)播放音樂(lè)程序流程圖 </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án)識(shí)別處理程序 </p><p> 鍵盤(pán)處理程序的任務(wù)是:確定有無(wú)鍵按下、哪一個(gè)鍵按下、該鍵的功能是什么、另外還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。該系統(tǒng)鍵盤(pán)識(shí)別處理流程圖如圖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 ;無(wú)鍵按下時(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án)識(shí)別流程圖</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è)按鍵的序號(hào),用二極管組合的點(diǎn)亮個(gè)數(shù)來(lái)表示不同的音符,使得在彈奏的過(guò)程中達(dá)到動(dòng)態(tài)閃爍的效果。該顯示程序是按照檢測(cè)到的按鍵值,根據(jù)不同的鍵碼通過(guò)查表實(shí)現(xiàn)的方法實(shí)現(xiàn)的。對(duì)應(yīng)16個(gè)按鍵,根據(jù)各自顯示值的不同,建立如下顯示程序表,其中高位是二極管點(diǎn)亮個(gè)數(shù)對(duì)應(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> 通過(guò)查表發(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)過(guò)程是,通過(guò)外中斷口連接的不同
101、功能鍵按下時(shí)給單片機(jī)輸入低電平而發(fā)出中斷請(qǐng)求信號(hào),然后單片機(jī)響應(yīng)中斷并執(zhí)行中斷服務(wù)子程序,控制該系統(tǒng)執(zhí)行相應(yīng)的功能程序,最后單片機(jī)恢復(fù)現(xiàn)場(chǎng)并返回,如此往復(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;開(kāi)中斷</p><p> SETB IT0;設(shè)中斷為邊沿觸發(fā)</p><p> SETB PX0;外中斷0優(yōu)先級(jí)控制</p><p> ZD0:C
103、LR EX0 </p><p> PUSH ACC ;保護(hù)現(xiàn)場(chǎng)</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)場(chǎng)</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ā)出中斷請(qǐng)求時(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軟件簡(jiǎn)介</p><p> 由美國(guó)Keil Software公司出品的Keil C51軟件,是當(dāng)前普遍使用的兼容51系列單片機(jī)的軟件開(kāi)發(fā)系統(tǒng)。Keil提供了包括C編譯器、宏匯編、鏈接器、庫(kù)管理等在內(nèi)的完整開(kāi)發(fā)方案,以及提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具[5]。Keil C51的這些特點(diǎn)在開(kāi)發(fā)大型軟件時(shí)體現(xiàn)出巨大的優(yōu)勢(shì)。</p><p> 5.1
107、.2 程序編譯</p><p> 安裝Keil μVision2 IDE后,采用標(biāo)準(zhǔn)AT89C51芯片建立名為MyProject的項(xiàng)目。具體操作過(guò)程如下所示:</p><p> 選擇新建項(xiàng)目選項(xiàng),在Create New Project對(duì)話(huà)框中選擇要保存項(xiàng)目文件的路徑,然后單擊保存項(xiàng)目名為MyProject的項(xiàng)目文件。</p><p> 進(jìn)行上述操作后在選擇單片
108、機(jī)型號(hào)的對(duì)話(huà)框中,先選擇ATMEL公司,然后選中AT89C51芯片,最后單擊“確定”按鈕。并且在彈出將8051初始化代碼復(fù)制到項(xiàng)目中的詢(xún)問(wèn)窗口中單擊“是”按鈕完成該步驟。</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)目中,其文件類(lèi)型選擇Asm Source file 。 </p><p> 接下來(lái)對(duì)剛才新建的目標(biāo)進(jìn)行一些設(shè)置。在MyProject中選擇Options for Target‘T
110、arget 1‘選項(xiàng),然后在彈出的對(duì)話(huà)框進(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軟件簡(jiǎn)介</p><p> Proteus軟件是一種EDA工具軟件,由英國(guó)Lab Center Electronics公司出版。它不僅具有其它EDA工具軟件的仿真功能,而
112、且還具有仿真單片機(jī)以及外圍器件的功能,因此該軟件是目前普遍使用的單片機(jī)及外圍器件的仿真工具。</p><p> Proteus軟件含有超過(guò)27000個(gè)仿真器件、多樣的激勵(lì)源、豐富的虛擬儀器和實(shí)用的PCB設(shè)計(jì)平臺(tái);支持主流的CPU類(lèi)型、通用外設(shè)模型以及多種輸出格式;具有完善的電路仿真功能、高級(jí)圖形仿真功能(ASF)、單片機(jī)協(xié)同仿真功能、先進(jìn)的自動(dòng)布局/布線(xiàn)功能和完整的PCB設(shè)計(jì)功能。</p><
113、;p> 5.2.2 電路編輯</p><p> 安裝Proteus 7.8 Professional后,在原理圖編輯窗口繪制該系統(tǒng)電路原理圖。繪制步驟如下:</p><p> 單擊對(duì)象選擇按鈕,在彈出的元器件選擇窗口中分別輸入AT89C51(單片機(jī))、BUTTON(按鍵)、LED(二極管)、7SEG-MPX1-CA(LED顯示器)、74LS245(總線(xiàn)驅(qū)動(dòng)器)、CAP(電容)、
114、CRYSTAL(晶振)、RES(電阻)和SPEAKER(揚(yáng)聲器),然后在搜索結(jié)果欄中找到需要的元器件,并將其添加到對(duì)象選擇窗口。</p><p> 分別將AT89C51、BUTTON、LED、7SEG-MPX1-CA、74LS245、CAP、CRYSTAL、RES和SPEAKER放置到圖形編輯窗口。</p><p> 單擊繪圖工具欄中的“終端模式”按鈕,然后在對(duì)象選擇器窗口分別選中對(duì)象
115、POWER(電源)和GROUND(接地),并將其放置到圖形編輯窗口給系統(tǒng)硬件電</p><p> 路添加電源和接地引腳。</p><p> 在圖形編輯窗口,完成各對(duì)象之間的電路連線(xiàn)。</p><p> 圖5.2 系統(tǒng)電路原理圖</p><p> 選擇繪圖工具欄中的文字標(biāo)簽按鈕,在圖形編輯窗口,完成文字標(biāo)注的添加。完成如圖5.2所示的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)控制電子琴畢業(yè)論文
- 基于單片機(jī)控制電子琴畢業(yè)論文
- 畢業(yè)論文--基于單片機(jī)的簡(jiǎn)單電子琴設(shè)計(jì)
- 基于51單片機(jī)的電子琴設(shè)計(jì)畢業(yè)論文
- 基于51單片機(jī)簡(jiǎn)易電子琴設(shè)計(jì)畢業(yè)論文
- 聲光電子琴畢業(yè)論文--基于51單片機(jī)簡(jiǎn)易電子琴設(shè)計(jì)
- 基于單片機(jī)的簡(jiǎn)易電子琴的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的電子琴設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的簡(jiǎn)易電子琴
- 電子琴課程設(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ì)
評(píng)論
0/150
提交評(píng)論