摘 要:本文針對高等職業(yè)教育中單片機(jī)實(shí)訓(xùn)課程的教學(xué)需求,以51單片機(jī)作為核心控制單元,并選用DAC0832芯片作為D/A轉(zhuǎn)換模塊,設(shè)計(jì)并實(shí)現(xiàn)了一款能夠通過按鍵操作輸出包括三角波、鋸齒波、矩形波、梯形波和正弦波在內(nèi)的五種基本波形的信號發(fā)生器,并通過虛擬仿真技術(shù)對其性能進(jìn)行了驗(yàn)證。該案例適用于高職單片機(jī)課程虛擬仿真實(shí)驗(yàn)教學(xué),能有效提高教學(xué)效率。
關(guān)鍵詞:51單片機(jī) 波形發(fā)生器 虛擬仿真
波形發(fā)生器作為一種能夠產(chǎn)生特定波形輸出的電子設(shè)備,在電子測量、信號處理、通信技術(shù)以及教育實(shí)驗(yàn)等領(lǐng)域扮演著至關(guān)重要的角色[1]。隨著電子技術(shù)的快速發(fā)展,對波形發(fā)生器的性能要求也日益提高,尤其是在精確度、穩(wěn)定性和靈活性方面。傳統(tǒng)的波形發(fā)生器多采用模擬電路實(shí)現(xiàn),雖然在特定應(yīng)用中表現(xiàn)穩(wěn)定,但在面對復(fù)雜波形生成和快速響應(yīng)需求時,其靈活性和可擴(kuò)展性受限。因此,基于數(shù)字技術(shù)的波形發(fā)生器成為研究的熱點(diǎn)。
在高等職業(yè)教育電子信息類專業(yè)的單片機(jī)課程中,基于51單片機(jī)的波形發(fā)生器設(shè)計(jì)是一個典型的D/A轉(zhuǎn)換技術(shù)教學(xué)案例。51單片機(jī)具備低成本、高性能等特點(diǎn),易于編程且應(yīng)用基礎(chǔ)廣泛,是實(shí)現(xiàn)數(shù)字波形發(fā)生器的理想選擇。本文基于高職單片機(jī)實(shí)訓(xùn)課程教學(xué)實(shí)踐,探討基于51單片機(jī)的波形發(fā)生器的軟硬件設(shè)計(jì)方案,并通過虛擬仿真實(shí)驗(yàn)驗(yàn)證所設(shè)計(jì)波形發(fā)生器的性能。
1 系統(tǒng)方案設(shè)計(jì)
本設(shè)計(jì)方案的目標(biāo)是構(gòu)建一個基于51單片機(jī)的波形發(fā)生器,該發(fā)生器能夠產(chǎn)生和輸出五種在工業(yè)控制、信號處理和測量測試等領(lǐng)域有著廣泛應(yīng)用的基本波形:三角波、鋸齒波、矩形波、梯形波和正弦波。
本系統(tǒng)專為高職院校單片機(jī)課程的教學(xué)實(shí)踐而設(shè)計(jì),目的在于使學(xué)生能夠深刻理解數(shù)字信號轉(zhuǎn)換為模擬信號的原理和步驟,進(jìn)而熟練掌握D/A轉(zhuǎn)換技術(shù)。因此,在方案設(shè)計(jì)上力求簡潔明了,避免過度復(fù)雜。系統(tǒng)以51單片機(jī)作為控制核心,通過用戶輸入模塊接收控制信號,單片機(jī)根據(jù)這些信號選擇相應(yīng)的波形生成算法,并輸出PWM信號至D/A轉(zhuǎn)換模塊。隨后,D/A轉(zhuǎn)換模塊將數(shù)字信號轉(zhuǎn)換為模擬信號,信號放大模塊對輸出信號進(jìn)行增益提升,最終將放大后的信號輸送至輸出與觀測模塊,以便進(jìn)行波形觀測。系統(tǒng)的原理框圖詳見圖1。
2 硬件設(shè)計(jì)
本系統(tǒng)的硬件設(shè)計(jì)涵蓋了多個關(guān)鍵部分,包括按鍵模塊電路、主控模塊接口、D/A轉(zhuǎn)換模塊電路以及運(yùn)算放大電路。系統(tǒng)通過五個獨(dú)立的按鍵構(gòu)成用戶輸入模塊,以DAC0832芯片作為D/A轉(zhuǎn)換的核心,利用運(yùn)算放大器對信號進(jìn)行放大,并通過示波器對輸出信號進(jìn)行觀測。
DAC0832是一款廣泛應(yīng)用于8位D/A轉(zhuǎn)換的芯片,支持雙緩沖、單緩沖和直通三種工作模式,并具備兩個模擬電流輸出端。在本設(shè)計(jì)中,波形發(fā)生器需通過不同按鍵控制輸出五種不同的波形,這要求系統(tǒng)能夠處理多路模擬量的非同步輸出。為此,我們采用DAC0832的單緩沖接法來實(shí)現(xiàn)這一功能。具體實(shí)現(xiàn)方式是,將DAC0832的數(shù)字量輸入允許線ILE端連接至高電平,確保其始終有效;將數(shù)據(jù)傳送信號控制線XFER端和數(shù)字量輸入控制線WR2端接地,保持其始終有效狀態(tài)。片選信號CS和數(shù)字量輸入控制線WR1則接入51單片機(jī),通過控制CS和WR1來實(shí)現(xiàn)DAC0832的單緩沖輸入方式,從而滿足系統(tǒng)的設(shè)計(jì)需求。
DAC0832支持單極性輸出和雙極性輸出兩種模式,其輸出信號為電流形式。由于DAC0832輸出的是電流信號,為了便于觀測波形,設(shè)計(jì)中需外接信號放大模塊,將電流信號轉(zhuǎn)換為電壓信號。D/A轉(zhuǎn)換電路與信號放大電路的設(shè)計(jì)詳見圖2。
在本設(shè)計(jì)中,選用了LM324運(yùn)算放大器作為信號放大模塊。LM324是一種基于差分放大器和反饋機(jī)制的共射極結(jié)構(gòu)運(yùn)算放大器,具有較高的開環(huán)增益,廣泛應(yīng)用于各類信號發(fā)生電路中。根據(jù)DAC0832的輸出特性,本設(shè)計(jì)采用了兩級運(yùn)算放大方式,將電流信號轉(zhuǎn)換為電壓信號并進(jìn)行放大。根據(jù)運(yùn)算放大器的工作原理,DAC0832的輸出電流在經(jīng)過運(yùn)算放大器一級放大后,輸出電壓為負(fù)電壓,因此LM324采用雙電源接法。經(jīng)過運(yùn)算放大器二級放大后,輸出電壓轉(zhuǎn)化為正值。
3 軟件設(shè)計(jì)
波形發(fā)生器的主程序控制邏輯詳見圖3。該系統(tǒng)持續(xù)監(jiān)測按鍵狀態(tài),一旦偵測到按鍵動作,單片機(jī)即會讀取被按下按鍵的鍵值。隨后,根據(jù)讀取的鍵值,單片機(jī)將選擇對應(yīng)的波形生成算法,并輸出相應(yīng)的PWM信號,以模擬產(chǎn)生所需的波形。
波形發(fā)生器的設(shè)計(jì)中,波形生成算法和DAC0832的采樣轉(zhuǎn)換函數(shù)是實(shí)現(xiàn)系統(tǒng)波形輸出的核心。在本設(shè)計(jì)中,波形發(fā)生器通過不同的按鍵控制輸出五種不同的波形,屬于多路模擬量非同步輸出的情況。在硬件設(shè)計(jì)中,DAC0832采用單緩沖接法來實(shí)現(xiàn)這一功能,其中ILE端直接接高電平以保持其始終有效,而XFER端和WR2端接地以保持其始終有效,片選信號CS和數(shù)字量輸入控制線WR1接入單片機(jī),實(shí)現(xiàn)了僅通過CS和WR1控制來構(gòu)建DAC0832的單緩沖輸入方式。因此,對DAC0832的采樣轉(zhuǎn)換函數(shù)設(shè)計(jì),就簡化為對片選信號CA和數(shù)字輸入量控制線WR1的控制。
根據(jù)DAC0832的工作時序,單片機(jī)在將片選信號CS置低的同時,將DAC DATA傳輸至I/O口,準(zhǔn)備送入芯片進(jìn)行轉(zhuǎn)換,數(shù)字量輸入控制線WR1產(chǎn)生負(fù)脈沖,控制信號ILE保持高電平有效,數(shù)據(jù)即被鎖存至輸入寄存器。當(dāng)數(shù)據(jù)傳送信號控制線XFER和數(shù)字量輸入控制線WR2為低電平時,數(shù)據(jù)從輸入寄存器傳輸?shù)紻AC寄存器,最終根據(jù)參考電壓和電阻網(wǎng)絡(luò)參數(shù)轉(zhuǎn)換成模擬電流信號。
DAC0832作為一款8位D/A轉(zhuǎn)換器,其分辨率為28,本設(shè)計(jì)通過在1LSB級別上調(diào)整DAC0832的輸出信號,以盡可能地減小因量化產(chǎn)生的誤差,使得輸出信號更加接近理想波形。
為了簡化程序設(shè)計(jì),便于學(xué)生理解運(yùn)用,本設(shè)計(jì)波形生成算法均采用能夠?qū)崟r觀測的直接計(jì)算法。
(1)三角波的生成算法:根據(jù)三角波的特點(diǎn),需要生成具有周期性上升和下降斜率的波形,因此輸入到DAC0832的數(shù)字量分別通過256次循環(huán)遞增和循環(huán)遞減運(yùn)算,即可得到三角波。
(2)鋸齒波的生成算法:根據(jù)鋸齒波的特點(diǎn),需要生成具有均勻斜率的波形,也可以認(rèn)為是三角波的一半,因此輸入到DAC0832的數(shù)字量通過256次循環(huán)遞增運(yùn)算后直接回0,即可得到鋸齒波。
(3)矩形波的生成算法:根據(jù)矩形波的特點(diǎn),需要生成周期性變化的信號,其值在兩個水平之間快速切換,因此輸入到DAC0832的數(shù)字量通過簡單的高低電平切換就可以得到矩形波。
(4)梯形波的生成算法:根據(jù)梯形波的特點(diǎn),生成梯形波的算法需要涉及定義梯形波的采樣頻率、時間長度、周期、上升時間、下降時間和平臺時間。采用直接計(jì)算的方法,將梯形波拆解為三角波與矩形波的組合。因此輸入到DAC0832的數(shù)字量首先通過循環(huán)自加直到達(dá)到最大值,然后停止自加在一定時間內(nèi)保持該最大值,最后再通過循環(huán)自減直到達(dá)到最小值。
(5)正弦波的生成算法:根據(jù)正弦波的特點(diǎn),生成正弦波的算法可以采用DDS(直接數(shù)字合成)法,通過相位累加對每個采樣點(diǎn)進(jìn)行相位更新,并計(jì)算對應(yīng)正弦值,即可得到正弦波。
4 仿真驗(yàn)證
本設(shè)計(jì)通過在Proteus軟件中進(jìn)行虛擬仿真,對系統(tǒng)的功能進(jìn)行了驗(yàn)證,如圖4所示。
運(yùn)行仿真工程,分別按下五個代表不同波形生成的獨(dú)立按鍵,利用虛擬示波器觀測波形。實(shí)驗(yàn)結(jié)果表明,本設(shè)計(jì)系統(tǒng)能夠根據(jù)按鍵輸入情況對應(yīng)輸出三角波、鋸齒波、矩形波、梯形波和正弦波等五種波形。仿真結(jié)果如圖5所示。
5 結(jié)論
本系統(tǒng)遵循簡潔實(shí)用的設(shè)計(jì)理念,提供了一個易于理解和操作的教學(xué)案例。通過在Proteus仿真軟件中的直觀展示,系統(tǒng)能夠方便地展示運(yùn)行結(jié)果,極大地便利了單片機(jī)應(yīng)用系統(tǒng)開發(fā)的教學(xué)和實(shí)踐過程。這一設(shè)計(jì)有助于學(xué)生快速把握單片機(jī)應(yīng)用系統(tǒng)D/A轉(zhuǎn)換的工作原理和程序邏輯,對于提升教育教學(xué)質(zhì)量和實(shí)驗(yàn)操作效率具有重要意義。此外,系統(tǒng)的設(shè)計(jì)還充分考慮了靈活性和擴(kuò)展性,使其能夠適應(yīng)不斷變化的教學(xué)需求,為單片機(jī)技術(shù)的教學(xué)和研究提供了基礎(chǔ)。
基金項(xiàng)目:湖南省教育科學(xué)研究工作者協(xié)會“十四五”規(guī)劃2024年度課題《電子信息工程技術(shù)專業(yè)高層次技能型人才培養(yǎng)體系研究》(XJKX24B195)。
參考文獻(xiàn):
[1]涂國強(qiáng),周來宏,朱雙霞,等.基于MCS-51的高精度信號發(fā)生器設(shè)計(jì)與仿真驗(yàn)證[J].儀器儀表標(biāo)準(zhǔn)化與計(jì)量,2024(01):22-25.
[2]錢平,卜捷捷,羅文煜.基于Proteus的Arduino單片機(jī)虛擬仿真實(shí)訓(xùn)案例設(shè)計(jì)[J].科技與創(chuàng)新,2024(13):178-180+184.
[3]印健健.基于DAC0832數(shù)/模轉(zhuǎn)換電路的仿真設(shè)計(jì)[J].電子制作,2021(17):72-73+65.