《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于AT89S52的樂曲編輯發(fā)生器的設(shè)計
基于AT89S52的樂曲編輯發(fā)生器的設(shè)計
摘要: 本文給出了以單片機AT89S52為核心構(gòu)成的任意樂曲編輯發(fā)生器,,具有硬件電路簡單,、操作界面友好,、使用方便的特點,。該系統(tǒng)已投入運行,,播放出來的樂曲效果良好,音調(diào)和節(jié)拍都由單片機控制得相當準確,。
Abstract:
Key words :

  1 引言

  基于RTX51的樂曲編輯發(fā)生器AT89S52單片機為控制核心,,操作者可以通過4×4矩陣鍵盤輸入約定格式的任意樂曲,按“播放”鍵后,,系統(tǒng)便開始播放所編輯的樂曲,,并且音調(diào)和節(jié)拍都可以由單片機精確控制。為了降低成本,,在最小硬件設(shè)計的基礎(chǔ)上,,系統(tǒng)的功能盡可能用軟件來實現(xiàn),系統(tǒng)軟件是在面向MCS-51系列單片機的嵌入式實時多任務(wù)操作系統(tǒng)RTX51Tiny平臺上,,用C51高級語言和MCS-51匯編語言混合編程而開發(fā)的,。

  2 系統(tǒng)硬件設(shè)計

  為了今后能夠在線升級用戶應(yīng)用程序,采用帶ISP接口的單片機AT89S52為核心構(gòu)成樂曲編輯發(fā)生器,。AT89S52具有快速8051內(nèi)核,、8 KB FlashE2PROM、256 B IDATA RAM,,完全符合運行RTX51Tiny的硬件要求,。筆者已研制了AT89S51/52的目標程序PC機下載軟件,無需編程器即可完成單片機應(yīng)用系統(tǒng)的開發(fā),。

系統(tǒng)硬件電路原理圖

  為了設(shè)計編輯任意樂曲的人機界面,,采用4×4矩陣鍵盤作為系統(tǒng)的輸入設(shè)備,采用點陣式液晶顯示模塊TC1602A作為系統(tǒng)的輸出設(shè)備,。為了存儲和讀出任意樂曲,,采用帶I2C串行接口的E2PROM

 

存儲器AT24C02。為了放大單片機AT89S52產(chǎn)生的樂曲聲音,,采用了功率放大器LM386,。系統(tǒng)硬件電路原理圖如圖1所示。

 

  3 樂曲編輯和播放的軟件實現(xiàn)

  3.1 單片機產(chǎn)生音頻矩形脈沖的方法

  利用單片機的內(nèi)部定時器T1并使其工作在定時器工作方式1(16 bit定時),,改變T1的計數(shù)初值,,就可以在單片機的I/O引腳端產(chǎn)生不同頻率的音頻矩形脈沖。

  例如,,音頻矩形脈沖信號的頻率為523 Hz,,則其周期T=1/523=1912μs,因此,,只要讓計數(shù)器定時1912μs÷2=956μs,,當定時956μs到的時候,將AT89S52的樂曲輸出引腳P3.7反相,,就可得到中音DO(523 Hz),。

  單片機定時器計數(shù)初值T與單片機內(nèi)部機器周期信號頻率Fi和音頻矩形脈沖信號頻率Fr的關(guān)系如下。

音頻矩形脈沖信號頻率Fr的關(guān)系

  為了敘述方便,不妨把定時器計數(shù)初值T稱為簡譜碼,。

  3.2 樂曲的音調(diào)表示方法

  單片機播放樂曲的過程,,主要是用單片機來識別所編輯的樂曲并播放出來。單片機需要識別樂曲中的音調(diào)和音長(音長亦稱為節(jié)拍),,本設(shè)計用字母A~Z來代表樂曲的各個音調(diào),。數(shù)字0作為音調(diào)的結(jié)束標志,如表1所示,。

樂曲的音調(diào)表示方法

  3.3 樂曲編輯的軟件實現(xiàn)方法

  在系統(tǒng)軟件設(shè)計時,,已將按鍵處理作為一個任務(wù)即“按鍵處理任務(wù)”,它的主要功能是編輯樂曲,。“按鍵處理任務(wù)”的執(zhí)行需要“鍵盤掃描任務(wù)”向它發(fā)送信號來觸發(fā)執(zhí)行,。“按鍵處理任務(wù)”的C51源程序如下。
源程序
源程序
源程序

  3.4 樂曲播放的軟件實現(xiàn)方法

  在設(shè)計“播放任務(wù)”程序時,,利用AT89S52內(nèi)部的定時器T1定時溢出中斷來產(chǎn)生音調(diào)的頻率,,并利用RTX51操作系統(tǒng)的os_wait2(K_TMO,ticks)函數(shù)來產(chǎn)生音長。“播放任務(wù)”的C51源程序如下:
源程序
源程序

  3.5 系統(tǒng)軟件流程

  根據(jù)對系統(tǒng)功能的分析,,把系統(tǒng)軟件分解為5個任務(wù),,具體如下:

  任務(wù)0:系統(tǒng)初始化任務(wù),包括TC1602A的初始化,、定時器T1的初始化,、中斷初始化。在啟動任務(wù)1~任務(wù)4后,,自動刪除任務(wù)0,,使得任務(wù)0只在系統(tǒng)上電復(fù)位時執(zhí)行一次。

  任務(wù)1:鍵盤掃描任務(wù),。每隔50 ms執(zhí)行1次,掃描所得的鍵值存于全局變量keycode,,然后向“按鍵處理任務(wù)”發(fā)信號,。

  任務(wù)2:按鍵處理任務(wù)。等待信號,,根據(jù)鍵值keycode完成相應(yīng)處理,,實現(xiàn)的功能包括樂曲的編輯、樂曲的保存和讀取等,。

  任務(wù)3:播放任務(wù),。等待信號,按照音調(diào)和音長播放樂曲,。

  任務(wù)4:顯示刷新任務(wù),。根據(jù)光標指針變量的值在液晶屏上顯示樂曲數(shù)據(jù)(音調(diào)和音長)。

  系統(tǒng)軟件流程圖如圖2所示。

系統(tǒng)軟件流程圖

  4 結(jié)束語

  本文給出了以單片機AT89S52為核心構(gòu)成的任意樂曲編輯發(fā)生器,,具有硬件電路簡單,、操作界面友好、使用方便的特點,。該系統(tǒng)已投入運行,,播放出來的樂曲效果良好,音調(diào)和節(jié)拍都由單片機控制得相當準確,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。