一、基于單片機(jī)的信號(hào)發(fā)生器設(shè)計(jì)方案
信號(hào)發(fā)生器用于調(diào)節(jié)射頻匹配電路,可以自行設(shè)計(jì),一般普通的信號(hào)發(fā)生器需要輸出正弦波、方波、三角波以及鋸齒波等信號(hào),可通過(guò)按鍵調(diào)節(jié)信號(hào)的頻率以及信號(hào)的幅度,其具體的設(shè)計(jì)方案如下:
1、總體方案設(shè)計(jì)
信號(hào)發(fā)生器發(fā)送出去的是模擬信號(hào),而單片機(jī)輸出的是數(shù)字信號(hào),因此在設(shè)計(jì)信號(hào)發(fā)生器系統(tǒng)時(shí),需要使用到數(shù)模轉(zhuǎn)換芯片,可選擇數(shù)模轉(zhuǎn)換芯片DAC0832,然后再利用運(yùn)算放大器將DAC0832輸出的電流信號(hào)轉(zhuǎn)換成電壓信號(hào)。這樣信號(hào)發(fā)生器便輸出了模擬電壓。系統(tǒng)要輸出各種波形信號(hào),則要求DAC0832在運(yùn)放的作用下,在不同時(shí)間點(diǎn)輸出不同的電壓值,再將這些電壓值連接起來(lái),便構(gòu)成了相應(yīng)的波形信號(hào)。而要得到不同的電壓值,則單片機(jī)需要將8位I/O口接到DAC0832芯片的8位數(shù)據(jù)信號(hào)輸入端,單片機(jī)通過(guò)改變8位I/O口的數(shù)字信號(hào),便可以在DAC0832以及運(yùn)放的作用下,得到不同的電壓值,再在時(shí)間的作用下形成不同的波形信號(hào)。波形信號(hào)頻率的的變化可通過(guò)改變單片機(jī)8位I/O輸出口的數(shù)據(jù)變化率來(lái)實(shí)現(xiàn)。
波形信號(hào)的幅度由DAC0832的參考電壓VREF來(lái)決定,為了確保VREF的大小可變,本系統(tǒng)使用到了芯片PCF8591,將PCF8591芯片的模擬電壓輸出端接在DAC0832的VREF上,通過(guò)改變PCF8591模擬電壓輸出值便可改變VREF值,從而改變波形信號(hào)的幅度值。而PCF8591的模擬電壓輸出值則是尤其I2C總行上的數(shù)據(jù)所決定,利用單片機(jī)的I/O口模擬I2C與PCF8591進(jìn)行通信,那么單片機(jī)便可通過(guò)I/O口控制VREF電壓的變化,從而控制波形的幅度變化。
2、系統(tǒng)硬件設(shè)計(jì)
(1)晶振電路設(shè)計(jì)
單片機(jī)穩(wěn)定工作則需要穩(wěn)定的時(shí)鐘信號(hào),而時(shí)鐘信號(hào)則是由晶振電路產(chǎn)生,因此晶振電路設(shè)計(jì)的好壞直接影響到最小系統(tǒng)的穩(wěn)定性。單片機(jī)的18腳和19腳為晶振連接輸入腳,將晶振X1的兩端連接到單片機(jī)18和19腳之后便會(huì)產(chǎn)生時(shí)鐘信號(hào),此時(shí)的信號(hào)會(huì)存在不穩(wěn)定的問(wèn)題,需要在晶振Y1的兩端分別外接一個(gè)22PF電容C1、C2到GND,該電容為晶振的匹配電容,晶振匹配了電容之后,那么產(chǎn)生的時(shí)鐘信號(hào)就比較穩(wěn)定。出現(xiàn)的頻偏也是在20PPM的范圍內(nèi)。這樣才能確保系統(tǒng)時(shí)鐘穩(wěn)定可靠。
(2)復(fù)位電路設(shè)計(jì)
最小系統(tǒng)除了晶振電路之外,還需要具備復(fù)位電路,單片機(jī)上電后,啟動(dòng)的時(shí)候,需要復(fù)位電路先進(jìn)行復(fù)位,確保系統(tǒng)運(yùn)行的起始地址一致 ,保證系統(tǒng)工作的穩(wěn)定性,復(fù)位是利用電容C3與R1來(lái)實(shí)現(xiàn)的。
(3)波形幅度調(diào)節(jié)電路設(shè)計(jì)
為改變系統(tǒng)輸出的波形幅度值,本系統(tǒng)使用到了PCF8591芯片,該芯片是一個(gè)8位CMOS數(shù)據(jù)采集器,該芯片可以將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),再通過(guò)I2C數(shù)據(jù)總線(xiàn)將該數(shù)字信號(hào)發(fā)送給單片機(jī);也可以反過(guò)來(lái),單片機(jī)通過(guò)I2C總線(xiàn)將數(shù)字信號(hào)發(fā)送給PCF8591芯片,再由該芯片進(jìn)行數(shù)模轉(zhuǎn)換后,變成模擬電壓再由AOUT腳輸出。利用這一原理,本系統(tǒng)為了調(diào)節(jié)信號(hào)發(fā)生器的幅度值,將單片機(jī)P2.0和P2.1模擬I2C與PCF8591通信,這樣單片機(jī)便可以控制PCF8591的AOUT輸出端模擬電壓的大小,再將其接入到DAC0832的VREF腳上,便可以控制波形的幅度。
(4)數(shù)模轉(zhuǎn)換電路設(shè)計(jì)
信號(hào)發(fā)生器產(chǎn)生各種波形信號(hào)使用到了DAC0832數(shù)模轉(zhuǎn)換芯片,該芯片內(nèi)部集成了一個(gè)8位D/A轉(zhuǎn)換器,一個(gè)8為DAC寄存器,一個(gè)8位輸入寄存器以及一個(gè)控制電路,其內(nèi)部采用的是倒T型R-2R電阻網(wǎng)絡(luò),將該數(shù)模轉(zhuǎn)換芯片與運(yùn)算放大器LM358一起使用,便可以使運(yùn)放輸出端有28 =256個(gè)電壓值輸出。在不同時(shí)間內(nèi)變換輸出不同的電壓值,使其產(chǎn)生周期性的變化便能形成相應(yīng)的波形信號(hào)。
(5)按鍵中斷控制電路設(shè)計(jì)
基于單片機(jī)的信號(hào)發(fā)生器要求輸出方波、三角波、鋸齒波以及正弦波信號(hào),信號(hào)的幅度和頻率可調(diào),用戶(hù)可通過(guò)系統(tǒng)按鍵來(lái)對(duì)信號(hào)發(fā)生器進(jìn)行設(shè)置。在系統(tǒng)中,設(shè)計(jì)了8個(gè)按鍵,其功能分別為100HZ頻率加按鍵、1hz頻率加按鍵、-1hz頻率減按鍵、1V電壓幅度加按鍵、0.1V電壓幅度加按鍵、-0.1V電壓幅度減按鍵、波形切換按鍵、掃頻開(kāi)關(guān)按鍵。為了方便系統(tǒng)設(shè)計(jì),采用獨(dú)立按鍵設(shè)計(jì)方法,利用單片機(jī)P1口將各按鍵連接,通過(guò)軟件將P1口設(shè)置成上拉狀態(tài)。當(dāng)沒(méi)有按鍵按下時(shí),單片機(jī)P1口中的所有I/O口檢測(cè)的到時(shí)高電平;當(dāng)有按鍵按下時(shí),則該按鍵對(duì)應(yīng)單片機(jī)的I/O口會(huì)被拉低,變成低電平。單片機(jī)便能檢測(cè)到,從而調(diào)用該按鍵程序執(zhí)行相應(yīng)的功能。
(6)電源電路設(shè)計(jì)
本系統(tǒng)電路設(shè)計(jì)是在Proteus仿真軟件上設(shè)計(jì),該仿真軟件有各種電源,可直接調(diào)用。無(wú)需使用電壓轉(zhuǎn)換芯片。在本系統(tǒng)單片機(jī)使用5V電壓供電,而為了使輸出波形幅度為10V,則PCF8591采用10V電壓供電,而運(yùn)算放大器采用±15V供電,直接從仿真軟件上取電源即可。
3、系統(tǒng)軟件設(shè)計(jì)
完成proteus軟件電路圖設(shè)計(jì)之后,接下來(lái)需要對(duì)單片機(jī)編寫(xiě)驅(qū)動(dòng)程序,系統(tǒng)驅(qū)動(dòng)程序的編寫(xiě)是在keil軟件平臺(tái)上完成的,Keil軟件打開(kāi)后,要先建立工程,然后在工程當(dāng)中建立一個(gè).c文件,在此文件中編寫(xiě)代碼驅(qū)動(dòng)程序:
(1)系統(tǒng)主程序設(shè)計(jì)
主程序是軟件系統(tǒng)中最為重要的程序,因?yàn)橄到y(tǒng)程序是由各個(gè)子程序所構(gòu)成,而子程序的調(diào)用全部是在主程序中來(lái)實(shí)現(xiàn)的,主程序設(shè)計(jì)的好壞直接能影響到系統(tǒng)的邏輯結(jié)構(gòu),影響到系統(tǒng)工作的穩(wěn)定性。在本系統(tǒng)中,系統(tǒng)開(kāi)始運(yùn)行后,先會(huì)執(zhí)行主程序,在主程序中對(duì)單片機(jī)及其外圍元件進(jìn)行初始化設(shè)置,完成初始化設(shè)置之后,系統(tǒng)就會(huì)執(zhí)行正弦波程序,讓信號(hào)發(fā)生器輸出正弦波信號(hào),然后再去檢測(cè)是否有按鍵按下,如果有按鍵按下,系統(tǒng)檢測(cè)到后,便會(huì)執(zhí)行相應(yīng)按鍵的程序,從而改變信號(hào)發(fā)生器輸出的波形。如果沒(méi)有按鍵產(chǎn)生,則系統(tǒng)繼續(xù)保持當(dāng)前波形輸出,然后再繼續(xù)去訪(fǎng)問(wèn)是否有按鍵按下,如此循環(huán)下去。
(2)按鍵掃描程序設(shè)計(jì)
本系統(tǒng)是通過(guò)按鍵來(lái)改變信號(hào)發(fā)生器的波形,系統(tǒng)一共有八個(gè)按鍵,按下不同按鍵時(shí),系統(tǒng)需要輸出不同的波形。定義按鍵6為波形切換按鍵,按鍵0為100HZ頻率增加按鍵,按鍵1為1HZ頻率增加按鍵,按鍵2為1HZ頻率減按鍵,按鍵3位1V幅度增加按鍵,按鍵4為0.1V幅度增加按鍵,按鍵5為0.1V幅度減小按鍵,按鍵7位掃頻按鍵,flang為標(biāo)志位,用于判斷按鍵6按下的次數(shù)當(dāng)flang為1是默認(rèn)輸出正弦波;當(dāng)flang為2時(shí),輸出三角波;當(dāng)flang為3時(shí)輸出鋸齒波;當(dāng)flang為4時(shí),輸出方波;當(dāng)flang為5時(shí),則會(huì)令flang=1,輸出正弦波。
因此,當(dāng)有按鍵按下時(shí),系統(tǒng)調(diào)用按鍵程序會(huì)去判斷是哪個(gè)按鍵按下,如果是按鍵6按下,表示需要切換信號(hào)發(fā)生器的輸出波形,令flang 1,然后判斷flang的值,再輸出相應(yīng)的波形信號(hào)。當(dāng)是0按鍵按下時(shí),則系統(tǒng)會(huì)在原有的波形上,改變其輸出頻率,使頻率增加100HZ;當(dāng)按下的是1按鍵,則將頻率增加1HZ;當(dāng)2按鍵按下,則將頻率減小1HZ;當(dāng)按鍵3按下時(shí),表示要在原有波形的基礎(chǔ)上增加1V的波形幅度;當(dāng)4按鍵按下,則幅度增加0.1V;當(dāng)5按鍵按下,則幅度減小0.1V;當(dāng)7按鍵按下,則進(jìn)行掃頻。當(dāng)執(zhí)行完按鍵程序后,返回系統(tǒng)主程序。
二、信號(hào)發(fā)生器的設(shè)計(jì)要求有哪些
基于單片機(jī)設(shè)計(jì)的信號(hào)發(fā)生器屬于簡(jiǎn)易信號(hào)發(fā)生器,主要能產(chǎn)生方波、三角波和正弦波并進(jìn)行仿真,這類(lèi)信號(hào)發(fā)生器設(shè)計(jì)好后,應(yīng)滿(mǎn)足以下要求:
1、基本性能指標(biāo)要求
(1)頻率范圍:100Hz~1kHz。
(2)輸出電壓:方波 Up-p≤24V,三角波 Up-p=6V,正弦波 Up-p>1V。
2、擴(kuò)展性能指標(biāo)要求
頻率范圍分段設(shè)置10Hz~100Hz,100Hz~1kHz,1kHz~10kHz;波形特性方波t r<30us(1kHz,最大輸出時(shí)),三角波r△<2%,正弦波r~<5%。