国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單片機的簡易電子琴的設計與實現(xiàn)

2014-07-18 00:48:24章丹
電腦知識與技術(shù) 2014年13期
關鍵詞:電子琴方波蜂鳴器

章丹

摘要:電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演重要的角色,單片機具有強大的控制功能和靈活的編程實現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。該文的主要內(nèi)容是用8253芯片為核心控制元件,設計一個簡易電子琴。通過按動STAR ES598PCI單板機的G6區(qū)的1~7號鍵,使用單板機上的8255A芯片進行音調(diào)的選擇,由8253芯片控制產(chǎn)生不同頻率的方波,輸出到單板機上D1區(qū)的蜂鳴器,使其對應于G6區(qū)的1~7號鍵由低到高發(fā)出1~7的音階,并由8255A芯片控制8253芯片的工作狀態(tài),使其能夠控制蜂鳴器的發(fā)聲與否,從而實現(xiàn)簡易電子琴的演奏功能。同時,也可以通過事先設置好的“樂譜”回放一段音樂,實現(xiàn)簡易電子琴的回放功能以及對用戶演奏過的一段音樂進行重放功能。用戶可以通過DOS界面下的菜單對電子琴的回放和重放或是演奏功能進行選擇。

關鍵詞:電子琴;單片機;8253芯片

中圖分類號:TP313 文獻標識碼:A 文章編號:1009-3044(2014)13-3179-03

Design and Implementation of Simple Microcontroller Based Keyboard

ZHANG Dan

(Hefei University, Hefei 230601, China)

Abstract: The keyboard is a combination of modern electronic music technology and the product is a new type of keyboard instrument. It plays an important role in modern music , SCM has a powerful control functions and flexible programming features, it has been integrated into the modern people's lives , become an irreplaceable part . The main content of this paper is to use 8253 as the core control elements , the design of a simple flower . By pressing the number keys 1-7 STAR ES598PCI SBC G6 zone , 8255A chips on a single board computer for tone selection control 8253 generates a square wave of different frequencies , the output of the SBC to bee region D1 buzzer to make it correspond to the G6 District No. 1 to 7 keys issued from low to high scale of 1 to 7 , 8253 by the 8255A chip to control the working status of the chip so that it can control the buzzer sound or not, thus achieve simple keyboard playing capabilities. Meanwhile , you can also pre-set " score " a piece of music playback , playback achieve simple keyboard and the user had to play a piece of music for playback function. DOS user interface via the menu next to the keyboard to play or replay and replay function selection.

Key words: Keyboard ; SCM ; 8253

1 解決問題方法及思路

1.1硬件部分

電子琴的主要的器件有一個并行接口8255和一個8253定時器。輸入部分主要是由8個按鍵和一個并行接口8255組成。8個按鍵一端接地,另一端接到8255的A口輸入,并且通過一個電阻接到+5V。因此,在按鍵不按下時,從8255A口輸入的是高電平,當開關按下時,輸入的則是低電平,這樣通過低電平觸發(fā),既方便也對芯片起保護作用。當不同的開關按下時,從A口輸入就對應一個8位的數(shù)據(jù)。通過軟件檢測輸入的數(shù)據(jù),然后給8253送相應頻率的計數(shù)值。

電子琴以8253的2號計數(shù)器為核心。系統(tǒng)初始化時,2號計數(shù)器工作在“方波發(fā)生器”方式,CPU通過對定時器的通道2進行編程,使其I/O寄存器接收一個控制聲音頻率的16位計數(shù)值,寫入順序為先低后高,端口61H的最低位控制通道2門控的開斷,,CLK2為1MHZ,當計數(shù)初值為3E8H時,OUT2輸出的方波大約為1000 HZ,經(jīng)過簡單的濾波之后,送至蜂鳴器。改變2號計數(shù)器的計數(shù)初值就可以使蜂鳴器發(fā)出不同頻率的聲音。

在送出頻率計數(shù)值之前,還要給方式寄存器送一個方式值,該數(shù)決定對哪一個通道編程,采用什么模式,送入通道的計數(shù)值是一字節(jié)還是兩字節(jié),是二進制碼還是BCD碼。

芯片8255A的A口工作于基本輸入方式下。G6區(qū)的1~7號按鍵(S29~S36)直接連接到8255A芯片的A口中,用于控制芯片8253的2號計數(shù)器的計數(shù)初值,從而使8253芯片能夠?qū)τ诓煌陌存I產(chǎn)生與其相對應的方波頻率。從定時器輸出的方波信號,經(jīng)功率放大和濾波后驅(qū)動蜂鳴器。endprint

芯片8255A的C口工作于基本輸出方式下。8255A芯片的C口的引腳PC0連接至8253芯片2號計數(shù)器的GATE引腳上,只有當PC0輸出高電平至GATE引腳時,8253芯片的2號計數(shù)器才正常工作,產(chǎn)生方波,從而使蜂鳴器發(fā)出有規(guī)則的聲音。反之則不會產(chǎn)生任何頻率方波,那么蜂鳴器也就不會發(fā)出任何的聲音。通過8255A芯片對8253芯片的控制來達到對蜂鳴器的是否發(fā)聲的控制。

在設計過程中,采用獨立編址時,用地址線的高位部分和控制信號(如RD、WR、M/IO)進行組合產(chǎn)生 I/O接口電路的片選信號(CS),用地址線的低位部分直接連到 I/O接口芯片實現(xiàn)端口的選擇。在此采用的是譯碼器譯碼,經(jīng)過74LS138譯碼后,Y2輸出作為8253的片選信號(CS),即其端口地址為40H~43H。Y3輸出作為8255的片選信號(CS),即其端口地址為60H~63H。

1.2 軟件部分

程序設計有DOS下的功能選擇界面,當用戶選擇演奏時,程序根據(jù)G6區(qū)1~7號按鍵輸入到8255A芯片A口中的8位二進制數(shù)進行判斷并將對應的計數(shù)初值存入8253 芯片2號計數(shù)器中,由8253芯片根據(jù)計數(shù)初值產(chǎn)生相應的頻率,輸出到D1區(qū)的CTRL口中,從而使蜂鳴器發(fā)出有規(guī)律的樂聲。當用戶選擇回放功能時,程序會根據(jù)事先設計好的“樂譜”進行演奏,其工作原理與用戶演奏的工作原理相同,只是程序進行頻率判斷的數(shù)據(jù)不是由用戶實時輸入,而是根據(jù)“樂譜”中存有的數(shù)據(jù)進行音階的判斷并對8253芯片2號計數(shù)器的計數(shù)初值進行修改。

就整個電路而言,接好電路后,通過軟件編程不斷地采集從8255口中輸入的信號數(shù)據(jù),由于已知開關未按下時的數(shù)據(jù),通過比較檢測到的數(shù)據(jù)和這個數(shù)據(jù)就可以判斷是否有開關接通,若沒有開關接通,則程序就通過8255A的C口PC0輸出低電平,這樣8253芯片的2號計數(shù)器將不會工作,蜂鳴器接受到固定的電平,將不會發(fā)聲。只要有開關按下,程序就會采集到一個不同的數(shù)據(jù),由于這個數(shù)據(jù)會不同于未按下按鈕時A口的數(shù)據(jù),此時程序會修改8255A的C口輸出數(shù)據(jù),使PC0輸出高電平,這樣8253的2號計數(shù)器即開始正常工作,根據(jù)A口輸入的數(shù)據(jù)與事先編好的表對應,得到一個計數(shù)值,把這個計數(shù)值送給8253的通道2,8253的通道2工作的方式3下,這樣就可以產(chǎn)生滿足頻率要求的發(fā)聲方波。這個方波經(jīng)驅(qū)動放大就可以使揚聲器發(fā)出相應的聲音。

設計“樂譜”時,數(shù)據(jù)段設置兩張表,一張為頻率表,將與音符對應的頻率值依次寫入表中,另一張為時間表,依次存放每個音符的單位時間。當然,頻率表和時間表的表項要一一對應,不能錯位,頻率表的最后一個表項為0,作為重復演奏或者是停止演奏的標志。當用戶選擇回放功能后,程序會修改8255A的C口輸出數(shù)據(jù),使PC0輸出高電平,這樣8253的2號計數(shù)器即開始正常工作,程序依次取出頻率表中的頻率值,裝換成計數(shù)初值寫入8253的2號計數(shù)器,再依次取出時間表中的單位時間和調(diào)試參數(shù)N相乘即可得到延時時間,也就是單個音符的演奏持續(xù)時間。8253的2號計數(shù)器在這兩個數(shù)據(jù)的控制下發(fā)出有規(guī)律的方波信號至蜂鳴器,蜂鳴器即開始演奏“樂譜”。在頻率表的最后會有一個特殊符號,當程序檢測到這個特殊符號時,將會修改8255A的C口輸出數(shù)據(jù),使PC0輸出低電平,這樣8253的2號計數(shù)器即停止工作,蜂鳴器也就停止發(fā)出聲音,此時回放結(jié)束。

2 硬件設計

2.1 芯片8253在本設計中的作用

芯片8253在本實驗中主要用于輸出規(guī)定頻率的方波,控制蜂鳴器發(fā)出規(guī)定頻率的聲音。

8253A是一種可編程的定時器/計數(shù)器芯片,它可用于計數(shù)、分頻、定時器等的方面。當其工作于“方波發(fā)生器”工作方式下,可以從OUT引腳得到對稱的方波輸出。當裝入的計數(shù)值N為偶數(shù)時,則前N/2計數(shù)過程中,OUT為高電平;后N/2計數(shù)過程中OUT為低電平,計數(shù)過程連續(xù)進行。若N為奇數(shù),則(N+1)/2計數(shù)過程中,OUT保持高電平;而(N-1)/2計數(shù)期間,OUT為低電平。當GATE信號為低電平時,強迫OUT輸出高電平。當GATE為高電平時,OUT輸出對稱方波。在產(chǎn)生方波過程中,若裝入新的計數(shù)值,本次計數(shù)完成后,以新的計數(shù)值開始下一輪的計數(shù)。

使用8253芯片的2號計數(shù)器,將其設置為“方波發(fā)生器”的工作方式,修改其計數(shù)初值,即可在8253芯片的OUT2引腳得到不同頻率的方波。將不同頻率的方波輸出到蜂鳴器便可以使其發(fā)出不同音階的樂聲。

2.2 8255A在本設計中的作用

芯片8255A在本實驗中主要用于接收1~7號按鍵的輸入,控制蜂鳴器的開關和8253芯片的正常工作。8255是可編程并行接口,內(nèi)部有3個相互獨立的8位數(shù)據(jù)端口,即A口、B口和C口。三個端口都可以作為輸入端口或輸出端口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡信號使用。

使用8255A芯片的A口,將其設置為基本輸入工作方式,通過A口的8位數(shù)據(jù)線連接G6區(qū)的8位按鍵數(shù)據(jù)線,接收用戶的輸入。使用8255A芯片的C口,將其設置為基本輸出工作方式,通過PC0輸出線連接到芯片8253的GATE2口,使其2號計數(shù)器正常工作,從而控制蜂鳴器的發(fā)聲與否。

由于蜂鳴器本身在輸入端含有放大電路,所以無需考慮8253輸出給蜂鳴器的驅(qū)動電流和電壓的大小,只須保證其輸出的驅(qū)動電流和電壓位于蜂鳴器電路的輸入有效范圍內(nèi)即可。

2.3 蜂鳴器在本設計中的作用

在本實驗中,蜂鳴器用作將8253產(chǎn)生的不同頻率裝換為不同的音調(diào)的聲音。當輸入端輸入一定頻率的方波時,在RC震蕩電路的作用下,蜂鳴器會發(fā)出一定頻率的聲音。

2.4二進制開關在本設計中的作用

在本實驗中,二進制開關用于輸入不同的數(shù)值,確定頻率。二進制開關為輸入器件,通過電平的不同輸入不同的二進制數(shù)。endprint

3 控制程序設計思路說明

程序采用模塊化設計,分為主程序,回放功能模塊,演奏功能模塊,菜單模塊,發(fā)音模塊,延時模塊,重放模塊等。菜單模塊用于顯示用戶菜單,供用戶選擇電子琴的功能以及顯示當前電子琴的功能狀態(tài)?;胤殴δ苣K用于從“樂譜”中讀取數(shù)據(jù),并裝換為計數(shù)初值傳給8253的2號計數(shù)器。演奏模塊則用于接收用戶的按鍵輸入,判斷音階然后傳遞規(guī)定的計數(shù)初值給計數(shù)器。發(fā)音模塊則用于控制蜂鳴器的發(fā)聲與否,使其能夠根據(jù)8253提供的方波頻率發(fā)聲或停止發(fā)聲。在程序編寫過程中,會對各個功能模塊的功能進行進一步的改進和功能細分,不排除進行模塊之間的功能合并和分割。

4 上機調(diào)試過程

4.1硬件調(diào)試

在各個硬件芯片之間的連接調(diào)試中,需要注意的是連接的可靠性。由于設計的連線方案也并不復雜,在硬件的調(diào)試過程中連線方面并沒有出現(xiàn)接錯現(xiàn)象。在硬件的調(diào)試過程中遇到的主要的問題是8253和8255A芯片的片選信號到底應該由單板機接線板上的哪些接口給出。8253的片選信號由接線板上的CS5給出,8255A的片選信號由CS1給出。由于單板機上的蜂鳴器構(gòu)造不同于一般常見的發(fā)音蜂鳴器,導致在測試蜂鳴器時,雖然給蜂鳴器的方波頻率為標準的發(fā)音頻率,但發(fā)出的聲音卻不令人滿意。因此對每一個音階所需要的頻率,都需要進行實際的測試與調(diào)整,最終得到比較滿意的音質(zhì)效果。

4.2軟件調(diào)試

軟件的調(diào)試中,主要集中在程序的人機交互方面和回放功能的實現(xiàn)上。為了能達到一個良好的人機交互效果,設計了一個在DOS界面下的選擇菜單,通過用戶對菜單項的選擇來調(diào)用程序中的相應功能模塊。在程序的初期設計階段,采用模塊化的設計思想,各個功能之間互相獨立互不干擾。這種方案容易忽視寄存器的初值問題。當調(diào)用完一個功能模塊后,由于忽略了對寄存器的善后處理,未對使用過的相關寄存器進行初始化,造成調(diào)用其它模塊時的寄存器初值錯誤,使整個的實驗出現(xiàn)錯誤。由此可見,在對程序的不斷完善過程中,遇到的問題,需要通過大量的測試將其解決。

對于程序的回放功能,筆者將頻率與節(jié)拍分開進行存儲,設立一個頻率表和一個延時表,通過程序?qū)@兩個表中一一對應的數(shù)據(jù)進行讀取,來實現(xiàn)蜂鳴器的演奏。

4.3聯(lián)機調(diào)試

實驗過程對8255A芯片只是使用了A口和C口,B口空閑,因此在調(diào)試的過程中,筆者利用G6區(qū)的LED燈,連接至8255A的B口,將B口設為輸出,通過添加相應的程序模塊,實現(xiàn)了對于每個開關都有相應的LED燈對其指示的功能,在演奏模式下,當按下一個開關時,其對應的LED燈即亮起;在回放模式下,程序讀到何種頻率,其對應開關的LED指示燈即亮起。當進行其它的操作時,也會有相應的指示信號亮起。同時,在聯(lián)機調(diào)試的過程中,筆者也最大程度地完善程序的人機交互界面,使其更易使用。

4.4調(diào)試結(jié)果及問題的提出

當程序開始運行時,會在屏幕上先顯示2秒的歡迎界面,所有LED燈會閃爍一次,然后進入菜單選擇界面,由用戶通過鍵盤輸入選項。當用戶輸入錯誤,則會提示用戶輸入出錯并回到菜單選擇界面。當用戶選擇正確時,所有的LED燈也會閃爍一次。當用戶選擇演奏模式時,屏幕出現(xiàn)提示信息。當用戶按下1~7號開關時,蜂鳴器會發(fā)出對應頻率的聲音,并亮起對應的LED燈。當用戶按下0號開關,可以返回選擇菜單。當用戶選擇回放功能時,屏幕出現(xiàn)提示信息,系統(tǒng)自動播放樂曲,并根據(jù)當前演奏的音符亮起對應LED燈,此時按1~7號開關無反應,按0號開關終止回放并回到菜單。當用戶選擇退出時,所有LED燈會閃爍一次,屏幕會顯示2秒的再見界面,程序終止。

程序設計的仍然比較簡單,只能實現(xiàn)7個音符的演奏和回放以及重放功能,若有可能,可以擴展至更廣的音域。

程序提供的功能也很單一,還可以添加記錄演奏功能,并可以對記錄下的樂譜進行回放。

如果可能,可以將蜂鳴器更改為喇叭,這樣的話程序在實現(xiàn)電子琴的功能時能夠提供更為優(yōu)秀的音質(zhì)表現(xiàn)以及更多功能實現(xiàn)的可能。

5 結(jié)束語

本文通過對STAR ES598PCI單板機的G6區(qū)的1~7號鍵操作,使用單板機上的8255A芯片進行音調(diào)的選擇,由8253芯片控制產(chǎn)生不同頻率的方波,輸出到蜂鳴器,使其對應于不同的開關由低到高發(fā)出1~7的音階,從而實現(xiàn)簡易電子琴的演奏功能。同時,也可以通過事先設置好的“樂譜”回放一段音樂,實現(xiàn)簡易電子琴的回放功能和重放功能。通過簡單的人機交互,實現(xiàn)電子琴的全部功能,達到良好的使用效果。

參考文獻:

[1] 孫萬麟. 基于AT89C51單片機的電子琴設計[J].電腦知識與技術(shù),2010(20).

[2] 黃亮.基于AT89C2051單片機的電子琴電路的設計[J].電子制作,2006(05).

[3] 盛青松.基于AT89C51可彈奏電子琴的設計[J].科技信息,2010(32).

[4] 張曉朋.基于DSP的琴音分析系統(tǒng)[D].鄭州大學,2006.endprint

3 控制程序設計思路說明

程序采用模塊化設計,分為主程序,回放功能模塊,演奏功能模塊,菜單模塊,發(fā)音模塊,延時模塊,重放模塊等。菜單模塊用于顯示用戶菜單,供用戶選擇電子琴的功能以及顯示當前電子琴的功能狀態(tài)?;胤殴δ苣K用于從“樂譜”中讀取數(shù)據(jù),并裝換為計數(shù)初值傳給8253的2號計數(shù)器。演奏模塊則用于接收用戶的按鍵輸入,判斷音階然后傳遞規(guī)定的計數(shù)初值給計數(shù)器。發(fā)音模塊則用于控制蜂鳴器的發(fā)聲與否,使其能夠根據(jù)8253提供的方波頻率發(fā)聲或停止發(fā)聲。在程序編寫過程中,會對各個功能模塊的功能進行進一步的改進和功能細分,不排除進行模塊之間的功能合并和分割。

4 上機調(diào)試過程

4.1硬件調(diào)試

在各個硬件芯片之間的連接調(diào)試中,需要注意的是連接的可靠性。由于設計的連線方案也并不復雜,在硬件的調(diào)試過程中連線方面并沒有出現(xiàn)接錯現(xiàn)象。在硬件的調(diào)試過程中遇到的主要的問題是8253和8255A芯片的片選信號到底應該由單板機接線板上的哪些接口給出。8253的片選信號由接線板上的CS5給出,8255A的片選信號由CS1給出。由于單板機上的蜂鳴器構(gòu)造不同于一般常見的發(fā)音蜂鳴器,導致在測試蜂鳴器時,雖然給蜂鳴器的方波頻率為標準的發(fā)音頻率,但發(fā)出的聲音卻不令人滿意。因此對每一個音階所需要的頻率,都需要進行實際的測試與調(diào)整,最終得到比較滿意的音質(zhì)效果。

4.2軟件調(diào)試

軟件的調(diào)試中,主要集中在程序的人機交互方面和回放功能的實現(xiàn)上。為了能達到一個良好的人機交互效果,設計了一個在DOS界面下的選擇菜單,通過用戶對菜單項的選擇來調(diào)用程序中的相應功能模塊。在程序的初期設計階段,采用模塊化的設計思想,各個功能之間互相獨立互不干擾。這種方案容易忽視寄存器的初值問題。當調(diào)用完一個功能模塊后,由于忽略了對寄存器的善后處理,未對使用過的相關寄存器進行初始化,造成調(diào)用其它模塊時的寄存器初值錯誤,使整個的實驗出現(xiàn)錯誤。由此可見,在對程序的不斷完善過程中,遇到的問題,需要通過大量的測試將其解決。

對于程序的回放功能,筆者將頻率與節(jié)拍分開進行存儲,設立一個頻率表和一個延時表,通過程序?qū)@兩個表中一一對應的數(shù)據(jù)進行讀取,來實現(xiàn)蜂鳴器的演奏。

4.3聯(lián)機調(diào)試

實驗過程對8255A芯片只是使用了A口和C口,B口空閑,因此在調(diào)試的過程中,筆者利用G6區(qū)的LED燈,連接至8255A的B口,將B口設為輸出,通過添加相應的程序模塊,實現(xiàn)了對于每個開關都有相應的LED燈對其指示的功能,在演奏模式下,當按下一個開關時,其對應的LED燈即亮起;在回放模式下,程序讀到何種頻率,其對應開關的LED指示燈即亮起。當進行其它的操作時,也會有相應的指示信號亮起。同時,在聯(lián)機調(diào)試的過程中,筆者也最大程度地完善程序的人機交互界面,使其更易使用。

4.4調(diào)試結(jié)果及問題的提出

當程序開始運行時,會在屏幕上先顯示2秒的歡迎界面,所有LED燈會閃爍一次,然后進入菜單選擇界面,由用戶通過鍵盤輸入選項。當用戶輸入錯誤,則會提示用戶輸入出錯并回到菜單選擇界面。當用戶選擇正確時,所有的LED燈也會閃爍一次。當用戶選擇演奏模式時,屏幕出現(xiàn)提示信息。當用戶按下1~7號開關時,蜂鳴器會發(fā)出對應頻率的聲音,并亮起對應的LED燈。當用戶按下0號開關,可以返回選擇菜單。當用戶選擇回放功能時,屏幕出現(xiàn)提示信息,系統(tǒng)自動播放樂曲,并根據(jù)當前演奏的音符亮起對應LED燈,此時按1~7號開關無反應,按0號開關終止回放并回到菜單。當用戶選擇退出時,所有LED燈會閃爍一次,屏幕會顯示2秒的再見界面,程序終止。

程序設計的仍然比較簡單,只能實現(xiàn)7個音符的演奏和回放以及重放功能,若有可能,可以擴展至更廣的音域。

程序提供的功能也很單一,還可以添加記錄演奏功能,并可以對記錄下的樂譜進行回放。

如果可能,可以將蜂鳴器更改為喇叭,這樣的話程序在實現(xiàn)電子琴的功能時能夠提供更為優(yōu)秀的音質(zhì)表現(xiàn)以及更多功能實現(xiàn)的可能。

5 結(jié)束語

本文通過對STAR ES598PCI單板機的G6區(qū)的1~7號鍵操作,使用單板機上的8255A芯片進行音調(diào)的選擇,由8253芯片控制產(chǎn)生不同頻率的方波,輸出到蜂鳴器,使其對應于不同的開關由低到高發(fā)出1~7的音階,從而實現(xiàn)簡易電子琴的演奏功能。同時,也可以通過事先設置好的“樂譜”回放一段音樂,實現(xiàn)簡易電子琴的回放功能和重放功能。通過簡單的人機交互,實現(xiàn)電子琴的全部功能,達到良好的使用效果。

參考文獻:

[1] 孫萬麟. 基于AT89C51單片機的電子琴設計[J].電腦知識與技術(shù),2010(20).

[2] 黃亮.基于AT89C2051單片機的電子琴電路的設計[J].電子制作,2006(05).

[3] 盛青松.基于AT89C51可彈奏電子琴的設計[J].科技信息,2010(32).

[4] 張曉朋.基于DSP的琴音分析系統(tǒng)[D].鄭州大學,2006.endprint

3 控制程序設計思路說明

程序采用模塊化設計,分為主程序,回放功能模塊,演奏功能模塊,菜單模塊,發(fā)音模塊,延時模塊,重放模塊等。菜單模塊用于顯示用戶菜單,供用戶選擇電子琴的功能以及顯示當前電子琴的功能狀態(tài)?;胤殴δ苣K用于從“樂譜”中讀取數(shù)據(jù),并裝換為計數(shù)初值傳給8253的2號計數(shù)器。演奏模塊則用于接收用戶的按鍵輸入,判斷音階然后傳遞規(guī)定的計數(shù)初值給計數(shù)器。發(fā)音模塊則用于控制蜂鳴器的發(fā)聲與否,使其能夠根據(jù)8253提供的方波頻率發(fā)聲或停止發(fā)聲。在程序編寫過程中,會對各個功能模塊的功能進行進一步的改進和功能細分,不排除進行模塊之間的功能合并和分割。

4 上機調(diào)試過程

4.1硬件調(diào)試

在各個硬件芯片之間的連接調(diào)試中,需要注意的是連接的可靠性。由于設計的連線方案也并不復雜,在硬件的調(diào)試過程中連線方面并沒有出現(xiàn)接錯現(xiàn)象。在硬件的調(diào)試過程中遇到的主要的問題是8253和8255A芯片的片選信號到底應該由單板機接線板上的哪些接口給出。8253的片選信號由接線板上的CS5給出,8255A的片選信號由CS1給出。由于單板機上的蜂鳴器構(gòu)造不同于一般常見的發(fā)音蜂鳴器,導致在測試蜂鳴器時,雖然給蜂鳴器的方波頻率為標準的發(fā)音頻率,但發(fā)出的聲音卻不令人滿意。因此對每一個音階所需要的頻率,都需要進行實際的測試與調(diào)整,最終得到比較滿意的音質(zhì)效果。

4.2軟件調(diào)試

軟件的調(diào)試中,主要集中在程序的人機交互方面和回放功能的實現(xiàn)上。為了能達到一個良好的人機交互效果,設計了一個在DOS界面下的選擇菜單,通過用戶對菜單項的選擇來調(diào)用程序中的相應功能模塊。在程序的初期設計階段,采用模塊化的設計思想,各個功能之間互相獨立互不干擾。這種方案容易忽視寄存器的初值問題。當調(diào)用完一個功能模塊后,由于忽略了對寄存器的善后處理,未對使用過的相關寄存器進行初始化,造成調(diào)用其它模塊時的寄存器初值錯誤,使整個的實驗出現(xiàn)錯誤。由此可見,在對程序的不斷完善過程中,遇到的問題,需要通過大量的測試將其解決。

對于程序的回放功能,筆者將頻率與節(jié)拍分開進行存儲,設立一個頻率表和一個延時表,通過程序?qū)@兩個表中一一對應的數(shù)據(jù)進行讀取,來實現(xiàn)蜂鳴器的演奏。

4.3聯(lián)機調(diào)試

實驗過程對8255A芯片只是使用了A口和C口,B口空閑,因此在調(diào)試的過程中,筆者利用G6區(qū)的LED燈,連接至8255A的B口,將B口設為輸出,通過添加相應的程序模塊,實現(xiàn)了對于每個開關都有相應的LED燈對其指示的功能,在演奏模式下,當按下一個開關時,其對應的LED燈即亮起;在回放模式下,程序讀到何種頻率,其對應開關的LED指示燈即亮起。當進行其它的操作時,也會有相應的指示信號亮起。同時,在聯(lián)機調(diào)試的過程中,筆者也最大程度地完善程序的人機交互界面,使其更易使用。

4.4調(diào)試結(jié)果及問題的提出

當程序開始運行時,會在屏幕上先顯示2秒的歡迎界面,所有LED燈會閃爍一次,然后進入菜單選擇界面,由用戶通過鍵盤輸入選項。當用戶輸入錯誤,則會提示用戶輸入出錯并回到菜單選擇界面。當用戶選擇正確時,所有的LED燈也會閃爍一次。當用戶選擇演奏模式時,屏幕出現(xiàn)提示信息。當用戶按下1~7號開關時,蜂鳴器會發(fā)出對應頻率的聲音,并亮起對應的LED燈。當用戶按下0號開關,可以返回選擇菜單。當用戶選擇回放功能時,屏幕出現(xiàn)提示信息,系統(tǒng)自動播放樂曲,并根據(jù)當前演奏的音符亮起對應LED燈,此時按1~7號開關無反應,按0號開關終止回放并回到菜單。當用戶選擇退出時,所有LED燈會閃爍一次,屏幕會顯示2秒的再見界面,程序終止。

程序設計的仍然比較簡單,只能實現(xiàn)7個音符的演奏和回放以及重放功能,若有可能,可以擴展至更廣的音域。

程序提供的功能也很單一,還可以添加記錄演奏功能,并可以對記錄下的樂譜進行回放。

如果可能,可以將蜂鳴器更改為喇叭,這樣的話程序在實現(xiàn)電子琴的功能時能夠提供更為優(yōu)秀的音質(zhì)表現(xiàn)以及更多功能實現(xiàn)的可能。

5 結(jié)束語

本文通過對STAR ES598PCI單板機的G6區(qū)的1~7號鍵操作,使用單板機上的8255A芯片進行音調(diào)的選擇,由8253芯片控制產(chǎn)生不同頻率的方波,輸出到蜂鳴器,使其對應于不同的開關由低到高發(fā)出1~7的音階,從而實現(xiàn)簡易電子琴的演奏功能。同時,也可以通過事先設置好的“樂譜”回放一段音樂,實現(xiàn)簡易電子琴的回放功能和重放功能。通過簡單的人機交互,實現(xiàn)電子琴的全部功能,達到良好的使用效果。

參考文獻:

[1] 孫萬麟. 基于AT89C51單片機的電子琴設計[J].電腦知識與技術(shù),2010(20).

[2] 黃亮.基于AT89C2051單片機的電子琴電路的設計[J].電子制作,2006(05).

[3] 盛青松.基于AT89C51可彈奏電子琴的設計[J].科技信息,2010(32).

[4] 張曉朋.基于DSP的琴音分析系統(tǒng)[D].鄭州大學,2006.endprint

猜你喜歡
電子琴方波蜂鳴器
電動自行車產(chǎn)品車速提示音檢測現(xiàn)狀和整改技術(shù)研究(2)
掌控板制作簡易鋼琴
電腦報(2020年12期)2020-06-30 19:56:42
基于AT89C51單片機的電子琴設計
電子制作(2019年13期)2020-01-14 03:15:30
單片機驅(qū)動蜂鳴器的程序設計
碳納米管方波電沉積鉑催化劑的制備及其催化性能研究
電子琴
豐田凱美瑞240V車間隙警告蜂鳴器異常鳴響
方波外場下有限維量子系統(tǒng)的控制協(xié)議
基于Matlab的方波分解與合成仿真實驗設計
一種幅頻可調(diào)的高頻高壓方波電源的研制
山阳县| 凤阳县| 上林县| 通渭县| 屏南县| 铜陵市| 错那县| 仙游县| 蓝田县| 锡林郭勒盟| 巴塘县| 马边| 正蓝旗| 汤原县| 英山县| 思南县| 东港市| 宣城市| 焦作市| 德州市| 灌南县| 临海市| 塔河县| 桓仁| 宝鸡市| 眉山市| 山东省| 广西| 邹城市| 油尖旺区| 若羌县| 贵港市| 忻州市| 韶关市| 东乌| 瑞金市| 绵阳市| 乐业县| 县级市| 连州市| 平原县|