




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄一、設(shè)計(jì)電子琴的作用與目的1二、電子琴設(shè)計(jì)要求1三、電子琴設(shè)計(jì)所用設(shè)備及軟件2四、電子琴系統(tǒng)設(shè)計(jì)方案2五、電子琴系統(tǒng)硬件設(shè)計(jì)35.1 琴鍵控制電路35.1.1 矩陣式鍵盤35.1.2 獨(dú)立式鍵盤45.1.3 方案比較45.2 數(shù)碼管顯示電路55.2.1 LED數(shù)碼管顯示原理55.2.2 LED數(shù)碼管靜態(tài)顯示55.2.3 LED數(shù)碼管動(dòng)態(tài)顯示65.2.4 方案比較75.3 音頻功放電路75.4 時(shí)鐘-復(fù)位電路85.4.1 時(shí)鐘電路85.4.2 復(fù)位電路85.5 電源電路95.6 整體電路10六、電子琴系統(tǒng)軟件設(shè)計(jì)106.1 系統(tǒng)硬件接口定義106.2 主函數(shù)106.3 初始化函數(shù)116.4
2、 數(shù)碼管顯示函數(shù)116.5 中斷函數(shù)116.6 鍵值掃描函數(shù)126.7 音頻處理函數(shù)13七、電子琴設(shè)計(jì)調(diào)試147.1 調(diào)試工具147.2 調(diào)試結(jié)果147.3 電子琴設(shè)計(jì)中的問題及解決方法15八、電子琴設(shè)計(jì)總結(jié)15參考文獻(xiàn)17附錄1:電子琴系統(tǒng)原理圖18附錄2:源程序19基于51單片機(jī)的電子琴設(shè)計(jì)基于51單片機(jī)的電子琴設(shè)計(jì)在電子音樂領(lǐng)域,電子音調(diào)作為現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,它在現(xiàn)代音樂中扮演著重要的角色。目前,由于電子音樂的普及,電子音調(diào)合成器(合成器實(shí)際上就是一臺(tái)聲音的頻率合成儀,可以制作各種聲音,改變各種音色)可以解決相當(dāng)一部分的歌唱及舞廳的伴奏問題。其中,電子琴就是一種新型的鍵盤電子
3、樂器。一、設(shè)計(jì)電子琴的作用與目的音樂教育是學(xué)校美育的主要途徑和最重要內(nèi)容,它在陶冶情操、提高素養(yǎng)、開發(fā)智力,特別是在培養(yǎng)學(xué)生創(chuàng)新精神和實(shí)踐能力方面發(fā)揮著獨(dú)特的作用。近年來,我國(guó)音樂教育在理論與實(shí)踐上都取得了有目共睹的成績(jī),探索并形成了具有中國(guó)特色的、較為完整的音樂教育教學(xué)體系。但我國(guó)音樂教育的改革力度離素質(zhì)教育發(fā)展的要求還存在一定距離。如今,電子琴作為電子時(shí)代的新產(chǎn)物以其獨(dú)特的功能和巨大的兼容性被人們廣泛的接受和推崇。而在課堂教學(xué)方面,它擁有其它樂器無法比擬的兩個(gè)瞬間:瞬間多元素思維的特殊的彈奏方法;瞬間多聲部(包括多音色 )展示的樂隊(duì)音響效果的特點(diǎn)。結(jié)合電子琴自身強(qiáng)大的功能及獨(dú)特的優(yōu)點(diǎn)來進(jìn)行
4、音樂教育的實(shí)施,這樣就應(yīng)該大力推廣電子琴進(jìn)入音樂教室,讓電子琴教學(xué)在音樂教育中發(fā)揮巨大的作用?,F(xiàn)代樂器中,電子琴是高新科技在音樂領(lǐng)域的一個(gè)代表,體現(xiàn)了人類電子技術(shù)和藝術(shù)的完美結(jié)合。電子琴自動(dòng)伴奏的穩(wěn)定性、準(zhǔn)確性,以及鮮明的強(qiáng)弱規(guī)律、隨人設(shè)置的速度要求,都更便于人們由易到難、深入淺出的準(zhǔn)確掌握歌曲節(jié)奏和樂曲風(fēng)格,對(duì)其節(jié)奏的穩(wěn)定性和準(zhǔn)確性訓(xùn)練能起到非常大的作用。電子琴所包含的巨量的音樂信息和強(qiáng)大的音樂表現(xiàn)力可以幫助音樂教學(xué)更好地貫徹和落實(shí)素質(zhì)教育,更有效地提高人們的音樂素質(zhì)和能力。目前,市場(chǎng)上的電子琴可謂琳瑯滿目,功能也是越來越完備。以單片機(jī)作為主控核心,設(shè)計(jì)并制作的電子琴系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬
5、件電路簡(jiǎn)單、軟件功能完善、控制系統(tǒng)可靠、性價(jià)比較高等,具有一定的實(shí)用與參考價(jià)值。這就為電子琴的普及提供了方便。二、電子琴設(shè)計(jì)要求本設(shè)計(jì)主要是用AT89C51單片機(jī)為核心控制元件,設(shè)計(jì)一臺(tái)電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有8個(gè)按鍵和1個(gè)復(fù)位按鍵。本系統(tǒng)主要是完成2大功能:音樂自動(dòng)播放、電子琴?gòu)椬?。關(guān)于聲音的處理,使用單片機(jī)C語(yǔ)言,利用定時(shí)器來控制頻率,而每個(gè)音符的符號(hào)只是存在自定義的表中??傊?,本設(shè)計(jì)的電子琴有以下要求:(1)用鍵盤作出電子琴的按鍵,共7個(gè),每鍵代表1個(gè)音符。各音符按照符合電子 琴的按鍵順序排列;(2)達(dá)到電子琴的基本功能,可以
6、用彈奏出簡(jiǎn)單的樂曲;(3)不彈奏時(shí),利用功能鍵可以播放內(nèi)置音樂。三、電子琴設(shè)計(jì)所用設(shè)備及軟件 本設(shè)計(jì)除了需要計(jì)算機(jī),還會(huì)用到三款軟件:作圖軟件Protel99SE、仿真軟件Proteus、編程軟件Keil uVision4。關(guān)于這三種軟件的簡(jiǎn)介如表1所示。表1 軟件簡(jiǎn)介軟件名稱軟件圖標(biāo)主要特點(diǎn)作用備注Protel99SEProtel99SE是PC環(huán)境下以獨(dú)特設(shè)計(jì)管理和協(xié)作技術(shù)為核心的印制電路板設(shè)計(jì)軟件系統(tǒng),是基于Windows 95/98/2000/NT的全32位EDA設(shè)計(jì)系統(tǒng)。它主要采用了SmartDoc技術(shù)、SmartTool技術(shù)、SmartTeam技術(shù)。繪制電路圖和PCB板Proteus
7、Proteus軟件具有其它EDA工具軟件的功能,諸如:原理布圖、PCB自動(dòng)或人工布線、SPICE電路仿真。除此之外還有一些革命性的特點(diǎn):互動(dòng)的電路仿真、仿真處理器及其外圍電路。數(shù)字電路仿真Keil uVision4uVision4在uVision3 IDE的基礎(chǔ)上,增加了更多大眾化的功能:多顯示器和靈活的窗口管理系統(tǒng);系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息;調(diào)試還原視圖創(chuàng)建并保存多個(gè)調(diào)試窗口布局;多項(xiàng)目工作區(qū)簡(jiǎn)化與眾多的項(xiàng)目。編寫程序四、電子琴系統(tǒng)設(shè)計(jì)方案本系統(tǒng)采用AT89C51為主控芯片,因其精度較高,操作比較靈活,輸入電路和輸出電路由芯片來進(jìn)行處理,電路的系統(tǒng)的穩(wěn)定性高,功耗小。其中,輸入
8、電路有8個(gè)獨(dú)立按鍵,通過按鍵隨意按下所要表達(dá)的音符,作為電平送給主體電路,中央處理器通過識(shí)別,解碼輸出音符,在揚(yáng)聲器中發(fā)出有效的聲音。由于需要顯示的信息不多,顯示電路未采用液晶屏顯示,而是使用數(shù)碼管顯示電路負(fù)責(zé)顯示按下的琴鍵所對(duì)應(yīng)的鍵值,這樣既節(jié)省了成本了,又降低了編程難度。時(shí) 鐘復(fù)位電路琴 鍵控制電路音 頻功放電路數(shù)碼管顯示電路 51單片機(jī)圖1 基于51單片機(jī)的電子琴電路的原理框圖如圖1所示基于單片機(jī)AT89C51的電子琴電路,它主要由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時(shí)鐘-復(fù)位電路和電源電路五部分所構(gòu)成。 五、電子琴系統(tǒng)硬件設(shè)計(jì)基于單片機(jī)AT89C51的電子琴電路由琴鍵
9、控制電路、數(shù)碼管顯示電路、音頻功放電路、時(shí)鐘-復(fù)位電路和電源電路五部分所構(gòu)成。琴鍵控制電路采用了8輸入與門芯片CD4068B,收集8個(gè)獨(dú)立按鍵的開關(guān)狀態(tài)信號(hào),并觸發(fā)單片機(jī)的外部中斷來處理;而數(shù)碼管顯示電路負(fù)責(zé)顯示按下的琴鍵所對(duì)應(yīng)的鍵值;同時(shí),音頻功放電路也會(huì)播放琴鍵對(duì)應(yīng)的音調(diào);電源電路為整個(gè)電路提供能源。5.1 琴鍵控制電路琴鍵控制電路作為人機(jī)聯(lián)系的輸入部分,也是間接控制數(shù)碼顯示和音頻功放的重要組成部分。鍵盤按照連接方式可以分為獨(dú)立式和矩陣式鍵盤兩類。5.1.1 矩陣式鍵盤矩陣式(也稱行列式)鍵盤由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上。由于矩陣式鍵盤中行、列線為多鍵共用,各按鍵彼此將相互發(fā)
10、生影響,所以必須將行、列線信號(hào)配合,才能確定閉合鍵位置。相對(duì)于獨(dú)立式鍵盤而言,軟件上編程會(huì)稍微復(fù)雜些。如圖2所示為4X4矩陣式鍵盤電路,由一個(gè)4X4的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)16個(gè)按鍵鍵盤,再結(jié)合芯片74LS20來觸發(fā)中斷。在按鍵數(shù)目較多的場(chǎng)合,要節(jié)省較多的I/O口線。圖2 矩陣式鍵盤電路矩陣中無按鍵按下時(shí),行線為高電平;當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由與此行線相連的列線的電平?jīng)Q定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這是識(shí)別按鍵是否按下的關(guān)鍵所在。5.1.2 獨(dú)立式鍵盤圖3 獨(dú)立式鍵盤電路獨(dú)立式鍵盤的特點(diǎn)是一鍵一線,各鍵相互獨(dú)立,每個(gè)鍵各接一條I/O口線
11、,通過檢測(cè)I/O輸入線的電平狀態(tài),可判斷出被按下的按鍵。顯而易見,這樣電路簡(jiǎn)單,各條檢測(cè)線獨(dú)立,識(shí)別按下按鍵的軟件編寫簡(jiǎn)單。適用于鍵盤按鍵數(shù)目較少的場(chǎng)合,不適用于鍵盤按鍵數(shù)目較多的場(chǎng)合,因?yàn)閷⒄加幂^多的I/O口線。獨(dú)立式鍵盤電路如圖3所示,8個(gè)獨(dú)立按鍵分別對(duì)應(yīng)一個(gè)I/O口線,當(dāng)某一按鍵按下時(shí),對(duì)應(yīng)的檢測(cè)線就變成了低電平,與其它按鍵相連的檢測(cè)線仍為高電平,只需讀入I/O輸入線的狀態(tài),判別哪一條I/O輸入線為低電平,很容易識(shí)別哪個(gè)鍵被按下。同時(shí)采用了8輸入與門芯片CD4068B,收集8個(gè)獨(dú)立按鍵的開關(guān)狀態(tài)信號(hào),并觸發(fā)單片機(jī)的外部中斷來處理,大大提高了單片機(jī)CPU的利用率。5.1.3 方案比較對(duì)于以
12、上兩種電路的的優(yōu)缺點(diǎn)比較如表2所示。由于此次設(shè)計(jì)的琴鍵控制電路需要8個(gè)按鍵,故單純從I/O口線的占用的角度比較,獨(dú)立式需要占用8條I/O口線,而矩陣式卻只需6條。但是從程序編寫的難易程度來看,若使用矩陣鍵盤電路來設(shè)計(jì)會(huì)比獨(dú)立式鍵盤電路難一些,故選擇獨(dú)立式鍵盤電路比較合理。表2 獨(dú)立式和矩陣式的的優(yōu)缺點(diǎn)比較鍵盤類型優(yōu)點(diǎn)缺點(diǎn)獨(dú)立式編程簡(jiǎn)單一鍵一線,占用I/O口線多矩陣式占用I/O口線較少,尤其是在按鍵數(shù)目多的時(shí)候優(yōu)勢(shì)明顯編程比較復(fù)雜5.2 數(shù)碼管顯示電路5.2.1 LED數(shù)碼管顯示原理圖4 八段LED數(shù)碼管結(jié)構(gòu)及外形LED(Light Emitting Diode)發(fā)光二極管縮寫。LED數(shù)碼管是由
13、發(fā)光二極管構(gòu)成的。常見的LED數(shù)碼管為“8”字型的,共計(jì)8段。它由七個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,每一段對(duì)應(yīng)一個(gè)發(fā)光二極管。一般來說分共陽(yáng)極和共陰極兩種接法,如圖4所示為八段LED數(shù)碼管結(jié)構(gòu)及外形。共陽(yáng)極LED數(shù)碼管的發(fā)光二極管的陽(yáng)極連接在一起,公共陽(yáng)極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平時(shí),發(fā)光二極管被點(diǎn)亮,相應(yīng)的段被顯示。反之,共陰極發(fā)光二極管的陰極連在一起,通常公共陰極接地。當(dāng)陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮。 LED數(shù)碼管的a至g七個(gè)發(fā)光二極管因接得電壓不同而導(dǎo)致不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,如表3所示為八段LED數(shù)碼管
14、的字形碼表。表3 八段LED數(shù)碼管的字形碼表顯示字符共陰極共陽(yáng)極顯示字符共陰極共陽(yáng)極03FHC0Hb7CH83H106HF9HC39HC6H258HA4Hd5EHA1H34FHB0HE79H86H466H99HF71H8EH56DH92HH76H89H67DH82HL38HC7H707HF8HP73H8CH87FH80HU3EHC1H967H90H.80H7FHA77H88H5.2.2 LED數(shù)碼管靜態(tài)顯示靜態(tài)顯示方式即無論多少位LED數(shù)碼管,同時(shí)處于顯示狀態(tài)。各位的共陰極(或共陽(yáng)極)連接在一起并接地(或接+5V);每位的段碼線(adp)分別與一個(gè)8位的I/O口鎖存器輸出相連。如果送往各個(gè)LE
15、D數(shù)碼管所顯示字符的段碼一經(jīng)確定,則相應(yīng)I/O口鎖存器鎖存的段碼輸出將維持不變,直到送入另一個(gè)字符的段碼為止。由此可知:靜態(tài)顯示方式的顯示無閃爍,亮度都較高,軟件控制比較容易。另外,在顯示位數(shù)較多的情況下,所需的電流比較大,對(duì)電源的要求也就隨之增高,這時(shí)一般都采用動(dòng)態(tài)顯示方式。如圖5所示為四位七段數(shù)碼管靜態(tài)顯示電路。圖5 四位七段數(shù)碼管靜態(tài)顯示電路5.2.3 LED數(shù)碼管動(dòng)態(tài)顯示靜態(tài)顯示方式就是無論在任何時(shí)刻只有一個(gè)LED數(shù)碼管處于顯示狀態(tài),即單片機(jī)采用“掃描”方式控制各個(gè)數(shù)碼管輪流顯示。在多位LED顯示時(shí),為簡(jiǎn)化硬件電路,通常將所有顯示位的段碼線的相應(yīng)段并聯(lián)在一起,由一個(gè)8位I/O口控制,而
16、各位的共陽(yáng)極或共陰極分別由相應(yīng)的I/O線控制,形成各位的分時(shí)選通。如圖6所示為四位七段數(shù)碼管動(dòng)態(tài)顯示電路。圖6 四位七段數(shù)碼管動(dòng)態(tài)顯示電路動(dòng)態(tài)顯示的優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,顯示器越多,優(yōu)勢(shì)越明顯。缺點(diǎn)是顯示亮度不如靜態(tài)顯示的亮度高。如果“掃描”速率較低,會(huì)出現(xiàn)閃爍現(xiàn)象。5.2.4 方案比較對(duì)于以上兩種數(shù)碼管驅(qū)動(dòng)電路的的優(yōu)缺點(diǎn)比較如表4所示。由于靜態(tài)驅(qū)動(dòng)方式的顯示無閃爍,亮度較高,編程簡(jiǎn)單,加上本次設(shè)計(jì)的數(shù)碼管顯示電路只需要1個(gè)數(shù)碼管,故選擇靜態(tài)驅(qū)動(dòng)方式來顯示數(shù)碼管更為合理。如圖7所示為數(shù)碼管顯示電路,采用靜態(tài)驅(qū)動(dòng)方式和共陽(yáng)極接法,滿足本次設(shè)計(jì)要求。表4 兩種數(shù)碼管驅(qū)動(dòng)電路的的優(yōu)缺點(diǎn)比較驅(qū)動(dòng)方式優(yōu)點(diǎn)
17、缺點(diǎn)靜態(tài)顯示顯示無閃爍,亮度較高,編程簡(jiǎn)單數(shù)碼管越多,所需的電流越大,電源的要求越高動(dòng)態(tài)顯示電路簡(jiǎn)單,數(shù)碼管越多,優(yōu)勢(shì)越明顯不如靜態(tài)顯示的亮度高,可能出現(xiàn)閃爍現(xiàn)象圖7 數(shù)碼管顯示電路圖8 音頻功放電路5.3 音頻功放電路如圖8所示音頻功放電路,它主要由音頻集成功放芯片LM386和揚(yáng)聲器組成。其中,LM386作為一種音頻集成功放,具有自身功耗低、電壓增益可調(diào)整、電源電壓范圍大、外接元件少和諧波失真小等優(yōu)點(diǎn),廣泛應(yīng)用于錄音機(jī)和收音機(jī)之中。電位器Rp是用來調(diào)節(jié)聲音的大小。5.4 時(shí)鐘-復(fù)位電路5.4.1 時(shí)鐘電路時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路
18、有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。圖9 時(shí)鐘電路AT89C51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,圖9是AT89S51內(nèi)部時(shí)鐘方式的電路,C1和C2的典型值通常選擇為30pF,石英晶體常選6MHz或12MHz的。本設(shè)計(jì)采用內(nèi)部時(shí)鐘方式做時(shí)鐘電路。5.4.2 復(fù)位電路單片機(jī)的初始化操作,給復(fù)位腳RST加上大于2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就使AT89C51復(fù)位。這些操作都是由復(fù)位電路來實(shí)現(xiàn)。在單片機(jī)的實(shí)用系統(tǒng)中,一般有兩種復(fù)位操作形式:上
19、電復(fù)位和手動(dòng)復(fù)位。圖10 復(fù)位電路上電復(fù)位在單片機(jī)系統(tǒng)每次通電時(shí)執(zhí)行。上電時(shí),電容C 充電加給RST引腳一個(gè)短的高電平信號(hào),此信號(hào)隨著VCC對(duì)電容C 的充電過程而逐漸回落,即RST引腳上的高電平持續(xù)時(shí)間取決于電容C 充電時(shí)間。為保證系統(tǒng)可靠復(fù)位,RST引腳上的高電平必須維持足夠長(zhǎng)的時(shí)間。手動(dòng)復(fù)位在系統(tǒng)出現(xiàn)操作錯(cuò)誤或程序運(yùn)行出錯(cuò)時(shí)使用。在單片機(jī)系統(tǒng)運(yùn)行過程中,按下復(fù)位鍵,高電平輸入RST引腳,單片機(jī)被強(qiáng)制執(zhí)行復(fù)位操作,系統(tǒng)可以退出錯(cuò)誤運(yùn)行狀態(tài),恢復(fù)正常工作。由于本設(shè)計(jì)的需要,同時(shí)采用這兩種復(fù)位方式,如圖10所示復(fù)位電路。5.5 電源電路當(dāng)今社會(huì)大到超級(jí)計(jì)算機(jī)、小到袖珍計(jì)算器,所有的電子設(shè)備都必須
20、在電源電路的支持下才能正常工作。直流穩(wěn)壓電源在電源技術(shù)中占有十分重要的地位。直流電源電路由降壓變壓器、全波整流、濾波、穩(wěn)壓電路構(gòu)成,其組成結(jié)構(gòu)如圖11所示。圖11 直流電源電路組成結(jié)構(gòu)圖變壓器整流電路濾波電路穩(wěn)壓電路220V50Hz根據(jù)設(shè)計(jì)需要做+5V和+12V直流穩(wěn)壓電源電路,其電路圖如圖12和13所示。交流電壓通過變壓器T1降壓得到,然后由V7V10四個(gè)整流二極管組成的電橋進(jìn)行整流得到直流電壓,再經(jīng)由電解電容和非極性電容構(gòu)成的濾波網(wǎng)絡(luò)和三端穩(wěn)壓器LM7812和LM7805的穩(wěn)壓作用后,分別輸出+12V和+5V的直流電壓。理論計(jì)算如下: 對(duì)A點(diǎn)有:(5-1)的壓降為(5-2)(5-3)由式(
21、5-1)、(5-2)、(5-3)可得:(5-4)圖12 12V轉(zhuǎn)5V電源電路圖若要求將220V交流電壓轉(zhuǎn)換成直流電壓,由式(5-4)可知:變壓器T1的變比為。圖13 220V轉(zhuǎn)12V電源電路圖5.6 整體電路基于單片機(jī)AT89C51的電子琴電路由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時(shí)鐘-復(fù)位電路和電源電路五部分所構(gòu)成。琴鍵控制電路采用了8輸入與門芯片CD4068B,收集8個(gè)獨(dú)立按鍵的開關(guān)狀態(tài)信號(hào),并觸發(fā)單片機(jī)的外部中斷來處理;而數(shù)碼管顯示電路負(fù)責(zé)顯示按下的琴鍵所對(duì)應(yīng)的鍵值;同時(shí),音頻功放電路也會(huì)播放琴鍵對(duì)應(yīng)的音調(diào);電源電路為整個(gè)電路提供能源。整體電路圖見附錄1。六、電子琴系統(tǒng)軟件設(shè)計(jì)系
22、統(tǒng)功能的實(shí)現(xiàn)一般包括硬件部分和軟件部分,一旦硬件確定下來,軟件要實(shí)現(xiàn)的功能也隨之確定。而為使編程思路清晰,應(yīng)先繪制程序流程圖。6.1 系統(tǒng)硬件接口定義系統(tǒng)硬件接口定義如表5所示。表5 系統(tǒng)硬件接口定義引腳號(hào)引腳名接口說明備注3932P0.0P0.7數(shù)碼管與單片機(jī)通信口18P1.0P1.7獨(dú)立按鍵接口12INT0外部中斷源輸入端10P3.0控制蜂鳴器圖14 主函數(shù)流程圖開始數(shù)碼管顯示初始化音頻處理6.2 主函數(shù)主函數(shù)流程圖如圖14所示。利用模塊化的思想,主函數(shù)只執(zhí)行初始化函數(shù)、音頻處理函數(shù)和數(shù)碼管顯示函數(shù)。另外,鍵碼的識(shí)別與刷新是通過中斷函數(shù)來完成。void main( )Init( );whi
23、le(1)初始化開始結(jié)束圖15 初始化流程圖關(guān)閉數(shù)碼管外部中斷邊沿觸發(fā)允許外部中斷開總中斷關(guān)閉定時(shí)器允許定時(shí)器中斷定時(shí)器工作方式Sound_Player();/音頻處理函數(shù)LED_Display();/數(shù)碼管顯示鍵值6.3 初始化函數(shù)初始化的流程框圖如圖15所示。該函數(shù)對(duì)所需的I/O口、外部中斷0、定時(shí)器0以及數(shù)碼管進(jìn)行初始化配置。 void Init(void)P0 = 0xff;/先將P0口置為1,即關(guān)閉數(shù)碼管Speaker = 0;IT0 = 1;/外部中斷0邊沿觸發(fā)EX0 = 1;/外部中斷0允許TMOD = 0x01;/定時(shí)器方式1ET0 = 1;/定時(shí)器0中斷允許TR0 = 0;/
24、關(guān)定時(shí)器0EA = 1;/開總中斷YNN執(zhí)行代碼1Y功能鍵鍵碼?數(shù)碼顯示開始結(jié)束音調(diào)鍵鍵碼?圖16 數(shù)碼顯示流程圖執(zhí)行代碼2 6.4 數(shù)碼管顯示函數(shù)數(shù)碼顯示的流程框圖如圖16所示。此函數(shù)根據(jù)鍵值掃描函數(shù)讀取的鍵碼,結(jié)合數(shù)碼管顯示出來。若判斷是音調(diào)鍵將會(huì)顯示數(shù)字17其中之一;若判斷是功能鍵將會(huì)顯示字母A、b、C其中之一。void LED_Display(void)if(Keycode>0 && Keycode<8)P0 = tableKeycode;/DoSi七個(gè)音調(diào)鍵分別顯示17else if(Keycode = 8)P0 = tableTime + 9;/特殊功能
25、鍵分別顯示A、b、CTR0 = 0; /關(guān)定時(shí)器06.5 中斷函數(shù)中斷函數(shù)用到了外部中斷和定時(shí)器中斷。鍵盤中斷的流程框圖如圖17所示,當(dāng)按鍵按下時(shí),外部信號(hào)觸發(fā)外部中斷,執(zhí)行鍵值掃描函數(shù),讀取對(duì)應(yīng)的鍵值。定時(shí)中斷的流程框圖如圖18所示,定時(shí)器溢出中斷后,進(jìn)行重裝載初值,同時(shí)執(zhí)行相應(yīng)的音頻控制操作。鍵盤中斷開始鍵值掃描圖17 鍵盤中斷流程圖結(jié)束重裝初值定時(shí)中斷開始結(jié)束圖18 定時(shí)中斷流程圖P3.0取反6.6 鍵值掃描函數(shù)圖19 按鍵被按下時(shí)電壓的變化由于本設(shè)計(jì)采用的是接觸開關(guān)式按鍵,故不可避免存在機(jī)械抖動(dòng)。按鍵被按下是,其觸點(diǎn)電壓變化過程如圖19所示。這種抖動(dòng)會(huì)使系統(tǒng)處于不穩(wěn)定狀態(tài),故需要進(jìn)行消
26、抖處理。抖動(dòng)時(shí)間的長(zhǎng)短和按鍵的機(jī)械特性有關(guān),一般為510ms。通常手動(dòng)按下鍵然后立即釋放,這個(gè)操作中穩(wěn)定閉合的時(shí)間超過20ms,因此單片機(jī)在檢測(cè)按鍵是否按下時(shí)都需要加上去抖動(dòng)操作,有專門的去抖動(dòng)電路或則芯片,但同用軟件延時(shí)的方法也能輕易解決抖動(dòng)問題,沒必要添加多余的硬件。本設(shè)計(jì)是用軟件消抖方法編寫一個(gè)消抖程序。當(dāng)按鍵按下去后,首先對(duì)其進(jìn)行連續(xù)兩次取樣,如果兩次都為低電平,則輸出低電平;如果其中有一次高電平,則輸出高電平。鍵盤的每一行通過一個(gè)上拉電阻接高電平,當(dāng)按鍵按下時(shí),對(duì)應(yīng)的I/O口線被拉低。如表6所示按鍵編碼關(guān)系表。鍵值掃描函數(shù)的流程圖如圖20所示。表6 按鍵編碼關(guān)系表按鍵名稱鍵碼(十六進(jìn)
27、制)按鍵名稱鍵碼(十六進(jìn)制)K10xfeK50xefK20xfdK60xdfK30xfbK70xbfK40xf7K80x7f按鍵掃描開始有按鍵按下?有按鍵按下?按鍵釋放?執(zhí)行相應(yīng)代碼延時(shí)10ms結(jié)束NYYYNN圖20 鍵值掃描流程圖void Key_Scan(void)uint key;key = P1; /讀取P1口狀態(tài)switch(key)/鍵值 case 0xfe: /DoDelayms(10);/消抖if(key = 0xfe)Keycode = 1;while(P1 != 0xFF); /等待按鍵釋放break; 6.7 音頻處理函數(shù)樂曲由一些不同的音階構(gòu)成,而每個(gè)音階對(duì)應(yīng)著不同的頻
28、率,即利用單片機(jī)的定時(shí)器來產(chǎn)生所需要方波頻率信號(hào)的組合,可構(gòu)成所想要的樂曲。本系統(tǒng)設(shè)計(jì)單片機(jī)配有12MHZ晶振,利用AT89C51的內(nèi)部定時(shí)器使其工作定時(shí)器模式的工作方式1下,其對(duì)應(yīng)的定時(shí)器初值計(jì)算公式為:式中T為定時(shí)時(shí)間,是所需頻率的倒數(shù)。如表7所示為所需頻率對(duì)應(yīng)的定時(shí)器初值表(簡(jiǎn)稱頻率-初值表)。如圖21所示音頻處理函數(shù)的流程圖。表7 頻率-初值表音調(diào)簡(jiǎn)譜(鍵值)頻率(Hz)定時(shí)器初值(16進(jìn)制)備注Do15230FBE9H此處的定時(shí)器初值是在工作方式1和12MHZ晶振時(shí)算得的Re25870FC5FHMi36590FCC1HFa46980FCEFHSo57540FD45HLa68800FD
29、92HSi79880FDD6Hvoid Sound_Player(void)if(Flag = 0) /DoSi七個(gè)音調(diào)鍵YNN單個(gè)音調(diào)播放Y功能鍵鍵碼?音頻處理開始結(jié)束音調(diào)鍵鍵碼?圖21 音頻處理流程圖樂曲播放Flag = 1; switch(Keycode) case 1: /DoTH0code = 0XFB;TL0code = 0XE9;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0Speaker = Speaker;break; 七、電子琴系統(tǒng)調(diào)試由于沒有硬件設(shè)備,所以無法進(jìn)行硬件調(diào)試,但這并不妨礙軟件調(diào)試。利用仿真軟件Proteus和
30、編程軟件Keil uVision4進(jìn)行調(diào)試程序。7.1 調(diào)試工具Proteus軟件是英國(guó)Labcenter Electronics公司研發(fā)的EDA工具軟件。它是一個(gè)集模擬電路、數(shù)字電路、模/數(shù)混合電路以及多種微控制器系統(tǒng)為一體的系統(tǒng)設(shè)計(jì)和仿真平臺(tái)。是目前同類軟件中最先進(jìn)、最完整的電子類仿真平臺(tái)之一。它真正實(shí)現(xiàn)了在計(jì)算機(jī)上完成從原理圖、電路分析與仿真、單片機(jī)代碼調(diào)試與仿真、系統(tǒng)測(cè)試與功能驗(yàn)證到PCB板生成的完整的電子產(chǎn)品研發(fā)過程。最新的Keil uVision4 IDE,旨在提高開發(fā)人員的生產(chǎn)力,實(shí)現(xiàn)更快,更有效的程序開發(fā)。Keil uVision4引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任
31、何地方,包括支持多顯示器窗口。Keil uVision4在Keil uVision3 IDE的基礎(chǔ)上,增加了更多大眾化的功能:多顯示器和靈活的窗口管理系統(tǒng);系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息;調(diào)試還原視圖創(chuàng)建并保存多個(gè)調(diào)試窗口布局;多項(xiàng)目工作區(qū)簡(jiǎn)化與眾多的項(xiàng)目。7.2 調(diào)試結(jié)果利用Proteus對(duì)電路進(jìn)行仿真分析,電子琴電路的仿真電路圖如圖22所示。由于音頻功放電路采用了LM386芯片,使得音頻放大更加的穩(wěn)定和沒有雜音,進(jìn)一步達(dá)到了實(shí)驗(yàn)效果。但也一定瑕疵,按鍵按下后,延遲一會(huì)才有聲音。調(diào)試結(jié)果與設(shè)計(jì)的基本一致,如表8所示。表8 調(diào)試結(jié)果按鍵編號(hào)發(fā)聲音調(diào)數(shù)碼顯示內(nèi)容備注S1Do1S2Re2S
32、3Mi3S4Fa4S5So5S6La6S7Si7S8播放樂曲13中之一A或b或C按8鍵切換播放樂曲13圖22 電子琴電路仿真圖7.3 電子琴設(shè)計(jì)中的問題及解決方法電子琴的設(shè)計(jì)并非一帆風(fēng)順,在這期間遇到了很多問題,下面談幾個(gè)關(guān)鍵的問題。首先是數(shù)碼管顯示亂碼的問題,原本以為是數(shù)碼管字形碼表的代碼有錯(cuò),檢查幾遍發(fā)現(xiàn)代碼沒錯(cuò),后來結(jié)合硬件圖一看,才知道硬件圖中數(shù)碼管是共陽(yáng)極接法,軟件中的數(shù)碼管字形碼表是共陰極的。其二是按鍵引入中斷檢測(cè)時(shí)遇到的問題,要求8個(gè)按鍵任意鍵按都觸發(fā)外部中斷0,結(jié)果不經(jīng)思索就選用了一塊8輸入或門芯片,導(dǎo)致怎么按鍵盤都無法進(jìn)入中斷函數(shù),于是懷疑是程序有錯(cuò),浪費(fèi)了很多時(shí)間,最終發(fā)現(xiàn)
33、是硬件邏輯錯(cuò)誤,應(yīng)該用與門才對(duì)。其三是揚(yáng)聲器發(fā)出的音調(diào)不對(duì),甚至沒有聲音,這個(gè)問題主要是功放模塊沒有與揚(yáng)聲器共地。八、電子琴設(shè)計(jì)總結(jié) 在電子音樂領(lǐng)域,電子音調(diào)作為現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,它在現(xiàn)代音樂中扮演著重要的角色。目前,由于電子音樂的普及,電子琴就是一種新型的電子樂器。本設(shè)計(jì)基于單片機(jī)AT89C51的電子琴電路由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時(shí)鐘-復(fù)位電路和電源電路五部分所構(gòu)成。琴鍵控制電路采用了8輸入與門芯片CD4068B,收集8個(gè)獨(dú)立按鍵的開關(guān)狀態(tài)信號(hào),并觸發(fā)單片機(jī)的外部中斷來處理;而數(shù)碼管顯示電路負(fù)責(zé)顯示按下的琴鍵所對(duì)應(yīng)的鍵值;同時(shí),音頻功放電路也會(huì)播放琴鍵對(duì)應(yīng)的
34、音調(diào);電源電路為整個(gè)電路提供能源。電子琴的設(shè)計(jì)并非一帆風(fēng)順,在這期間遇到了很多問題,下面談幾個(gè)關(guān)鍵的問題。首先是數(shù)碼管顯示亂碼的問題,原本以為是數(shù)碼管字形碼表的代碼有錯(cuò),檢查幾遍發(fā)現(xiàn)代碼沒錯(cuò),后來結(jié)合硬件圖一看,才知道硬件圖中數(shù)碼管是共陽(yáng)極接法,軟件中的數(shù)碼管字形碼表是共陰極的。其二是按鍵引入中斷檢測(cè)時(shí)遇到的問題,要求8個(gè)按鍵任意鍵按都觸發(fā)外部中斷0,結(jié)果不經(jīng)思索就選用了一塊8輸入或門芯片,導(dǎo)致怎么按鍵盤都無法進(jìn)入中斷函數(shù),于是懷疑是程序有錯(cuò),浪費(fèi)了很多時(shí)間,最終發(fā)現(xiàn)是硬件邏輯錯(cuò)誤,應(yīng)該用與門才對(duì)。其三是揚(yáng)聲器發(fā)出的音調(diào)不對(duì),甚至沒有聲音,這個(gè)問題主要是功放模塊沒有與揚(yáng)聲器共地。通過這次課程設(shè)
35、計(jì),感覺收獲頗多。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作,基本掌握了Protel99SE原理圖的方法以及怎么利用Proteus進(jìn)行數(shù)字電路仿真。除此之外,對(duì)51系單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路引腳和連接方法,諸如LED數(shù)碼管、鍵盤等等。在軟件方面,通過對(duì)外部中斷、定時(shí)器/計(jì)數(shù)器、I/O的使用,使得C語(yǔ)言編程能力也有了較大的進(jìn)步。26參考文獻(xiàn)1袁東.51單片機(jī)應(yīng)用開發(fā)實(shí)戰(zhàn)手冊(cè)M.北京:電子工業(yè)出版社,2011.2沈紅衛(wèi).基于單片機(jī)的智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)M.北京:電子工業(yè)出版社,2005.3蘇麗萍.電子技術(shù)基礎(chǔ)M.西安:西安電子科技大學(xué)出版社,200
36、2.4曾屹,彭楚武.單片機(jī)原理與應(yīng)用(第2版)M.長(zhǎng)沙:中南大學(xué)出版社,2009.5林立.單片機(jī)原理及應(yīng)用基于Proteus和Keil CM.北京:電子工業(yè)出版社,2009.6彭偉.單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例M.北京:電子工業(yè)出版社,2009.7顧濱,趙偉軍,諸杭.Protel99SE實(shí)用教程(第3版)M.北京:人民郵電出版社,2013.8王為青,程國(guó)剛.單片機(jī)Keil Cx51應(yīng)用開發(fā)技術(shù).M.北京:人民郵電出版社,2007.9單丹,馬淑云.基于AT89C51單片機(jī)電子琴的設(shè)計(jì)J.中國(guó)高新技術(shù)企業(yè),2002,(10), 6-7.10石鑫.基于89C51單片機(jī)簡(jiǎn)易電子琴的設(shè)計(jì)J.農(nóng)業(yè)裝備
37、技術(shù),2010,(5),59-61.11任肖麗,王驥.基于STC89C51單片機(jī)的電子琴設(shè)計(jì)J.電子元器件應(yīng)用,2010,(7), 27-31.12周潤(rùn)景.Proteus入門實(shí)用教程M.北京:機(jī)械工業(yè)出版社,2007.13 http:/ .14 .附錄1:電子琴系統(tǒng)原理圖附錄2:源程序#include<reg51.h>#define uint unsigned int #define uchar unsigned char void Init(void);/初始化void Key_Scan(void);/鍵值掃描void Delayms(uint z);/延時(shí)void LED_Di
38、splay(void);/數(shù)碼顯示void Sound_Player(void);/音頻處理uint Keycode;/鍵值uint Time = 0; uint Flag = 0;uint TH0code,TL0code; sbit Speaker = P30; /揚(yáng)聲器控制引腳uint Num = 0;uchar code table= /數(shù)碼管共陰碼表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code Music1_Tab= /曲譜1碼表0xc0,0xf9,0
39、xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uint code Music2_Tab=/曲譜2碼表64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178;uchar code Music3_Tab= /曲譜3碼表0x64,0x42,0x62,0x98,0x74,0x92,0x72,0x68,0x64,0x22,0x32,0x44,0x32,0x22,0x3c,0x64
40、,0x42,0x62,0x94,0x04,0x82,0x74,0x94,0x68,0x64,0x32,0x42,0x54,0x04,0x12,0x2c,0x74,0x94,0x98,0x84,0x72,0x82,0x98,0x72,0x82,0x92,0x72,0x72,0x62,0x42,0x22,0x3c,0x64,0x42,0x62,0x94,0x04,0x82,0x74,0x94,0x68,0x64,0x32,0x42,0x54,0x04,0x12,0x2c,0x00; /* 主函數(shù)*/void main()Init();while(1)Sound_Player();/音頻處理函數(shù)LE
41、D_Display();/數(shù)碼管顯示鍵值/* 初始化函數(shù)*/void Init(void)P0 = 0xff;/先將P0口置為1Speaker = 0;IT0 = 1;/外部中斷0邊沿觸發(fā)EX0 = 1;/外部中斷0允許TMOD = 0x01;/定時(shí)器方式1ET0 = 1;/定時(shí)器0中斷允許TR0 = 0;/關(guān)定時(shí)器0EA = 1;/開總中斷/* 音頻處理函數(shù)*/void Sound_Player(void)if(Flag = 0) /DoSi七個(gè)音調(diào)鍵Flag = 1; switch(Keycode) case 1: /DoTH0code = 0XFB;TL0code = 0XE9;TH0
42、= TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0Speaker = Speaker;break; case 2: /ReTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0 Speaker = Speaker;break; case 3: /MiTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0 Speaker = Speaker;break; c
43、ase 4: /FaTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code;TR0 = 1; /開定時(shí)器0 Speaker = Speaker;break; case 5: /SoTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0Speaker = Speaker;break; case 6: /LaTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code;
44、 TR0 = 1; /開定時(shí)器0 Speaker = Speaker;break; case 7: /SiTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0 Speaker = Speaker;break;default:break;else if(Keycode =8) /特殊功能鍵 switch(Time) case 1: /播放第一首樂曲TH0code = Music1_TabNum+;TL0code = Music1_TabNum+;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0if(Num = 15) Num = 0;Speaker = Speaker;break; case 2: /播放第二首樂曲TH0code = Music2_TabNum/256;TL0code = Music2_TabNum%256;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時(shí)器0Nu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024塔式太陽(yáng)能光熱發(fā)電站鏡場(chǎng)控制系統(tǒng)技術(shù)規(guī)范
- 2025年阿里貨運(yùn)資格證模擬考試
- 2025年南京貨車資格證答案
- 墊資工程施工合同協(xié)議書
- 小商鋪房屋租賃合同
- 2025年高中化學(xué)新教材同步 必修第一冊(cè) 第2章 第2節(jié) 第1課時(shí) 氯氣的性質(zhì)
- 反擔(dān)保 保證合同范本
- Α-烯基磺酸鹽(AOS9235)競(jìng)爭(zhēng)策略分析報(bào)告
- 印布油墨戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 鋅鎳蓄電池市場(chǎng)分析及競(jìng)爭(zhēng)策略分析報(bào)告
- 生產(chǎn)流水線的規(guī)劃方案
- 小針刀療法教學(xué)課件
- 打造寫生基地方案
- 寫作:廣告詞-【中職專用】高二語(yǔ)文高效課堂(高教版2023·職業(yè)模塊)
- 爆發(fā)性心肌炎護(hù)理查房課件
- 銷售人員人才畫像
- (完整版)建筑工程技術(shù)畢業(yè)論文
- 鑫宇鋅合金模具設(shè)計(jì)標(biāo)準(zhǔn)
- 整理我的小書桌(課件)小學(xué)勞動(dòng)二年級(jí)通用版
- 森林撫育施工組織設(shè)計(jì)
- 切削刀具及其材料課件
評(píng)論
0/150
提交評(píng)論