1923_基于單片機的多功能信號發(fā)生器
1923_基于單片機的多功能信號發(fā)生器,基于,單片機,多功能,信號發(fā)生器
黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 1 頁1 緒 論1.1 課題背景隨著電子測量及其他部門對各類信號發(fā)生器的廣泛需求及電子技術(shù)的迅速發(fā)展,促使信號發(fā)生器種類增多,性能提高。尤其隨著 70 年代微處理器的出現(xiàn),更促使信號發(fā)生器向著自動化、智能化方向發(fā)展?,F(xiàn)在,許多信號發(fā)生器帶有微處理器,因而具備了自校、自檢、自動故障診斷和自動波形形成和修正等功能,可以和控制計算機及其他測量儀器一起方便的構(gòu)成自動測試系統(tǒng)。當(dāng)前信號發(fā)生器總的趨勢是向著寬頻率覆蓋、低功耗、高頻率精度、多功能、自動化和智能化方向發(fā)展。在科學(xué)研究、工程教育及生產(chǎn)實踐中,如工業(yè)過程控制、教學(xué)實驗、機械振動試驗、動態(tài)分析、材料試驗、生物醫(yī)學(xué)等領(lǐng)域,常常需要用到低頻信號發(fā)生器。而在我們?nèi)粘I钪?,以及一些科學(xué)研究中,鋸齒波和正弦波、矩形波信號是常用的基本測試信號。譬如在示波器、電視機等儀器中,為了使電子按照一定規(guī)律運動,以利用熒光屏顯示圖像,常用到鋸齒波信號發(fā)生器作為時基電路。信號發(fā)生器作為一種通用的電子儀器,在生產(chǎn)、科研、測控、通訊等領(lǐng)域都得到了廣泛的應(yīng)用。 但市面上能看到的儀器在頻率精度、帶寬、波形種類及程控方面都已不能滿足許多方面實際應(yīng)用的需求。加之各類功能的半導(dǎo)體集成芯片的快速生產(chǎn),都使我們研制一種低功耗、寬頻帶,能產(chǎn)生多種波形并具有程控等低頻的信號發(fā)生器成為可能。1.2 課題意義 便攜式和智能化越來越成為儀器的基本要求,對傳統(tǒng)儀器的數(shù)字化,智能化,集成化也就明顯得尤為重要。平時常用信號源產(chǎn)生的正弦波,方波,三角波等常見波形作為待測系統(tǒng)的輸入,測試系統(tǒng)的性能。但在某些場合,我們需要特殊波形對系統(tǒng)進行測試,這是傳統(tǒng)的模擬信號發(fā)生器和數(shù)字信號發(fā)生器很難勝任的。利用單片機的強大功能,設(shè)計合適的人機交互界面,使用戶能夠通過手動的設(shè)定,設(shè)置所需波形。該設(shè)計課題的研究和制作全面說明對多功能信號發(fā)生系統(tǒng)要有一個全面的了解、對多功能信號的發(fā)生原理要理解掌握,以及多功能信號發(fā)生器工作流程:波形的設(shè)黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 2 頁定,D/A 轉(zhuǎn)換,單片機(51 單片機,顯示電路,鍵盤控制) ,顯示和各模塊的連接通信等各個部分要熟練聯(lián)接調(diào)試,能夠正確的了解常規(guī)芯片的使用方法、掌握簡單信號發(fā)生器應(yīng)用系統(tǒng)軟硬件的設(shè)計方法,進一步鍛煉了我們在信號處理方面的實際工作能力。1.3 國內(nèi)外的研究狀況1.3.1 波形發(fā)生器的發(fā)展?fàn)顩r 波形發(fā)生器亦稱函數(shù)發(fā)生器,作為實驗用信號源,是現(xiàn)今各種電子電路實驗設(shè)計應(yīng)用中必不可少的儀器設(shè)備之一。目前,市場上常見的波形發(fā)生器多為純硬件的搭接而成,且波形種類有限,多為鋸齒、正弦、方波、三角等波形。信號發(fā)生器作為一種常見的應(yīng)用電子儀器設(shè)備,傳統(tǒng)的可以完全由硬件電路搭接而成,如采用 555 振蕩電路發(fā)生正弦波、三角波和方波的電路便是可取的路徑之一,不用依靠單片機。但是這種電路存在波形質(zhì)量差,控制難,可調(diào)范圍小,電路復(fù)雜和體積大等缺點。在科學(xué)研究和生產(chǎn)實踐中,如工業(yè)過程控制,生物醫(yī)學(xué),地震模擬機械振動等領(lǐng)域常常要用到低頻信號源。而由硬件電路構(gòu)成的低頻信號其性能難以令人滿意,而且由于低頻信號源所需的 RC 很大;大電阻,大電容在制作上有困難,參數(shù)的精度亦難以保證;體積大,漏電,損耗顯著更是其致命的弱點。一旦工作需求功能有增加,則電路復(fù)雜程度會大大增加。波形發(fā)生器是能夠產(chǎn)生大量的標(biāo)準(zhǔn)信號和用戶定義信號,并保證高精度、高穩(wěn)定性、可重復(fù)性和易操作性的電子儀器。函數(shù)波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點,不僅可以模擬各種復(fù)雜信號,還可對頻率、幅值、相移、波形進行動態(tài)、及時的控制,并能夠與其它儀器進行通訊,組成自動測試系統(tǒng),因此被廣泛用于自動控制系統(tǒng)、震動激勵、通訊和儀器儀表領(lǐng)域。在 70 年代前,信號發(fā)生器主要有兩類:正弦波和脈沖波,而函數(shù)發(fā)生器介于兩類之間,能夠提供正弦波、余弦波、方波、三角波、上弦波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時,需要采用較復(fù)雜的電路和機電結(jié)合的方法。這個時期的波形發(fā)生器多采用模擬電子技術(shù),而且模擬器件構(gòu)成的電路存在著尺寸大、價格貴、功耗大等缺點,并且要產(chǎn)生較為復(fù)雜的信號波形,則電路結(jié)構(gòu)非常復(fù)雜。同時,主要表現(xiàn)為兩個突出問題,一是通過電位器的調(diào)節(jié)來實現(xiàn)輸出頻率的調(diào)節(jié),因此很難將頻率調(diào)到某一個定黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 3 頁值;二是脈沖的占空比不可調(diào)節(jié)。在 70 年代后,微處理器的出現(xiàn),可以利用處理器、A/D/和 D/A,硬件和軟件使波形發(fā)生器的功能擴大,產(chǎn)生更加復(fù)雜的波形。這時期的波形發(fā)生器多以軟件為主,實質(zhì)是采用微處理器對 DAC 的程序控制,就可以得到各種簡單的波形。 90 年代末,出現(xiàn)幾種真正高性能、高價格的函數(shù)發(fā)生器、但是 HP 公司推出了型號為 HP770S 的信號模擬裝置系統(tǒng),它由 HP8770A 任意波形數(shù)字化和 HP1776A 波形發(fā)生軟件組成。HP8770A 實際上也只能產(chǎn)生 8 中波形,而且價格昂貴。不久以后,Analogic 公司推出了型號為 Data-2020 的多波形合成器,Lecroy 公司生產(chǎn)的型號為9100 的任意波形發(fā)生器等。 1.3.2 本課題在國內(nèi)外的研究現(xiàn)狀二十一世紀(jì),隨著集成電路技術(shù)的高速發(fā)展,出現(xiàn)了多種工作頻率可過 GHz 的DDS 芯片,同時也推動了函數(shù)波形發(fā)生器的發(fā)展, 2003 年,Agilent 的產(chǎn)品 33220A能夠產(chǎn)生 17 種波形,最高頻率可達到 20M,2005 年的產(chǎn)品 N6030A 能夠產(chǎn)生高達 500MHz 的頻率,采樣的頻率可達 1.25GHz。由上面的產(chǎn)品可以看出,函數(shù)波形發(fā)生器發(fā)展很快。 對目前而言,國外(美)研究和使用的信號發(fā)生器大多要求頻率在10 HZ~50MHZ,產(chǎn)生正弦、三角、鋸齒、方波、調(diào)幅、直流等波形,而國內(nèi)則對頻6?率在 5×10 HZ~40MHZ ,能產(chǎn)生正弦~三角等基本波形以及調(diào)幅、調(diào)頻、 TTL 等的3信號發(fā)生器需求大。黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 4 頁通信接口單片機系統(tǒng)D/A 電路電源模塊復(fù)位電路數(shù)碼管顯示模塊2 信號發(fā)生器的方案研究 2.1 總體方案論證與設(shè)計方案一:可以由晶體管、運算放大器放 IC 等通用器件制作,更多的則是用專門的函數(shù)信號發(fā)生器 IC 產(chǎn)生。早期的函數(shù)信號發(fā)生器 IC,如L8038、BA205、XR2207/2209 等,它們的功能較少,精度不高,頻率上限只有300kHz,無法產(chǎn)生更高頻率的信號,調(diào)節(jié)方式也不夠靈活,頻率和占空比不能獨立調(diào)節(jié),二者互相影響。方案二:利用專用直接數(shù)字合成DDS芯片的函數(shù)發(fā)生器:能產(chǎn)生任意波形并達到很高的頻率。但成本較高。方案三:采用 AT89C51 單片機和 DAC0832 芯片,直接連接鍵盤和顯示。該種方案主要對 AT89C51 單片機的各個 I/O 口充分利用。P1 口是連接鍵盤以及連接顯示電路,P2 口連接 DAC0832 輸出波形。這 樣總體來說,能對單片機各個接口都利用上,而不在多用其它芯片,從而減小了系統(tǒng)的成本。也對按照系統(tǒng)便攜式低頻信號發(fā)生器的要求所完成.占用空間小,使用芯片少,低功耗。綜合考慮,方案三各項性能和指標(biāo)都優(yōu)于其他幾種方案,能使輸出頻率有較好的穩(wěn)定性,充分體現(xiàn)了模塊化設(shè)計的要求,而且這些芯片及器件均為通用器件,在市場上較常見,價格也低廉,樣品制作成功的可能性比較大,所以在本設(shè)計中采用了方案三。2.2 系統(tǒng)整體設(shè)計方案信號發(fā) 生器電路黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 5 頁的如圖 2-1 所示,控制器采用單片機,數(shù)據(jù)轉(zhuǎn)換電路采用 D/A 轉(zhuǎn)換電路,顯示電路采用共陰極七段數(shù)碼管實現(xiàn)動態(tài)掃描顯示,通信接口利用 MAX232 實現(xiàn)與外部設(shè)備的連接。圖 2.1 總體設(shè)計方框圖3 硬件電路的設(shè)計3.1 主控芯片的選擇本設(shè)計采用的主控芯片是 AT89C51。AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲器,是低電壓、高性能 CMOS8 位微處理器單片機。由于將多功能 8 位CPU 和閃爍存儲器組合在單個芯片中,ATMEL 的 AT89C51 是一種高效微控制器, AT89C51 單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且廉價的方案。所以本設(shè)計采用 AT89C51 作為主控芯片。3.1.1 AT89C51 主要特性AT89C51 的主要特性如表 3.1 所示表 3.1 AT89C51 的主要特性兼容 MCS-51 指令系統(tǒng) 4k 可反復(fù)擦寫(>1000 次)ISP Flash ROM32 個雙向 I/O 口 4.5-5.5V 工作電壓2 個 16 位可編程定時/計數(shù)器 時鐘頻率 0-33MHz全雙工 UART 串行中斷口線 128x8bit 內(nèi)部 RAM5 個中斷源 低功耗空閑和省電模式黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 6 頁11223344D DC CB BA AT itleN u m b e r R e v isio nSizeA 4D a te : 2 0 1 0 - 4 - 2 3 Sh e e t o f File : Sh e e t1 .Sc h D o c D r a w n B y :+ 5 VC 1R 1R ST8 9 C 5 1中斷喚醒省電模式 3 級加密位看門狗(WDT)電路 軟件設(shè)置空閑和省電功能靈活的 ISP 字節(jié)和分頁編程 雙數(shù)據(jù)寄存器指針3.1.2 AT89C51 時鐘及復(fù)位電路設(shè)計復(fù)位電路分為上電自動復(fù)位和按鈕復(fù)位兩種方式,在程序跑飛時,使用復(fù)位電路可使程序恢復(fù)正常工作狀態(tài)。最簡單的復(fù)位電路是上電自動復(fù)位,它的工作原理是:加電瞬間電容通過充電來實現(xiàn)其電路如圖 3-3 所示。在通電瞬間,電容 C 通過電阻 R充電,RST 端出現(xiàn)正脈沖,用以復(fù)位。只要電源 VCC 的上升時間不超過 1ms,就可以實現(xiàn)自動上電復(fù)位,即接通電源就完成了系統(tǒng)的復(fù)位初始化。為了保證復(fù)位高電平持續(xù)時間大于 2 個機器周期。當(dāng)采用晶體為 12MHz 時,可取 C=10Uf,R=8.2KΩ 。但是這個電路要想起到重新復(fù)位的作用,只能先下電,再上電才行。而如果在電容兩端并聯(lián)一個按鍵,就成了按鍵復(fù)位電路,只要按下這個按鍵,單片機就能復(fù)位而無需斷電。圖 3.3 上電自動復(fù)位黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 7 頁112233445566D DC CB BA ATitleNumber RevisionSizeBDate: 2010-4-16 Sheet of File: C:\Documents and Settings\..\與與與與與與.SCHDOCDrawn By:P1.01 P1.12P1.23 P1.34P1.45 P1.56P1.67 P1.78RESET9 P3.0(RXD)10P3.1(TXD)11 P3.2(INT0)12P3.3(INT1)13 P3.4(T0)14P3.5(T1)15 P3.6(WR)16P3.7(RD)17 XTAL218XTAL119 VSS20 P2.0 21P2.1 22P2.223P2.3 24P2.4 25P2.526P2.6 27P2.7 28PSEN29ALE/PROG 30EA/VPP 31P0.732P0.6 33P0.5 34P0.435P0.3 36P0.2 37P0.138P0.0 39VDD 40AT89C51U21212MXTAL33pFC233pFC3123456789RP1VCCVCCD0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7200R21KR1VCC22UFC4SW-PBSP20P21P22P23P24P25P26本設(shè)計采用手動復(fù)位和上電自動復(fù)位組合方式復(fù)位。結(jié)構(gòu)原理圖如圖 3.4 電路所示。VCC 上電時,電容充電,在 1K 電阻上出現(xiàn)電壓,使得單片機復(fù)位;幾個毫秒后,電容充滿,1K 電阻上電流降為 0,電壓也為 0,使得單片機進入工作狀態(tài)。工作期間,按下按鍵,電容放電。按鍵松手,電容又充電,在 1K 電阻上出現(xiàn)電壓,使得單片機復(fù)位。幾個毫秒后,單片機進入工作狀態(tài)。圖 3.4 單片機時鐘及復(fù) 位電路本 設(shè)計采用AT89C51 外接 12MHZ 晶振為單片機提供時鐘頻率,將 AT89C51 的 XTAL1 和 XTAL2兩端跨接石英晶體及兩個電容可以構(gòu)成穩(wěn)定的自激振蕩器。電容取 33pF,可穩(wěn)定頻率并對振蕩頻率有微調(diào)作用。黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 8 頁3.2 D/A 轉(zhuǎn)換電路設(shè)計D/A 模塊是本系統(tǒng)的核心部分,信號發(fā)生器的主要功能就是由這部分實現(xiàn)。模塊先接受來自單片機系統(tǒng)的數(shù)字量,通過 DAC0832 的轉(zhuǎn)換變成模擬電流輸出,通過電流-電壓轉(zhuǎn)換,得到模擬電壓。不同波形的采樣數(shù)字量不斷地被單片機系統(tǒng)送給轉(zhuǎn)換模塊,從而形成各種波形輸出。D/A 轉(zhuǎn)換電路的作用是將單片機輸出的波形樣值編碼轉(zhuǎn)換成模擬量值,完成雙極性的波形輸出。本設(shè)計采用 DAC0832 作為轉(zhuǎn)換芯片。3.2.1 DAC0832 芯片DAC0832 是采用 CMOS 工藝制成的單片直流輸出型 8 位 D/A 轉(zhuǎn)換器。主要由兩個 8 位寄存器(輸入寄存器和 DAC 寄存器)和一個 8 位 D/A 轉(zhuǎn)換器組成。常用八位的 D/A 轉(zhuǎn)換器 DAC0832 內(nèi)部結(jié)構(gòu)資料:芯片內(nèi)有兩級輸入寄存器,使DAC0832 具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路 D/A 異步輸入、同步轉(zhuǎn)換等)。D/A 轉(zhuǎn)換結(jié)果采用電流形式輸出。要是需要相應(yīng)的模擬信號,可通過一個高輸入阻抗的線性運算放大器實現(xiàn)這個功能。運算放大器放的反饋電阻可通過 RFB 端引用片內(nèi)固有電阻,還可以外接。該片邏輯輸入滿足 TTL 電壓電平范圍,可直接與 TTL 電路或微機電路相接。1、DAC0832 各引腳功能?DI0~ DI7:數(shù)字信號輸入端。?ILE:輸入寄存器允許,高電平有效。? :片選信號,低電平有效。CS?WR1:寫信號 1,低電平有效。? :傳送控制信號,低電平有效。XFER?WR2:寫信號 2,低電平有效。?IOUT1、IOUT2:DAC 電流輸出端。?RFB:是集成在片內(nèi)的外接運放的反饋電阻。 ?VREF:基準(zhǔn)電壓輸入線(-10~+10V) 。?VCC:工作電源( +5~+15V) 。黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 9 頁8位輸 入寄 存器輸 入數(shù) 據(jù) 4~ 713~ 6928178129301參 考 電 壓UREFIOT}輸 出B反 饋 電 阻AGNDVCIOUTILE數(shù) 據(jù)鎖 存片 選 CSWR{寫 入 XF傳 送控 制 DAC寄存 器 位/寄 存器位 L&?AGND:模擬地 NGND:數(shù)字地。D/A 轉(zhuǎn)換芯片輸入時數(shù)字量,輸出為模擬量。模擬信號很容易受到電源和數(shù)字信號等干擾而引起波動。為提高穩(wěn)定性和減小誤差,一般把數(shù)字地和模擬地分開。 DAC0832 采用二次緩沖方式。這樣可以在輸出的同時,采集下一個數(shù)據(jù),從而提高轉(zhuǎn)換速度,更重要的是能夠在多個轉(zhuǎn)換器同時工作時,實現(xiàn)多通道 D/A 的同步轉(zhuǎn)換輸出。 2、主要的特性參數(shù)?分辨率為 8 位。?只需在滿量程下調(diào)整其線性度。?可與單片機或微處理器直接接口,需要時也可與微處理器連接而單獨使用。 ?電流穩(wěn)定時間為 1us。?可雙緩沖、單緩沖或直通數(shù)據(jù)輸入。?功耗低,約為 200mW。?邏輯電平輸入與 TTL 兼容。?單電源供電(+5~+15V) 。DAC0832 是采用 CMOS 工藝制成的單片直流輸出型 8 位 D/A 轉(zhuǎn)換器。主要由 8位輸入位寄存器、8 位 DAC 寄存器和一個 8 位 D/A 寄存器組成,如圖 3.5 所示。圖 3.5 DAC0832 內(nèi)部結(jié)構(gòu)8 位輸入寄存器用于存放 CPU 送來的數(shù)字量,使輸入數(shù)字量得到緩沖和鎖存,由端加以控制;8 位 DAC 寄存器用以存放待轉(zhuǎn)換的數(shù)字量,由 端控制;8 位1LE 2LE黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 10 頁D/A 轉(zhuǎn)換電路由 8 位 T 型電阻網(wǎng)絡(luò)和電子開關(guān)組成,電子開關(guān)受 8 位 DAC 寄存器輸出的數(shù)字量控制,T 型電阻網(wǎng)絡(luò)可以輸出與數(shù)字量成正比的模擬電流。3.2.2 DAC0832 波形產(chǎn)生原理一般利用 DAC0832 實現(xiàn)復(fù)雜波形的輸出,要首先利用采樣定理對各波形進行抽樣,然后對各采樣值進行編碼,得到的數(shù)字量存入各個波形表,執(zhí)行程序時通過查表方式依次取出,經(jīng)過 D/A 轉(zhuǎn)換后輸出就可以得到不同波形。如果 N 個樣值點構(gòu)成波形的一個周期,則 DAC0832 輸出 N 個樣值點后,便得到一個周期的波形信號。重復(fù)輸出 N個樣值點,得到第二周期。利用單片機的延時程序控制輸出信號的周期速度,也就控制了輸出波形的頻率。DAC0832 將參考電壓分成 256 份,單片機向 DAC0832 發(fā)送不同的數(shù)字編碼,可以產(chǎn)生不同的輸出。假設(shè)給 DAC0832 輸入的某個數(shù)字編碼的值為 D,則按照本系統(tǒng)的硬件設(shè)計,數(shù)模轉(zhuǎn)換模塊的輸出電壓應(yīng)為 UO=Uref×D/256。3.2.3 D/A 轉(zhuǎn)換電路D/A 轉(zhuǎn)換電路由一片 DAC0832 和兩片 LM324AN 組成。DAC0832 是具有 20 條引腳的雙列直插式 CMOS 器件,它內(nèi)部具有兩級數(shù)據(jù)寄存器,完成 8 位電流 D/A 轉(zhuǎn)換,故不需外加電路。DAC0832 是電流輸出型,示波器上顯示波形,通常需要電壓信號,電流信號到電壓信號的轉(zhuǎn)換可由運算放大器 LM324AN 實現(xiàn),用兩片 LM324AN 可以實現(xiàn)雙極性輸出。 單片機向 DAC0832 發(fā)送數(shù)字編碼,產(chǎn)生不同的輸出。先利用采樣定理對各波形進行抽樣,然后把各采樣值進行編碼,得到的數(shù)字量存入各個波形表,執(zhí)行程序時通過查表方法依次取出,經(jīng)過 D/A 轉(zhuǎn)換后輸出就可以得到波形。假如 N 個點構(gòu)成波形的一個周期,則 DAC0832 輸出 N 個樣值點后,樣值點形成運動軌跡,即一個周期。重復(fù)輸出 N 個點,成為第二個周期。利用單片機的晶振控制輸出周期的速度,也就是控制了輸出的波形的頻率。這樣就控制了輸出的波形及其幅值和頻率。設(shè)計中為了實現(xiàn)模擬電壓的輸出,采用如圖 3.6 所示電路,將 DAC0832 的數(shù)據(jù)輸入端與 AT89C51 的 P0口相連,用來接收單片機發(fā)送的數(shù)據(jù)。輸出端利用兩片 LM324AN 實現(xiàn)波形的輸出,經(jīng)過第一片 LM324AN 功放后,輸出反向電壓;經(jīng)過第二片 LM324AN 一倍功放后,黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 11 頁1122334455667788D DC CB BA ATitleNumber RevisionSizeA3Date: 2010-4-15 Sheet of File: C:\Documents and Settings\..\與與與與與與與.SCHDOCDrawn By:CS1WR12GND3D134D125D116D107VREF8RFB9GND10VCC 20ILE(BY1/BY2) 19WR2 18XFER 17D14 16D15 15D16 14D17 13IOUT2 12IOUT1 11DAC0832U3100KR5100KR450KR3 OUTLM324AN2314111U4ALM324AN5672411U4BD0D1D2D3D4D5D6D7VCCVDD VDDVCC輸出正向電壓。從圖 3.6 所示電路圖中可以看出,當(dāng) VREF 接+5V 時,輸出電壓 OUT 的范圍是0~5V;當(dāng)接+10V 時,輸出電壓 OUT 的范圍是 0~10V ;輸入數(shù)字量的變化,將引起模擬量輸出的變化。圖 3.6 D/A 轉(zhuǎn)換電路3.3 數(shù)碼管顯示電路設(shè)計顯示部分采用 8 位 7 段共陰數(shù)碼管,驅(qū)動芯片分別是 74LS48、74LS138,在軟件設(shè)計時,要根據(jù)芯片的控制邏輯來寫出顯示程序所需要的顯示數(shù)據(jù)表,所以需要了解這兩個芯片的真值表,如表 3.3、表 3.4 所示。3.3.1 顯示原理顯示模塊實現(xiàn)輸出波形參數(shù)的顯示功能。顯示部分用的是 8 位 7 段共陰數(shù)碼管,使用的是動態(tài)掃描顯示:74LS48 輸出為段選信號,決定數(shù)碼管顯示的字型碼;74LS138 是位選信號,決定顯示的數(shù)碼管位。在動態(tài)掃描時,每一個瞬間只使一位字符顯示,在此瞬間,段選輸出相應(yīng)字符段選碼,位選則在該顯示位輸出選通電平,以保證該位顯示相應(yīng)字符。如此輪流,使每黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 12 頁位分時顯示該位應(yīng)顯示的字符。表 3.3 74LS48 真值表表 3.4 74LS138 真值表 輸入 輸出數(shù)字 D C B A Ya Yb Yc Yd Ye Yf Yg 字形0 0 0 0 0 1 1 1 1 1 1 0 01 0 0 0 1 0 1 1 0 0 0 0 12 0 0 1 0 1 1 0 1 1 0 1 23 0 0 1 1 1 1 1 1 0 0 1 34 0 1 0 0 0 1 1 0 0 1 1 45 0 1 0 1 1 0 1 1 0 1 1 56 0 1 1 0 0 0 1 1 1 1 1 67 0 1 1 1 1 1 1 0 0 0 0 78 1 0 0 0 1 1 1 1 1 1 1 89 1 0 0 1 1 1 1 0 0 1 1 9輸入 輸出G1 +G2ABC B A Y0123Y45670 X X X X 1 1 1 1 1 1 1 1 X 1 X X X 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 13 頁3.3.2 顯示電路在顯示模塊部分,如圖 3.7,通過 74LS138 和 74LS48 實現(xiàn)對七段數(shù)碼管的顯示控制。由于選用 8 位 LED,為簡化硬件電路,本設(shè)計采用 LED 動態(tài)掃描顯示電路。74LS138 能夠?qū)?shù)碼管實現(xiàn)位選,把 AT89C51 的 P2.4、P2.5 、P2.6 口與 3 線-8 線譯碼器的輸入端相連,將譯碼器的輸出端與 8 位共陰數(shù)碼管的位選端相連,從而實現(xiàn)數(shù)碼管的位選;74LS48 能夠?qū)?shù)碼管實現(xiàn)段選,將 AT89C51 的 P2.0、P2.1 、P2.2、P2.3 口與 4-7 譯碼器的輸入端相連,把單片機輸出的二進制數(shù)或者 BCD 碼,作為其輸入,并將轉(zhuǎn)換輸出的數(shù)據(jù)送給數(shù)碼管,作為數(shù)碼管的顯示段選碼。本設(shè)計中數(shù)碼管顯示的主要參數(shù)有:(1)當(dāng)前波形的數(shù)字代號;(2)當(dāng)前波形的輸出頻率;(3)當(dāng)前輸出波形的峰值。1 0 1 1 1 1 1 1 1 1 1 1 0 11223344D DC CB BA ATitleNumber RevisionSizeA4Date: 2010-4-16 Sheet of File: I:\與與與與與與與\與與與與與與與.SCHDOCDrawn By:A1B2C3G2A4G2B5G16Y7 7Y6 9Y5 10Y4 11Y3 12Y2 13Y1 14Y0 1574LS138U5 R6R7R8R9R12R13R11R10VCCVCCW1W2W3W4W6W7W87SEG-MPX8-CC-BLUEAaBbCcDdEeFfGgDPdp1122334455667788a b c d e f g W1 W2 W3 W4 W5 W6 W7 W8BI/RBO4RBI5LT3A7B1C2D6a 13b 12c 11d 10e 9f 15g 1474LS48U6P20P21P22P23P24P25P26W5ab c defg黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 14 頁圖 3.7 數(shù)碼管顯示電路3.4 通信接口電路設(shè)計為實現(xiàn)計算機與單片機系統(tǒng)的數(shù)據(jù)通信與下載,本設(shè)計中采用 MAX232 實現(xiàn),如圖 3.8 所示。MAX232 芯片是美信公司專門為電腦的 RS-232 標(biāo)準(zhǔn)串口設(shè)計的接口電路,使用+5v 單電源供電。外部結(jié)構(gòu)基本可分三個部分:第一部分是電荷泵電路。由 1、2、3、4、5、6 腳和 4 只電容構(gòu)成。功能是產(chǎn)生+12v 和 -12v 兩個電壓,滿足 RS-232 串口對電平的要求。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由 7、8、9、10、11、12、13、14 腳構(gòu)成兩個數(shù)據(jù)通道。其中 13 腳(R1IN) 、12 腳(R1OUT) 、11 腳(T1IN) 、14 腳(T1OUT)為第一數(shù)據(jù)通道。8 腳(R2IN) 、9 腳(R2OUT) 、10 腳(T2IN) 、7 腳(T2OUT)為第二數(shù)據(jù)通道。第三部分是供電。15 腳 GND、16 腳 VCC(+5V) 。在圖 3.8 所示的接口電路中,MAX232 的 R1OUT 口接單片機的 P3.0 RXD(串行輸入口) ,T1IN 口接單片機的 P3.1TXD(串行輸出口) 。R S232 串 口 通 信 接 線 方 法 采用 三 線 制 。 首 先 , 串 口 傳 輸 數(shù) 據(jù) 只 要 有 接 收 數(shù) 據(jù) 針 腳 和 發(fā) 送 針 腳 就 能 實 現(xiàn) ; 同 一 個串 口 的 接 收 腳 和 發(fā) 送 腳 直 接 用 線 相 連 。 TTL/CMOS 數(shù)據(jù)從 T1IN 輸入轉(zhuǎn)換成 RS-232數(shù)據(jù)從 T1OUT 送到電腦 DB9 插頭;DB9 插頭的 RS-232 數(shù)據(jù)從 R1IN 輸入轉(zhuǎn)換成TTL/CMOS 數(shù)據(jù)后從 R1OUT 輸出。黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 15 頁11223344D DC CB BA ATitleNumber RevisionSizeA4Date: 2010-5-15 Sheet of File: H:\與與與與s\..\與與與與與與與.SCHDOC Drawn By:Vin VoutGNDMC7805U012DS123POWERINPUT1KR00.33UFC00.1UFC1VCCVDD11223344D DC CB BA ATitleNumber RevisionSizeA4Date: 2010-5-15 Sheet of File: H:\與與與與\..與與與與與與與與與與與與與.SCHDOCDrawn By:C1+ 1V+ 2C1- 3C2+ 4C2- 5V- 6T2OUT 7R2IN 8R2OUT9T2IN10T1IN11R1OUT12R1IN13T1OUT14GND15VCC16MAX232U1123456789DBVCC +5V 1UFC 81UFC71UFC61UFC5TXDRXD圖 3.8 MAX232 的接口電路3.5 電源電路設(shè)計為了給電路提供穩(wěn)定的電源,本設(shè)計中采用如圖 3-9 所示電路,由 MC7805 控制的電源電路給各部分電路提供電源。MC7805 為三端正穩(wěn)壓器電路,能提供多種固定的輸出電壓,應(yīng)用范圍廣。內(nèi)含過流、過熱和過載保護電路。帶散熱片時輸出電流可達 1A。雖然是固定穩(wěn)壓電路,但使用外接元件,可獲得不同的電壓和電流。其主要特點:(1) 輸出電流可達 1A; (2)輸出電壓為:最小值為 4.8V,最大值為 5.2V,典型值為5V;(3)短路保護。由于 MC7805 的輸入端電壓 Vin 要比輸出端電壓 Vout 高 2V 以上,MC7805 在25℃常溫時,當(dāng)需要輸出典型電壓 Vout=+5V,Io=500mA 時,輸入電壓 Vin 必須為+10V,因此圖 3-9 電路圖中 Vin 需接+10V 電壓。本設(shè)計中由 MC7805 輸出 +5V 電壓,給單片機、DAC0832 以及 74LS138、74LS48和 MAX232 等芯片提供穩(wěn)定的+5V 直流電壓。將 MC7805 輸入端的電壓接到LM324AN 的 VDD 電源端。黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 16 頁圖 3.9 電源電路3.6 整體硬件電路設(shè)計根據(jù)硬件總體設(shè)計的方框圖,設(shè)計出實際電路圖如附錄 A 所示,電路中利用AT89C51 單片機系統(tǒng)產(chǎn)生各種波形的控制信號;通過 DAC0832 轉(zhuǎn)換電路,實現(xiàn)對數(shù)字信號轉(zhuǎn)換成模擬的電壓信號輸出;并通過數(shù)碼管顯示電路,將某一時刻輸出的波形數(shù)字代號、頻率以及該波形的峰值顯示出來。4 軟件設(shè)計4.1 系統(tǒng)主程序設(shè)計主程序的功能是在打開不同的開關(guān) 1、2、3、4 時,D/A 轉(zhuǎn)換模塊分別輸出方波、鋸齒波、三角波、正弦波四種波形;顯示模塊顯示代表各種波形的數(shù)字、所選波形的頻率和幅度,要求在同一時間只限打開一個開關(guān)。黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 17 頁圖 4.1 主程序流程圖由于顯示程序和正弦波程序采用的是查表方式,所以程序開始后,先分別定義顯示數(shù)據(jù)和正弦波的采樣數(shù)據(jù)表,這些都是轉(zhuǎn)換過的數(shù)字量,分別送給顯示模塊和 D/A模塊。鑒于四個功能鍵分別控制著數(shù)模轉(zhuǎn)換輸出波形的類型和顯示部分顯示不同的參數(shù),接下來開始判斷是哪個功能鍵被打開,這個過程靠查詢 P1 口的狀態(tài)來完成:若P1=0Xfe,表示開關(guān) 1 被打開,就調(diào)用方波子程序,由于程序的主函數(shù)是一個循環(huán)程序,只要相應(yīng)的開關(guān)被打開,就會循環(huán)的調(diào)用相應(yīng)的波形程序,反之則判斷 P1=0Xfd?是則表示開關(guān) 2 被打開,循環(huán)執(zhí)行鋸齒波子程序,否則繼續(xù)判斷 P1=0Xfb?是則表示開關(guān) 3 被打開,循環(huán)執(zhí)行三角波子程序,否則接著判斷 P1=0Xf7?是則開關(guān) 4 被打開,循環(huán)執(zhí)行正弦波子程序,否則判斷 P1=0Xff?是則說明沒有開關(guān)打開,將模擬輸出變?yōu)?,顯示部分不顯示。由于使用的是查詢方式對 P1 口進行監(jiān)控,由于硬件電路的連接,不能給開關(guān)設(shè)置不同的優(yōu)先級,所以每一次只允許按下一個開關(guān)。程序流程圖如圖 4.1所示,源程序如附錄 II 所示。顯示部分一共選擇五位來進行表示,8 段共陰數(shù)碼管的第一位用來表示信號源輸出波形的類型,有方波、鋸齒波、三角波、正弦波,數(shù)字 1 表示方波,數(shù)字 2 表示鋸齒黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 18 頁波,數(shù)字 3 表示三角波,數(shù)字 4 表示正弦波;第四位、第五位、第六位組成一個數(shù)字,表示輸出波形的頻率,單位是赫茲;第八位表示波形的峰值,單位是伏特。波形類型的轉(zhuǎn)換受撥碼開關(guān)的控制,不同的開關(guān)打開后輸出不同的波形。分別把開關(guān)編號,開關(guān) 1 控制方波輸出,開關(guān) 2 控制鋸齒波輸出,開關(guān) 3 控制三角波輸出,開關(guān) 4 控制正弦波輸出。4.2 方波子程序設(shè)計4.2.1 方波程序總流程方波子程序分為兩個部分:第一部分是方波輸出,由數(shù)模轉(zhuǎn)換模塊完成波形的輸出;第二部分是波形類型,波形頻率和幅值的顯示部分,由顯示模塊完成,流程圖如圖 4.2 所示,源程序如附錄 B 所示。4.2.2 方波產(chǎn)生程序設(shè)計方波產(chǎn)生的原理:在方波為低電平時,給單片機接數(shù)模轉(zhuǎn)換模塊的端口賦值 0,通過 D/A 轉(zhuǎn)換模塊輸出相應(yīng)的模擬電壓,延遲一定的時間,這個延時時間就是方波的半個周期;然后在方波為高電平時,給單片機接數(shù)模轉(zhuǎn)換模塊的端口賦值 0xff,通過D/A 轉(zhuǎn)換模塊輸出相應(yīng)的模擬電壓,也延時半個周期的時間,不斷的反復(fù)這樣執(zhí)行,就得到方波波形。開始后先設(shè)置循環(huán)次數(shù),也就是方波連續(xù)輸出的周期數(shù),然后給 P0 口置 0,調(diào)用延時程序,完成方波半個周期的低電平,然后給 P0 口置 1,調(diào)用延時程序,完成方波半個周期的高電平,判斷是否輸出了 14 個周期,否則繼續(xù)執(zhí)行程序,是則本段程序已經(jīng)執(zhí)行完畢,開始執(zhí)行下一段程序,流程如圖 4.3 所示,源程序如附錄 B 所示。黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 19 頁調(diào)用方波子程序調(diào)用顯示子程序結(jié)束設(shè)置循環(huán)次數(shù)P 0 口置 0調(diào)用延時子程序P 0 口置 1調(diào)用延時子程序循環(huán) 1 4 次 ?結(jié)束YN設(shè)置循環(huán)變量 c n tc n t = 0c n t 0 ?P 0 = ii = i - 1c n t = 0c n t #includeunsigned char code DIS_SEG7A[5]={0X01,0X33,0X43,0X53,0X75};unsigned char code DIS_SEG7B[5]={0X02,0X30,0X40,0X54,0X75};unsigned char code DIS_SEG7C[5]={0X03,0X30,0X40,0X52,0X75};unsigned char code DIS_SEG7D[5]={0X04,0X30,0X40,0X53,0X75};float code table2[]={0x80,0x83,0x85,0x88,0x8A,0x8D,0x8F,0x92,0x94,0x97,0x99,0x9B,0x9E,0xA0,0xA3,0xA5,0xA7,0xAA,0xAC,0xAE,0xB1,0xB3,0xB5,0xB7,0xB9,0xBB,0xBD,0xBF,0xC1,0xC3,0xC5,0xC7,0xC9,0xCB,0xCC,0xCE,0xD0,0xD1,0xD3,0xD4,0xD6,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE3,0xE4,0xE4,0xE5,0xE5,0xE6,0xE6,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE6,0xE6,0xE5,0xE5,0xE4,0xE4,0xE3,0xE3,0xE2,0xE1,0xE0,0xDF,0xDE,0xDD,0xDC,0xDB,0xDA,0xD8,0xD7,0xD6,0xD4,0xD3,0xD1,0xD0,0xCE,0xCC,0xCB,0xC9,0xC7,0xC5,0xC3,0xC1,0xBF,0xBD,0xBB,0xB9,0xB7,0xB5,0xB3,0xB1,0xAE,0xAC,0xAA,0xA7,0xA5,0xA3,0xA0,0x9E,0x9B,0x99,0x97,0x94,0x92,0x8F,0x8D,0x8A,0x88,0x85,0x83,0x80,黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 37 頁0x7D,0x7B,0x78,0x76,0x73,0x71,0x6E,0x6C,0x69,0x67,0x65,0x62,0x60,0x5D,0x5B,0x59,0x56,0x54,0x52,0x4F,0x4D,0x4B,0x49,0x47,0x45,0x43,0x41,0x3F,0x3D,0x3B,0x39,0x37,0x35,0x34,0x32,0x30,0x2F,0x2D,0x2C,0x2A,0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1D,0x1C,0x1C,0x1B,0x1B,0x1A,0x1A,0x1A,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B,0x1B,0x1C,0x1C,0x1D,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,0x2A,0x2C,0x2D,0x2F,0x30,0x32,0x34,0x35,0x37,0x39,0x3B,0x3D,0x3F,0x41,0x43,0x45,0x47,0x49,0x4B,0x4D,0x4F,0x52,0x54,0x56,0x59,0x5B,0x5D,0x60,0x62,0x65,0x67,0x69,0x6C,0x6E,0x71,0x73,0x76,0x78,0x7B,0x7D};void delay(unsigned int k){ unsigned int i,j;for(i=0;i0;i--){P0=i;for(cnt=0;cnt<5;cnt++){P2=DIS_SEG7C[cnt];delay(10);} // delay(1);}}(7) 正弦波子程序void sin()//正弦波{unsigned char cnt;unsigned int i;for(i=0;i<256;i++)黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 41 頁{P0=table2[i];for(cnt=0;cnt<5;cnt++){P2=DIS_SEG7D[cnt];delay(10);}// delay(10);}}黃 河 科 技 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書 第 42 頁
收藏