




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE18PAGEIII基于單片機的波形發生器摘要波形發生器是實驗室常見的一種虛擬儀器,它是一種用于產生標準信號的電子儀器,隨著科學技術的發展,對它的要求越來越高。在工業生產和科學研究中,波形發生器的輸出信號可以用來測量元件的性能和參數,也可以用來驗證指標,調整參數,評價電工電子產品的性能。大多數常用的波形發生器由模擬電路組成。當模擬波形發生器用于低頻信號輸出時,RC值往往很大,不僅難以保證參數的精度,而且體積和功耗也很大。數字電路構成的低頻波形發生器,雖然其低頻性能良好。但是,量大,價格貴。因此,高精度、寬幅度調制、低價格將成為數字波形發生器的發展趨勢。本文以AT89C52為核心,結合DAC0832程序控制,產生四種常用的低頻信號:正弦波、三角波、方波和鋸齒波。鍵盤控制可以產生方波、鋸齒波、三角波和正弦波,鍵盤輸入可以快速改變波形和頻率,達到人機交互的目的。同時,在液晶屏上可顯示相應波的名稱和頻率。其設計簡單,性能優良。它可以在許多需要低頻信號源的地方使用。具有一定的實用性。關鍵詞:單片機;三角波;鋸齒波;正弦波;方波
WaveformGeneratorBasedonSingleChipMicrocomputerAbstractWaveformgeneratorisacommonvirtualinstrumentinlaboratory.Itisanelectronicinstrumentusedtoproducestandardsignals.Withthedevelopmentofscienceandtechnology,therequirementforwaveformgeneratorisgettinghigherandhigher.Inindustrialproductionandscientificresearch,theoutputsignalofwaveformgeneratorcanbeusedtomeasuretheperformanceandparametersofcomponents,aswellastoverifytheindex,adjusttheparametersandappraisetheperformanceofelectricalandelectronicproducts.Mostofthecommonlyusedwaveformgeneratorsarecomposedofanalogcircuits.Whenthiskindofanalogwaveformgeneratorsareusedforlowfrequencysignaloutput,theRCvalueisoftenverylarge.Thismakesitdifficulttoguaranteetheaccuracyofparameters,andthevolumeandpowerconsumptionareverylarge.Thelowfrequencywaveformgeneratorscomposedofdigitalcircuits,althoughtheirlowfrequencyperformanceisgood,buttheirvolumeislargeandthepriceisexpensive,therefore,theyareofhighprecision.Degree,wideamplitudemodulationandlowpricewillbecomethedevelopmenttrendofdigitalwaveformgenerator.Inthispaper,AT89C52asthecore,combinedwithDAC0832programcontroltogeneratefourcommonlyusedlow-frequencysignals:sinewave,trianglewave,squarewaveandsawtoothwave.Squarewave,sawtoothwave,trianglewaveandsinewavecanbegeneratedbykeyboardcontrol,andtheshapeandfrequencyofwavecanbechangedquicklybykeyboardinput,soastoachievethepurposeofhuman-computerinteraction.Atthesametime,thenameandfrequencyofcorrespondingwavecanbedisplayedonLCDscreen.Itsdesignissimpleanditsperformanceisexcellent.Itcanbeusedinmanyplaceswherelowfrequencysignalsourcesareneeded.Ithascertainpracticability.Keywords:singlechipcomputer;trianglewave;sawtoothwave;sinewave;squarewave
目錄引言 11緒論 21.1課題的研究背景 21.2課題的研究意義 21.3研究內容 32相關理論基礎 42.1單片機 42.2波形發生器 53波形發生器的模塊設計 73.1系統主要功能 73.2放大模塊 83.4數模轉換模塊設計 93.4DA轉換接口電路 93.4.1DAC0832管腳功能介紹 93.4.2DAC0832的特點 113.4.3芯片接口說明 113.5單片機最小系統 123.5.1單片機晶振電路 123.5.2單片機的復位電路 124系統的軟件設計 144.1信號頻率數據采集 144.2正弦波產生程序 144.3三角波產生程序 144.4方波產生程序 154.5鋸齒波產生程序 155仿真圖及結果分析 175.1PROTEUS簡介 175.2波形發生器的調試與測試 175.3仿真結果圖 185.3.1正弦波仿真圖 185.3.2三角波仿真圖 185.3.3鋸齒波仿真圖 195.3.4方波仿真圖 196總結與展望 20參考文獻 21附錄A電路原理圖 23附錄B程序清單 24附錄C實物圖 34致謝 35PAGE19引言隨著計算機控制技術和電子技術的飛速發展,波形發生器的應用越來越廣泛。波形發生器輸出信號對頻率穩定性、頻譜純度、頻率范圍和頻率微調分辨率的要求越來越高。普通頻率源已不能滿足現代電子技術的要求。標準要求。國內外設計制造了先進的波形發生器。從實用價值來看,波形發生器在高校中得到了廣泛的應用。設計低成本、高精度的波形發生器,促進其應用具有重要意義。本文以單片機波形發生器的設計為基礎。波形發生器的核心是AT89C52,具有較高的性價比。它是由簡單而便宜的部件構成的。可產生高精度、高純度的方波、三角波、鋸齒波和正弦波。同時,波形可自由切換,頻率和幅度可在線調節。.目前購買的波發生器價格昂貴,功率大。事實上,低頻函數波發生器是高校實驗過程中應用最多的一種。如果本文所設計的儀器能夠在大學實驗領域中替代它們,將具有重要的實用價值。
1緒論1.1課題的研究背景當今信息社會,科學技術、儀器設備高度智能化,發展迅速。電子技術的進步給人們帶來了根本性的改變。在現代電子領域,單片機的應用越來越深入,必然導致傳統控制和檢測技術的不斷創新。該儀器由單片機組成,具有可靠性高、性能好、價格比高等特點。廣泛應用于辦公、家電、高智能自動化系統等諸多領域。它隨處可見,從冰箱、電視到家用有聲汽車。因此,單片機技術的發展和應用水平已成為衡量一個國家工業發展水平的重要標準。波形發生器又稱信號源或振蕩器,在生產實踐和科學技術領域有著廣泛的應用。各種波形曲線可用三角函數方程表示。能產生方波、鋸齒波、三角波、正弦波等多種波形的電路稱為函數波形發生器。功能波形發生器廣泛應用于通信、廣播電視系統、工業、農業和生物醫學等領域的實驗室和設備測試。特別是在通信系統的研究和實驗中,經常需要各種不同頻率和相位的信號,如正弦波、三角波、方波和鋸齒波,因此多功能波形發生器得到了廣泛的應用。在當今的數字時代,由模擬電路構成的經典波形發生器已逐漸遠離人們,取而代之的是電路簡單、功能多樣、功耗低的數字電路。未來,越來越多的數字波形發生器將應用于科學技術和工程實踐的各個領域,為人們的日常生活帶來更多的便利。1.2課題的研究意義在現代社會,自動化技術已經滲透到社會生活的各個領域,其中波形發生器是自動化領域的典型應用。例如,在超聲測量技術中,超聲傳感器(發射傳感器和接收傳感器)是超聲檢測技術的核心組成部分。高精度、寬頻率范圍、高穩定性的激勵源對提高傳感器和超聲檢測系統的性能具有重要作用。傳統的波形發生器通常由晶體管、運算放大器和集成電路等分離元件組成。相比之下,基于集成芯片的波形發生器具有高頻信號輸出、波形穩定、控制簡單等特點。因為在現代自動化控制中,信號被用來控制設備的工作。利用信號產生來控制儀表是一種重要的自動控制手段,因此設計和完成一個振幅、頻率、占空比和波形可調的波形發生器具有更大的價值。單片機設計的多功能波形發生器,不僅減少了器件,簡化了電路,節約了成本,而且使系統穩定節能,方便快捷地輸出多種低頻信號。這種結構簡單、成本低、性能優良的信號發生器在現代控制領域得到了越來越廣泛的應用。無論在工業、民用、航空、軍事或商業領域,都有信號發生器的設計和應用產品。波形發生器是一種常用的設備。傳統的純物理器件設計方法存在體積大、重量重、運動不便、信號失真大、波形調整剛性差等缺點,不能滿足精度、便攜性和穩定性的要求。一種頻率穩定、精度高、波形質量好、輸出頻率范圍寬、便攜性好的波形發生器,具有很好的市場前景,可以滿足工業領域對信號源的要求。本項目的目的是充分利用大學期間的專業知識,研究現有波形發生器的優缺點,設計一種頻率和振幅可調的波形發生器。通過本課題的設計,我們可以掌握軟硬件的開發過程和單片機系統基本信號的產生原理、測量和誤差分析方法,掌握波形發生器系統的設計過程。我們可以培養綜合運用所學的基礎知識、基本理論和基本技能來解決一般工程問題的能力。能夠解決技術和相關專業問題,學習工程設計和科學研究的基本方法,并完成所學知識的綜合培訓。通過對該波形發生器的設計,不僅可以整合以往的專業知識,而且對今后的學習和工作有很大的幫助。1.3研究內容本文設計了一種基于單片機的函數波形發生器。函數波形發生器可輸出正弦波、鋸齒波、三角波、方波四種波形。在此基礎上,進一步調整波形頻率和占空比,并通過液晶屏將波形名稱和頻率分兩行顯示。
2相關理論基礎2.1單片機微控制器是集成電路芯片,采用VLSI技術處理CPU、RAM、ROM、多個I/O端口和中斷系統、定時器/計數器等具有數據處理能力的功能(包括顯示驅動電路、脈寬調制等)。由電路制作、模擬多路復用器、A/D轉換器等集成在單個硅芯片上的電路組成的小型、完善的微型計算機系統在工業控制領域得到了廣泛的應用。AT89C52是一款低電壓、高性能的CMOS8位微控制器,具有8千字節的可重復擦除閃存只讀程序存儲器和256字節的隨機存取數據存儲器(RAM)。該設備由Atmel的高密度、非易失性存儲技術制造,與標準MCS-51指令系統兼容,內置通用8位存儲器。AT89C52單片機作為中央處理器和閃存單元,在電子工業中有著廣泛的應用。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,包含兩個外部中斷,三個16位可編程定時計數器,兩個全雙工串行通信端口,兩個讀/寫端口。AT89C52可根據常規方法或在線編程進行編程。它將通用微處理器與閃存結合起來,特別是可重復擦除閃存,可以有效地降低開發成本。圖2-1AT89C52芯片(1)主要性能A.與MCS-51單片機的兼容性系統可編程閃存中的B.8K字節C.1000擦除周期D.三級加密程序存儲器E.32可編程I/O端口F.三個16位計時器/計數器G.八個中斷源H.全雙工UART串行通信I.低功耗空閑和關機模式J.斷電后中斷可能會喚醒。K.看門狗定時器L.雙數據指針M.斷電標識符(2)CPU結構CPU是單片機的核心部件。它由計算器和控制器組成。2.2波形發生器波形發生器是一種能夠提供各種頻率、波形和輸出電平電信號的設備。當測量各種電信系統或設備的幅度特性、頻率特性、傳輸特性和其他電氣參數,以及部件的特性和參數時,它被用作信號源或激勵源,用于測試。波形發生器又稱信號源或振蕩器,在生產實踐和科學技術領域有著廣泛的應用。各種波形曲線可用三角函數方程表示。能產生三角波、鋸齒波、矩形波(包括方波)和正弦波等各種波形的電路稱為函數波形發生器。波形發生器應用廣泛,具有多種類型、不同性能和不同的分類。按頻率范圍可分為超低頻波形發生器、低頻波形發生器、視頻波形發生器、高頻波形發生器、超高頻波形發生器和超高頻波形發生器。根據輸出波形的分類,可分為正弦波形發生器和非正弦波形發生器。非正弦波形發生器包括脈沖波形發生器、函數波形發生器、掃頻波形發生器、數字序列波形發生器、圖形波形發生器、噪聲波形發生器等,根據波形發生器的性能指標可分為:o通用波形發生器和標準波形發生器。前者是指一種不需要輸出信號的高頻、幅度精度、穩定性和波形失真的波形發生器。后者是指輸出信號頻率、幅度、調制系數在一定范圍內連續可調,讀數準確、穩定、屏蔽良好的中高檔波形發生器。本章小結:通過介紹單片機和波形發生器的原理以及不同單片機的優缺點,波形發生器選擇性能和效率最佳的元器件。
3波形發生器的模塊設計準備工作:首先確定了波形發生器產生的波形,介紹了設計的系統、模塊和電路。在此基礎上,我們熟悉了各個模塊的工作原理,并在計算機輔助設計(CAD)中繪制了各個組件的銷圖和銷圖,以說明它們的功能。3.1系統主要功能函數波形發生器可輸出正弦波、鋸齒波、三角波、方波四種波形。在此基礎上,進一步調整波形頻率和占空比,并通過液晶屏將波形名稱和頻率分兩行顯示。波形發生器的一般框圖如圖所示。主要由單片機AT89C52、電源、鍵盤模塊和LCD1602顯示模塊組成。根據實例模塊,系統由五個復位開關和74LS21組成,通過單片機發送中斷信號,實現波形切換和頻率和占空比調整。顯示模塊:LCD1602分別顯示波形類型和波形頻率。電源模塊:電源模塊通過電壓轉換、整流、穩壓至+5伏、+12伏電壓,使城市變壓器電壓達到220伏,以維持系統的正常運行。系統的總體框圖如圖3-1所示:鍵盤顯示控制鍵盤顯示控制器顯示模塊鍵盤模塊波形輸出模塊電源源主控器AT89C圖3-1系統總體框圖3.2放大模塊圖3-2LM324引腳圖LM324系列器件是四個具有真正差分輸入的運算放大器,價格低廉。與單功率應用的標準運算放大器相比,它們具有一些顯著的優點。四個放大器可以在低至3.0伏或高至32伏的電源下工作,靜態電流是MC1741靜態電流的五分之一。共模輸入范圍包括負電源,在許多應用中不需要外部偏壓元件。它有五個引線插腳,其中“+”和“-”為兩個信號輸入端,“V+”和“V-”為正負電源端,“VO”為輸出端。vi-(-)是兩個信號輸入的反向輸入,表示運放的輸出VO信號與輸入的位相反;vi+(+)是同相輸入,表示運放的輸出VO信號的相位與輸入的相位相同。經DAC0832轉換后,由于單片機輸出的數字信號幅度較小,需要對其進行放大。采用常規放大方式和兩個運算放大器實現兩級放大。設計電路如圖3-3所示。圖3-3放大電路接口3.4數模轉換模塊設計本設計采用了通用芯片DAC0832。本設計采用模數轉換的直接模式。為了簡單起見,采用網絡節點連接仿真圖,單片機的p0端口輸出的數據直接連接到DAC0832的數據端口。如圖3-4所示。如圖3-4DAC0832的數據口3.4DA轉換接口電路DAC0832是一種封裝在DIP20中的芯片。具有8位數字信號輸入端和2個模擬電流輸出端。它可以從-10V工作到+10V。芯片管腳圖為圖3-5所示。圖3-5DAC0832芯片3.4.1DAC0832管腳功能介紹DI7-DI0:8位數據輸入,DI7為最高位。文件:數據鎖存允許控制信號輸入線路,高電平有效。/CS:選擇信號輸入線(數據鎖存),低電平有效。/WR1:數據鎖存器寫入選通輸入線。負脈沖有效。ILE、/CS、/WR1的邏輯組合生成/LE1。當/le1為高電平時,數據鎖存狀態隨輸入數據線變化,當/le1為負跳時,輸入數據鎖存。/XFER:數據傳輸控制信號輸入線,低電平有效,負脈沖有效。/WR2:DAC寄存器為輸入行加閘。負脈沖有效。它是由/wr2和/xfer的邏輯組合生成的。當/le2高時,DAC寄存器的輸出隨寄存器的輸入而變化。當/le2為負跳時,數據鎖存器的內容進入DAC寄存器,開始D/A轉換。IOUT1:模擬電流輸出1。當DAC寄存器中的所有數據都為1時,輸出電流最大。當DAC寄存器中的所有數據都為0時,輸出電流為0。IOUT2:模擬電流輸出2。iout2和iout1之和是一個常量,即iout1+iout2=常量。RFB:反饋電阻引線,DAC0832內部反饋電阻,因此RFB端可直接連接到外部運算放大器的輸出端,相當于在運算放大器的輸出端和輸入端之間連接反饋電阻。參考電壓輸入,可連接到正電壓或負電壓。它確定從0到255個數字量轉換的模擬電壓值的大小。VREF范圍是(+10-10)V。VREF終端連接到D/A內的T形電阻網絡。VCC:芯片電源電壓,在(+5~+15)V范圍內。AGND:模擬量地,即模擬電路接地端。DGND:數字量地。當WR2和XFER均有效時,8位DAC寄存器端為高電平“1”,此時DAC寄存器的輸出Q跟隨輸入D的電平變化,即輸入寄存器的Q端;反之,當輸入端為低電平“0”時,前8位輸入寄存器的狀態為了排名8,Q端被鎖定在第二個8位DAC寄存器中。三級8位DAC轉換器執行D/A轉換。一般來說,為了簡化接口電路,WR2和XFER可以直接接地,這樣第二級8位DAC寄存器的輸入端可以直接連接到輸出端。只有第一級8位輸入寄存器可以設置為可選的、可鎖定的單緩沖器輸入模式。在特殊情況下,可以采用雙緩沖輸入方式,即兩個寄存器分別連接到受控模式。單緩沖模式僅適用于一個模擬信號輸出或多個模擬信號異步輸出,電路連接相對簡單。雙緩沖模式適用于多個模擬信號同時輸出的場合。每個模擬輸出需要一個DAC0832芯片,該芯片構成多個DAC0832同步輸出電路。程序簡單,但電路連接復雜。DAC0832的輸出為電流,其電流輸出可通過運算放大器線性轉換為電壓輸出。3.4.2DAC0832的特點(1)8位分辨率;(2)雙通道A/D轉換;(3)輸入輸出電平與TTL/CMOS兼容;(4)5V電源輸出電壓在0~5V之間。(5)工作頻率250kHz,轉換時間32us。(6)總功耗僅為15MW。(7)8P、14P-DIP(雙列直插)和PICC封裝;(8)商用芯片的溫度寬度為0C至+70C,工業芯片的溫度范圍為40C+85C。3.4.3芯片接口說明(1)CH0模擬輸入通道0,或用作+/-(2)CH1模擬輸入通道1,或用作+/-(3)GND芯片參考0電位(接地)。(4)DI數據信號輸入和信道控制。(5)做數據信號輸出,轉換數據輸出。(6)CLK芯片的時鐘輸入。(7)VCC/REF電源輸入和參考電壓輸入(多路復用)。DAC0832是一個8位分辨率的D/A轉換芯片。其最高分辨率可達256級,可滿足模擬轉換的一般要求。內部電源輸入與參考電壓的多路復用,使芯片的模擬電壓輸入在0~5V之間,芯片的轉換時間僅為32us。雙數據輸出,可作為數據驗證,減少數據誤差,轉換速度快,穩定性強。獨立芯片實現輸入,使多設備連接和處理器控制更加方便。通過DI數據輸入終端,可以方便地選擇信道功能。3.5單片機最小系統3.5.1單片機晶振電路單片機的外部晶體振蕩器電路由單片機的18(XTAL1)、19(XTAL2)的插腳連接,XTAL1:振蕩器反相放大器的輸入和內部時鐘發生器電路。XTAL2:振蕩器反相放大器的輸出。對于MSC-51,一般晶體頻率可選擇在1.2MHZ至12MHZ之間,這是電容器C對應的10PF-30PF的選擇,當使用89C55時,晶體頻率可增加到24MHZ。對于設計的30PF電容器C,晶體振蕩器為12MHZ。電路連接如圖3-5所示。一個插腳連接到XTAL1,另一個插腳連接到XTAL2。3.5.2單片機的復位電路RST:重置輸入。使CPU工作的方法是給CPU一個復位信號。當CPU接收到復位信號時,它將內部特殊功能寄存器設置為指定值,并將程序計數器設置為“0000H”。復位信號完成后,CPU開始從程序存儲器“0000H”執行程序。當晶體振蕩器工作時,第一腳將持續2個機器周期,高電平將重置MCU??撮T狗計時完成后,第一腳輸出96個晶體振蕩周期的高電平。特殊寄存器auxr(地址8eh)上的disrto位會使該函數無效。默認情況下,disrto有效地重置高級別。為了防止程序失步或無序運行,我們使用了上電復位和手動復位電路,如圖3.6所示。圖3-6單片機最小系統本章小結:本章介紹了基于單片機的波形發生器系統的主要功能、各模塊的功能和功能。簡要介紹了波形發生器的工作原理、波形的切換、波形頻率和占空比的調整。在此基礎上,詳細闡述了各元件的引腳和具體功能。
4系統的軟件設計準備工作:在程序中輸入正弦波、方波、三角波、鋸齒波四種波形,依次得到四種波形,通過DAC0832轉換器(由五個復位開關和74LS21組成的系統)的中斷信號切換不同的波形進行切換。波形的頻率和占空比。4.1信號頻率數據采集該程序通過外部中斷接收減頻或減頻鍵。通過計算單片機內部接受值,得到波形的輸出延時,從而產生頻率變化。電路簡單,成本低。4.2正弦波產生程序輸入正弦采樣點用于計算一個周期內256個正弦信號值。然后通過兩個輸出點之間的延遲來實現頻率調制。正弦波依次通過循環輸出得到。采點值放在table2[]中,程序如下:voidsin()//正弦波{ unsignedinti; for(i=0;i<256;i++) { DAC0832=table2[i]; delay(pinlv/256); }}4.3三角波產生程序設個自變量i讓它不斷地自加1,直到加到255時,t=i,對t進行不斷地自減1直到減到t=0,然后再不斷地重復上述過程產生三角波。程序如下:voidtran()//三角波{ unsignedchari; for(i=0;i<255;i++) { DAC0832=i; delay(pinlv/64); } for(i=255;i>0;i--) { DAC0832=i; delay(pinlv/64); }}4.4方波產生程序讓我們設置一個自變量i=0來延遲一段時間,然后i=255來延遲與i=0相同的時間,然后重復這個過程。程序如下:voidfang()//方波{ DAC0832=0; delay(pinlv/2); DAC0832=0xff; delay(pinlv/2); }4.5鋸齒波產生程序鋸齒波中的斜線用一個小臺階近似。它從一段時間內的最小值逐漸增加,達到最大值后返回最小值。在這個循環中,當階躍間隔很小時,波形基本上接近直線。通過合理選擇周期時間,可以得到不同周期的鋸齒波。鋸齒波與方波相似,但高、低延遲常數不同。因此,我們使用延遲法產生鋸齒波,并設置一個自變量i使其自加1到255,DAC0832可以自動再次返回0,然后重復這個過程。程序如下:voidjvchi()//鋸齒波{ unsignedchari; for(i=0;i<255;i++) { DAC0832=i; delay(pinlv/256); }}本章小結:本章通過輸入四種不同的波形程序,得到相應的波形,重點介紹了四種程序的工作原理,即如何得到四種波形。
5仿真圖及結果分析準備工作:本章在上章的基礎上通過protuse軟件和KeilC編程進行仿真,在仿真及編程軟件上的到四種波形的仿真圖形。5.1PROTEUS簡介proteus軟件是英國LABCENTERELECTRONICS公司出版的EDA工具軟件(該軟件中國總代理為廣州市風電電子技術有限公司),它不僅具有其他EDA工具軟件的防偽功能,還能夠制作真片機及外罩件。),從原理圖、代碼調試到單片機與外圍電路協調真,一鍵切到PCB設計,真正實現了從概念到產品的完整設計,是目前世界上一個將電路真軟件、PCB設計軟件和虛擬模型真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/DSPIC33、AVR/ARM/8086和MSP430等。proteus軟件具有其他EDA工具軟件(例如:MULTISIM)的功能。其功能如下:(1)原理布置圖;(2)PCB自動或人工布線;(3)SPICE電路真實。proteus可提供的抽真空元件元件資源有:抽真空數字和模擬、交流和直流等千種元件,有30個多個元件庫。抽真空表資源有:示波器、邏輯分析儀、虛擬終端、SPI調節器、I2C調節器、波形發生器、模型發生器、直流電壓表、直流電流表。5.2波形發生器的調試與測試該系統在Protus下進行了仿真,并用KeilC編程,實現了系統的設計與仿真。在測試系統中,將設定值與示波器值進行比較,從而了解系統的性能。表5-1頻率測試數據表設定頻率(HZ)示波器測試頻率(HZ)相對誤差%3.93.961.57.87.931.2815.6316.133.195.3仿真結果圖5.3.1正弦波仿真圖圖5-1正弦波圖5.3.2三角波仿真圖圖5-2三角波圖5.3.3鋸齒波仿真圖圖5-3鋸齒波圖5.3.4方波仿真圖圖5-4方波圖本章小結:利用KeilC編程和Protuse軟件,通過對波形發生器的測試,可以改變四種波形的頻率和占空比。
6總結與展望本次的設計中利用AT89C52和DAC0832以及放大器完成電路的設計,用開關來控制各種波形的發生及轉換,用單片機輸出后,經過模數轉換器生成波形,最終可以通過示波器觀察。在這次的軟件設計中,程序設計采用的是匯編語言。匯編語言具有速度快,可以直接對硬件進行操作的優點,它可以極好的發揮硬件的功能。但是匯編語言也存在編寫的代碼非常難懂,不好維護,很容易產生bug,難于調試的缺點。因此,在大型程序的設計中,多采用C語言進行程序編譯。C語言簡潔高效,是最貼近硬件的高級編程語言,經過多年的發展,現在已成熟為專業水平的高級語言。而且,現在單片機產品推出時紛紛配套了C語言編譯器,應用廣泛。不過就本次畢業設計來說,匯編語言還是適用的。由于真正意義上的程序設計還不多,因此還不是很得心應手,所以在設計中遇到一些問題和一些難點。比如:在程序設計中如何實現程序結構的最優化,以達到較高的質量。這是以后設計中要注意的問題。通過這次畢業設計,我進一步了解了波形發生器的原理,在實際動手操作過程中,使我接觸了許多我以前沒接觸過的元件,而且重新溫習了剛學不久的匯編語言,使我學得了許多知識,使我獲益匪淺。這次畢業設計,使我的動手能力得到了很大的提高,更使我們懂得理論知識的重要性,沒有理論的指導一切實際行動都是盲目的,且實際操作是我們得到的理論知識得到驗證,更能增加對理論知識的理解。
參考文獻[1]孫勤江,沈彬.基于單片機的波形發生器設計[J].石油和化工設備,2014,01:19-22.[2]董亞男,馬俊,周泉,李金林.基于單片機的智能波形發生器設計與仿真[J].電子測量技術,2014,01:62-65+75.[3]宋曉梅,李根,閆樹柏.基于LabVIEW和單片機的波形發生器的設計[J].電子測量技術,2014,07:93-97.[4]楊晶晶,劉巖.基于AT89C52單片機的超低頻波形發生器設計[J].現代電子技術,2011,04:29-31.[5]黃鵬勇.基于AT89S51單片機的波形發生器設計[J].科技經濟市場,2011,04:26-28.[6]田蛟,展文豪,張宏偉.基于單片機的波形發生器設計[J].信息技術,2011,05:87-90.[7]逯久鑫,彭旋,樊軍慶.基于51單片機的低頻波形發生器的設計與仿真[J].電子設計工程,2011,16:153-155.[8]魯秋菊.基于單片機的DDS正弦波形發生器的設計[J].電腦知識與技術,2011,30:7518-7519.[9]李洋,張松,彭美然,楊益民,楊琳,王楊柳,邵晶,陳國柱.基于C8051F020單片機的脈搏波波形發生器的設計[J].中國醫學裝備,2011,11:8-14.[10]王峰,夏巍,王鳴.基于單片機和AD9833的波形發生器的設計[J].南京師范大學學報(工程技術版),2012,01:76-79+92.[11]張文軍.基于單片機的智能波形發生器設計[J].機電工程技術,2010,09:40-42+114.[12]何鳳,許建明.基于單片機的波形發生器設計[J].電子制作,2013,09:16.[13]李偉龍.基于單片機的函數波形發生器設計[J].河南科技,2013,10:83-84.[14]陳林林,孫群,高雅楠.基于單片機的波形波形發生器設計與仿真[J].中國測試,2014,S1:22-27.[15]田蛟,展文豪,張宏偉.基于單片機的波形發生器設計[J].信息技術,2011,(5):87-90.[16]陳林林,孫群,高雅楠.基于單片機的波形波形發生器與仿真[J].中國測試,2014,40(s1):22-27.[17]黃鵬勇.基于AT89C51單片機的波形發生器設計[J].科技經濟市場,2011,4:26-28.[18]相迎軍,李興成,李傳軍.基于AT89C4051單片機的專用波形發生器設計與應用[J].微計算機信息,2014,(11):107-108.[19]楊晶晶,劉巖.基于AT89C52單片機的超低頻波形發生器設計[J].現代電子技術,2011,34(4):29-31.
附錄A電路原理圖
附錄B程序清單#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint//#defineFosc24000000/12000000//12分頻后的頻率#defineDAdataP0 //DA數據端口sbitDA_S1=P2^0;//控制DAC0832的8位輸入寄存器,僅當都為0時,可以輸出數據(處于直通狀態),否則,輸出將被鎖存sbitDA_S2=P2^1;//控制DAC0832的8位DAC寄存器,僅當都為0時,可以輸出數據(處于直通狀態),否則,輸出將被鎖存sbitkey=P3^2;ucharwavecount;//'抽點'計數ucharTHtemp,TLtemp;//傳遞頻率的中間變量//uintT_temp;ucharjudge=1;//在方波輸出函數中用于簡單判別作用ucharwaveform; //當其為0、1、2時,分別代表三種波ucharcodefreq_unit[4]={10,50,200,10};//三種波的頻率單位 sawtoothucharidatawavefreq[4]={1,1,1,1}; //給每種波定義一個數組單元,用于存放單位頻率的個數ucharcodelcd_hang1[]={"SineWave""TriangleWave""SquareWave""sawtoothWave""SelectWave:""pressNo.1key!"};ucharidatalcd_hang2[16]={"f=Hz"};/*ucharcodewave_freq_adjust[]={//頻率調整中間值0xff,0xb8,0x76,0x56,0x43,0x37,0x2e,0x26,0x20,0x1c,//正弦波頻率調整中間值 0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e, //三角波頻率調整中間值 0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e};uintcodewave_freq_adjust[]={//頻率調整中間值380,184,118,86,67,55,46,28,38,32, 295,142,90,65,50,40,32,27,23,14, 295,142,90,65,50,40,32,27,23,14};*/ /*ucharcodewaveTH[]={0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};ucharcodewaveTL[]={0xf2,0x78,0xfb,0x3c,0x63,0x7d,0x8f,0x9d,0xa8,0xb1, 0x17,0x0b,0xb2,0x05,0x37,0x58,0x70,0x82,0x90,0x9b,0x4d,0xa7,0xc4,0xd3,0xdc,0xe2,0xe6,0xea,0xec,0xee};*//***********這兩組數組很重要,需要根據波形來調試,選擇合適的值,使輸出波形達到頻率要求************/ucharcodewaveTH[]={0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe};ucharcodewaveTL[]={0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6,//正弦波頻率調整中間值 0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde, //三角波頻率調整中間值 0x88,0x50,0x90,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c};/*************************************************************************************************/ucharcodetriangle_tab[]={ //每隔數字8,采取一次 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78, 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff, 0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80, 0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00};ucharcodesine_tab[256]={ //輸出電壓從0到最大值(正弦波1/4部分) 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc, 0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec, 0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, //輸出電壓從最大值到0(正弦波1/4部分) 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef, 0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2, 0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, //輸出電壓從0到最小值(正弦波1/4部分) 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43, 0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13, 0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, //輸出電壓從最小值到0(正弦波1/4部分) 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10, 0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d, 0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};ucharcodesawtooth_tab[]={ 0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e,0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e, 0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e, 0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e,0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e};// 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e,0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae,0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe,// 0xc0,0xc2,0xc4,0xc6,0xc8,0xca,0xcc,0xce,0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee};voiddelay(ucharz) {uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidtriangle_out() //三角波輸出{ DAdata=triangle_tab[wavecount++]; if(wavecount>64)wavecount=0; DA_S1=0;//打開8位輸入寄存器 DA_S1=1;//關閉8位輸入寄存器}voidsine_out() //正弦波輸出{ DAdata=sine_tab[wavecount++]; DA_S1=0;//打開8位輸入寄存器 DA_S1=1;//關閉8位輸入寄存器}voidsquare_out()//方波輸出{ judge=~judge;if(judge==1)DAdata=0xff; elseDAdata=0x00; DA_S1=0;//打開8位輸入寄存器 DA_S1=1;//關閉8位輸入寄存器}voidsawtooth_out()//鋸齒波輸出{ DAdata=sawtooth_tab[wavecount++]; if(wavecount>71)wavecount=0; DA_S1=0;//打開8位輸入寄存器 DA_S1=1;//關閉8位輸入寄存器}/************1602液晶的相關函數*************/#definelcd_portsP1sbitrs=P2^2;sbitrw=P2^3;sbitlcden=P2^4;voidwrite_com(ucharcom){ rs=0; //置零,表示寫指令 lcden=0; lcd_ports=com; delay(5); lcden=1; delay(5); lcden=0; }voidwrite_date(uchardate){ rs=1; //置1,表示寫數據(在指令所指的地方寫數據) lcden=0; lcd_ports=date; delay(5); lcden=1; delay(5); lcden=0; }voiddisp_lcd(ucharaddr,uchar*temp1){ ucharnum; write_com(addr); delay(1);//延時一會兒??? for(num=0;num<16;num++) { write_date(temp1[num]);//或者這樣寫write_date(*(temp1+num)); delay(1); }}voidinit_lcd(){ //ucharnum; lcden=0;//可有可無??? rw=0;//初始化一定要設置為零,表示寫數據 write_com(0x38);//使液晶顯示點陣,為下面做準備 write_com(0x0c);//初始設置 write_com(0x06);//初始設置 write_com(0x01);//清零 write_com(0x80);//使指針指向第一行第一格disp_lcd(0x80,&lcd_hang1[4*16]);//在第一行顯示disp_lcd(0xc0,&lcd_hang1[5*16]);//在第二行顯示 /*for(num=0;num<16;num++) { write_date(table[num]); delay(5); } write_com(0x80+0x40);//給指針重新賦值,使之指向第二行第一格 for(num=0;num<16;num++) { write_date(table1[num]); delay(5); }*/ /*TMOD=0x01; //選用定時方式1 TH0=(65536-50000)/256;//賦初值 TL0=(65536-50000)%256; // EA=1; //開總中斷 ET0=1; //開定時器中斷 TR0=1; //啟動定時器*/ }/********************1602液晶函數聲明結束*********************/voidmain(){uchari=0; DA_S2=0;//使DAC寄存器處于直通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論