一、基于單片機的信號發生器設計方案
信(xin)(xin)號(hao)(hao)(hao)發生器用(yong)于調(diao)節(jie)射頻匹配(pei)電路,可以(yi)(yi)自行(xing)設(she)計,一般普(pu)通的信(xin)(xin)號(hao)(hao)(hao)發生器需(xu)要輸出正(zheng)弦波、方波、三角波以(yi)(yi)及鋸齒(chi)波等信(xin)(xin)號(hao)(hao)(hao),可通過(guo)按鍵調(diao)節(jie)信(xin)(xin)號(hao)(hao)(hao)的頻率(lv)以(yi)(yi)及信(xin)(xin)號(hao)(hao)(hao)的幅度,其具體的設(she)計方案如下:
1、總體方案設計
信(xin)號(hao)(hao)(hao)發(fa)生器(qi)(qi)(qi)發(fa)送出(chu)(chu)去(qu)的(de)(de)(de)(de)是(shi)模擬(ni)信(xin)號(hao)(hao)(hao),而單片(pian)機(ji)輸(shu)(shu)(shu)出(chu)(chu)的(de)(de)(de)(de)是(shi)數(shu)字信(xin)號(hao)(hao)(hao),因此在(zai)設計信(xin)號(hao)(hao)(hao)發(fa)生器(qi)(qi)(qi)系(xi)統(tong)時,需要(yao)(yao)使用(yong)到數(shu)模轉換(huan)芯(xin)片(pian),可選擇數(shu)模轉換(huan)芯(xin)片(pian)DAC0832,然(ran)后再(zai)利用(yong)運(yun)算放(fang)大器(qi)(qi)(qi)將DAC0832輸(shu)(shu)(shu)出(chu)(chu)的(de)(de)(de)(de)電(dian)流(liu)信(xin)號(hao)(hao)(hao)轉換(huan)成電(dian)壓信(xin)號(hao)(hao)(hao)。這(zhe)樣信(xin)號(hao)(hao)(hao)發(fa)生器(qi)(qi)(qi)便(bian)輸(shu)(shu)(shu)出(chu)(chu)了模擬(ni)電(dian)壓。系(xi)統(tong)要(yao)(yao)輸(shu)(shu)(shu)出(chu)(chu)各種(zhong)波形(xing)信(xin)號(hao)(hao)(hao),則(ze)要(yao)(yao)求DAC0832在(zai)運(yun)放(fang)的(de)(de)(de)(de)作用(yong)下(xia),在(zai)不(bu)同時間點輸(shu)(shu)(shu)出(chu)(chu)不(bu)同的(de)(de)(de)(de)電(dian)壓值,再(zai)將這(zhe)些電(dian)壓值連接(jie)起來(lai),便(bian)構成了相(xiang)應(ying)的(de)(de)(de)(de)波形(xing)信(xin)號(hao)(hao)(hao)。而要(yao)(yao)得到不(bu)同的(de)(de)(de)(de)電(dian)壓值,則(ze)單片(pian)機(ji)需要(yao)(yao)將8位I/O口接(jie)到DAC0832芯(xin)片(pian)的(de)(de)(de)(de)8位數(shu)據信(xin)號(hao)(hao)(hao)輸(shu)(shu)(shu)入端,單片(pian)機(ji)通過(guo)改變8位I/O口的(de)(de)(de)(de)數(shu)字信(xin)號(hao)(hao)(hao),便(bian)可以在(zai)DAC0832以及運(yun)放(fang)的(de)(de)(de)(de)作用(yong)下(xia),得到不(bu)同的(de)(de)(de)(de)電(dian)壓值,再(zai)在(zai)時間的(de)(de)(de)(de)作用(yong)下(xia)形(xing)成不(bu)同的(de)(de)(de)(de)波形(xing)信(xin)號(hao)(hao)(hao)。波形(xing)信(xin)號(hao)(hao)(hao)頻率的(de)(de)(de)(de)的(de)(de)(de)(de)變化可通過(guo)改變單片(pian)機(ji)8位I/O輸(shu)(shu)(shu)出(chu)(chu)口的(de)(de)(de)(de)數(shu)據變化率來(lai)實現。
波(bo)形(xing)信號(hao)的(de)(de)(de)(de)幅(fu)度(du)由(you)DAC0832的(de)(de)(de)(de)參考電壓(ya)(ya)VREF來決(jue)(jue)定,為了(le)確保VREF的(de)(de)(de)(de)大小(xiao)可(ke)變(bian),本系統使(shi)用(yong)到(dao)了(le)芯片(pian)(pian)(pian)PCF8591,將PCF8591芯片(pian)(pian)(pian)的(de)(de)(de)(de)模(mo)(mo)擬(ni)電壓(ya)(ya)輸出端接在DAC0832的(de)(de)(de)(de)VREF上(shang),通(tong)過改(gai)變(bian)PCF8591模(mo)(mo)擬(ni)電壓(ya)(ya)輸出值便可(ke)改(gai)變(bian)VREF值,從而改(gai)變(bian)波(bo)形(xing)信號(hao)的(de)(de)(de)(de)幅(fu)度(du)值。而PCF8591的(de)(de)(de)(de)模(mo)(mo)擬(ni)電壓(ya)(ya)輸出值則是尤(you)其I2C總行(xing)上(shang)的(de)(de)(de)(de)數(shu)據所決(jue)(jue)定,利用(yong)單(dan)片(pian)(pian)(pian)機(ji)的(de)(de)(de)(de)I/O口模(mo)(mo)擬(ni)I2C與PCF8591進(jin)行(xing)通(tong)信,那么單(dan)片(pian)(pian)(pian)機(ji)便可(ke)通(tong)過I/O口控制(zhi)VREF電壓(ya)(ya)的(de)(de)(de)(de)變(bian)化(hua),從而控制(zhi)波(bo)形(xing)的(de)(de)(de)(de)幅(fu)度(du)變(bian)化(hua)。
2、系統硬件設計
(1)晶振電路設計
單片機穩定工作則需要穩定的(de)(de)時鐘信(xin)號(hao)(hao)(hao),而時鐘信(xin)號(hao)(hao)(hao)則是(shi)由晶(jing)(jing)振(zhen)電路(lu)產生(sheng),因此晶(jing)(jing)振(zhen)電路(lu)設(she)計的(de)(de)好壞直接(jie)影響到最小系統的(de)(de)穩定性。單片機的(de)(de)18腳(jiao)和(he)19腳(jiao)為晶(jing)(jing)振(zhen)連(lian)接(jie)輸入(ru)腳(jiao),將(jiang)晶(jing)(jing)振(zhen)X1的(de)(de)兩端(duan)連(lian)接(jie)到單片機18和(he)19腳(jiao)之后便會產生(sheng)時鐘信(xin)號(hao)(hao)(hao),此時的(de)(de)信(xin)號(hao)(hao)(hao)會存在(zai)不穩定的(de)(de)問題,需要在(zai)晶(jing)(jing)振(zhen)Y1的(de)(de)兩端(duan)分別外接(jie)一個22PF電容(rong)(rong)C1、C2到GND,該電容(rong)(rong)為晶(jing)(jing)振(zhen)的(de)(de)匹配電容(rong)(rong),晶(jing)(jing)振(zhen)匹配了電容(rong)(rong)之后,那么(me)產生(sheng)的(de)(de)時鐘信(xin)號(hao)(hao)(hao)就比較穩定。出現(xian)的(de)(de)頻偏也是(shi)在(zai)20PPM的(de)(de)范(fan)圍內。這樣才能確保系統時鐘穩定可靠。
(2)復位電路設計
最小系(xi)統(tong)除(chu)了晶振(zhen)電(dian)路之(zhi)外,還(huan)需要(yao)(yao)具備復(fu)位(wei)電(dian)路,單片機(ji)上電(dian)后,啟動的(de)時(shi)候,需要(yao)(yao)復(fu)位(wei)電(dian)路先進(jin)行復(fu)位(wei),確(que)保系(xi)統(tong)運行的(de)起始地址一致 ,保證系(xi)統(tong)工作的(de)穩定(ding)性(xing),復(fu)位(wei)是利用電(dian)容C3與R1來實現(xian)的(de)。
(3)波形幅度調節電路設計
為改變系(xi)統(tong)輸(shu)出(chu)(chu)的(de)(de)(de)波形(xing)幅(fu)度值,本系(xi)統(tong)使用(yong)到了(le)PCF8591芯(xin)片(pian),該芯(xin)片(pian)是一(yi)個8位CMOS數據(ju)采集器,該芯(xin)片(pian)可(ke)以(yi)(yi)將模(mo)擬(ni)信號(hao)轉(zhuan)換(huan)成數字信號(hao),再(zai)通過(guo)(guo)I2C數據(ju)總線將該數字信號(hao)發送給單(dan)片(pian)機(ji);也可(ke)以(yi)(yi)反過(guo)(guo)來,單(dan)片(pian)機(ji)通過(guo)(guo)I2C總線將數字信號(hao)發送給PCF8591芯(xin)片(pian),再(zai)由(you)該芯(xin)片(pian)進行(xing)數模(mo)轉(zhuan)換(huan)后,變成模(mo)擬(ni)電壓再(zai)由(you)AOUT腳輸(shu)出(chu)(chu)。利用(yong)這一(yi)原理,本系(xi)統(tong)為了(le)調節信號(hao)發生(sheng)器的(de)(de)(de)幅(fu)度值,將單(dan)片(pian)機(ji)P2.0和(he)P2.1模(mo)擬(ni)I2C與PCF8591通信,這樣單(dan)片(pian)機(ji)便可(ke)以(yi)(yi)控(kong)制(zhi)PCF8591的(de)(de)(de)AOUT輸(shu)出(chu)(chu)端模(mo)擬(ni)電壓的(de)(de)(de)大小,再(zai)將其接入到DAC0832的(de)(de)(de)VREF腳上(shang),便可(ke)以(yi)(yi)控(kong)制(zhi)波形(xing)的(de)(de)(de)幅(fu)度。
(4)數模轉換電路設計
信(xin)(xin)號發生器(qi)(qi)(qi)產(chan)生各種波(bo)形(xing)信(xin)(xin)號使(shi)用到了(le)DAC0832數模轉換(huan)芯片(pian),該芯片(pian)內(nei)部集成(cheng)了(le)一(yi)個(ge)8位D/A轉換(huan)器(qi)(qi)(qi),一(yi)個(ge)8為DAC寄存(cun)器(qi)(qi)(qi),一(yi)個(ge)8位輸入寄存(cun)器(qi)(qi)(qi)以及一(yi)個(ge)控制電(dian)路,其內(nei)部采用的(de)是倒(dao)T型R-2R電(dian)阻網絡,將該數模轉換(huan)芯片(pian)與運算放大(da)器(qi)(qi)(qi)LM358一(yi)起使(shi)用,便可以使(shi)運放輸出(chu)(chu)端有28 =256個(ge)電(dian)壓值輸出(chu)(chu)。在不(bu)同時間內(nei)變換(huan)輸出(chu)(chu)不(bu)同的(de)電(dian)壓值,使(shi)其產(chan)生周期性(xing)的(de)變化便能形(xing)成(cheng)相應的(de)波(bo)形(xing)信(xin)(xin)號。
(5)按鍵中斷控制電路設計
基于單(dan)片機的(de)信號(hao)發(fa)生器(qi)要求輸出方波(bo)、三角(jiao)波(bo)、鋸齒波(bo)以及正弦波(bo)信號(hao),信號(hao)的(de)幅(fu)度(du)和頻(pin)率可調(diao)(diao),用戶可通(tong)(tong)過系(xi)統(tong)(tong)按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)來對信號(hao)發(fa)生器(qi)進(jin)行(xing)設(she)置。在系(xi)統(tong)(tong)中(zhong),設(she)計了(le)(le)8個按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian),其(qi)功(gong)能(neng)分(fen)別為100HZ頻(pin)率加(jia)按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)、1hz頻(pin)率加(jia)按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)、-1hz頻(pin)率減按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)、1V電壓(ya)(ya)幅(fu)度(du)加(jia)按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)、0.1V電壓(ya)(ya)幅(fu)度(du)加(jia)按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)、-0.1V電壓(ya)(ya)幅(fu)度(du)減按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)、波(bo)形(xing)切換按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)、掃頻(pin)開關按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)。為了(le)(le)方便系(xi)統(tong)(tong)設(she)計,采(cai)用獨(du)立按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)設(she)計方法,利(li)用單(dan)片機P1口(kou)(kou)將(jiang)各按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)連接,通(tong)(tong)過軟(ruan)件將(jiang)P1口(kou)(kou)設(she)置成上拉狀(zhuang)態。當沒(mei)有按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)按(an)(an)(an)(an)(an)(an)(an)下時(shi),單(dan)片機P1口(kou)(kou)中(zhong)的(de)所有I/O口(kou)(kou)檢測(ce)的(de)到時(shi)高電平;當有按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)按(an)(an)(an)(an)(an)(an)(an)下時(shi),則該(gai)按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)對應(ying)單(dan)片機的(de)I/O口(kou)(kou)會被拉低,變成低電平。單(dan)片機便能(neng)檢測(ce)到,從而(er)調(diao)(diao)用該(gai)按(an)(an)(an)(an)(an)(an)(an)鍵(jian)(jian)(jian)(jian)程序執行(xing)相(xiang)應(ying)的(de)功(gong)能(neng)。
(6)電源電路設計
本系(xi)統電(dian)(dian)(dian)路設計是在Proteus仿真軟(ruan)件上設計,該(gai)仿真軟(ruan)件有各種電(dian)(dian)(dian)源,可直(zhi)接(jie)調用。無需使用電(dian)(dian)(dian)壓轉(zhuan)換芯片。在本系(xi)統單(dan)片機(ji)使用5V電(dian)(dian)(dian)壓供電(dian)(dian)(dian),而為了(le)使輸(shu)出(chu)波(bo)形幅度為10V,則PCF8591采(cai)用10V電(dian)(dian)(dian)壓供電(dian)(dian)(dian),而運算放(fang)大器采(cai)用±15V供電(dian)(dian)(dian),直(zhi)接(jie)從仿真軟(ruan)件上取(qu)電(dian)(dian)(dian)源即可。
3、系統軟件設計
完成(cheng)proteus軟件(jian)(jian)(jian)(jian)電路(lu)圖設計之(zhi)后(hou),接下來(lai)需要對(dui)單片(pian)機編(bian)寫(xie)(xie)驅動程(cheng)序(xu),系(xi)統驅動程(cheng)序(xu)的(de)(de)編(bian)寫(xie)(xie)是在(zai)keil軟件(jian)(jian)(jian)(jian)平臺上完成(cheng)的(de)(de),Keil軟件(jian)(jian)(jian)(jian)打開(kai)后(hou),要先(xian)建(jian)立(li)工(gong)(gong)程(cheng),然后(hou)在(zai)工(gong)(gong)程(cheng)當(dang)中(zhong)建(jian)立(li)一(yi)個.c文件(jian)(jian)(jian)(jian),在(zai)此文件(jian)(jian)(jian)(jian)中(zhong)編(bian)寫(xie)(xie)代碼驅動程(cheng)序(xu):
(1)系統主程序設計
主(zhu)程(cheng)序(xu)(xu)是(shi)軟(ruan)件(jian)系(xi)(xi)(xi)統中(zhong)最為(wei)重(zhong)要的(de)(de)程(cheng)序(xu)(xu),因為(wei)系(xi)(xi)(xi)統程(cheng)序(xu)(xu)是(shi)由(you)各個子程(cheng)序(xu)(xu)所構(gou)成(cheng),而子程(cheng)序(xu)(xu)的(de)(de)調用全部是(shi)在(zai)主(zhu)程(cheng)序(xu)(xu)中(zhong)來實現的(de)(de),主(zhu)程(cheng)序(xu)(xu)設計的(de)(de)好壞直接能影(ying)響到系(xi)(xi)(xi)統的(de)(de)邏(luo)輯結構(gou),影(ying)響到系(xi)(xi)(xi)統工作的(de)(de)穩定(ding)性。在(zai)本系(xi)(xi)(xi)統中(zhong),系(xi)(xi)(xi)統開始運(yun)行后(hou)(hou),先會執行主(zhu)程(cheng)序(xu)(xu),在(zai)主(zhu)程(cheng)序(xu)(xu)中(zhong)對(dui)單(dan)片機及其(qi)外圍元件(jian)進行初始化(hua)設置(zhi),完(wan)成(cheng)初始化(hua)設置(zhi)之(zhi)后(hou)(hou),系(xi)(xi)(xi)統就會執行正弦(xian)波程(cheng)序(xu)(xu),讓信號(hao)發(fa)生器(qi)輸(shu)出(chu)正弦(xian)波信號(hao),然(ran)后(hou)(hou)再去檢測是(shi)否(fou)有按鍵按下,如果(guo)有按鍵按下,系(xi)(xi)(xi)統檢測到后(hou)(hou),便會執行相(xiang)應按鍵的(de)(de)程(cheng)序(xu)(xu),從而改變信號(hao)發(fa)生器(qi)輸(shu)出(chu)的(de)(de)波形。如果(guo)沒有按鍵產生,則系(xi)(xi)(xi)統繼(ji)續保持當前(qian)波形輸(shu)出(chu),然(ran)后(hou)(hou)再繼(ji)續去訪問是(shi)否(fou)有按鍵按下,如此循環下去。
(2)按鍵掃描程序設計
本(ben)系統是(shi)通過按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)來改變信(xin)號發生器(qi)的(de)波形(xing),系統一(yi)共有八個按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)下不同(tong)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)時,系統需要輸(shu)出(chu)不同(tong)的(de)波形(xing)。定義按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)6為(wei)波形(xing)切(qie)換按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)0為(wei)100HZ頻(pin)(pin)(pin)率(lv)增加(jia)(jia)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)1為(wei)1HZ頻(pin)(pin)(pin)率(lv)增加(jia)(jia)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)2為(wei)1HZ頻(pin)(pin)(pin)率(lv)減按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)3位1V幅(fu)(fu)度增加(jia)(jia)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)4為(wei)0.1V幅(fu)(fu)度增加(jia)(jia)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)5為(wei)0.1V幅(fu)(fu)度減小(xiao)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)7位掃頻(pin)(pin)(pin)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian),flang為(wei)標(biao)志位,用(yong)于判斷(duan)按(an)(an)(an)鍵(jian)(jian)(jian)(jian)(jian)(jian)6按(an)(an)(an)下的(de)次數(shu)當(dang)flang為(wei)1是(shi)默(mo)認輸(shu)出(chu)正弦波;當(dang)flang為(wei)2時,輸(shu)出(chu)三角波;當(dang)flang為(wei)3時輸(shu)出(chu)鋸齒波;當(dang)flang為(wei)4時,輸(shu)出(chu)方波;當(dang)flang為(wei)5時,則(ze)會令flang=1,輸(shu)出(chu)正弦波。
因此,當(dang)有按(an)(an)(an)鍵(jian)按(an)(an)(an)下時(shi),系統(tong)(tong)調用按(an)(an)(an)鍵(jian)程序(xu)會去判斷是(shi)哪(na)個(ge)按(an)(an)(an)鍵(jian)按(an)(an)(an)下,如果(guo)是(shi)按(an)(an)(an)鍵(jian)6按(an)(an)(an)下,表示需要切換信(xin)號(hao)發生器的輸出波(bo)形(xing)(xing),令flang+1,然后判斷flang的值,再輸出相應的波(bo)形(xing)(xing)信(xin)號(hao)。當(dang)是(shi)0按(an)(an)(an)鍵(jian)按(an)(an)(an)下時(shi),則(ze)系統(tong)(tong)會在原有的波(bo)形(xing)(xing)上(shang),改變其(qi)輸出頻(pin)率,使頻(pin)率增加(jia)100HZ;當(dang)按(an)(an)(an)下的是(shi)1按(an)(an)(an)鍵(jian),則(ze)將頻(pin)率增加(jia)1HZ;當(dang)2按(an)(an)(an)鍵(jian)按(an)(an)(an)下,則(ze)將頻(pin)率減(jian)小(xiao)1HZ;當(dang)按(an)(an)(an)鍵(jian)3按(an)(an)(an)下時(shi),表示要在原有波(bo)形(xing)(xing)的基礎上(shang)增加(jia)1V的波(bo)形(xing)(xing)幅(fu)(fu)度;當(dang)4按(an)(an)(an)鍵(jian)按(an)(an)(an)下,則(ze)幅(fu)(fu)度增加(jia)0.1V;當(dang)5按(an)(an)(an)鍵(jian)按(an)(an)(an)下,則(ze)幅(fu)(fu)度減(jian)小(xiao)0.1V;當(dang)7按(an)(an)(an)鍵(jian)按(an)(an)(an)下,則(ze)進行掃頻(pin)。當(dang)執行完按(an)(an)(an)鍵(jian)程序(xu)后,返回(hui)系統(tong)(tong)主程序(xu)。
二、信號發生器的設計要求有哪些
基于單片機設計的信號發生器屬于簡易信號發生器,主要能產生方波、三角波和正弦波并進行仿真,這類信號發生器設計好后,應滿足以下(xia)要求:
1、基本性能指標要求
(1)頻率(lv)范圍:100Hz~1kHz。
(2)輸出電(dian)壓:方波(bo) Up-p≤24V,三(san)角波(bo) Up-p=6V,正弦波(bo) Up-p>1V。
2、擴展性能指標要求
頻率范圍分段(duan)設(she)置10Hz~100Hz,100Hz~1kHz,1kHz~10kHz;波形特性方波t r<30us(1kHz,最大輸(shu)出時(shi)),三(san)角波r△<2%,正弦(xian)波r~<5%。