傅仁軒,王慶華
(廣東工貿職業技術學院機電工程學院,廣東廣州 510510)
信號發生器是電子電路設計、自動控制系統和儀表測量校正調試中被廣泛使用的一種信號發生裝置和信號源。正弦信號是頻率成分最為單一的一種常見信號源,任何復雜信號都可以通過傅里葉變換分解為許多頻率不同、幅度不等的正弦信號的疊加,應用領域非常廣泛。在科學研究、電子技術實驗、電子工程設計實驗中也經常需要輸出方波、三角波、鋸齒波、正弦波、任意波形等信號發生器,而傳統的信號源一般價格昂貴,自動調節不靈活。參考文獻[1-8]論述的信號發生器幅值固定,只能調節頻率,但在科學研究、工業控制中經常需要幅值可變的信號,以虛擬仿真平臺設計的信號發生器實現了頻率與幅值的雙調節,既可以用于自動化工程的模擬量輸出,也可用于單片機教學演示。
信號發生器的總體結構框圖如圖1 所示,包括單片機、波形選擇按鍵、波形設計模塊、顯示模塊、波形控制模塊、幅值控制模塊。單片機[9]是信號發生器的控制核心。波形的類型、幅值、頻率通過按鍵進行選擇,并在顯示模塊上顯示波形的具體參數。幅值控制模塊通過單片機內的數字量經D/A 轉換、信號放大,輸出幅值為0~10 V 的信號。頻率控制模塊通過單片機內的數字量經D/A 轉換、二級信號放大,輸出頻率可調的波形信號。

圖1 信號發生器的總體結構框圖
文中設計了輸出方波、鋸齒波、三角波、正弦波4種波形的信號發生器,重點是幅值可調和頻率可調,幅值調節范圍為1~10 V,頻率調節范圍為10~100 Hz。對于波形選擇設計了4 個功能鍵,分別是波形類型選擇、頻率/幅值切換、頻率/幅值遞增、頻率/幅值遞減。系統能用虛擬示波器顯示輸出信號的實際波形,液晶顯示模塊顯示輸出波形的當前波形類型、幅值、頻率。
波形發生器的控制核心是單片機,選用的AT89C51RC2[10]具有32 k 閃存、32 位I/O、256 字節內存,附加1 k XRAM。波形發生器的控制按不同的功能分為按鍵模塊電路、幅值控制模塊電路、頻率控制模塊電路及顯示模塊電路。
按鍵模塊電路選用中斷方式[11],由于輸出波形時,定時器以微秒為單位產生中斷的次數比較頻繁,若按鍵采用查詢方式,則響應會延遲。4 個按鍵KEY1、KEY2、KEY3、KEY4 分別連接單片機的P3.4、P3.5、P3.6、P3.7,同時連接到與門74HC21 的一個輸入端,與門的輸出連接到單片機的外部中斷INT0,中斷選擇電平觸發方式,低電平時會觸發中斷,4 個按鍵中只要有一個鍵被按下,就會拉低INT0,從而產生按鍵中斷。
幅值控制模塊電路如圖2 所示,其主要作用是調節輸出電壓值的大小,以滿足實際電路控制的需要。

圖2 幅值控制模塊電路圖
幅值控制模塊電路由D/A 轉換器和運算放大器組成。由于輸出波形是模擬信號,而單片機輸出的是數字量,因此必須經過D/A 轉換來實現。D/A 轉換芯片選用DAC0832(即U3),它有兩個數據寄存器,8 位分辨率。由于D/A 轉換輸出的模擬量幅值較小,需放大后才能在示波器或其他設備上顯示和應用。放大器選用LM358N(即U7),它包括兩個獨立、高增益、內部頻率補償的雙運算放大器,適合雙電源工作模式和電壓范圍寬的單電源工作模式。
單片機的P2 口連接U3的輸入DI,U3的輸出連接U7的第一級放大器的輸入端。U3的工作方式設置為直通,參考電壓設置為-5 V。輸出電壓V1的范圍為0~+5 V,數字量D與模擬量V1的關系為:

其中,VREF為參考電壓,電壓值為-5 V,D是P2 口的數字量,取值為0~255。
通過改變單片機P2 口輸入的數字量D的大小來調節輸出電壓V1的數值。如果要求輸出電壓V1為0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,則由式(1)可以計算出與之相對應的數字量D分別為:26,51,77,102,128,154,179,205,230,255。若給P2 口輸入數字量D為任意0~255 的數,則可得到輸出0~+5 V 的任意電壓值V1,從而實現了輸出電壓V1幅值的調節。
頻率控制模塊電路由D/A 轉換器、二級運算放大器組成,電路連接見圖3(下半部分)。

圖3 頻率控制模塊電路圖
D/A 轉換芯片選用DAC0832(即U4)。運算放大器的選用考慮的因素有由于需要輸出正弦波,其信號放大時必須采用雙電源供電,否則正弦波的負半周將被削掉,故選擇雙電源的LM358N 運算放大器。
顯示模塊電路由74HC573 芯片和液晶模塊LCD12864 組成,電路連接如圖3(上部分)所示。LCD12864 是一種圖形點陣液晶顯示器,可完成圖形顯示,也可以顯示8×4 個(16×16 點陣)漢字或者顯示16×4 個(8×16 點陣)ASCII 碼。顯示的內容有4 行:波形類型、頻率、幅值、頻率/幅值的加減,顯示效果如圖4 所示。

圖4 液晶顯示效果圖
74HC573 芯片的作用如下:
單片機的P0 口既要輸出波形信號的參數,并顯示在LCD12864A上,也要輸出波形信號的數據給D/A轉換器,故通過設計鎖存器74HC573(即U2)控制其輸出波形信號的參數,或輸出波形信號的數據。
電路的連接方式如下:
單片機的P0 口同時連接U2的輸入端口和DAC0832(即U4)的輸入DI,給LCD 發送數據時,U4鎖存;給U4發送數據時,LCD 鎖存。U4的工作方式設置為直通,參考電壓設置為U7輸出的V1,U4的輸出經過LM358N(即U8)二級放大后輸出V2,U8的第二級放大接反向比例運算電路后放大兩倍,則V2的輸出電壓范圍為V1的兩倍。
系統軟件流程如圖5 所示,按照模塊化設計,包括主程序、初始化、按鍵處理、顯示、波形生成、定時中斷等模塊。

圖5 系統軟件流程
初始化程序包括頻率、幅值的初始化,液晶顯示模塊的初始化,定時器的初始化。按鍵處理程序設計4 個功能鍵,按鍵1 是波形選擇,依次在方波、鋸齒波、三角波、正弦波之間切換;按鍵2 是頻率/幅值選擇,在頻率和幅值之間切換;按鍵3 是遞增鍵,每按一次,頻率按10 Hz 的步長遞增或幅值按1 V 的步長遞增;按鍵4 是遞減鍵,每按一次,頻率按10 Hz 的步長遞減或幅值按1 V 的步長遞減。波形生成程序是軟件設計中的重要內容,通過改變單片機的D/A 輸出電壓,可以得到各種類型的電壓波形輸出;通過給定時器T0 設定不同的初值,可改變輸出波形的頻率;通過改變單片機D/A 輸出的峰值電壓,可改變輸出波形的幅值。
不論生成哪種類型的波形,首先要確定一個周期的采樣次數,為了獲得較好的波形,每個周期設計采樣256 次。其次要計算單片機輸出D/A 數字值的最大值,DAC0832 是8 位轉換器,最大值為255。因51 單片機的運算速度有限,若在輸出數據時計算其值,因占用CPU 時間不能滿足波形的頻率要求,故預先計算出256個采樣點的數字量,并存入各類波形的數組中。同時將各種頻率對應的定時器T0 的初值計算出來,保存到頻率數組中等待調用。
方波、鋸齒波、三角波生成方法比較簡單,所以下面僅說明產生正弦波形時D/A的數據計算過程。函數表達式:y=sinx,將其幅值擴大變為:y=128 sinx,為使y不出現負值,上移128 后變為:y=128 sinx+128,在2π范圍內有256 個采樣點,則采樣點i對應的數據為:

當i在0~255 變化時就可以得到256 個采樣點,將得到的256 個點的數據保存到數組中以供調用。
定時器T0 中斷程序實現輸出波形的頻率控制,改變定時器初值即可改變輸出波形的頻率,晶振頻率為12 MHz,單片機的機器周期為1 μs,若要輸出10 Hz 的正弦波,則它的周期為1/10 s=100 ms=100 000 μs,一個周期被分成256 個點,每2 個采樣點之間的時間為100 000/256=390 μs,即定時器T0 每390 μs產生1個中斷,并輸出1個數據點,則輸出256個采樣點就可以實現10 Hz 的頻率輸出正弦波。定時器T0 的初始值預先可計算出來并存入數組,可以節省CPU 時間。初值計算式:65 536-(1 000 000/(10+i*10)/256),i取值為0~9,對應頻率為10~100 Hz。
完成了硬件設計和軟件程序編程后,采用Proteus 軟件[12-16]對波形生成電路和程序進行仿真。
系統仿真選用Proteus 軟件,它是一款電路設計與仿真軟件,包括ISIS、ARES 等軟件模塊。ISIS 模塊用來完成電路原理的布圖和仿真,既可以對模擬電路仿真、數字電路進行仿真,也可以對單片機及其外圍電路組成的系統仿真。它提供了各種虛擬儀器,如示波器、邏輯分析儀、信號發生器、電壓表、電流表等。使用Proteus 軟件仿真大大節省了時間和開發費用,在軟件仿真通過后再制作印刷電路板進行電路實驗。
程序經過Keil 編譯器生成執行文件,下載到Proteus 軟件的CPU 內,用虛擬示波器觀察各種信號波形,虛擬示波器可以同時觀察4 個通道輸入信號的波形,通過按鍵或修改單片機的輸入值可以得到不同幅值、不同頻率的波形,測試輸出波形的頻率和幅值。圖6(a)是幅值為2 V,頻率為10 Hz 的正弦波仿真圖;圖6(b)是幅值為2 V,頻率為80 Hz的正弦波仿真圖;圖6(c)是幅值為9 V,頻率為80 Hz的正弦波仿真圖。

圖6 正弦波仿真圖
文中設計了幅值和頻率均可調節的信號發生器,通過Proteus 仿真平臺的虛擬示波器顯示經按鍵選擇的波形,LCD 顯示波形的類型、幅值、頻率,驗證了信號發生器的電路設計合理、生成波形軟件的程序運行穩定。輸出幅值可調的信號在工業控制中應用廣泛,如用于變頻調速,通過輸出電壓的大小控制變頻器的頻率高低,以達到調速的目的。另外,利用Proteus 仿真平臺,在單片機教學實驗中大大減少了硬件制作的成本和操作難度,解決了綜合實驗、設計實驗及創新實驗中的不足和沒有物理原型就不能實驗的難題。