陳林林,孫 群,高雅楠
(聊城大學機械與汽車工程學院,山東 聊城 252059)
波形信號發生器是一種數據信號發生器,廣泛應用于通信、測控、導航、雷達、醫療等領域,在高校實驗室中應用也十分普遍。基于單片機的簡易波形信號發生器是一種常用的信號源,它廣泛用在電子技術實驗、自動控制系統和其他科研領域。目前,簡易波形發生器的構成方法有很多,例如采用DDS型的任意波發生器[1-4]、采用專用的信號發生芯片MAX038以及傳統的AWG[5-7]。
本文在分析現有信號發生器工作原理的基礎上,通過分析比較后,基于單片機AT89C52和DAC0832設計了一種信號發生器,應用于高校實驗室學生實驗,具有硬件簡單,價格低廉容易對頻率和幅值進行控制等優點。
設計的波形發生器的測控需求如下:
1)利用單片機程序,產生數字式的正弦波、三角波、方波頻率可調的信號。
波形要求:
正弦波:輸出電壓值為-5V~5V,初始頻率為10Hz,頻率最大值為1 000 Hz,頻率調節步進值為10Hz。
三角波:輸出電壓為-5V~5V,初始頻率為50Hz,頻率最大值為500Hz,頻率調節步進值為50Hz。
方波:輸出電壓為-5V~5V,初始頻率為200Hz,頻率最大值為2kHz,頻率調節步進值為200Hz。
2)可通過鍵盤進行波形和頻率的切換。
3)通過LCD顯示波形類型及頻率大小。
4)設計硬件電路,選擇合適的器件,調節好器件的工作狀態,保證能輸出明顯的波形信號,且不失真。
在系統總體設計時分塊完成,按照波形設定、D/A轉換、51單片機連接、鍵盤控制和顯示5個模塊來設計。最后通過聯調仿真,得出仿真結果。總體設計框圖如圖1所示。

圖1 系統總體設計框圖
2.2.1 控制模塊
用單片AT89C52作為系統的主控核心。具有體積小,使用靈活,易于人機對話,數據處理良好,單指令周期和35M高速運算等優點,且單片機功耗低,價格低廉。
在此系統中,采用單片機作為控制比采用FPGA實現更簡便。基于綜合性價比,確定選擇此方案。
2.2.2 按鍵及其顯示模塊
為了提高單片機的資源利用率和運行效率,按鍵顯示部分直接使用zlg7289擴展鍵盤,鍵盤與單片機連接。zlg7289芯片與單片機之間通信方便,而且由zlg7289對鍵盤進行自動掃描,可以去抖動,充分地提高了單片機的工作效率。
2.2.3 波形產生模塊
使用單片機的定時器設置定時時間,每半個周期對I/O口取反一次,從而實現頻率輸出。這種方案雖然在高頻頻段誤差比較大,但是編程簡單易控制,因此,確定選擇此方案。
2.2.4 D/A轉換
單片輸出的是數字信號,必須通過D/A轉換后才能模擬信號,采用DAC0832,這是8位的并行D/A轉換器,轉換速度快。
AT89C52單片機的內部結構與MCS-51系列單片機的構成基本相同。正常情況下DAC0832與單片機的接口應為4條數據線。當DAC0832未工作時其CS輸入端應為高電平,此時芯片禁用,CLK和DO/DI的電平可任意。當要進行A/D轉換時,須先將CS使能端置于低電平并且保持低電平直到轉換完全結束。此時芯片開始轉換工作,同時由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數據信號。在第1個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。在第2、3個脈沖下沉之前DI端應輸入2位數據用于選擇通道功能。
按鍵原理圖如2所示,對于中斷方式對波形的切換,因為INT0優先于INT1,當按鍵按下時,首先判斷是否有幅值輸出然后判斷出現相應波形,當無中斷0時,即默認第二個DA轉換器的參考電壓為5V,在執行中斷1判斷出相應的波形。第1個按鍵進行波形選擇,選擇各波形的初始頻率;第2個按鍵對頻率進行升高;第3個按鍵對頻率進行降低;第4個按鍵輸出波形。

圖2 按鍵電路圖
由于單片機輸出的是數字信號,要得到模擬信號的波形就必須對其進行數模轉換,采用DAC0832數模轉換器。由于其輸出為電流輸出,因為外加運算放大器使之裝換為電壓輸出。通過DI7~DI0與單片機P0端口相連接;CS與單片機P2.0端口相連接;WR2與單片機P2.1端口相連接。

圖3 D/A轉換電路

圖4 顯示電路
通過液晶1602顯示輸出的波形、頻率,其電路圖如圖3~圖6所示。其中D0~D7與單片機P1端口相連接;RS與單片機P2.2端口相連接;RW與單片機P2.3端口相連接;E與單片機P2.4端口相連接。
4.1.1 正弦波設計
假設 Y=128SIN(360X/255/360×2×3.14)+128 的正弦波,DAC0832數據端口給的數據的范圍是0~255一共256個。前0~127表示X軸上方的電壓值,那么128~255是X軸下方的電壓值。那么可以得到value=128×SIN(360X/255/360×2×3.14)+128;抽樣256 個點,則 value=128SIN(360X/255/360×2×3.14)+128,X為0~255。本文采用查表的方法,把一個周期的圓分成 255份,求出每一份的正弦值 i,然后把所求得的正弦值 i×128+128,最后換算成16進制數。
4.1.2 三角波程序設計
當電壓隨時間線性增加,到一定時間又線性降低時,就形成了三角波。單片機可以輸出的數最小為0,最大為255。當輸出的值從00000000B線性增加到11111111B,然后從11111111B減小到00000000B時,就可以產生三角波。本文共采集了65個三角波坐標。
4.1.3 方波程序設計
當單片機輸出從00000000B直接增加到11111111B時,輸出的電壓就從低電平變到高電平了,用延時程序是高低電平保持一段時間在切換。由此,產生方波只需要取2個值,0x00和0XFF。
頻率改變與波形輸出程序框圖如圖5和圖6所示。

圖5 頻率改變程序流程圖

圖6 波形輸出程序流程圖
采用定時器來控制波形頻率,通過輸出的兩點間的延時來實現調頻功能。當晶振頻率為24M時,單片機的機器周期為0.5μs。假設需要10Hz的正弦波,由于正弦波的取點個數為256個,所以每個點所要的時間為1/10/256s,選用定時/計數器T0的方式1實現,設計數器初值為X:


表1 正弦波頻率初值

表2 三角波頻率初值

表3 方波頻率初值

圖7 三角波仿真實驗圖
表1為正弦波頻率初值,表2為三角波頻率初值,表3為方波頻率初值。
本文鍵盤部分由4個鍵組成,分別控制波形的選擇、頻率的升、降以及波形輸出。P3.2為中斷入口地址,當P3.2=0時,說明有鍵按下。取P3口的值和0Xf0相遇,取出P3口的高4位,最后使用swatch(),當P3&0xf0=0xe0時,波形選擇鍵按下;當P3&0xf0=0xd0時,頻率升鍵按下;當P3&0xf0=0xb0時,頻率衰減鍵按下。
1602字符型LCD通常有14條引腳線或16條引腳線,LCD顯示流程為初始化LCD,設置顯示位置,最后顯示字符。

圖8 方波仿真實驗圖
將各部分的程序及各子程序編好,使用Keil進行編譯,加載到Proteus軟件電路中進行仿真[8]。
圖7為頻率在50,200,400Hz條件下的三角波仿真圖。
圖8為頻率在200,600,1 200 Hz條件下的方波仿真圖。
圖9為頻率在10,40,80Hz條件下的正弦波波仿真圖。

圖9 正弦波仿真實驗圖

表4 測量實驗結果

圖10 示波器測量的波形圖
調試好軟硬件后,利用北京普源精工生產的DS1102示波器測量波形質量,方波、三角波和正弦波波形如圖10所示。
在周期T-8T下對頻率的測試結果如表4所示。
誤差指標選用最小均方差(mean squared error,MSE),定義如下:

式中:(i)——理論值;
x(i)——實測值,n=8。
計算得到波形頻率測量誤差的MSE為0.04Hz,符合一般測量的精度要求。
1)針對測控需求,確定了函數發生器的硬件和軟件設計方案。
2)采用單片機作為控制器,直接由軟件產生波形信號的輸出,可通過修改軟件,還可以輸出其他任意波形。
3)基于Proteus實現了波形發生器的仿真測試,并做了典型波形測量實驗,波形頻率測量精度MSE為0.04Hz。
后續工作中,擬采用集成可編程DDS器件實現直接頻率合成,在單片機的控制與協調下輸出頻率和相位可調的信號波形,提高頻率范圍。
[1] Tierney J.A digital frequency synthesizer[J].IEEE Transactions on Audio and Electroacoustics,1971(19):48-57.
[2] 王丹,李平,文玉梅,等.采用DDS頻率合成的虛擬信號發生器研究[J].傳感技術學報,2007,20(3):586-591.
[3] Marcello S, Arianna M, Stefano B, et al.High spectral purity digital direct synthesizer implementation by means of a fuzzy approximator[J].Applied Soft Computing,2004(4):241-257.
[4] 孫群,宋卿.基于DSS技術的波形發生器設計[J].儀表技術與傳感器,2009,45(4):67-70.
[5] 董亞男,馬俊,周泉,等.基于單片機的智能信號發生器設計與仿真[J].電子測量技術,2014,37(1):62-65.
[6] 孫勤江,沈彬.基于單片機的信號發生器設計[J].石油和化工設備,2014,17(1):19-22.
[7] 周登榮,周玉榮.一種任意波形信號發生器的實現方法[J].重慶師范大學學報:自然科學版,2014,31(1):84-88.
[8] 范海紹.零起點學Proteus單片機仿真技術[M].北京:機械工業出版社,2012:51-54.