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