代世臣 遼寧錦州渤海大學(xué)工學(xué)院
基于單片機(jī)的信號(hào)波形發(fā)生器設(shè)計(jì)
代世臣 遼寧錦州渤海大學(xué)工學(xué)院
本課題所要設(shè)計(jì)的是通過單片機(jī)和數(shù)模轉(zhuǎn)換器等產(chǎn)生我們所需要的頻率的信號(hào),而其中信號(hào)的幅度,頻率的增加減少等等都可以根據(jù)需要去進(jìn)行調(diào)節(jié)。通過單片機(jī)AT89C51把程序輸出給DAC0832,DAC0832將數(shù)值轉(zhuǎn)化為模擬的信號(hào)量,再通過運(yùn)算放大器將信號(hào)轉(zhuǎn)換為電壓并顯示在示波器上,從而顯示出不同波形。
AT89C51單片機(jī) DAC0832 正弦波
波形發(fā)生器就是一個(gè)相對(duì)來講比較簡(jiǎn)單同時(shí)又便于操作的函數(shù)發(fā)生器,它可以產(chǎn)生多種波形:三角、正弦還有方波。它擁有著十分寬泛的使用途徑。它所要發(fā)展的趨勢(shì)顯而易見,就是變成高精度,寬調(diào)幅。波形發(fā)生器是有較高的精度,較強(qiáng)的穩(wěn)定性,可重復(fù),并且容易進(jìn)行操作,還可以產(chǎn)生很多的標(biāo)準(zhǔn)以及定義信號(hào)的電子儀器。波形發(fā)生器有很多占優(yōu)勢(shì)的地方,比如可以不間斷的進(jìn)行相位的變化,同時(shí)還能夠讓頻率擁有一定的穩(wěn)定性,這樣既可以對(duì)頻率,波形,幅值等等進(jìn)行控制,同時(shí)還可以模擬很多種較為復(fù)雜的信號(hào),還可以和別的儀器進(jìn)行通信,成為測(cè)試系統(tǒng),所以它大量被運(yùn)用在自動(dòng)控制,通訊儀器或儀表等領(lǐng)域。
系統(tǒng)利用DAC0832單片機(jī)編程的方式,并且查詢表格的方式來對(duì)我們所需要的波形進(jìn)行輸出,這個(gè)方法可以通過編程來對(duì)信號(hào)波形的頻率幅度進(jìn)行調(diào)節(jié)和控制,并且在硬件電路沒有改變的時(shí)候,我們可以通過改變程序來進(jìn)行頻率的改變。同時(shí),因?yàn)槲覀兪峭ㄟ^編程產(chǎn)生的數(shù)字信號(hào),所以信號(hào)的精度我們可以做的很高。設(shè)計(jì)總方框圖如圖1所示。
2.1 單片機(jī)選型
單片機(jī)現(xiàn)在已經(jīng)充斥著我們生活的很多地方。導(dǎo)彈導(dǎo)航,飛機(jī)儀表,計(jì)算機(jī)網(wǎng)絡(luò)的使用和各種數(shù)據(jù)的傳遞,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,多種智能IC卡,汽車安全保障系統(tǒng),控制全自動(dòng)洗衣機(jī),以及玩具電子寵物等等,這些都離不開單片機(jī)。
系統(tǒng)選用AT89C51單片機(jī),AT89C51使用范圍很大,我們可以把它用在很多地方,很多我們想使用的地方。各接口可以與顯示器和DAC0832進(jìn)行連接,主要在于將數(shù)字量信號(hào)轉(zhuǎn)換成模擬量信號(hào)進(jìn)行輸出。
2.2 波形電路設(shè)計(jì)
DAC0832是一個(gè)八位的采樣頻率的數(shù)模轉(zhuǎn)換器,因?yàn)槔锩姘卸?jí)的輸入寄存器,所以這個(gè)芯片有雙緩沖、單緩沖和直接導(dǎo)通這三種方式來進(jìn)行輸入。這個(gè)芯片的應(yīng)用很廣泛。D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。如果需要相應(yīng)的模擬電壓信號(hào),可以通過線性運(yùn)算放大器的很高的輸入阻抗來實(shí)現(xiàn)。運(yùn)算放大器的反饋電阻都可以通過固有電阻內(nèi)的RFB終端參考被連接到邏輯輸入從而讓TTL電平得到滿足,可以與TTL電路或微型電路進(jìn)行直接的鏈接。
通過對(duì)滑動(dòng)變阻器的調(diào)節(jié),給定一個(gè)基準(zhǔn)電壓,給定的電壓輸入給DAC0832上的VREF,從而給數(shù)模轉(zhuǎn)換器一個(gè)電壓,這個(gè)電壓決定了最后輸出的最大電壓。波形產(chǎn)生的原理:經(jīng)過單片機(jī)定時(shí)器的中斷處理所采集的點(diǎn),也就是數(shù)值,會(huì)經(jīng)由連接端口輸送給DAC0832,定時(shí)器中斷所實(shí)現(xiàn)的是波形數(shù)值的輸出,數(shù)模輸出的電流通過運(yùn)算放大器轉(zhuǎn)變成運(yùn)放電壓量輸出。以此來產(chǎn)生三種波形。如圖2所示:
2.3 顯示電路
本次設(shè)計(jì)所用到的LCD液晶顯示器1602控制器共有11條控制指令。顯示器的讀寫操作、光標(biāo)的顯示都是用編程指令來實(shí)現(xiàn)的。每次對(duì)控制器進(jìn)行讀寫操作時(shí)都必須進(jìn)行讀寫操作,確保D7為0。具體如表1所示。(在表格中1代表高電平,0代表低電平)
圖1 設(shè)計(jì)總方框圖
圖2 單片機(jī)與DAC0832接口電路
2.4 按鍵電路
按鍵是單片機(jī)不可缺少的人機(jī)互動(dòng)設(shè)備,按鍵就像一個(gè)開關(guān),手按下即閉合,手放開即斷開。人們大都使用的是矩形的和獨(dú)立式的。發(fā)光二極管點(diǎn)亮的條件是:陽極是對(duì)應(yīng)高電平、陰極對(duì)應(yīng)著低電平。因此,要想發(fā)光二極管亮,就要從P1口輸出數(shù)據(jù)。
表1 控制器指令
3.1 總體系統(tǒng)設(shè)計(jì)
(1)選用獨(dú)立式按鍵與單片機(jī)進(jìn)行連接,可以選擇波形,增加頻率或降低頻率,通過單片機(jī)的中斷處理存下波形和頻率。
(2)選用1602顯示器與單片機(jī)進(jìn)行連接,可以讀寫指令和數(shù)據(jù),在顯示器上顯示波形名稱和頻率。
(3)選用DAC0832數(shù)模轉(zhuǎn)換器,可以將單片機(jī)輸出的數(shù)字量轉(zhuǎn)換成模擬量進(jìn)行輸出,并通過運(yùn)算放大器輸出電壓。
(4)我們?cè)趯懢唧w的程序之前,為了減少不必要的麻煩提升效率,我們需要有一個(gè)具體的規(guī)劃,這樣可以少走彎路。
(5)要合理分配系統(tǒng)資源。
(6)要在關(guān)鍵的地方標(biāo)注,謝明解釋和含義,讓別人讀程序時(shí)更加簡(jiǎn)單明了。
(7)要在抗干擾方面苦下功夫,讓程序可以流暢運(yùn)行。
主要流程如圖3所示。
圖3 整體流程圖
3.2 設(shè)計(jì)各部分程序及函數(shù)
3.2.1 正弦波設(shè)計(jì)
假設(shè)要生成一個(gè)正弦波如公式一。adc0832數(shù)據(jù)端口給的數(shù)據(jù)的范圍是0~255一共256個(gè)。那么我們可以得到數(shù)據(jù)端口的數(shù)值的具體量,即公式二;假設(shè)我在X軸上抽樣256個(gè)點(diǎn)(0~255),那么這個(gè)256位的數(shù)組可以用EXCEL生成,如公式三。怎么選擇,具體情況具體分析。本設(shè)計(jì)采集了256個(gè)點(diǎn)。
3.2.3 正弦波輸出程序
本文通過單片機(jī)AT89C51的軟硬件設(shè)計(jì)方法,通過單片機(jī)AT89C51把程序輸出給DAC0832,DAC0832將數(shù)值轉(zhuǎn)化為模擬的信號(hào)量,最終生成波形。
[1]張靖武等.單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真.電子工業(yè)大學(xué),2007.3
[2]何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2010.8
[3]李學(xué)禮.基于Proteus軟件的單片機(jī)實(shí)驗(yàn)室建設(shè)[J].單片機(jī)與嵌入式系統(tǒng)的應(yīng)用,2005(9):5-6
[4]韓曉春,程明霄.單片機(jī)仿真實(shí)驗(yàn)平臺(tái)的設(shè)計(jì)與開發(fā).徐州工程學(xué)院學(xué)報(bào),2007.8