基于51單片機的電子琴設(shè)計27頁_第1頁
基于51單片機的電子琴設(shè)計27頁_第2頁
基于51單片機的電子琴設(shè)計27頁_第3頁
基于51單片機的電子琴設(shè)計27頁_第4頁
基于51單片機的電子琴設(shè)計27頁_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄一、設(shè)計電子琴的作用與目的1二、電子琴設(shè)計要求1三、電子琴設(shè)計所用設(shè)備及軟件2四、電子琴系統(tǒng)設(shè)計方案2五、電子琴系統(tǒng)硬件設(shè)計35.1 琴鍵控制電路35.1.1 矩陣式鍵盤35.1.2 獨立式鍵盤45.1.3 方案比較45.2 數(shù)碼管顯示電路55.2.1 LED數(shù)碼管顯示原理55.2.2 LED數(shù)碼管靜態(tài)顯示55.2.3 LED數(shù)碼管動態(tài)顯示65.2.4 方案比較75.3 音頻功放電路75.4 時鐘-復(fù)位電路85.4.1 時鐘電路85.4.2 復(fù)位電路85.5 電源電路95.6 整體電路10六、電子琴系統(tǒng)軟件設(shè)計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è)計調(diào)試147.1 調(diào)試工具147.2 調(diào)試結(jié)果147.3 電子琴設(shè)計中的問題及解決方法15八、電子琴設(shè)計總結(jié)15參考文獻17附錄1:電子琴系統(tǒng)原理圖18附錄2:源程序19基于51單片機的電子琴設(shè)計基于51單片機的電子琴設(shè)計在電子音樂領(lǐng)域,電子音調(diào)作為現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,它在現(xiàn)代音樂中扮演著重要的角色。目前,由于電子音樂的普及,電子音調(diào)合成器(合成器實際上就是一臺聲音的頻率合成儀,可以制作各種聲音,改變各種音色)可以解決相當(dāng)一部分的歌唱及舞廳的伴奏問題。其中,電子琴就是一種新型的鍵盤電子

3、樂器。一、設(shè)計電子琴的作用與目的音樂教育是學(xué)校美育的主要途徑和最重要內(nèi)容,它在陶冶情操、提高素養(yǎng)、開發(fā)智力,特別是在培養(yǎng)學(xué)生創(chuàng)新精神和實踐能力方面發(fā)揮著獨特的作用。近年來,我國音樂教育在理論與實踐上都取得了有目共睹的成績,探索并形成了具有中國特色的、較為完整的音樂教育教學(xué)體系。但我國音樂教育的改革力度離素質(zhì)教育發(fā)展的要求還存在一定距離。如今,電子琴作為電子時代的新產(chǎn)物以其獨特的功能和巨大的兼容性被人們廣泛的接受和推崇。而在課堂教學(xué)方面,它擁有其它樂器無法比擬的兩個瞬間:瞬間多元素思維的特殊的彈奏方法;瞬間多聲部(包括多音色 )展示的樂隊音響效果的特點。結(jié)合電子琴自身強大的功能及獨特的優(yōu)點來進行

4、音樂教育的實施,這樣就應(yīng)該大力推廣電子琴進入音樂教室,讓電子琴教學(xué)在音樂教育中發(fā)揮巨大的作用?,F(xiàn)代樂器中,電子琴是高新科技在音樂領(lǐng)域的一個代表,體現(xiàn)了人類電子技術(shù)和藝術(shù)的完美結(jié)合。電子琴自動伴奏的穩(wěn)定性、準確性,以及鮮明的強弱規(guī)律、隨人設(shè)置的速度要求,都更便于人們由易到難、深入淺出的準確掌握歌曲節(jié)奏和樂曲風(fēng)格,對其節(jié)奏的穩(wěn)定性和準確性訓(xùn)練能起到非常大的作用。電子琴所包含的巨量的音樂信息和強大的音樂表現(xiàn)力可以幫助音樂教學(xué)更好地貫徹和落實素質(zhì)教育,更有效地提高人們的音樂素質(zhì)和能力。目前,市場上的電子琴可謂琳瑯滿目,功能也是越來越完備。以單片機作為主控核心,設(shè)計并制作的電子琴系統(tǒng)運行穩(wěn)定,其優(yōu)點是硬

5、件電路簡單、軟件功能完善、控制系統(tǒng)可靠、性價比較高等,具有一定的實用與參考價值。這就為電子琴的普及提供了方便。二、電子琴設(shè)計要求本設(shè)計主要是用AT89C51單片機為核心控制元件,設(shè)計一臺電子琴。以單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有8個按鍵和1個復(fù)位按鍵。本系統(tǒng)主要是完成2大功能:音樂自動播放、電子琴彈奏。關(guān)于聲音的處理,使用單片機C語言,利用定時器來控制頻率,而每個音符的符號只是存在自定義的表中。總之,本設(shè)計的電子琴有以下要求:(1)用鍵盤作出電子琴的按鍵,共7個,每鍵代表1個音符。各音符按照符合電子 琴的按鍵順序排列;(2)達到電子琴的基本功能,可以

6、用彈奏出簡單的樂曲;(3)不彈奏時,利用功能鍵可以播放內(nèi)置音樂。三、電子琴設(shè)計所用設(shè)備及軟件 本設(shè)計除了需要計算機,還會用到三款軟件:作圖軟件Protel99SE、仿真軟件Proteus、編程軟件Keil uVision4。關(guān)于這三種軟件的簡介如表1所示。表1 軟件簡介軟件名稱軟件圖標(biāo)主要特點作用備注Protel99SEProtel99SE是PC環(huán)境下以獨特設(shè)計管理和協(xié)作技術(shù)為核心的印制電路板設(shè)計軟件系統(tǒng),是基于Windows 95/98/2000/NT的全32位EDA設(shè)計系統(tǒng)。它主要采用了SmartDoc技術(shù)、SmartTool技術(shù)、SmartTeam技術(shù)。繪制電路圖和PCB板Proteus

7、Proteus軟件具有其它EDA工具軟件的功能,諸如:原理布圖、PCB自動或人工布線、SPICE電路仿真。除此之外還有一些革命性的特點:互動的電路仿真、仿真處理器及其外圍電路。數(shù)字電路仿真Keil uVision4uVision4在uVision3 IDE的基礎(chǔ)上,增加了更多大眾化的功能:多顯示器和靈活的窗口管理系統(tǒng);系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息;調(diào)試還原視圖創(chuàng)建并保存多個調(diào)試窗口布局;多項目工作區(qū)簡化與眾多的項目。編寫程序四、電子琴系統(tǒng)設(shè)計方案本系統(tǒng)采用AT89C51為主控芯片,因其精度較高,操作比較靈活,輸入電路和輸出電路由芯片來進行處理,電路的系統(tǒng)的穩(wěn)定性高,功耗小。其中,輸入

8、電路有8個獨立按鍵,通過按鍵隨意按下所要表達的音符,作為電平送給主體電路,中央處理器通過識別,解碼輸出音符,在揚聲器中發(fā)出有效的聲音。由于需要顯示的信息不多,顯示電路未采用液晶屏顯示,而是使用數(shù)碼管顯示電路負責(zé)顯示按下的琴鍵所對應(yīng)的鍵值,這樣既節(jié)省了成本了,又降低了編程難度。時 鐘復(fù)位電路琴 鍵控制電路音 頻功放電路數(shù)碼管顯示電路 51單片機圖1 基于51單片機的電子琴電路的原理框圖如圖1所示基于單片機AT89C51的電子琴電路,它主要由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時鐘-復(fù)位電路和電源電路五部分所構(gòu)成。 五、電子琴系統(tǒng)硬件設(shè)計基于單片機AT89C51的電子琴電路由琴鍵

9、控制電路、數(shù)碼管顯示電路、音頻功放電路、時鐘-復(fù)位電路和電源電路五部分所構(gòu)成。琴鍵控制電路采用了8輸入與門芯片CD4068B,收集8個獨立按鍵的開關(guān)狀態(tài)信號,并觸發(fā)單片機的外部中斷來處理;而數(shù)碼管顯示電路負責(zé)顯示按下的琴鍵所對應(yīng)的鍵值;同時,音頻功放電路也會播放琴鍵對應(yīng)的音調(diào);電源電路為整個電路提供能源。5.1 琴鍵控制電路琴鍵控制電路作為人機聯(lián)系的輸入部分,也是間接控制數(shù)碼顯示和音頻功放的重要組成部分。鍵盤按照連接方式可以分為獨立式和矩陣式鍵盤兩類。5.1.1 矩陣式鍵盤矩陣式(也稱行列式)鍵盤由行線和列線組成,按鍵位于行、列的交叉點上。由于矩陣式鍵盤中行、列線為多鍵共用,各按鍵彼此將相互發(fā)

10、生影響,所以必須將行、列線信號配合,才能確定閉合鍵位置。相對于獨立式鍵盤而言,軟件上編程會稍微復(fù)雜些。如圖2所示為4X4矩陣式鍵盤電路,由一個4X4的行、列結(jié)構(gòu)可以構(gòu)成一個16個按鍵鍵盤,再結(jié)合芯片74LS20來觸發(fā)中斷。在按鍵數(shù)目較多的場合,要節(jié)省較多的I/O口線。圖2 矩陣式鍵盤電路矩陣中無按鍵按下時,行線為高電平;當(dāng)有按鍵按下時,行線電平狀態(tài)將由與此行線相連的列線的電平?jīng)Q定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這是識別按鍵是否按下的關(guān)鍵所在。5.1.2 獨立式鍵盤圖3 獨立式鍵盤電路獨立式鍵盤的特點是一鍵一線,各鍵相互獨立,每個鍵各接一條I/O口線

11、,通過檢測I/O輸入線的電平狀態(tài),可判斷出被按下的按鍵。顯而易見,這樣電路簡單,各條檢測線獨立,識別按下按鍵的軟件編寫簡單。適用于鍵盤按鍵數(shù)目較少的場合,不適用于鍵盤按鍵數(shù)目較多的場合,因為將占用較多的I/O口線。獨立式鍵盤電路如圖3所示,8個獨立按鍵分別對應(yīng)一個I/O口線,當(dāng)某一按鍵按下時,對應(yīng)的檢測線就變成了低電平,與其它按鍵相連的檢測線仍為高電平,只需讀入I/O輸入線的狀態(tài),判別哪一條I/O輸入線為低電平,很容易識別哪個鍵被按下。同時采用了8輸入與門芯片CD4068B,收集8個獨立按鍵的開關(guān)狀態(tài)信號,并觸發(fā)單片機的外部中斷來處理,大大提高了單片機CPU的利用率。5.1.3 方案比較對于以

12、上兩種電路的的優(yōu)缺點比較如表2所示。由于此次設(shè)計的琴鍵控制電路需要8個按鍵,故單純從I/O口線的占用的角度比較,獨立式需要占用8條I/O口線,而矩陣式卻只需6條。但是從程序編寫的難易程度來看,若使用矩陣鍵盤電路來設(shè)計會比獨立式鍵盤電路難一些,故選擇獨立式鍵盤電路比較合理。表2 獨立式和矩陣式的的優(yōu)缺點比較鍵盤類型優(yōu)點缺點獨立式編程簡單一鍵一線,占用I/O口線多矩陣式占用I/O口線較少,尤其是在按鍵數(shù)目多的時候優(yōu)勢明顯編程比較復(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”字型的,共計8段。它由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,每一段對應(yīng)一個發(fā)光二極管。一般來說分共陽極和共陰極兩種接法,如圖4所示為八段LED數(shù)碼管結(jié)構(gòu)及外形。共陽極LED數(shù)碼管的發(fā)光二極管的陽極連接在一起,公共陽極接正電壓,當(dāng)某個發(fā)光二極管的陰極接低電平時,發(fā)光二極管被點亮,相應(yīng)的段被顯示。反之,共陰極發(fā)光二極管的陰極連在一起,通常公共陰極接地。當(dāng)陽極為高電平時,發(fā)光二極管點亮。   LED數(shù)碼管的a至g七個發(fā)光二極管因接得電壓不同而導(dǎo)致不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,如表3所示為八段LED數(shù)碼管

14、的字形碼表。表3 八段LED數(shù)碼管的字形碼表顯示字符共陰極共陽極顯示字符共陰極共陽極03FHC0Hb7CH83H106HF9HC39HC6H258HA4Hd5EHA1H34FHB0HE79H86H466H99HF71H8EH56DH92HH76H89H67DH82HL38HC7H707HF8HP73H8CH87FH80HU3EHC1H967H90H.80H7FHA77H88H5.2.2 LED數(shù)碼管靜態(tài)顯示靜態(tài)顯示方式即無論多少位LED數(shù)碼管,同時處于顯示狀態(tài)。各位的共陰極(或共陽極)連接在一起并接地(或接+5V);每位的段碼線(adp)分別與一個8位的I/O口鎖存器輸出相連。如果送往各個LE

15、D數(shù)碼管所顯示字符的段碼一經(jīng)確定,則相應(yīng)I/O口鎖存器鎖存的段碼輸出將維持不變,直到送入另一個字符的段碼為止。由此可知:靜態(tài)顯示方式的顯示無閃爍,亮度都較高,軟件控制比較容易。另外,在顯示位數(shù)較多的情況下,所需的電流比較大,對電源的要求也就隨之增高,這時一般都采用動態(tài)顯示方式。如圖5所示為四位七段數(shù)碼管靜態(tài)顯示電路。圖5 四位七段數(shù)碼管靜態(tài)顯示電路5.2.3 LED數(shù)碼管動態(tài)顯示靜態(tài)顯示方式就是無論在任何時刻只有一個LED數(shù)碼管處于顯示狀態(tài),即單片機采用“掃描”方式控制各個數(shù)碼管輪流顯示。在多位LED顯示時,為簡化硬件電路,通常將所有顯示位的段碼線的相應(yīng)段并聯(lián)在一起,由一個8位I/O口控制,而

16、各位的共陽極或共陰極分別由相應(yīng)的I/O線控制,形成各位的分時選通。如圖6所示為四位七段數(shù)碼管動態(tài)顯示電路。圖6 四位七段數(shù)碼管動態(tài)顯示電路動態(tài)顯示的優(yōu)點是硬件電路簡單,顯示器越多,優(yōu)勢越明顯。缺點是顯示亮度不如靜態(tài)顯示的亮度高。如果“掃描”速率較低,會出現(xiàn)閃爍現(xiàn)象。5.2.4 方案比較對于以上兩種數(shù)碼管驅(qū)動電路的的優(yōu)缺點比較如表4所示。由于靜態(tài)驅(qū)動方式的顯示無閃爍,亮度較高,編程簡單,加上本次設(shè)計的數(shù)碼管顯示電路只需要1個數(shù)碼管,故選擇靜態(tài)驅(qū)動方式來顯示數(shù)碼管更為合理。如圖7所示為數(shù)碼管顯示電路,采用靜態(tài)驅(qū)動方式和共陽極接法,滿足本次設(shè)計要求。表4 兩種數(shù)碼管驅(qū)動電路的的優(yōu)缺點比較驅(qū)動方式優(yōu)點

17、缺點靜態(tài)顯示顯示無閃爍,亮度較高,編程簡單數(shù)碼管越多,所需的電流越大,電源的要求越高動態(tài)顯示電路簡單,數(shù)碼管越多,優(yōu)勢越明顯不如靜態(tài)顯示的亮度高,可能出現(xiàn)閃爍現(xiàn)象圖7 數(shù)碼管顯示電路圖8 音頻功放電路5.3 音頻功放電路如圖8所示音頻功放電路,它主要由音頻集成功放芯片LM386和揚聲器組成。其中,LM386作為一種音頻集成功放,具有自身功耗低、電壓增益可調(diào)整、電源電壓范圍大、外接元件少和諧波失真小等優(yōu)點,廣泛應(yīng)用于錄音機和收音機之中。電位器Rp是用來調(diào)節(jié)聲音的大小。5.4 時鐘-復(fù)位電路5.4.1 時鐘電路時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。常用的時鐘電路

18、有兩種方式,一種是內(nèi)部時鐘方式,另一種是外部時鐘方式。圖9 時鐘電路AT89C51內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體振蕩器和微調(diào)電容,構(gòu)成一個穩(wěn)定的自激振蕩器,圖9是AT89S51內(nèi)部時鐘方式的電路,C1和C2的典型值通常選擇為30pF,石英晶體常選6MHz或12MHz的。本設(shè)計采用內(nèi)部時鐘方式做時鐘電路。5.4.2 復(fù)位電路單片機的初始化操作,給復(fù)位腳RST加上大于2個機器周期(即24個時鐘振蕩周期)的高電平就使AT89C51復(fù)位。這些操作都是由復(fù)位電路來實現(xiàn)。在單片機的實用系統(tǒng)中,一般有兩種復(fù)位操作形式:上

19、電復(fù)位和手動復(fù)位。圖10 復(fù)位電路上電復(fù)位在單片機系統(tǒng)每次通電時執(zhí)行。上電時,電容C 充電加給RST引腳一個短的高電平信號,此信號隨著VCC對電容C 的充電過程而逐漸回落,即RST引腳上的高電平持續(xù)時間取決于電容C 充電時間。為保證系統(tǒng)可靠復(fù)位,RST引腳上的高電平必須維持足夠長的時間。手動復(fù)位在系統(tǒng)出現(xiàn)操作錯誤或程序運行出錯時使用。在單片機系統(tǒng)運行過程中,按下復(fù)位鍵,高電平輸入RST引腳,單片機被強制執(zhí)行復(fù)位操作,系統(tǒng)可以退出錯誤運行狀態(tài),恢復(fù)正常工作。由于本設(shè)計的需要,同時采用這兩種復(fù)位方式,如圖10所示復(fù)位電路。5.5 電源電路當(dāng)今社會大到超級計算機、小到袖珍計算器,所有的電子設(shè)備都必須

20、在電源電路的支持下才能正常工作。直流穩(wěn)壓電源在電源技術(shù)中占有十分重要的地位。直流電源電路由降壓變壓器、全波整流、濾波、穩(wěn)壓電路構(gòu)成,其組成結(jié)構(gòu)如圖11所示。圖11 直流電源電路組成結(jié)構(gòu)圖變壓器整流電路濾波電路穩(wěn)壓電路220V50Hz根據(jù)設(shè)計需要做+5V和+12V直流穩(wěn)壓電源電路,其電路圖如圖12和13所示。交流電壓通過變壓器T1降壓得到,然后由V7V10四個整流二極管組成的電橋進行整流得到直流電壓,再經(jīng)由電解電容和非極性電容構(gòu)成的濾波網(wǎng)絡(luò)和三端穩(wěn)壓器LM7812和LM7805的穩(wěn)壓作用后,分別輸出+12V和+5V的直流電壓。理論計算如下: 對A點有:(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 整體電路基于單片機AT89C51的電子琴電路由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時鐘-復(fù)位電路和電源電路五部分所構(gòu)成。琴鍵控制電路采用了8輸入與門芯片CD4068B,收集8個獨立按鍵的開關(guān)狀態(tài)信號,并觸發(fā)單片機的外部中斷來處理;而數(shù)碼管顯示電路負責(zé)顯示按下的琴鍵所對應(yīng)的鍵值;同時,音頻功放電路也會播放琴鍵對應(yīng)的音調(diào);電源電路為整個電路提供能源。整體電路圖見附錄1。六、電子琴系統(tǒng)軟件設(shè)計系

22、統(tǒng)功能的實現(xiàn)一般包括硬件部分和軟件部分,一旦硬件確定下來,軟件要實現(xiàn)的功能也隨之確定。而為使編程思路清晰,應(yīng)先繪制程序流程圖。6.1 系統(tǒng)硬件接口定義系統(tǒng)硬件接口定義如表5所示。表5 系統(tǒng)硬件接口定義引腳號引腳名接口說明備注3932P0.0P0.7數(shù)碼管與單片機通信口18P1.0P1.7獨立按鍵接口12INT0外部中斷源輸入端10P3.0控制蜂鳴器圖14 主函數(shù)流程圖開始數(shù)碼管顯示初始化音頻處理6.2 主函數(shù)主函數(shù)流程圖如圖14所示。利用模塊化的思想,主函數(shù)只執(zhí)行初始化函數(shù)、音頻處理函數(shù)和數(shù)碼管顯示函數(shù)。另外,鍵碼的識別與刷新是通過中斷函數(shù)來完成。void main( )Init( );whi

23、le(1)初始化開始結(jié)束圖15 初始化流程圖關(guān)閉數(shù)碼管外部中斷邊沿觸發(fā)允許外部中斷開總中斷關(guān)閉定時器允許定時器中斷定時器工作方式Sound_Player();/音頻處理函數(shù)LED_Display();/數(shù)碼管顯示鍵值6.3 初始化函數(shù)初始化的流程框圖如圖15所示。該函數(shù)對所需的I/O口、外部中斷0、定時器0以及數(shù)碼管進行初始化配置。 void Init(void)P0 = 0xff;/先將P0口置為1,即關(guān)閉數(shù)碼管Speaker = 0;IT0 = 1;/外部中斷0邊沿觸發(fā)EX0 = 1;/外部中斷0允許TMOD = 0x01;/定時器方式1ET0 = 1;/定時器0中斷允許TR0 = 0;/

24、關(guān)定時器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)鍵將會顯示數(shù)字17其中之一;若判斷是功能鍵將會顯示字母A、b、C其中之一。void LED_Display(void)if(Keycode>0 && Keycode<8)P0 = tableKeycode;/DoSi七個音調(diào)鍵分別顯示17else if(Keycode = 8)P0 = tableTime + 9;/特殊功能

25、鍵分別顯示A、b、CTR0 = 0; /關(guān)定時器06.5 中斷函數(shù)中斷函數(shù)用到了外部中斷和定時器中斷。鍵盤中斷的流程框圖如圖17所示,當(dāng)按鍵按下時,外部信號觸發(fā)外部中斷,執(zhí)行鍵值掃描函數(shù),讀取對應(yīng)的鍵值。定時中斷的流程框圖如圖18所示,定時器溢出中斷后,進行重裝載初值,同時執(zhí)行相應(yīng)的音頻控制操作。鍵盤中斷開始鍵值掃描圖17 鍵盤中斷流程圖結(jié)束重裝初值定時中斷開始結(jié)束圖18 定時中斷流程圖P3.0取反6.6 鍵值掃描函數(shù)圖19 按鍵被按下時電壓的變化由于本設(shè)計采用的是接觸開關(guān)式按鍵,故不可避免存在機械抖動。按鍵被按下是,其觸點電壓變化過程如圖19所示。這種抖動會使系統(tǒng)處于不穩(wěn)定狀態(tài),故需要進行消

26、抖處理。抖動時間的長短和按鍵的機械特性有關(guān),一般為510ms。通常手動按下鍵然后立即釋放,這個操作中穩(wěn)定閉合的時間超過20ms,因此單片機在檢測按鍵是否按下時都需要加上去抖動操作,有專門的去抖動電路或則芯片,但同用軟件延時的方法也能輕易解決抖動問題,沒必要添加多余的硬件。本設(shè)計是用軟件消抖方法編寫一個消抖程序。當(dāng)按鍵按下去后,首先對其進行連續(xù)兩次取樣,如果兩次都為低電平,則輸出低電平;如果其中有一次高電平,則輸出高電平。鍵盤的每一行通過一個上拉電阻接高電平,當(dāng)按鍵按下時,對應(yīng)的I/O口線被拉低。如表6所示按鍵編碼關(guān)系表。鍵值掃描函數(shù)的流程圖如圖20所示。表6 按鍵編碼關(guān)系表按鍵名稱鍵碼(十六進

27、制)按鍵名稱鍵碼(十六進制)K10xfeK50xefK20xfdK60xdfK30xfbK70xbfK40xf7K80x7f按鍵掃描開始有按鍵按下?有按鍵按下?按鍵釋放?執(zhí)行相應(yīng)代碼延時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)成,而每個音階對應(yīng)著不同的頻

28、率,即利用單片機的定時器來產(chǎn)生所需要方波頻率信號的組合,可構(gòu)成所想要的樂曲。本系統(tǒng)設(shè)計單片機配有12MHZ晶振,利用AT89C51的內(nèi)部定時器使其工作定時器模式的工作方式1下,其對應(yīng)的定時器初值計算公式為:式中T為定時時間,是所需頻率的倒數(shù)。如表7所示為所需頻率對應(yīng)的定時器初值表(簡稱頻率-初值表)。如圖21所示音頻處理函數(shù)的流程圖。表7 頻率-初值表音調(diào)簡譜(鍵值)頻率(Hz)定時器初值(16進制)備注Do15230FBE9H此處的定時器初值是在工作方式1和12MHZ晶振時算得的Re25870FC5FHMi36590FCC1HFa46980FCEFHSo57540FD45HLa68800FD

29、92HSi79880FDD6Hvoid Sound_Player(void)if(Flag = 0) /DoSi七個音調(diào)鍵YNN單個音調(diào)播放Y功能鍵鍵碼?音頻處理開始結(jié)束音調(diào)鍵鍵碼?圖21 音頻處理流程圖樂曲播放Flag = 1; switch(Keycode) case 1: /DoTH0code = 0XFB;TL0code = 0XE9;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時器0Speaker = Speaker;break; 七、電子琴系統(tǒng)調(diào)試由于沒有硬件設(shè)備,所以無法進行硬件調(diào)試,但這并不妨礙軟件調(diào)試。利用仿真軟件Proteus和

30、編程軟件Keil uVision4進行調(diào)試程序。7.1 調(diào)試工具Proteus軟件是英國Labcenter Electronics公司研發(fā)的EDA工具軟件。它是一個集模擬電路、數(shù)字電路、模/數(shù)混合電路以及多種微控制器系統(tǒng)為一體的系統(tǒng)設(shè)計和仿真平臺。是目前同類軟件中最先進、最完整的電子類仿真平臺之一。它真正實現(xiàn)了在計算機上完成從原理圖、電路分析與仿真、單片機代碼調(diào)試與仿真、系統(tǒng)測試與功能驗證到PCB板生成的完整的電子產(chǎn)品研發(fā)過程。最新的Keil uVision4 IDE,旨在提高開發(fā)人員的生產(chǎn)力,實現(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)建并保存多個調(diào)試窗口布局;多項目工作區(qū)簡化與眾多的項目。7.2 調(diào)試結(jié)果利用Proteus對電路進行仿真分析,電子琴電路的仿真電路圖如圖22所示。由于音頻功放電路采用了LM386芯片,使得音頻放大更加的穩(wěn)定和沒有雜音,進一步達到了實驗效果。但也一定瑕疵,按鍵按下后,延遲一會才有聲音。調(diào)試結(jié)果與設(shè)計的基本一致,如表8所示。表8 調(diào)試結(jié)果按鍵編號發(fā)聲音調(diào)數(shù)碼顯示內(nèi)容備注S1Do1S2Re2S

32、3Mi3S4Fa4S5So5S6La6S7Si7S8播放樂曲13中之一A或b或C按8鍵切換播放樂曲13圖22 電子琴電路仿真圖7.3 電子琴設(shè)計中的問題及解決方法電子琴的設(shè)計并非一帆風(fēng)順,在這期間遇到了很多問題,下面談幾個關(guān)鍵的問題。首先是數(shù)碼管顯示亂碼的問題,原本以為是數(shù)碼管字形碼表的代碼有錯,檢查幾遍發(fā)現(xiàn)代碼沒錯,后來結(jié)合硬件圖一看,才知道硬件圖中數(shù)碼管是共陽極接法,軟件中的數(shù)碼管字形碼表是共陰極的。其二是按鍵引入中斷檢測時遇到的問題,要求8個按鍵任意鍵按都觸發(fā)外部中斷0,結(jié)果不經(jīng)思索就選用了一塊8輸入或門芯片,導(dǎo)致怎么按鍵盤都無法進入中斷函數(shù),于是懷疑是程序有錯,浪費了很多時間,最終發(fā)現(xiàn)

33、是硬件邏輯錯誤,應(yīng)該用與門才對。其三是揚聲器發(fā)出的音調(diào)不對,甚至沒有聲音,這個問題主要是功放模塊沒有與揚聲器共地。八、電子琴設(shè)計總結(jié) 在電子音樂領(lǐng)域,電子音調(diào)作為現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,它在現(xiàn)代音樂中扮演著重要的角色。目前,由于電子音樂的普及,電子琴就是一種新型的電子樂器。本設(shè)計基于單片機AT89C51的電子琴電路由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時鐘-復(fù)位電路和電源電路五部分所構(gòu)成。琴鍵控制電路采用了8輸入與門芯片CD4068B,收集8個獨立按鍵的開關(guān)狀態(tài)信號,并觸發(fā)單片機的外部中斷來處理;而數(shù)碼管顯示電路負責(zé)顯示按下的琴鍵所對應(yīng)的鍵值;同時,音頻功放電路也會播放琴鍵對應(yīng)的

34、音調(diào);電源電路為整個電路提供能源。電子琴的設(shè)計并非一帆風(fēng)順,在這期間遇到了很多問題,下面談幾個關(guān)鍵的問題。首先是數(shù)碼管顯示亂碼的問題,原本以為是數(shù)碼管字形碼表的代碼有錯,檢查幾遍發(fā)現(xiàn)代碼沒錯,后來結(jié)合硬件圖一看,才知道硬件圖中數(shù)碼管是共陽極接法,軟件中的數(shù)碼管字形碼表是共陰極的。其二是按鍵引入中斷檢測時遇到的問題,要求8個按鍵任意鍵按都觸發(fā)外部中斷0,結(jié)果不經(jīng)思索就選用了一塊8輸入或門芯片,導(dǎo)致怎么按鍵盤都無法進入中斷函數(shù),于是懷疑是程序有錯,浪費了很多時間,最終發(fā)現(xiàn)是硬件邏輯錯誤,應(yīng)該用與門才對。其三是揚聲器發(fā)出的音調(diào)不對,甚至沒有聲音,這個問題主要是功放模塊沒有與揚聲器共地。通過這次課程設(shè)

35、計,感覺收獲頗多。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作,基本掌握了Protel99SE原理圖的方法以及怎么利用Proteus進行數(shù)字電路仿真。除此之外,對51系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法,諸如LED數(shù)碼管、鍵盤等等。在軟件方面,通過對外部中斷、定時器/計數(shù)器、I/O的使用,使得C語言編程能力也有了較大的進步。26參考文獻1袁東.51單片機應(yīng)用開發(fā)實戰(zhàn)手冊M.北京:電子工業(yè)出版社,2011.2沈紅衛(wèi).基于單片機的智能系統(tǒng)設(shè)計與實現(xiàn)M.北京:電子工業(yè)出版社,2005.3蘇麗萍.電子技術(shù)基礎(chǔ)M.西安:西安電子科技大學(xué)出版社,200

36、2.4曾屹,彭楚武.單片機原理與應(yīng)用(第2版)M.長沙:中南大學(xué)出版社,2009.5林立.單片機原理及應(yīng)用基于Proteus和Keil CM.北京:電子工業(yè)出版社,2009.6彭偉.單片機C語言程序設(shè)計實訓(xùn)100例M.北京:電子工業(yè)出版社,2009.7顧濱,趙偉軍,諸杭.Protel99SE實用教程(第3版)M.北京:人民郵電出版社,2013.8王為青,程國剛.單片機Keil Cx51應(yīng)用開發(fā)技術(shù).M.北京:人民郵電出版社,2007.9單丹,馬淑云.基于AT89C51單片機電子琴的設(shè)計J.中國高新技術(shù)企業(yè),2002,(10), 6-7.10石鑫.基于89C51單片機簡易電子琴的設(shè)計J.農(nóng)業(yè)裝備

37、技術(shù),2010,(5),59-61.11任肖麗,王驥.基于STC89C51單片機的電子琴設(shè)計J.電子元器件應(yīng)用,2010,(7), 27-31.12周潤景.Proteus入門實用教程M.北京:機械工業(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);/延時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; /揚聲器控制引腳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;/定時器方式1ET0 = 1;/定時器0中斷允許TR0 = 0;/關(guān)定時器0EA = 1;/開總中斷/* 音頻處理函數(shù)*/void Sound_Player(void)if(Flag = 0) /DoSi七個音調(diào)鍵Flag = 1; switch(Keycode) case 1: /DoTH0code = 0XFB;TL0code = 0XE9;TH0

42、= TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時器0Speaker = Speaker;break; case 2: /ReTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時器0 Speaker = Speaker;break; case 3: /MiTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時器0 Speaker = Speaker;break; c

43、ase 4: /FaTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code;TR0 = 1; /開定時器0 Speaker = Speaker;break; case 5: /SoTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時器0Speaker = Speaker;break; case 6: /LaTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code;

44、 TR0 = 1; /開定時器0 Speaker = Speaker;break; case 7: /SiTH0code = 0XFC;TL0code = 0X5C;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時器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; /開定時器0if(Num = 15) Num = 0;Speaker = Speaker;break; case 2: /播放第二首樂曲TH0code = Music2_TabNum/256;TL0code = Music2_TabNum%256;TH0 = TH0code;/置初值TL0 = TL0code; TR0 = 1; /開定時器0Nu

溫馨提示

  • 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

提交評論