任英杰,黃建清,郭凱,李亞軍
(海南大學(xué)熱帶農(nóng)林學(xué)院,海南儋州571737)
簡單函數(shù)信號發(fā)生器的設(shè)計從一出現(xiàn)就在國內(nèi)外引來了前所未有的熱潮,因為它在航空航天、儀器檢測等方面起到了不可或缺的作用,更是對國民經(jīng)濟的發(fā)展有極大的貢獻。其中不乏有一些復(fù)雜的方法去得到,用這些方法雖然可以得到常用的3種基本波形,但是出于對成本等方面的考慮,依舊沒有得到大規(guī)模的使用。本文采用的是STC89C51單片機聯(lián)合DA轉(zhuǎn)換、電壓放大等一系列措施去實現(xiàn)簡單函數(shù)信號發(fā)生器的設(shè)計。在本次設(shè)計過程中要用到Proteus和AD10工具軟件,它們均是集仿真、調(diào)試與設(shè)計合為一體的綜合性軟件。也會用到keil 3編程軟件,這是目前比較流行的一款軟件。
主要以STC89C51為核心,同時也附帶有數(shù)模轉(zhuǎn)換芯片DAC0832去進行D/A轉(zhuǎn)換,LM324芯片的作用是電壓比較和放大。運用3個按鍵依次可實現(xiàn)控制系統(tǒng)的輸出波形的類型和輸出波形的周期。
中央控制芯片STC89C51。STC89C51單片機的內(nèi)部含有4K Bytes的可反復(fù)擦寫1 000次及以上的Flash只讀程序存儲器,此器件兼容標準MCS-51指令系統(tǒng)及89C51的引腳結(jié)構(gòu),芯片的內(nèi)部集成了通用8位的中央處理器和ISP FLASH的存儲單元,具有系統(tǒng)可編程的(ISP)良好特性。此次設(shè)計所使用的89C51芯片是一個40只引腳的和進行雙列直插的DIP封裝類別。擁有了32個I/O口對相應(yīng)的外圍電路實施及時準確的控制。該器件有兩種復(fù)位的方式,即按鍵復(fù)位和上電復(fù)位,在通常的實物設(shè)計中我們一般用它們的復(fù)用方式,因為這樣的好處是可以在一個出故障的時候保證系統(tǒng)可以正常復(fù)位,同時也會提高系統(tǒng)的穩(wěn)定度。本次設(shè)計用到單片機一半以上的端口,更是對系統(tǒng)的穩(wěn)定度有更高的要求。此外,51單片機用一個12 M的晶振去調(diào)整整個單片機運行,一般在晶振的兩端并聯(lián)兩個相同容值的電容,可以起到濾波等一系列的作用。
1.3.1 DA轉(zhuǎn)換器與單片機連接
DAC0832是一個具有8位D/A轉(zhuǎn)換的特定功能芯片,其中的模擬信號轉(zhuǎn)換成為數(shù)字信號所需的時間僅為1 us,正常工作時的標準電壓在+5 V~+15 V之間。單片機可以識別和輸出的信號是數(shù)字信號,因此在輸出端必須配置一個可以將數(shù)字信號轉(zhuǎn)換成模擬信號的裝置,也就是常說的DA轉(zhuǎn)換器,該芯片輸出的模擬量的幅值非常小,必須經(jīng)過下一級的放大才可以在示波器或者其他設(shè)備顯示和應(yīng)用。
該芯片有單緩沖方式、雙緩沖方式及直通方式3種,此設(shè)計應(yīng)用的主要是直通方式,也就是把ILE等功能均設(shè)定為有效,這樣就會使DAC0832芯片內(nèi)部相應(yīng)的輸入寄存器和DAC寄存器均處于直通(開放)狀態(tài),通過這種方式就可以使其內(nèi)部功能不需要控制信號。DAC0832芯片的信號輸出實時跟隨輸入端信號的改變?nèi)ジ淖儯灰?9C51單片機P2口八位數(shù)字量發(fā)生變化,就會直接讓數(shù)模轉(zhuǎn)換芯片進行準確快速的DA轉(zhuǎn)換。該D/A轉(zhuǎn)換的標準參考電壓量是+5 V,芯片的模擬量信號輸出信號會在相關(guān)單位內(nèi)變化(D為數(shù)字輸入量,k為對應(yīng)的比值,與該芯片相應(yīng)的內(nèi)部電路有關(guān)系)。因為數(shù)模轉(zhuǎn)換芯片DAC0832輸出的信號是電流量,在此需要運算放大器LM324實現(xiàn)電流量轉(zhuǎn)換為電壓量的功能。
1.3.2 放大電路
LM324芯片。LM324芯片內(nèi)部包含有四個各自獨立的、且完全相同的運算放大器,此芯片的電源電壓范圍比較寬。雖然LM324芯片中存在四組完全相同且獨立的運算放大器,但在本次設(shè)計中只是用到了其中一組運算放大器。該芯片也起到了運算放大和低通濾波的作用,因為此次試驗的最終目的是輸出比較完美的波形,因此該芯片濾波和放大在其中起到了不可忽略的作用。
DAC0832有兩個輸出口,本設(shè)計中讓OUT2輸出接地,OUT1輸出送到放大器的反相端構(gòu)成反相放大電路,輸出端引一負反饋到DA轉(zhuǎn)換芯片的Rfd,第一級的輸出接到第二級反相輸入端構(gòu)成二級放大,同樣,二級的輸出接負反饋到第一級的輸出端。
本設(shè)計采用的是目前最常用也最直觀的LCD1602,一般用的有14個引腳,不過也有16引腳的,多出來的兩個引腳分別是背光電源線VCC(第15引腳)和接地線GND(第16引腳),他們兩者的控制原理完全相同,不過他們均不支持中文字符,本設(shè)計的模式是第一行顯示輸出的波形類型,第二行顯示波形頻率的大小。
Key1鍵與89C51單片機的P3.5端口相連接、按鍵Key2與89C51單片機P3.6口相連接、按鍵Key3與89C51單片機P3.7口相連接。Key1鍵用于調(diào)節(jié)相應(yīng)的波形輸出種類,Key2鍵用于增加波形的輸出頻率(周期),Key3鍵用于減小波形的輸出頻率。
此次設(shè)計用到的電源模塊是直接用220V交流電提供到變壓器,然后由變壓器輸出+12 V、300 mA的直流電,輸出經(jīng)過4個型號為1N4007的整流二極管提供該模塊的輸入電壓,其中LM7805CT芯片用來輸出+5V直流電壓,同樣LM7812CT芯片和LM7912CT芯片分別用來輸出+12V和-12V的直流電壓,對各芯片的輸出電壓可以根據(jù)他的數(shù)字規(guī)律去去區(qū)分,如7805,最后兩位數(shù)字代表輸出的電壓(此時05就是5 V),第二位數(shù)字用來辨別輸出電壓的極性,8代表是正極性,9則是代表負極性。
Proteus仿真軟件是由英國的Labcenter electronics公司研究并設(shè)計的EDA應(yīng)用型軟件。此應(yīng)用軟件不僅僅兼?zhèn)淦渌矫娴腅DA工具軟件的仿真調(diào)試能力,還可以模擬、仿真與應(yīng)用單片機和單片機周圍的元器件(也就是它的外圍電路)。這個軟件是目前世界上現(xiàn)存最好的仿真單片機以及單片機周圍的元器件的應(yīng)用軟件之一,也是當(dāng)前世界上僅有的為電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三者合為一體而搭建的平臺,它的處理器模型能夠支持 Cortex-M3、89C51、MSP430、AVR 單片機、ARM處理器和DSP處理器等,在編譯功能領(lǐng)域,此應(yīng)用軟件也可以帶動Keil3和MATLAB等各種編譯處理器的運行。正因為如此本文才會選用Proteus模擬仿真軟件擔(dān)任此次設(shè)計的平臺,因為它不僅可以實現(xiàn)對應(yīng)設(shè)計目標的需求,也可以節(jié)省了許多計劃所花費的時間和所需要的成本價格。
Proteus應(yīng)用軟件設(shè)計電路的步驟一般上是:繪制電路圖、模擬調(diào)試與仿真、確認無誤后自行生成PCB、系統(tǒng)自動布線或者自己手動連接電路,這些基本步驟均符合電子電路設(shè)計的原則和方法,因此大大減少了因考慮不周等因素而造成的成本花費。
針對此次的設(shè)計,因為Proteus軟件里面沒有button(按鍵)的封裝庫,因此需要在繪制PCB圖之前需要填寫button(按鍵)的封裝庫的正確信息參數(shù)。通過查找對應(yīng)的按鍵封裝的文獻以及文檔,目前國內(nèi)的四角按鍵的物理信息是:引腳的直徑大約是0.65 mm,引腳之間的距離是3.5 mm,尺寸的架構(gòu)(寬和長)6.4~7.8 mm。給button按鍵加入正確的封裝信息。最后一起加入到總的原理圖和PCB圖里面,經(jīng)過繪制可以得出總的設(shè)計的構(gòu)架。
本文采用模塊化設(shè)計方法,即把各個功能的模塊獨立畫在一起,方便后續(xù)的檢查和理解,比如說本實驗的原理圖里面各模塊之間是用紅色實線隔開,顯示模塊放在一個方框圖里面,控制電路模塊放一塊等等。
PCB圖在連線的過程中也有好多原則和技巧去遵守,比如在本設(shè)計中,C51單片機的IO端口有許多被占用,如何在單層板的基礎(chǔ)上去盡量少用跳線、節(jié)約電路板大小去布線。比如連線的時候盡量先使主器件(本設(shè)計是51單片機)放在主要位置,由大到小的去連接電路。這樣既可以減少線路的總體長度和寬度,也能有效減少電路板的體積。
本設(shè)計在主函數(shù)中對LCD1602和DAC0832進行初始化,并且定義按鍵掃描函數(shù)以及頻率選擇函數(shù)。輸出波形的周期通過條件判斷語句進行加減。再設(shè)計中,當(dāng)輸出波形的頻率達到最大時再次按下增加的按鍵會使頻率從最小開始。
該函數(shù)信號發(fā)生器系統(tǒng)的程序主要有3個部分構(gòu)成:外部中斷1模塊、主要程序、外部中斷2模塊。
要想使系統(tǒng)正常有序的運行,必須要先對主程序進行初始化操作,通過對外部中斷1和與外部中斷2的輸出的變量進行相應(yīng)的判斷,然后依靠變量的值來判定函數(shù)信號輸出的具體波形分類及周期,然后設(shè)置單片機中和中斷有關(guān)的寄存器,比如TCON,可以設(shè)置IT0和IT1的位都為1,然后經(jīng)過檢查Key1鍵、按鍵Key2鍵、按鍵Key3鍵是不是已被按下,Key1鍵按下的時候會使程序進入INIT0(外部中斷0),此時會對輸出信號的波形進行變化,如果Key2鍵或者Key3鍵按下的話,則會讓程序進入INIT1(外部中斷1),此時程序會通過對時間的延遲或者縮短對波形的周期進行對應(yīng)的變化。
2.2.1 keil c51波形產(chǎn)生
利用MATLAB產(chǎn)生數(shù)組的方式去生成一定數(shù)量的點,然后對點線性處理后由單片機進行定期采樣,采樣的每一個點對應(yīng)不同的相位。按照相位順序進行采樣,最后會輸出一系列密集的點。
每個波形對應(yīng)不同序列的點,此次編程中把延時函數(shù)、LCD1602的功能函數(shù),單片機的工作方式的定義等函數(shù)進行分開定義,并且可通過主函數(shù)進行不同函數(shù)之間的互相調(diào)用。
中斷函數(shù)用定時器T0,通過附不同的初始值來改變輸出波形的頻率,定時器工作在定時方式一,最大的定時時間為65 ms。對按鍵被按下的次數(shù)判斷輸出波形的種類,剛開機的時候顯示正弦波。
2.2.2 各波形的理論產(chǎn)生方式
用51單片機輸出方波相對來說還是比較簡單的,相當(dāng)于讓P2引腳等間隔的輸出0x00和0xFF。然后經(jīng)過Key2鍵或者Key3鍵去調(diào)整高電平和低電平的相對維持時間去調(diào)整輸出信號的周期。
正弦波的輸出可以通過查找對應(yīng)的點,里面會有正弦波在每個相位對應(yīng)的的峰值,考慮到某些因素,本次設(shè)計在一個周期里對正弦波采樣256個點,然后可以通過Key2鍵或者Key3鍵來調(diào)整正弦波點與點之間的縮短或延遲來調(diào)整正弦波的輸出周期。
輸出的梯形波可經(jīng)過對DAC0832芯片的輸入引腳按照次序從0增大至255,然后保持這個電平到設(shè)定的時間后再從255減小到0,如此循環(huán)。
鋸齒波的生成完全可以經(jīng)過給DAC0832芯片的輸入端按照次序輸入從0致255按照一定的比例增大,到了255后立即把輸出(單片機的相應(yīng)端口)置0,然乎再從0開始至255按剛才相同的比例進行變大,如此循環(huán)。經(jīng)過Key2鍵或者Key3鍵同樣可以改變波形輸出頻率。
文中采用Proteus軟件設(shè)計,因為它不僅可以實現(xiàn)對應(yīng)設(shè)計目標的需求,也可以節(jié)省了許多計劃所花費的時間和所需要的成本價格。同時還具有豐富的仿真與調(diào)試功能和有強大的畫圖能力。此次設(shè)計對應(yīng)用STC89C51單片機的簡單函數(shù)信號發(fā)生器的原理圖進行實現(xiàn)與仿真,然后再通過keil 3軟件和Proteus軟件進行聯(lián)合調(diào)制,也同時驗證了此次實驗的可行性和簡易性。
調(diào)節(jié)KEY1鍵來轉(zhuǎn)換輸出波形,KEY2鍵和KEY3鍵分別可以用來增大和減小信號的頻率。
檢查后,按照原理去連線并接通電源,觀察輸出波形的好壞以及輸出的頻率實際值和理論值進行對比去分析此次試設(shè)計的效果。
表1 測試結(jié)果
誤差總結(jié):從圖1可以看出,相對誤差均隨著頻率值的增大而有增大的趨勢,可以得出此信號源適用于頻率相對較低的場合。
圖1 實際電路的效果圖
文中針對一些簡單函數(shù)信號發(fā)生器設(shè)計復(fù)雜,可靠性不高的缺點,適當(dāng)?shù)倪M行改進,采用STC89C51單片機,設(shè)計了一種頻率幅值可調(diào)、波形轉(zhuǎn)換速度快、適應(yīng)于絕大多數(shù)領(lǐng)域的產(chǎn)品。實驗結(jié)果的誤差也在允許的范圍內(nèi)。面向?qū)ο笾饕侵械皖l領(lǐng)域,設(shè)計的優(yōu)點在于轉(zhuǎn)換速度快、精度相對較高。此次實驗對在STC89C51單片機方面的學(xué)習(xí)和應(yīng)用均有特定的指導(dǎo)意義和參考價值。但是對高頻還需要改進。