函數信號發(fā)生器是一種常用的信號源,它廣泛地應用在電子技術(shù)實(shí)驗。目前常用的函數信號發(fā)生器,一般可靠性較差,準確度較低,難以滿(mǎn)足科研和高精度實(shí)驗的需要,F用單片機和支持軟件及其外設電路構成的智能函數信號發(fā)生器,采用編程的方法來(lái)實(shí)現波形,將產(chǎn)生波形的程序用子程序的形式編寫(xiě),在需要波形時(shí)再調用相應子程序,經(jīng)過(guò)D/A轉換、運算放大器處理后,作為該信號源輸出,其線(xiàn)路簡(jiǎn)捷、功能強大、性?xún)r(jià)比較高。 1 主要芯片介紹 1.1 AT89C51單片機芯片 1.1.1 引腳圖 本文采用的單片機芯是AT89C51,它是采用高速CMOS制造工藝,通用型為40腳雙列直插封裝方式,其引腳如圖1所示。只要將+5 V電源接到VCC和VSS兩端,將晶振接到XTAL1和XTAL2兩端,給EA端加高電平控制電壓,然后將機器碼固化到AT89C51內就可以使用了。 1.1.2 單片機基本功能 單片機基本系統即單片機正常工作不可缺少的部分,進(jìn)行設計都要在此系統基礎上進(jìn)行。 (1)外接晶振引腳XTAL1與XTAL2 單片機之所以要加振蕩器是因為單片機內的CPU在執行指定程序時(shí),要經(jīng)過(guò)“取指”、“譯碼”,再定時(shí)給相關(guān)電路發(fā)出控制信號,以實(shí)現“機器碼指令”所要求的功能。這就要求內部必須有一個(gè)基準時(shí)鐘?赏ㄟ^(guò)外接晶振或振蕩信號二種方式來(lái)實(shí)現,一般采用外接晶振的方法較方便。 XTAL1(19),XTAL2(18)為外接晶振的兩個(gè)引腳。接入晶振時(shí),還要接入兩個(gè)20~30 pF的瓷片電容C1,C2,晶振頻率因單片機工作速度而異,Intel MCS-51系列為1.2~12 MHz,ATMEL89C系列為0~24 MHz,目前常采用6 MHz,11.059 MHz和12 MHz。石英晶振起振后,XTAL2(18)腳有一個(gè)3 V左右的正弦波。C1,C2短路、晶振不良,AT89C51(18),(19)腳內部反相器會(huì )損壞。VCC電源未加上等故障可能造成晶振不起振,使單片機無(wú)法工作。當采用外部振蕩器時(shí),信號接入(19)腳,(18)腳懸浮。振蕩器的12分頻為一個(gè)機器周期,當外接12 MHz晶振時(shí),一個(gè)機器周期為1μs。MCS-51大多數指令為一個(gè)機器周期。 (2)復位與復位電路 單片機必須進(jìn)行復位,是因為單片機內的CPU“取指”過(guò)程即為CPU從PC指針所指定的程序存儲器ROM地址單元中讀取“機器碼”的過(guò)程。單片機加電后,PC指針應指向ROM中某個(gè)固定的單元,當然,程序開(kāi)始的第一條指令也應放在ROM的這一地址單元內,這樣整個(gè)程序才能有序地執行。這個(gè)單元就是 ROM的0000H單元。只有上電復位正常后,PC值才為0000H,即指向ROM的0000H單元。此外,專(zhuān)用寄存器SFR中的SP為07H,即指向片內數據存儲器(片內RAM)07H單元,P0~P3值為0FFH,其余的專(zhuān)用寄存器值大多為00H。 復位的方法:當振蕩器正常工作時(shí),RST(9)腳上出現的兩個(gè)機器周期的高電平將使單片機有效復位?紤]到振蕩器有一定的起振時(shí)間,該引腳必須保持 10 ms以上高電平,才能有效復位。復位電路有開(kāi)機自動(dòng)復位和手動(dòng)復位。注意:復位信號為2個(gè)以上機器周期的高電平,單片機復位后正常工作時(shí)應該為低電平,如果未加復位電平或復位后復位電平仍未撤除,則單片機不能正常工作,此時(shí),可檢查RST電壓及相關(guān)器件。 在掉電期問(wèn)RST/VPD引腳如接入備用電源VPD(5 V±0.5 V),則可保存片內數據。當VCC下降到某一規定值時(shí),VPD便向片內RAM供電。 (3)EA/VDD片內程序存儲器選用端 單片機復位后,PC指針可能指向片內ROM0000H或片外ROM0000H單元,這取決于EA/VDD(31)腳外接高電平(指向片內 ROM0000H)還是低電平(指向片外ROM0000H)。AT89C51內部有4 kB ROM,這時(shí)EA(31)腳需外接高電位VCC。 在編程期間,此引腳作編程電壓VDD的輸入端。 1.2 關(guān)于DAC0832 DAC0832是具有20條引腳的雙列直插式COMS器件,它內部具有兩級數據寄存器,完成8位電流D/A轉換。其結構框圖及信號引線(xiàn)如圖2所示。 以下是其三種不同的工作方式: (1)直通方式 將WR1,WR2,XFER,CS接地,ILE接高電平,就能使得兩個(gè)寄存器的輸出跟隨輸入的數字量變化,DAC0832的輸出也同時(shí)跟隨變化。直通方式常用于連續反饋控制的環(huán)路中。 (2)單緩沖方式 單緩沖方式就是將其中一個(gè)寄存器工作在直通狀態(tài),另一個(gè)處于受控的鎖存器狀態(tài)。在實(shí)際應用中,如果只有一路模擬量輸出,或雖有幾路模擬量但并不要求同步輸出,就可采用單緩沖方式。 (3)雙緩沖方式 所謂雙緩沖方式就是將兩個(gè)寄存器都處于受控的鎖存方式。為了實(shí)現兩個(gè)寄存器的可控,應當給它們各分配一個(gè)端口地址,以便能按照端口地址進(jìn)行操作。 D/A轉換采用兩步寫(xiě)操作來(lái)完成?稍贒AC0832轉換輸出前一個(gè)數據的同時(shí),將下一個(gè)數據傳送到輸入寄存器,以提高D/A轉換速度。還可用于多路數模轉換系統,以實(shí)現多路模擬信號同步輸出的目的。 在所設計的電路中DAC0832采用的是單緩沖方式。 2 原理概述 單片機通過(guò)擴展D/A轉換接口,結合靈活的程序可以方便地產(chǎn)生各種低頻信號。下面以正弦信號為例進(jìn)行說(shuō)明。 2.1 正弦波信號的產(chǎn)生原理 正弦波的產(chǎn)生比較特殊,它不能由單片機直接產(chǎn)生,它只能產(chǎn)生如圖3所示的階梯波來(lái)向正弦波逼近。 很顯然,在一個(gè)周期內階梯波的階梯數目越多,單片機輸出的波形也就越接近正弦波。 先假定正弦波的振幅是2.56 V,則波谷對應的數字量為最小值00H,波峰對應的數字量為最大值FFH。將正弦波的第一個(gè)周期的波形按角度均分為若干等份,并計算出各點(diǎn)對應的電壓值,電壓值計算方法:Vx=2.5·(1+sinθ),因為00H~FFH對應的數字量為0~255,所以根據算出的電壓就可直接寫(xiě)出各點(diǎn)所對應的數字量。單片機將一個(gè)周期的數字量存入一定的存儲區域中,然后依次循環(huán)取出這些數字量,并送D/A電路轉換成階梯波,即近似的正弦波輸出。所輸出的正弦波的幅值可以通過(guò)D/A轉換電路實(shí)現。 2.2 變頻原理 單片機產(chǎn)生的階梯逼近正弦波對應的程序中加入了軟件延時(shí),最后再加入根據20H單元中的內容進(jìn)行延時(shí)的延時(shí)程序,那么20H單元中的內容一變,則輸出正弦波的頻率也就發(fā)生了變化。即:就是把一個(gè)正弦信號(階梯逼近)取樣、量化、編碼,形成一個(gè)正弦函數表儲存在了ROM中。合成時(shí)改變相位增量,由于相位增量不同,則一個(gè)周期內的取樣點(diǎn)數也不同,從而達到頻率合成的目的。 正弦信號本身是非線(xiàn)性的,而其相位是線(xiàn)性的,如圖4所示。 因此,每隔一段時(shí)間△t(時(shí)鐘周期),有對應的相位變化△p,即: p=ω△t=2πf△t 從上式可以得到合成信號的頻率f為: 3 系統硬件設計 其系統硬件原理圖如圖5所示。 3.1 單片機選擇 本系統中使用AT89C51單片機。電路板上的EA引腳可利用跳線(xiàn)接電源,也可接地。因此,在此管座上可以插AT89C51,AT80C31等芯片。 3.2 D/A轉換電路 DAC0832與單片機的連接中對主要功能信號的處理方法如下: 圖中DAC0832與AT89C51的連接方式是單緩沖方式。這種單緩沖方式是DAC0832的兩個(gè)緩沖器同時(shí)受控,將CS與XFER相連受控于 AT89C51的P2.0信號,WR1和WR2相連受控于A(yíng)T89C51的WR信號,由于P2.0連至DAC0832的CS,故該片的地址為FEFFH (無(wú)關(guān)位取“1”)。 3.3 開(kāi)關(guān)的功能和應用 由于本設計中要用按鍵控制波形輸出,現將各按鍵說(shuō)明如下: K0~K4分別與AT89C51的P1.0~P1.4相連,依次控制著(zhù)鋸齒波、方波、三角波、梯形波、正弦波的產(chǎn)生。 通過(guò)對51單片機進(jìn)行D/A轉換接口擴展,通過(guò)對INT0端設置按鈕改變20H單元中的內容以調整頻率,利用中斷與查詢(xún)相結合的方式進(jìn)行波形選擇,具體可以通過(guò)對P1口來(lái)設置完成。例P1.0為鋸齒波信號選擇開(kāi)關(guān),當加上電源后,自動(dòng)復位電路開(kāi)始工作,單片機開(kāi)始工作。當K0鍵按下,即想要輸出鋸齒波時(shí),P1.0為低電平,掃描程序調用鋸齒波子程序,產(chǎn)生的數字信號送DAC0832進(jìn)行數模轉換,其輸出經(jīng)運算放大電路后輸出鋸齒波。 4 軟件設計 4.1 主程序流程圖 程序流程圖如圖6所示。 4.2 正弦波的流程圖及子程序 4.2.1 流程圖 流程圖如圖7所示。 4.2.2 子程序 5 結 語(yǔ) 該信號源的設計是以MCS-51單片機和DAC0832為核心元件,結合較簡(jiǎn)捷的外圍電路來(lái)構建低頻信號源。它能產(chǎn)生三角波、正弦波等5種信號,本設計采用硬件和軟件相結合,電路較傳統的簡(jiǎn)單且操作方便,具有一定的參考價(jià)值。 |