喬建華,孫少飛,邢彩榮,蘆 丹
(太原科技大學(xué)電子信息工程學(xué)院,太原 030024)
波形發(fā)生器是一種常用的信號源,在生產(chǎn)實(shí)踐、電子設(shè)計和教學(xué)科研中有廣泛應(yīng)用?;趩纹瑱C(jī)的波形發(fā)生器的傳統(tǒng)設(shè)計方法是先設(shè)計系統(tǒng)硬件,制成電路印制板,然后在電路板上進(jìn)行軟件調(diào)試[1-3]。因此,開發(fā)時間長,易受虛焊等硬件噪聲的干擾,不易查錯,且成本高。本文采用proteus軟件來設(shè)計波形發(fā)生器,將軟硬件設(shè)計集于一體,方便快捷,易于修改,效果直觀,同時可用系統(tǒng)自帶的虛擬示波器隨時觀察輸出波形,可大大縮短開發(fā)周期,提高開發(fā)效率。該波形發(fā)生器以單片機(jī)AT89C52為核心,采用DAC0832進(jìn)行數(shù)模轉(zhuǎn)換,可按鍵選擇輸出波形和設(shè)置信號頻率,由LCD顯示其參數(shù),并在算法上引入比例因子,可按頻率大小調(diào)整輸出點(diǎn)數(shù),從而擴(kuò)大了信號的頻率范圍,滿足了工程和實(shí)驗(yàn)的一般要求。
Proteus是英國 Labcenter Electronics公司在1989年開發(fā)的電子電路和單片機(jī)系統(tǒng)設(shè)計與仿真工具軟件[4],它包括智能原理圖輸入系統(tǒng)ISIS(Intelligent Schematic Input System)、虛擬系統(tǒng)模型VSM(Virtual System Modelling)和高級布線編輯軟件ARES(Advanced Routing and Editing Software)三個部分,是目前唯一一種能仿真單片機(jī)及外圍器件運(yùn)行的軟件。并提供了虛擬示波器、邏輯分析儀、電表等儀器儀表供選用,還能和Keil、MPLAB等軟件聯(lián)調(diào)使用。Keil軟件是目前常用的51單片機(jī)編譯調(diào)試軟件,文獻(xiàn)4介紹了Proteus和Keil51集成開發(fā)環(huán)境的接口配置方法,在此不再贅述。本設(shè)計即用Proteus和Keil51聯(lián)調(diào)的方法來實(shí)現(xiàn)該波形發(fā)生器。
本波形發(fā)生器主要產(chǎn)生方波、三角波、鋸齒波、正弦波等四種波形。以單片機(jī)作為控制核心,首先根據(jù)要求頻率計算出波形的周期,然后再把一個周期分為N個等時間間隔點(diǎn)輸出對應(yīng)的數(shù)據(jù)。輸出的數(shù)字信號經(jīng)過D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬信號,再經(jīng)過運(yùn)放將電流輸出轉(zhuǎn)換成電壓輸出就可得到輸出波形。所需的波形種類和頻率從按鍵輸入,并可通過LCD顯示。因此,系統(tǒng)總體結(jié)構(gòu)由主控芯片AT89C52、按鍵模塊、LCD液晶顯示模塊、D/A數(shù)模轉(zhuǎn)換模塊、電流到電壓轉(zhuǎn)換模塊組成。其總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖Fig.1 The block diagram of the system
該系統(tǒng)采用典型的常用的51系列的低功耗單片機(jī)AT89C52作為數(shù)據(jù)處理及控制核心,通過I/O模式與其它各模塊連接。
DAC0832是價格低廉、接口簡單、轉(zhuǎn)換控制容易的8位電流型并行輸出的數(shù)模轉(zhuǎn)換器。其輸入端與AT89C52的P2口相連。由于DAC0832是電流型輸出,故外接兩級運(yùn)放得到雙極性電壓輸出[5]。
液晶顯示器主要用來顯示波形和頻率,所以選用2行×16字符的LCD顯示器LM016L.該液晶模塊采用HD44780控制器,與單片機(jī)通訊采用8位并行傳輸,能存儲 80 個字符碼[6]。LM016L 與AT89C52的P0口經(jīng)上拉電阻相連,三根控制線RS、R/W、E 和 P3.2~P3.4分別連接。顯示效果如圖2示。
圖2 液晶顯示界面Fig.2 The interface of LCD display
鍵盤采用4×4的矩陣鍵盤,行和列分別連到P1口的高四位和低四位,并將列線經(jīng)與門連到INT0口,通過中斷來識別按鍵。電路連接由圖3可見。其中,“+”表示波形/頻率功能切換鍵,“=”表示波形變換鍵,“÷”表示確定鍵,“0-9”數(shù)字鍵,“×”鍵、“-”鍵、“C/ON”鍵未用。
選擇好系統(tǒng)所用的芯片后,就可在Proteus的ISIS下繪制電路原理圖了。其步驟為:
(1)從庫中選擇 AT89C52、DAC0832、LCD、4 ×4矩陣鍵盤,擺放在圖中合適位置。
(2)芯片連接。該系統(tǒng)外用器件較少,因此CPU按I/O接口模式與各芯片連接,DAC0832連到AT89C52的P2口,LCD經(jīng)過上拉電阻連到P0口,按鍵連到P1口。
(3)其他連線。除了上述連接外,CPU的時鐘、復(fù)位電路,與DAC連接的運(yùn)放,電阻以及電源、地線等也逐項(xiàng)連好。
最終繪制出的電路原理圖如圖3所示。
本系統(tǒng)主要是通過按鍵選擇波形和輸入頻率,按下確定鍵后,單片機(jī)根據(jù)輸入的參數(shù)生成相應(yīng)的波形數(shù)據(jù),然后在輸出端就可通過示波器觀察波形。因此,系統(tǒng)軟件主要完成鍵處理和波形生成的工作。
為了提高程序的運(yùn)行效率,采用外部中斷方式檢測按鍵狀態(tài)。系統(tǒng)上電后,先進(jìn)行外部中斷INT0的設(shè)置和LCD顯示的初始化。當(dāng)有按鍵按下,就會進(jìn)入中斷服務(wù)程序,完成鍵處理工作。鍵處理的軟件流程如圖4所示。
在中斷服務(wù)程序中,首先判斷是否是波形/頻率的切換鍵,若按下此鍵,即可改變這兩者的狀態(tài)。然后如果是在頻率狀態(tài),即可由按鍵輸入所要求的頻率值;若是在波形模式,可由波形變換鍵改變波形狀態(tài)。最后按下確認(rèn)鍵,方可保存當(dāng)前的波形和頻率值,并將按鍵標(biāo)志位置1,以備在主程序中檢測按鍵狀態(tài),實(shí)時輸出所設(shè)定的波形。
圖3 系統(tǒng)電路原理圖Fig.3 The circuit schematic diagram of the system
圖4 鍵處理程序流程圖Fig.4 Key process flow chart
主程序主要實(shí)現(xiàn)波形的生成。初始化后首先讀取保存的波形狀態(tài)和頻率值f,由頻率值f計算波形周期T.由于方波只需輸出高低電平,故單獨(dú)采用定時器T0以中斷方式定時交替輸出高低電平。對其它三種波形,根據(jù)頻率值的大小,一周期取不同的點(diǎn)數(shù),通過定時器T1定時輸出對應(yīng)點(diǎn)的數(shù)值,來得到相應(yīng)的波形。主程序流程圖如圖5所示。
圖5 主程序流程圖Fig.5 Main program flow chart
為了得到清晰的波形和擴(kuò)大輸出波形的頻率范圍,其它三種信號每個周期所取的點(diǎn)數(shù)根據(jù)頻率值的大小分段調(diào)整。設(shè)置系統(tǒng)晶振為12 MHz,則一個機(jī)器周期為1 μs,而且DAC0832轉(zhuǎn)換時間也是1 μs[7],因此所產(chǎn)生信號的頻率完全由單片機(jī)輸出點(diǎn)數(shù)的時間間隔來確定。當(dāng)設(shè)定的頻率高時,可取少量點(diǎn),反之可多取些點(diǎn)。同時為了保證輸出曲線平滑,信號一個周期的最少點(diǎn)數(shù)取32點(diǎn),而最多取256個點(diǎn)。當(dāng)取256個點(diǎn)時,由圖5可見取一個點(diǎn)至少需三條指令,所以一個周期最少有3×256 μs,此時可以得到輸出波形的最高頻率fmax約為:
當(dāng)取128個點(diǎn)時,可得到信號的最高頻率約為2 kHz.以此類推,并考慮指令執(zhí)行的時間,得到一個周期所取的點(diǎn)數(shù)N和頻率范圍的對應(yīng)關(guān)系如表1所示。因此,在本系統(tǒng)中,設(shè)置一個比例因子M.
通過M,將輸出點(diǎn)數(shù)和對應(yīng)輸出值聯(lián)系起來,使得輸出的信號最高頻率達(dá)到10 kHz,比文獻(xiàn)[8]的信號頻率范圍更加寬。下面具體介紹每種波形的生成方法及由虛擬示波器所觀察的波形輸出效果。
表1 信號每周期點(diǎn)數(shù)和頻率范圍的對應(yīng)關(guān)系Tab.1 Corresponding relationship between number per cycle and frequency range of the signals
方波的產(chǎn)生比較簡單,對DAC0832而言,相當(dāng)于只需輸入0或FFH.根據(jù)頻率f計算出周期T,通過定時器T0中斷產(chǎn)生t=T/2的定時時間,當(dāng)定時中斷到來,將輸出給DAC0832的值取反即可。因此方波的頻率不受點(diǎn)數(shù)的限制,只與定時時間、中斷服務(wù)程序執(zhí)行時間和DAC0832的最高轉(zhuǎn)換速度有關(guān),最高達(dá) 30 kHz[9].圖 6(a)即為輸出的 100 Hz 的方波波形,當(dāng)頻率改變?yōu)?0 Hz時,波形如圖6(b).從虛擬示波器上可以很清晰地看到波形頻率的變化。
圖6 方波波形Fig.6 Square wave waveform
對8位DAC0832來講,鋸齒波就是給DAC0832依次輸入從0到255按比例增長的整數(shù),到達(dá)255后再從0開始,循環(huán)往復(fù)。首先由表1確定N,每點(diǎn)輸出的時間間隔即為1/(f×N),通過定時器T1產(chǎn)生。由于不同頻率每周期的點(diǎn)數(shù)不同,設(shè)一個比例因子M=256/N,當(dāng)定時時間到,輸出對應(yīng)從0到N-1的各個點(diǎn)n的值M×n.周而復(fù)始,經(jīng)過DAC0832就可得到鋸齒波。圖7為50 Hz的鋸齒波輸出波形。
三角波與鋸齒波的不同之處在于三角波在一個周期內(nèi)是對稱的,輸出給DAC0832的值先從0增加到255,再從255減到0.因此,同樣也設(shè)一個比例因子M=256/N,但對應(yīng)點(diǎn)n時的輸出值為2×M×n.并且在一個周期的前N/2點(diǎn)時,n是遞增的;后N/2點(diǎn)時,n是遞減的.50 Hz的三角波輸出波形圖如圖9所示。
正弦波的各個點(diǎn)值是通過查表取得的。先列一個周期256個點(diǎn)的正弦值表,同樣計算一個比例因子M=256/N,對不同頻率,按不同比例因子的步長取點(diǎn)輸出。圖8是50 Hz的正弦波輸出波形。
圖7 50Hz的鋸齒波 Fig.7 50Hz sawtooth wave
圖8 50Hz的正弦波Fig.8 50Hz sine wave
圖9 50Hz的三角波Fig.9 50Hz triangle wave
本系統(tǒng)基于proteus軟件設(shè)計的波形發(fā)生器可以通過按鍵選擇方波、鋸齒波、三角波、正弦波等不同的波形,以及輸入所需的信號頻率,同時在LCD進(jìn)行顯示,并且可以根據(jù)設(shè)定頻率調(diào)整每個周期的輸出點(diǎn)數(shù),既擴(kuò)大了輸出波形的頻率范圍,又能得到清晰的輸出效果,最后使用系統(tǒng)自帶的虛擬示波器可直觀清楚地觀察到相應(yīng)的輸出波形。如果要制作實(shí)物,只要按所繪制的電路原理圖,運(yùn)用本軟件的高級布線編輯系統(tǒng)ARES就可直接生成PCB圖,然后進(jìn)行印制板的制作??梢姡捎胮roteus設(shè)計單片機(jī)應(yīng)用系統(tǒng)是非常方便有效的一種方式,有非常廣闊的應(yīng)用前景。
[1]李娜,周成虎.函數(shù)信號發(fā)生器的設(shè)計與實(shí)現(xiàn)[J].吉林師范大學(xué)學(xué)報:自然科學(xué)版,2013(3):130-132.
[2]李庭貴.基于DAC0832和AT89S52的信號發(fā)生器設(shè)計[J].電子科技,2012(6):104-106+114.
[3]洪惠宇.基于單片機(jī)的簡易波形發(fā)生器電路的設(shè)計[J].南京工程學(xué)院學(xué)報:自然科學(xué)版,2012(4):67-72.
[4]喬建華,李臨生,田啟川.Proteus在單片機(jī)教學(xué)中的應(yīng)用分析[J].電氣電子教學(xué)學(xué)報,2008,30(3):70-73.
[5]Texas Instruments.DAC0832 datasheet[EB/OL].[2013-03-10].http://www.ti.com/lit/ds/symlink/dac0832.pdf.
[6]Hitachi Semiconductor.LM016L datasheet[EB/OL].[2013-12-07].http://www.alldatasheet.com.
[7]李曉林,牛昱光,閻高偉.單片機(jī)原理與接口技術(shù)(第二版)[M].北京:電子工業(yè)出版社,2011.
[8]陳輝,陳梅,杜靜,等.基于AT89C51單片機(jī)波形發(fā)生器的Proteus設(shè)計[J].自動化與儀器儀表,2012(3):51-53.
[9]陳曉風(fēng).DAC0832數(shù)模轉(zhuǎn)換器轉(zhuǎn)換速度的測試與研究[J].福建師范大學(xué)學(xué)報:自然科學(xué)版,2003(3):19-21.