和麗花 張海龍
(焦作市技師學(xué)院電氣工程系,河南 焦作 454003)
AT89C51單片機(jī)作為該控制系統(tǒng)的核心元件,利用其強(qiáng)大的控制功能和靈活的編程語(yǔ)言,借助Proteus仿真軟件與Keil程序調(diào)試軟件相結(jié)合的實(shí)驗(yàn)平臺(tái),通過(guò)4×4點(diǎn)陣式鍵盤電路和揚(yáng)聲器實(shí)現(xiàn)16個(gè)音調(diào)的音頻信號(hào)的輸出。本系統(tǒng)運(yùn)行穩(wěn)定,電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比高等特點(diǎn),具有一定的實(shí)用和參考價(jià)值。
Proteus 軟件的功能非常強(qiáng)大,具有電路設(shè)計(jì)、PCB電路制版及仿真等多種功能,不僅能夠?qū)﹄姽?、電子技術(shù)學(xué)科涉及的電路進(jìn)行設(shè)計(jì)與分析,還能夠?qū)ξ⑻幚砥鬟M(jìn)行設(shè)計(jì)和仿真,并且功能齊全,界面多彩,是近年來(lái)廣大電子設(shè)計(jì)愛好者難得的一個(gè)工具軟件。
本系統(tǒng)是采用單片機(jī)控制實(shí)現(xiàn)的16鍵電子琴。采用Proteus軟件制作的電子琴工作原理,如圖1所示??刂埔螅?6個(gè)鍵是按照自上而下,從左到右的順序觸發(fā)系統(tǒng),輸出3~4的16個(gè)音調(diào)的音頻信號(hào),并將其顯示。當(dāng)按下16個(gè)鍵中的某一個(gè)鍵時(shí),鍵碼有P3口輸入到單片機(jī),單片機(jī)就識(shí)別外部被按鍵的鍵碼,查詢?cè)撴I碼在鍵碼表中所
在的相對(duì)位置,并將鍵碼由P0口輸出到數(shù)碼管中顯示,并用相對(duì)位置從簡(jiǎn)譜表中取出相應(yīng)的簡(jiǎn)譜碼,用取出的簡(jiǎn)譜碼去控制系統(tǒng),由P1.0輸出相應(yīng)的音頻信號(hào),直到鍵被松開才停下來(lái)。
單片機(jī)作為電子琴控制系統(tǒng)的核心部件,經(jīng)過(guò)精心考慮,本系統(tǒng)采用了美國(guó)ATMAL公司生產(chǎn)的產(chǎn)品AT89C51單片機(jī)。整個(gè)電路由單片機(jī)最小應(yīng)用系統(tǒng),4×4點(diǎn)陣式鍵盤電路,鍵碼顯示電路,音頻輸出電路組成。4×4點(diǎn)陣式鍵盤電路,將16個(gè)按鍵排成4行4列,分別將每一行的每個(gè)按鍵的一端連接在一起構(gòu)成行線,將每個(gè)按鍵的另一端連接在一起構(gòu)成一根列線,這樣便一共8根線并連接到單片機(jī)的P3口上,通過(guò)程序掃描鍵盤可檢測(cè)16個(gè)按鍵,4×4點(diǎn)陣式鍵盤電路。鍵碼顯示電路是由1位共陰極數(shù)碼管組成,該電路是用來(lái)顯示單片機(jī)從16位簡(jiǎn)易鍵盤輸入數(shù)據(jù)后轉(zhuǎn)換成的鍵碼,即當(dāng)按下“KEY0~KEYF”中的其中一個(gè)時(shí),顯示電路顯示相應(yīng)的“0~F”的字符。
4.1 音調(diào)控制。 當(dāng)鍵盤子程序掃描到有鍵按下并得到“0~F”鍵碼時(shí),程序?qū)⑷〕鲆粋€(gè)與該鍵音調(diào)對(duì)于的16位數(shù)據(jù)作為定時(shí)器T0的計(jì)數(shù)初值,從而控制硬件電路輸出相應(yīng)音調(diào)的音頻信號(hào)。
4.2 音頻輸出控制。 音頻輸出時(shí)通過(guò)定時(shí)中斷并每中斷一次取反一次輸出的方式來(lái)實(shí)現(xiàn)的,在此是采用控制T0工作方式來(lái)實(shí)現(xiàn)的。
4.3 簡(jiǎn)譜碼的編制。本系統(tǒng)時(shí)利用定時(shí)器T0工作方式(16位計(jì)數(shù)器)的定時(shí)中斷不斷的對(duì)輸出位取反而振蕩產(chǎn)生音頻信號(hào)。因此,中斷的頻率是音頻頻率的1/2, 從而根據(jù)各音調(diào)的頻率計(jì)算出16 位(方式1)計(jì)算初值,這里的計(jì)數(shù)初值就稱為簡(jiǎn)譜碼。如“3.”的頻率f=330HZ,工作方式1計(jì)數(shù)單元的最大值為65536。則簡(jiǎn)譜碼(計(jì)數(shù)初值)=65536-(T/2)106=65536-106(2×330)=64021,同理可將其他音調(diào)的簡(jiǎn)譜碼編制出來(lái)。根據(jù)16個(gè)鍵按照鍵碼在鍵碼表中的順序.觸發(fā)系統(tǒng),輸出3.~4的16個(gè)音調(diào)的音頻信號(hào)的控3.4.制要求,以及編輸出~的16個(gè)音調(diào)的簡(jiǎn)譜碼,并將0~F的順序排列,即可得到簡(jiǎn)譜碼表。
TABLE2:
DW 64021,64103,64260,64400,64524,64580,64684,64777
DW 64820,64898,64968,65030,65058,65110,65157,65178
4.4 程序設(shè)計(jì)。程序設(shè)計(jì)采用模塊化編程方法。軟件由主程序、子程序和定時(shí)中斷服務(wù)程序組成。主程序和子程序完成按鍵掃描、顯示功能;定時(shí)中斷服務(wù)程序用于實(shí)現(xiàn)音頻振蕩輸出功能,并實(shí)時(shí)更新顯示數(shù)據(jù)。
基于Proteus與Keil軟件相結(jié)合所構(gòu)建的實(shí)驗(yàn)平臺(tái),利用Proteus軟件制作的電子琴工作原理圖。通過(guò)Keil軟件編制的程序并將其編譯成目標(biāo)代碼文件(即*.HEX),進(jìn)入Proteus軟件制作的電子琴工作原理圖,雙擊單片機(jī)AT89C51,彈出“編輯元件屬性”對(duì)話框,在“Program File”欄中選擇要加載的目標(biāo)代碼文件,然后點(diǎn)擊確定,最后,返回Proteus主界面,點(diǎn)擊軟件左下角的“運(yùn)行”控制按鈕并執(zhí)行仿真功能,按照控制要求進(jìn)行控制便可以在電子琴工作原理圖上看到最終的運(yùn)行效果,運(yùn)行效果圖
基于單片機(jī)的電子琴控制系統(tǒng)的設(shè)計(jì),AT89C51單片機(jī)作為該控制系統(tǒng)的核心元件,以Proteus仿真軟件與Keil程序調(diào)試軟件相結(jié)合構(gòu)建的實(shí)驗(yàn)平臺(tái),既可以模擬單片機(jī)控制電路的運(yùn)行效果又可以大大的降低設(shè)計(jì)成本、縮短設(shè)計(jì)周期。本系統(tǒng)運(yùn)行穩(wěn)定,電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比高等特點(diǎn),具有一定的實(shí)用和參考價(jià)值,解決了實(shí)驗(yàn)和工程應(yīng)用間脫節(jié)的矛盾。對(duì)單片機(jī)系統(tǒng)設(shè)計(jì)有很大的幫助。
[1]Proteus軟件英文簡(jiǎn)介.
[2]李朝青,等.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005.
[3]周立功,陳明計(jì),王祖麟,等.項(xiàng)目驅(qū)動(dòng)--單片機(jī)應(yīng)用設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2011.