摘 要: 本文以單片機(jī)為核心設(shè)計(jì)了一個(gè)任意波形發(fā)生器,使用AT89C51和MATLAB的仿真功能,將希望得到的波形信號(hào)在MATLAB中完成信號(hào)的產(chǎn)生、抽樣和模數(shù)轉(zhuǎn)換,并將得到的波形數(shù)據(jù)存放到數(shù)據(jù)存儲(chǔ)器中的仿真過(guò)程,最后通過(guò)單片機(jī)對(duì)AD7545的控制,進(jìn)行A/D轉(zhuǎn)換和放大后,得到所需模擬信號(hào)波形。
關(guān)鍵詞: 單片機(jī) 波形發(fā)生器 AT89C51 AD7545 硬件系統(tǒng)設(shè)計(jì)
在電子工程設(shè)計(jì)中,常常需要一些可產(chǎn)生任意信號(hào)波形,頻率方便可調(diào)的波形發(fā)生器,通常的信號(hào)發(fā)生器難以滿足這類要求,而市場(chǎng)上出售的任意信號(hào)發(fā)生器價(jià)格昂貴。結(jié)合實(shí)際需要,我們?cè)O(shè)計(jì)了一種任意波形發(fā)生器。利用MATLAB的仿真功能,將希望得到的波形信號(hào)在MATLAB中完成信號(hào)的產(chǎn)生、抽樣和模數(shù)轉(zhuǎn)換,并將得到的數(shù)字波形數(shù)據(jù)存放到數(shù)據(jù)存儲(chǔ)器中,通過(guò)單片機(jī)對(duì)AD7545的控制,將波形數(shù)據(jù)從數(shù)據(jù)存儲(chǔ)器的表中讀出,送入后向通道進(jìn)行D/A轉(zhuǎn)換和放大處理后得到所需的模擬信號(hào)波形。利用上述方法設(shè)計(jì)的波形發(fā)生器,通過(guò)編程和構(gòu)造數(shù)據(jù)表格,其信號(hào)參數(shù)可調(diào),可輸出任一波形,實(shí)現(xiàn)了硬件電路的軟件化設(shè)計(jì)。
1.硬件系統(tǒng)框圖
該波形發(fā)生器的硬件系統(tǒng)是由單片機(jī)、存儲(chǔ)器和D/A轉(zhuǎn)換器構(gòu)成,通過(guò)編程設(shè)定頻率、脈寬及任意波形數(shù)據(jù),并將數(shù)據(jù)以表格的形式存放在程序存儲(chǔ)器中。在單片機(jī)的控制下,利用AD7545完成D/A轉(zhuǎn)換,從而得到所需的任意波形信號(hào)。硬件系統(tǒng)結(jié)構(gòu)框圖如圖1所示。圖中分頻電路和地址發(fā)生器由CPLD實(shí)現(xiàn)。
2.電路設(shè)計(jì)及實(shí)現(xiàn)
2.1單片機(jī)控制電路
系統(tǒng)采用AT89C51單片機(jī),通過(guò)編程產(chǎn)生所需控制信號(hào)。主要的控制參數(shù)包括:信號(hào)周期、脈寬、分頻電路的開(kāi)始信號(hào)、地址發(fā)生器的復(fù)位信號(hào)、E2PROM的選通信號(hào)、D/A轉(zhuǎn)換電路的選通信號(hào)。在具體電路中,端口P1.0控制分頻電路的啟動(dòng)、P1.1控制地址發(fā)生器的清零,P2.0控制28C256和AD7545的選通信號(hào)。單片機(jī)工作在定時(shí)器方式1,軟件設(shè)計(jì)利用C語(yǔ)言實(shí)現(xiàn)。控制流程圖如圖2所示。
2.2波形數(shù)據(jù)生成
MATLAB作為一款優(yōu)秀的數(shù)學(xué)工具軟件,具有強(qiáng)大的運(yùn)算功能,可以方便地產(chǎn)生各種信號(hào)波形,在軟件中實(shí)現(xiàn)波形信號(hào)的產(chǎn)生、抽樣和模數(shù)轉(zhuǎn)換。設(shè)計(jì)的任意波形發(fā)生器,數(shù)據(jù)存儲(chǔ)器選用28C256芯片,信號(hào)波形通過(guò)MATLAB仿真產(chǎn)生,得到的波形數(shù)據(jù)存放在數(shù)據(jù)存儲(chǔ)器28C256中。具體設(shè)計(jì)中,我們要求產(chǎn)生周期為200ms,脈寬為5ms的單/調(diào)頻混合信號(hào),其中單頻信號(hào)的脈寬為4ms,頻率為30kHz,調(diào)頻信號(hào)的脈寬為1ms,頻率為30—35kHz。在MATLAB中設(shè)定抽樣率為500kHz,得到了2500個(gè)波形數(shù)據(jù)。這些混合波形數(shù)據(jù)在燒錄入到程序存儲(chǔ)器的過(guò)程中,由于波形數(shù)據(jù)較多,直接用手工錄入數(shù)據(jù)存儲(chǔ)器中不僅費(fèi)時(shí)且容易出錯(cuò)。為克服這一弊端,通過(guò)MATLAB編程的方法將產(chǎn)生的波形數(shù)據(jù)按照HEX文件的INTEL格式存放,然后將這些波形數(shù)據(jù)整批次燒錄入程序存儲(chǔ)器的表格中。采用上述方法,波形數(shù)據(jù)生成簡(jiǎn)單、快捷,可根據(jù)需要在軟件程序中方便地修改信號(hào)參數(shù),無(wú)需改動(dòng)硬件電路即可實(shí)現(xiàn)信號(hào)參數(shù)的功能擴(kuò)展。
2.3CPLD邏輯設(shè)計(jì)
分頻電路采用兩片74HC163實(shí)現(xiàn)。通過(guò)分頻電路,將12MHz的晶振標(biāo)準(zhǔn)頻率分頻后,得到500KHz的抽樣頻率,作為地址發(fā)生器的時(shí)鐘。分頻電路的工作由單片機(jī)控制。
地址發(fā)生器電路由3片74HC163組成,時(shí)鐘頻率為500kHz,由分頻電路提供,其輸出頻率與存入程序存儲(chǔ)器表格中的波形數(shù)據(jù)抽樣頻率相一致,以實(shí)現(xiàn)數(shù)據(jù)的無(wú)失真讀出。
電路設(shè)計(jì)中,采用ALTRA公司的EPM7128AETC100-10芯片,在MAX+PLUSⅡ開(kāi)發(fā)環(huán)境中完成分頻器的電路設(shè)計(jì),可以省去大部分的中小規(guī)模集成電路和分離元件,使得電路具有集成度高、工作速度快、編程方便、價(jià)格低廉的顯著優(yōu)點(diǎn)。通過(guò)CPLD和數(shù)據(jù)預(yù)生成的信號(hào)實(shí)現(xiàn)方法,無(wú)需改變硬件電路,即可實(shí)現(xiàn)信號(hào)參數(shù)的任意調(diào)整,同時(shí)外圍電路十分簡(jiǎn)單,為工程調(diào)試和應(yīng)用帶來(lái)了方便。
2.4D/A轉(zhuǎn)換電路
D/A轉(zhuǎn)換電路的實(shí)現(xiàn)如圖3所示。電路中AD7545將波形數(shù)據(jù)轉(zhuǎn)換為模擬信號(hào),然后采用LF353進(jìn)行信號(hào)濾波和整形。
3.結(jié)語(yǔ)
采用上述方法設(shè)計(jì)的波形發(fā)生器,通過(guò)軟件和硬件結(jié)合,充分發(fā)揮了MATLAB強(qiáng)大的仿真功能,盡可能減少了硬件開(kāi)銷。根據(jù)實(shí)際需要,可產(chǎn)生正弦波、三角波、鋸齒波、方波等多種波形,可以產(chǎn)生線性調(diào)頻信號(hào)(LFM)、單頻脈沖信號(hào)(CW)、余弦包絡(luò)信號(hào),以及他們之間的組合信號(hào)等多種波形參數(shù),滿足了工程需要。該波形發(fā)生器用于非周期波形信號(hào)的發(fā)生效果良好。
參考文獻(xiàn):
[1]劉光斌,劉冬.單片機(jī)系數(shù)實(shí)用抗干擾技術(shù)[M].北京,人民郵電出版社,2008.
[2]胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2010.
[3]張善德.微型計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)方法和接口技術(shù)[M]北京,人民郵電出版社,2008.
[4]劉樂(lè)善.微型計(jì)算機(jī)接口技術(shù)及應(yīng)用[M].武漢:華中理工大學(xué)出版社,2005.
注:“本文中所涉及到的圖表、公式、注解等請(qǐng)以PDF格式閱讀”