多功能信號發(fā)生器的設(shè)計與實(shí)現(xiàn)_第1頁
多功能信號發(fā)生器的設(shè)計與實(shí)現(xiàn)_第2頁
多功能信號發(fā)生器的設(shè)計與實(shí)現(xiàn)_第3頁
多功能信號發(fā)生器的設(shè)計與實(shí)現(xiàn)_第4頁
多功能信號發(fā)生器的設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

題目多功能信號發(fā)生器的設(shè)計與實(shí)現(xiàn)學(xué)生姓名王振華學(xué)號1213014069所在學(xué)院專業(yè)班級電子信息工程指導(dǎo)教師梁芳完成地點(diǎn)物理與電信工程學(xué)院實(shí)驗(yàn)室2023年6月2日多功能信號發(fā)生器的設(shè)計與實(shí)現(xiàn)王振華〔陜西理工學(xué)院物理與電信工程學(xué)院電子信息工程專業(yè),2023級3班,陜西漢中723000〕指導(dǎo)教師:梁芳[摘要]本文介紹的是利用STC12C5A60S2單片機(jī)和數(shù)模轉(zhuǎn)換器件DAC0832產(chǎn)生所需不同信號的低頻信號源,其信號幅度和頻率都是可以按要求控制的。文中簡要介紹了DAC0832數(shù)模轉(zhuǎn)換器的結(jié)構(gòu)原理和使用方法,STC12C5A60S2的根底理論,以及與設(shè)計電路有關(guān)的各種芯片。著重介紹了如何利用單片機(jī)控制D/A轉(zhuǎn)換器產(chǎn)生上述信號的硬件電路和軟件編程。信號頻率幅度也按要求可調(diào)。本設(shè)計核心任務(wù)是:以STC12C5A60S2為核心,結(jié)合D/A轉(zhuǎn)換器和DAC0832等器件,用仿真軟件設(shè)計硬件電路,用C語言編寫驅(qū)動程序,以實(shí)現(xiàn)程序控制產(chǎn)生正弦波、三角波、方波、三種常用低頻信號??梢酝ㄟ^鍵盤選擇波形和輸入任意頻率值。[關(guān)鍵詞]單片機(jī);LCD1602;信號發(fā)生器;DAC0832DesignandimplementationofmultifunctionsignalgeneratorAuthor:ZhenhuaWang(Grade12,Class03,MajorinElectronics&Informationengineering,Physics&TelecommunicationsengineeringDept.,ShaanxiUniversityofTechnology,Hanzhong723000,Shaanxi)Tutor:FangLiangAbstract:ThisarticledescribestheSTC12C5A60S2microcontrolleranddigitaltoanalogconverterDAC0832toproducethedesiredsignalofthelowfrequencysignalsource,thesignalamplitudeandfrequencycanbecontrolledasrequired.ThearticlebrieflydescribesthestructureofprinciplesanduseoftheDAC0832digital-to-analogconverter,theSTC12C5A60S2basictheoryanddesignofcircuitsavarietyofchips.ThepaperfocusesonhowtousemicrocontrollertocontroltheD/Aconvertertoproducethehardwareandsoftwareprogrammingoftheabovesignals.Thesignalfrequencyrangeisalsoadjustableasrequired.Thecoreofthedesigntasksare:STC12C5A60S2astheD/AconverterandDAC0832devices,circuitsimulationsoftware,designhardwaredriverswritteninC,inordertoachieveprocesscontroltoproducesinewave,trianglewave,squarewave,threecommonlyusedlow-frequencysignals.Waveformsandenteranyfrequencyvaluecanbeselectedviathekeyboard.KeyWords:onSTC12C5A60S2functionwaveformgeneratorDAC0832squarewave,trianglewave,sinewave,sawtoothwave目錄240981引言1287541.1目的和意義194941.2研究概況及開展趨勢146691.3本系統(tǒng)主要功能2352.總體方案論證與設(shè)計32030631133931388832981041065342843044948577805216273.1.1STC12C5A60S2單片機(jī)主要特性5121783.1.2STC12C5A60S2單片機(jī)的中斷系統(tǒng)7237233.1.3單片機(jī)最小系統(tǒng)設(shè)計8140653.2LCD液晶顯示器簡介8279953.2.1液晶原理介紹831901928873916928101880510293343.4.1直接數(shù)字合成技術(shù)介紹11261793.4.2DAC0832芯片介紹12309123.4.3DAC0832波形發(fā)生電路設(shè)計1322231348323.6負(fù)壓轉(zhuǎn)換電路設(shè)計14219581531321152041316957418137018233941828045結(jié)論1928045致謝 2028045參考文獻(xiàn) 2122647附錄A 2225524附錄B 234821附錄C244821附錄D 404821附錄E 454821附錄F 481引言1.1目的和意義信號發(fā)生器亦稱波形發(fā)生器,主要作為實(shí)驗(yàn)用信號源,是現(xiàn)今各種電子電路實(shí)驗(yàn)設(shè)計應(yīng)用中必不可少的儀器設(shè)備之一。目前,市場上常見的波形發(fā)生器多為純硬件的搭接而成,波形種類多為鋸齒、正弦、方波、三角等波形。用分立元件組成的信號發(fā)生器,通常是單信號發(fā)生器且頻率不高,其工作不很穩(wěn)定,不易調(diào)試;用集成芯片的信號發(fā)生器,可到達(dá)較高的頻率和產(chǎn)生多種波形信號,但電路較為復(fù)雜且不易調(diào)試。利用DA轉(zhuǎn)換器配合單片機(jī)可以實(shí)現(xiàn)波形產(chǎn)生的功能,而且可以根據(jù)需要進(jìn)行調(diào)整,設(shè)計靈活。隨著電子測量及其他部門對各類信號發(fā)生器的廣泛需求及電子技術(shù)的迅速開展促使信號發(fā)生器種類增多性能提高尤其隨著70年代微處理器的出現(xiàn)更促使信號發(fā)生器向著自動化智能化方向開展現(xiàn)在許多信號發(fā)生器帶有微處理器因而具備了自校自檢自動故障診斷和自動波形形成和修正等功能可以和控制計算機(jī)及其他測量儀器一起方便的構(gòu)成自動測試系統(tǒng)當(dāng)前信號發(fā)生器總的趨勢是向著寬頻率覆蓋低功耗高頻率精度多功能自動化和智能化方向開展[1]。在科學(xué)研究工程教育及生產(chǎn)實(shí)踐中如工業(yè)過程控制教學(xué)實(shí)驗(yàn)機(jī)械振動試驗(yàn)動態(tài)分析材料試驗(yàn)生物醫(yī)學(xué)等領(lǐng)域常常需要用到低頻信號發(fā)生器而在我們?nèi)粘I钪幸约耙恍┛茖W(xué)研究中鋸齒波和正弦波矩形波信號是常用的根本測試信號譬如在示波器電視機(jī)等設(shè)備中為了使電子按照一定規(guī)律運(yùn)動以利用熒光屏顯示圖像常用到鋸齒波產(chǎn)生器作為時基電路信號發(fā)生器作為一種通用的電子儀器在生產(chǎn)科研測控通訊等領(lǐng)域都得到了廣泛的應(yīng)用但市面上能看到的儀器在頻率精度帶寬波形種類及程控方面都已不能滿足許多方面實(shí)際應(yīng)用的需求加之各類功能的半導(dǎo)體集成芯片的快速生產(chǎn)都使我們研制一種低功耗寬頻帶能產(chǎn)生多種波形并具有程控等低頻的信號發(fā)生器成為可能[2]。信號發(fā)生器作為一種常見的電子儀器設(shè)備,既能夠構(gòu)成獨(dú)立的信號源,也可以是高新能的網(wǎng)絡(luò)分析儀,頻譜儀以及自動測試裝備的組成局部,函數(shù)信號發(fā)生器的關(guān)鍵技術(shù)是多種高性能儀器的根本組成局部,函數(shù)信號發(fā)生器的關(guān)鍵技術(shù)是多種高性能儀器的支撐技術(shù),因?yàn)樗悄軌蛱岣哔|(zhì)量的精密信號源及掃描源,可使相應(yīng)系統(tǒng)的檢測過程大大簡化,降低檢測費(fèi)用并且提高檢測精度。1.2研究概況及開展趨勢信號發(fā)送器是指產(chǎn)生所需參數(shù)的電測試信號的儀器。因其應(yīng)用廣泛,種類繁多,特性各異,分類也不盡一致。按信號波形可分為正弦信號、函數(shù)信號、脈沖信號和隨機(jī)信號發(fā)生器等四大類。信號波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點(diǎn),不僅可以模擬各種復(fù)雜信號,還可對頻率、幅值、相移、波形進(jìn)行動態(tài)、及時的控制,并能夠與其它儀器進(jìn)行通訊,組成自動測試系統(tǒng),因此被廣泛用于自動控制系統(tǒng)、震動鼓勵、通訊和儀器儀表領(lǐng)域。在70年代前,信號發(fā)生器主要有兩類:正弦波和脈沖波,而信號發(fā)生器介于兩類之間,能夠提供正弦波、余弦波、方波、三角波、上弦波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時,需要采用較復(fù)雜的電路和機(jī)電結(jié)合的方法。這個時期的波形發(fā)生器多采用模擬電子技術(shù),而且模擬器件構(gòu)成的電路存在著尺寸大、價格貴、功耗大等缺點(diǎn),并且要產(chǎn)生較為復(fù)雜的信號波形,那么電路結(jié)構(gòu)非常復(fù)雜。同時,主要表現(xiàn)為兩個突出問題,一是通過電位器的調(diào)節(jié)來實(shí)現(xiàn)輸出頻率的調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖的占空比不可調(diào)節(jié)。在70年代后,微處理器的出現(xiàn),可以利用處理器、A/D/和D/A,硬件和軟件使波形發(fā)生器的功能擴(kuò)大,產(chǎn)生更加復(fù)雜的波形。這時期的波形發(fā)生器多以軟件為主,實(shí)質(zhì)是采用微處理器對DAC的程序控制,就可以得到各種簡單的波形。90年代末,出現(xiàn)幾種真正高性能、高價格的信號發(fā)生器、但是HP公司推出了型號為HP770S的信號模擬裝置系統(tǒng),它由HP8770A任意波形數(shù)字化和HP1776A波形發(fā)生軟件組成。HP8770A實(shí)際上也只能產(chǎn)生8中波形,而且價格昂貴。不久以后,Analogic公司推出了型號為Data-2023的多波形合成器,Lecroy公司生產(chǎn)的型號為9100的任意波形發(fā)生器等。到了二十一世紀(jì),隨著集成電路技術(shù)的高速開展,出現(xiàn)了多種工作頻率可過GHz的DDS芯片,同時也推動了信號波形發(fā)生器的開展,2003年,Agilent的產(chǎn)品33220A能夠產(chǎn)生17種波形,最高頻率可到達(dá)20M,2005年的產(chǎn)品N6030A能夠產(chǎn)生高達(dá)500MHz的頻率,采樣的頻率可達(dá)1.25GHz。由上面的產(chǎn)品可以看出,信號波形發(fā)生器開展很快近幾年來,國際上波形發(fā)生器技術(shù)開展主要表達(dá)在以下幾個方面:〔1〕過去由于頻率很低應(yīng)用的范圍比擬狹小,輸出波形頻率的提高,使得波形發(fā)生器能應(yīng)用于越來越廣的領(lǐng)域。波形發(fā)生器軟件的開發(fā)正使波形數(shù)據(jù)的輸入變得更加方便和容易。波形發(fā)生器通常允許用一系列的點(diǎn)、直線和固定的信號段把波形數(shù)據(jù)存入存儲器。同時可以利用一種強(qiáng)有力的數(shù)學(xué)方程輸入方式,復(fù)雜的波形可以由幾個比擬簡單的公式復(fù)合成v=f(t)形式的波形方程的數(shù)學(xué)表達(dá)式產(chǎn)生。從而促進(jìn)了信號波形發(fā)生器向任意波形發(fā)生器的開展,各種計算機(jī)語言的飛速開展也對任意波形發(fā)生器軟件技術(shù)起到了推動作用。目前可以利用可視化編程語言(如VisualBasic,VisualC等等)編寫任意波形發(fā)生器的軟面板,這樣允許從計算機(jī)顯示屏上輸入任意波形,來實(shí)現(xiàn)波形的輸入?!?〕與VXI資源結(jié)合。目前,波形發(fā)生器由獨(dú)立的臺式儀器和適用于個人計算機(jī)的插卡以及新近開發(fā)的VXI模塊。由于VXI總線的逐漸成熟和對測量儀器的高要求,在很多領(lǐng)域需要使用VXI系統(tǒng)測量產(chǎn)生復(fù)雜的波形,VXI的系統(tǒng)資源提供了明顯的優(yōu)越性,但由于開發(fā)VXI模塊的周期長,而且需要專門的VXI機(jī)箱的配套使用,使得波形發(fā)生器VXI模塊僅限于航空、軍事及國防等大型領(lǐng)域。在民用方面,VXI模塊遠(yuǎn)遠(yuǎn)不如臺式儀器更為方便。〔3〕隨著信息技術(shù)蓬勃開展,臺式儀器在走了一段下坡路之后,又重新繁榮起來。不過現(xiàn)在新的臺式儀器的形態(tài),和幾年前的己有很大的不同。這些新一代臺式儀器具有多種特性,可以執(zhí)行多種功能。而且外形尺寸與價格,都比過去的類似產(chǎn)品減少了一半。1.3本系統(tǒng)主要功能本系統(tǒng)設(shè)計制作一個基于DAC0832的信號發(fā)生器。能實(shí)現(xiàn)以下幾種功能:〔1〕用戶可以通過按鍵設(shè)定頻率、波形、幅度這些參數(shù)。?!?〕本系統(tǒng)輸出方波、三角波、正弦波和鋸齒波。最小步進(jìn)值為1HZ。〔4〕系統(tǒng)所有的設(shè)置的參數(shù)都能在LCD1602上顯示?!?〕正弦波:1Hz~10KHz;三角波:1Hz~5KHz;方波:1Hz~10KHz;鋸齒波:1Hz~5KHz。2.總體方案論證與設(shè)計 根據(jù)所要實(shí)現(xiàn)的功能劃分,系統(tǒng)一共需要以下幾個模塊:主控模塊、顯示模塊、信號產(chǎn)生模塊、程控增益模塊和負(fù)壓產(chǎn)生模塊,以下就針對這幾個模塊的選型和論證進(jìn)行討論。方案一: 采用MSP430系列單片機(jī),該單片機(jī)是TI公司1996年開始推向市場的一種16位超低功耗的混合信號處理器。其內(nèi)部集成了很多模擬電路、數(shù)字電路和微處理器,提供強(qiáng)大的功能。不過該芯片昂貴不適合一般的設(shè)計開發(fā)。方案二 采用51系列的單片機(jī),該單片機(jī)是一個高可靠性,超低價,無法解密,高性能的8位單片機(jī),32個IO口,且STC系列的單片機(jī)可以在線編程、調(diào)試,方便地實(shí)現(xiàn)程序的下載與整機(jī)的調(diào)試。因此選用方案二中的51系列單片機(jī)作為主控芯片。方案一: 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比擬適宜,如采用在顯示數(shù)字顯得太浪費(fèi),且價格也相對較高,所以不用此種作為顯示[3]。方案二: 采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格雖適中,對于顯示數(shù)字也最適宜,而且采用動態(tài)掃描法與單片機(jī)連接時,占用單片機(jī)口線少。但是由于數(shù)碼管動態(tài)掃描需要借助74LS164移位存放器進(jìn)行移位,該芯片在電路調(diào)試時往往有很多障礙,所以不采用LED數(shù)碼管作為顯示。方案三: 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,對于本設(shè)計而言一個LCD1602的液晶屏即可,價格也還能接受,需要的借口線較多,但會給調(diào)試帶來諸多方便。所以本設(shè)計中方案三中的LCD1602液顯示屏作為顯示模塊。信號產(chǎn)生模塊的選型和論證方案一: 利用R2R型DA轉(zhuǎn)換器DAC0832進(jìn)行產(chǎn)生信號,把要產(chǎn)生的信號根據(jù)其規(guī)那么建立一個ROM表,單片機(jī)每隔一段時間根據(jù)ROM表的值去改變數(shù)模轉(zhuǎn)換器的電壓輸出值,如果ROM表示根據(jù)正弦變化記錄的表那么輸出的波形那么為正弦波,如此類推,只用通過改變時間的間隔即可改變輸出波形的頻率。方案二: 利用集成芯片DDS芯片AD9833進(jìn)行產(chǎn)生信號,該芯片可以通過與單片機(jī)通信設(shè)定其輸出波形和頻率,而且設(shè)定的頻率精度非常高。DDS芯片中主要包括頻率控制存放器、高速相位累加器和正弦計算器三個局部。頻率控制存放器可以串行或并行的方式裝載并存放用戶輸入的頻率控制碼。方案一由于使用的獨(dú)立的DA轉(zhuǎn)換器,設(shè)計比擬靈活,只要預(yù)先先把波形的ROM表生產(chǎn)好存儲到單片機(jī)內(nèi)即可輸出,定頻率的設(shè)定波形而選用DDS芯片那么只需要通過固定的時序控制那么能方便產(chǎn)生設(shè)。但是由于DDS本錢較為高昂,因此本設(shè)計選用DA轉(zhuǎn)換器來實(shí)現(xiàn)波形產(chǎn)生的功能。方案一:選用DAC0832搭配外部電路構(gòu)成程控放大器,由于DAC0832是一個8位DA轉(zhuǎn)換器,因此能設(shè)置成256檔放大倍數(shù)。通過單片機(jī)控制DA轉(zhuǎn)換器的數(shù)字端口即可改變放大倍數(shù)。方案二:選用VCA810作為主芯片進(jìn)行程控放大,VCA是一款高性能的壓控放大器芯片,它有一個增益控制引腳,用戶可以通過改變該腳的電壓進(jìn)行增益的控制,增益的控制范圍為-40dB~40dB,不過VCA810需要搭配外部的DA轉(zhuǎn)換器才能實(shí)現(xiàn)程控放大的功能。由于DAC0832的價格較VCA810廉價,而且VCA810需要搭配外部DA轉(zhuǎn)換器才能實(shí)現(xiàn)增益改變的功能,因此這里選用DAC0832進(jìn)行程控放大。由于DAC0832搭配運(yùn)放后輸出的電壓為負(fù)電壓,為了能正常輸出,因此運(yùn)放的電源需要正負(fù)電源供電,因?yàn)橄到y(tǒng)供電只有一個5V電源,為了得到一個-5V電源,這里使用了ICL7660負(fù)壓產(chǎn)生芯片來實(shí)現(xiàn)。2.6系統(tǒng)整體設(shè)計概述本系統(tǒng)以單片機(jī)為控制核心,對系統(tǒng)進(jìn)行初始化,主要完成對鍵盤的響應(yīng)、液晶顯示、波形產(chǎn)生、增益調(diào)節(jié)等功能的控制,起到總控和協(xié)調(diào)各模塊之間工作的作用。放大電路數(shù)/模轉(zhuǎn)換電路單放大電路數(shù)/模轉(zhuǎn)換電路單片機(jī)顯示電路波形輸出復(fù)位電路波形輸出復(fù)位電路鍵盤電路鍵盤電路圖2.1系統(tǒng)結(jié)構(gòu)框圖3.系統(tǒng)硬件電路設(shè)計3.1主控模塊主控模塊模塊在整個系統(tǒng)中起著統(tǒng)籌的作用,需要檢測鍵盤,波形控制等各種功能,同時驅(qū)動液晶顯示相關(guān)參數(shù),在這里我們選用了51系列單片機(jī)中的STC12C5A60S2單片機(jī)作為系統(tǒng)的主控芯片[5]。51系列單片機(jī)最初是由Intel公司開發(fā)設(shè)計的,但后來Intel公司把51核的設(shè)計方案賣給了幾家大的電子設(shè)計生產(chǎn)商,譬如SST、Philip、Atmel等大公司。因此市面上出現(xiàn)了各式各樣的均以51為內(nèi)核的單片機(jī)。這些各大電子生產(chǎn)商推出的單片機(jī)都兼容51指令、并在51的根底上擴(kuò)展一些功能而內(nèi)部結(jié)構(gòu)是與51一致的[6]。STC12C5A60S2有40個引腳,4個8位并行I/O口,1個全雙工異步串行口,同時內(nèi)含5個中斷源,2個優(yōu)先級,2個16位定時/計數(shù)器。STC12C5A60S2的存儲器系統(tǒng)由4K的程序存儲器(掩膜ROM),和128B的數(shù)據(jù)存儲器(RAM)組成。STC12C5A60S2單片機(jī)的根本組成框圖見圖3-1。圖3.1STC12C5A60S2單片機(jī)結(jié)構(gòu)圖3.1.1STC12C5A60S2單片機(jī)主要特性1.一個8位的微處理器(CPU)。2.片內(nèi)數(shù)據(jù)存儲器RAM(128B),用以存放可以讀/寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等,SST89系列單片機(jī)最多提供1K的RAM。3.片內(nèi)程序存儲器ROM(4KB),用以存放程序、一些原始數(shù)據(jù)和表格。但也有一些單片機(jī)內(nèi)部不帶ROM/EPROM,如8031,8032,80C31等。目前單片機(jī)的開展趨勢是將RAM和ROM都集成在單片機(jī)里面,這樣既方便了用戶進(jìn)行設(shè)計又提高了系統(tǒng)的抗干擾性。SST公司推出的89系列單片機(jī)分別集成了16K、32K、64KFlash存儲器,可供用戶根據(jù)需要選用。4.四個8位并行I/O接口P0~P3,每個口既可以用作輸入,也可以用作輸出。5.兩個定時器/計數(shù)器,每個定時器/計數(shù)器都可以設(shè)置成計數(shù)方式,用以對外部事件進(jìn)行計數(shù),也可以設(shè)置成定時方式,并可以根據(jù)計數(shù)或定時的結(jié)果實(shí)現(xiàn)計算機(jī)控制。為方便設(shè)計串行通信,目前的52系列單片機(jī)都會提供3個16位定時器/計數(shù)器[4]。6.五個中斷源的中斷控制系統(tǒng)。現(xiàn)在新推出的單片機(jī)都不只5個中斷源,例如SST89E58RD就有9個中斷源。7.一個全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實(shí)現(xiàn)單片機(jī)之間或單機(jī)與微機(jī)之間的串行通信。8.片內(nèi)振蕩器和時鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率為12MHz。SST89V58RD最高允許振蕩頻率達(dá)40MHz,因而大大的提高了指令的執(zhí)行速度。圖3.2STC12C5A60S2單片機(jī)管腳圖局部引腳說明:1.時鐘電路引腳XTAL1和XTAL2:XTAL2(18腳):接外部晶體和微調(diào)電容的一端;片內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。假設(shè)需采用外部時鐘電路時,該引腳輸入外部時鐘脈沖。要檢查振蕩電路是否正常工作,可用示波器查看XTAL2端是否有脈沖信號輸出。XTAL1(19腳):接外部晶體和微調(diào)電容的另一端;在片內(nèi)它是振蕩電路反相放大器的輸入端。在采用外部時鐘時,該引腳必須接地。2.控制信號引腳RST,ALE,PSEN和EA:RST/VPD(9腳):RST是復(fù)位信號輸入端,高電平有效。當(dāng)此輸入端保持備用電源的輸入端。當(dāng)主電源Vcc發(fā)生故障,降低到低電平規(guī)定值時,將+5V電源自動兩個機(jī)器周期(24個時鐘振蕩周期)的高電平時,就可以完成復(fù)位操作。RST引腳的第二功能是VPD,即接入RST端,為RAM提供備用電源,以保證存儲在RAM中的信息不喪失,從而合復(fù)位后能繼續(xù)正常運(yùn)行。ALE/PROG(30腳):地址鎖存允許信號端。當(dāng)8051上電正常工作后,ALE引腳不斷向外輸出正脈沖信號,此頻率為振蕩器頻率fOSC的1/6。CPU訪問片外存儲器時,ALE輸出信號作為鎖存低8位地址的控制信號。平時不訪問片外存儲器時,ALE端也以振蕩頻率的1/6固定輸出正脈沖,因而ALE信號可以用作對外輸出時鐘或定時信號。如果想確定8051/8031芯片的好壞,可用示波器查看ALE端是否有脈沖信號輸出。如有脈沖信號輸出,那么8051/8031根本上是好的。ALE端的負(fù)載驅(qū)動能力為8個LS型TTL(低功耗甚高速TTL)負(fù)載。此引腳的第二功能PROG在對片內(nèi)帶有4KBEPROM的8751編程寫入(固化程序)時,作為編程脈沖輸入端。PSEN(29腳):程序存儲允許輸出信號端。在訪問片外程序存儲器時,此端定時輸出負(fù)脈沖作為讀片外存儲器的選通信號。此引肢接EPROM的OE端(見后面幾章任何一個小系統(tǒng)硬件圖)。PSEN端有效,即允許讀出EPROM/ROM中的指令碼。PSEN端同樣可驅(qū)動8個LS型TTL負(fù)載。要檢查一個8051/8031小系統(tǒng)上電后CPU能否正常到EPROM/ROM中讀取指令碼,也可用示波器看PSEN端有無脈沖輸出。如有那么說明根本上工作正常。EA/Vpp(31腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。當(dāng)EA引腳接高電平時,CPU只訪問片內(nèi)EPROM/ROM并執(zhí)行內(nèi)部程序存儲器中的指令,但當(dāng)PC(程序計數(shù)器)的值超過0FFFH(對8751/8051為4K)時,將自動轉(zhuǎn)去執(zhí)行片外程序存儲器內(nèi)的程序。當(dāng)輸入信號EA引腳接低電平(接地)時,CPU只訪問外部EPROM/ROM并執(zhí)行外部程序存儲器中的指令,而不管是否有片內(nèi)程序存儲器。對于無片內(nèi)ROM的8031或8032,需外擴(kuò)EPROM,此時必須將EA引腳接地。此引腳的第二功能是Vpp是對8751片內(nèi)EPROM固化編程時,作為施加較高編程電壓(一般12V~21V)的輸入端。3.輸入/輸出端口P0/P1/P2/P3:P0口(~,39~32腳):P0口是一個漏極開路的8位準(zhǔn)雙向I/O口。作為漏極開路的輸出端口,每位能驅(qū)動8個LS型TTL負(fù)載。當(dāng)P0口作為輸入口使用時,應(yīng)先向口鎖存器(地址80H)寫入全1,此時P0口的全部引腳浮空,可作為高阻抗輸入。作輸入口使用時要先寫1,這就是準(zhǔn)雙向口的含義。在CPU訪問片外存儲器時,P0口分時提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。在此期間,P0口內(nèi)部上拉電阻有效。P1口(~,1~8腳):P1口是一個帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。P1口每位能驅(qū)動4個LS型TTL負(fù)載。在P1口作為輸入口使用時,應(yīng)先向P1口鎖存地址(90H)寫入全1,此時P1口引腳由內(nèi)部上拉電阻拉成高電平。P2口~,21~28腳):P2口是一個帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。P口每位能驅(qū)動4個LS型TTL負(fù)載。在訪問片外EPROM/RAM時,它輸出高8位地址。P3口~,10~17腳):P3口是一個帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。P3口每位能驅(qū)動4個LS型TTL負(fù)載。P3口與其它I/O端口有很大的區(qū)別,它的每個引腳都有第二功能,如下::(RXD)串行數(shù)據(jù)接收。:(RXD)串行數(shù)據(jù)發(fā)送。:(INT0#)外部中斷0輸入。:(INT1#)外部中斷1輸入。:(T0)定時/計數(shù)器0的外部計數(shù)輸入。:(T1)定時/計數(shù)器1的外部計數(shù)輸入。:(WR#)外部數(shù)據(jù)存儲器寫選通。:(RD#)外部數(shù)據(jù)存儲器讀選通。3.1.2STC12C5A60S2單片機(jī)的中斷系統(tǒng)STC12C5A60S2系列單片機(jī)的中斷系統(tǒng)有5個中斷源,2個優(yōu)先級,可以實(shí)現(xiàn)二級中斷效勞嵌套。由片內(nèi)特殊功能存放器中的中斷允許存放器IE控制CPU是否響應(yīng)中斷請求;由中斷優(yōu)先級存放器IP安排各中斷源的優(yōu)先級;同一優(yōu)先級內(nèi)各中斷同時提出中斷請求時,由內(nèi)部的查詢邏輯確定其響應(yīng)次序。[7]在單片機(jī)應(yīng)用系統(tǒng)中,常常會有定時控制需求,如定時輸出、定時檢測、定時掃描等;也經(jīng)常要對外部事件進(jìn)行計數(shù)。STC12C5A60S2單片機(jī)內(nèi)集成有兩個可編程的定時/計數(shù)器:T0和T1,它們既可以工作于定時模式,也可以工作于外部事件計數(shù)模式,此外,T1還可以作為串行口的波特率發(fā)生器。3.1.3單片機(jī)最小系統(tǒng)設(shè)計圖3.3單片機(jī)最小系統(tǒng)電路圖 圖3.3為單片機(jī)最小系統(tǒng)電路圖,單片機(jī)最小系統(tǒng)有單片機(jī)、時鐘電路、復(fù)位電路組成,時鐘電路選用了12MHZ的晶振提供時鐘,作用為給單片機(jī)提供一個時間基準(zhǔn),其中執(zhí)行一條根本指令需要的時間為一個機(jī)器周期,單片機(jī)的復(fù)位電路,按下復(fù)位按鍵之后可以使單片機(jī)進(jìn)入剛上電的起始狀態(tài)。圖中10K排阻為P0口的上拉電阻,由于P0口跟其他IO結(jié)構(gòu)不一樣為漏極開路的結(jié)構(gòu),因此要加上拉電阻才能正常使用。3.2LCD液晶顯示器簡介由于本設(shè)計中要求顯示界面顯示一些參數(shù),因此這里選用了LCD1602作為界面顯示,可以實(shí)時的顯示當(dāng)前信號輸出的頻率、波形、占空比以及幅值,同時也方便用戶設(shè)置相關(guān)的參數(shù)。3.2.1液晶原理介紹液晶顯示器(LCD)英文全稱為LiquidCrystalDisplay,它一種是采用了液晶控制透光度技術(shù)來實(shí)現(xiàn)色彩的顯示器。和CRT顯示器相比,LCD的優(yōu)點(diǎn)是很明顯的。由于通過控制是否透光來控制亮和暗,當(dāng)色彩不變時,液晶也保持不變,這樣就無須考慮刷新率的問題。顯示接口用來顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示局部用的是LCD液晶模塊,采用一個16×2的字符型液晶顯示模塊[3]。點(diǎn)陣圖形式液晶由M行×N列個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1個字節(jié)的8個位,即每行由16字節(jié),共16×8=128個點(diǎn)組成,屏上64×16個顯示單元和顯示RAM區(qū)1024個字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和屏上相應(yīng)位置的亮暗對應(yīng)。一個字符由6×8或8×8點(diǎn)陣組成,即要找到和屏上某幾個位置對應(yīng)的顯示RAM區(qū)的8個字節(jié),并且要使每個字節(jié)的不同的位為‘1’,其它的為‘0’,為‘1’的點(diǎn)亮,為‘0’的點(diǎn)暗,這樣一來就組成某個字符。但對于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比擬簡單了,可讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。3LCD1602液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動,閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位存放器,指令存放器〔IR〕和數(shù)據(jù)存放器〔DR〕忙標(biāo)志〔BF〕,顯示數(shù)RAM〔DDRAM〕,字符發(fā)生器ROMA〔CGOROM〕字符發(fā)生器RAM〔CGRAM〕,地址計數(shù)器RAM(AC)。IR用于存放指令碼,只能寫入不能讀出,DR用于存放數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時,液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字符的對應(yīng)關(guān)系,CGRAM是為用戶編寫特殊字符留用的,它的容量僅64字節(jié),可以自定義8個5*7點(diǎn)陣字符或者4個5*10點(diǎn)陣字符,AC可以存儲DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,那么IR自動把地址碼裝入AC,同時選擇DDRAM或CGRAM,LCD1602液晶模塊的引腳圖如圖3.4所示。圖3.4LCD1602引腳圖液晶存放器選擇控制如表3.1。表3.1存放器選擇控制RSR/W操作說明00寫入指令存放器〔去除屏等〕01讀busyflag〔DB7〕,以及讀取位址計數(shù)器〔DB0~DB6〕值10寫入數(shù)據(jù)存放器〔顯示各字型等〕11從數(shù)據(jù)存放器讀取數(shù)據(jù)3STC12C5A60S2的接口如圖3-5所示。用STC12C5A60S2的P0口作為數(shù)據(jù)線,用P1.2、P1.1、P1.0分別作為LCD的EN、R/W、RS。其中EN是下降沿觸發(fā)的片選信號,R/W是讀寫信號,RS是存放器選擇信號本模塊設(shè)計要點(diǎn)如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點(diǎn)陣,然后設(shè)置為整體顯示,取消光標(biāo)和字體閃爍,最后設(shè)置為正向增量方式且不移位。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時2.5ms,判斷是否夠顯示的個數(shù),不夠那么地址加一取下一個要顯示的字符或數(shù)據(jù)[8]。圖3.5LCD1602與STC12C5A60S2的接口3.3鍵盤模塊設(shè)計本按鍵模塊使用的是多位獨(dú)立按鍵,按鍵一端接IO口,一端接地,由于單片機(jī)的IO口都有內(nèi)部上拉,因此當(dāng)按鍵沒有按下的時候,IO檢測到的時候高電平,當(dāng)按鍵按下的時候,相當(dāng)于IO短接地,因此這時候單片機(jī)檢測到的電平為低電平,通過檢測不同時刻的IO口狀態(tài)就可以判斷按下的是那個按鍵。4個按鍵分別代表以下功能,第一為功能按鍵,可以切換不同參數(shù)設(shè)置界面,第二個為切換按鍵,可以切換波形、頻率和幅值等參數(shù)進(jìn)行設(shè)置,第三個為增加按鍵,第四個為減少按鍵。鍵盤模塊電路圖如圖3.6所示。圖3.6鍵盤模塊電路圖3.4信號產(chǎn)生模塊設(shè)計這里由于要產(chǎn)生方波、正弦波、鋸齒波和三角波這幾種波形,綜合考慮選擇了DAC0832作為主芯片,DAC0832是一款是國家半導(dǎo)體公司采用先進(jìn)的DA轉(zhuǎn)換器,單片機(jī)通過查詢內(nèi)部的預(yù)存的波形ROM表來實(shí)現(xiàn)波形產(chǎn)生。3.4.1直接數(shù)字合成技術(shù)介紹本設(shè)計就是基于直接數(shù)字合成技術(shù)原理設(shè)計的,直接數(shù)字合成技術(shù)是美國學(xué)者于1971年提出的,即以全數(shù)字技術(shù),從相位概念出發(fā)直接合成所需波形的一中新的頻率合成原理,稱之為直接數(shù)字頻率合成器(DirectDigitalSynthesis)。這是頻率合成技術(shù)的一次重大革命。它的根本原理就是利用采樣原理,通過查表法產(chǎn)生波形。但是限于當(dāng)時微電子技術(shù)和數(shù)字信號處理技術(shù)的限制,DDS并沒有得到足夠的重視,隨著現(xiàn)代超大規(guī)模集成電路集成工藝的高速開展,使得數(shù)字頻率合成技術(shù)得到了質(zhì)的飛躍,它在相對帶寬、頻率轉(zhuǎn)換時間、相位連續(xù)性、正交輸出、高分辨率以及集成化等一系列性能指標(biāo)方面,已遠(yuǎn)遠(yuǎn)超過了傳統(tǒng)頻率合成技術(shù)所能到達(dá)的水平。但是由于DDS數(shù)字化實(shí)現(xiàn)的固有特點(diǎn),決定了其輸出頻譜雜散較大。從20世紀(jì)80年代末開始通過深入的研究認(rèn)識了DDS雜散成因及其分布規(guī)律后,對DDS相位累加器進(jìn)行了改良,ROM數(shù)據(jù)進(jìn)行了壓縮,使用了抖動注入技術(shù)以及對DDS工藝結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)進(jìn)行了改良。DDS技術(shù)建立在采樣在采樣定理的根底上,它首先對需要產(chǎn)生的信號波形進(jìn)行采樣和量化,然后存入存儲器作為待產(chǎn)生信號波形的數(shù)據(jù)表。輸出信號波形時,電路在一個高穩(wěn)定時鐘控制下從數(shù)據(jù)表中依次讀出信號波形的數(shù)據(jù),產(chǎn)生過數(shù)字化的信號,這個信號再通過DAC轉(zhuǎn)換成所需的模擬信號波形。具體原理框圖如圖3.7所示。它的核心是相位累加器,由N位加法器與N位相位存放器構(gòu)成,類似一個簡單的計數(shù)器。加法器將頻率控制字與累加存放器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至累加存放器的數(shù)據(jù)輸入端。這樣,相位累加器在時鐘作用下,不斷對頻率控制字進(jìn)行線性相位累加。由此可以看出,相位累加器輸出的數(shù)據(jù)就是合成信號的相位,相位累加器的溢出頻率就是DDS輸出的信號頻率。將相位存放器的輸出與相位控制字相加得到的數(shù)據(jù)作為一個地址對正弦查詢表進(jìn)行尋址,查詢表把輸入的地址相位信息映射成正弦波幅度信號,通過D/A變換器把數(shù)字量變成模擬量,再經(jīng)過低通濾波器平滑并濾除不需要的取樣分量,以便輸出頻譜純潔的正弦波信號。在參考頻率為fs的情況下,DDS系統(tǒng)輸出信號的頻率fo為:〔3-1〕輸出信號的頻率分辨率Δfo為:〔3-2〕圖3.7DDS技術(shù)的原理框圖相對于其他信號波形產(chǎn)生技術(shù),DDS技術(shù)具有輸出信號的采樣頻率固定、頻率穩(wěn)定性高、信號頻率轉(zhuǎn)換時間輸出相位連續(xù)、全數(shù)字化、可編程和易于控制等優(yōu)點(diǎn)。但還是有兩點(diǎn)缺乏之處:〔1〕散分量豐富。這些雜散分量主要由相位舍位、幅度量化和DAC的非理想特性所引起,如圖3-8所示。因?yàn)樵趯?shí)際的DDS電路中,為了到達(dá)足夠小的頻率分辨率,通常將相位累加器的位數(shù)取大。但受體積和本錢的限制,即使采用先進(jìn)的存儲方法,ROM的容量都遠(yuǎn)小于此,因此在對ROM尋址時,只是用相位累加器的高位去尋址,這樣不可防止地引起誤差,即相位舍位誤差。另外,一個幅值在理論上只能用一個無限長的二進(jìn)制代碼才能精確表示,由于ROM的存儲能力,只采用了有限比特代碼來表示這一幅值,這必然會引起幅度量化誤差。另外,DAC的有限分辨率以及非線性也會引起誤差。所以對雜散的分析和抑制,一直是國內(nèi)外研究的特點(diǎn),因?yàn)樗鼜暮艽蟪潭壬蠜Q定了DDS的性能。圖3.8DDS摻雜模型〔2〕頻帶受限。由于DDS內(nèi)部DAC和ROM的工作速度限制,使得DDS輸出的最高頻率有限。3.4.2DAC0832芯片介紹DAC0832是采用CMOS工藝制成的單片直流輸出型8位數(shù)/模轉(zhuǎn)換器。旨在直接與8080,8048,8085,Z80及其他通用的微型處理器進(jìn)行相接。存儲的硅鉻R-2R電阻梯形網(wǎng)絡(luò)將參考電流分開,并為電路提供適宜的溫度處理特性〔全范圍最大線性溫度誤差的0.05%〕。電路利用CMOS電流開關(guān)和控制邏輯來取得最少的電能損耗和最小的輸出泄露電流誤差。特殊的電路也能提供TTL邏輯輸入電壓的水平兼容。雙緩沖可以使這些D/A轉(zhuǎn)換器在獲取下一個數(shù)位字時輸出相應(yīng)一個數(shù)位字的電壓。這就使得任何一個D/A轉(zhuǎn)換器均可進(jìn)行同步更新。D/A轉(zhuǎn)換器0830系列是8位的可兼容微型處理器的D/A轉(zhuǎn)換器的集合。圖3.9典型應(yīng)用連接3.4.3DAC0832波形發(fā)生電路設(shè)計由于DAC0832是電流輸出型DAC,因此需要用運(yùn)放轉(zhuǎn)換成電壓,AMP1A輸出電壓V的范圍為-VREF~0V,由于運(yùn)放供電為正負(fù)5V供電,并且運(yùn)放不能輸出電壓范圍到電源軌,因此基準(zhǔn)電壓只使用了2.5V電壓?;鶞?zhǔn)由TL431進(jìn)行提供。為了使輸出信號幅度范圍以0V為中間值,使用了AMP1B搭建成一個加法器進(jìn)行信號放大和偏置調(diào)整。輸出電壓Vout=V(-R4/R2)+VREF(-R4/R3)=-2V-VREF,因此輸出的幅度范圍為-VREF~VREF,由于基準(zhǔn)電壓為2.5V,所以輸出電壓范圍為-2.5V~2.5V。圖3.10波形發(fā)生電路設(shè)計3.5程控放大模塊的設(shè)計程控放大模塊的結(jié)構(gòu)跟波形發(fā)生局部相似,區(qū)別在于波形發(fā)生局部的基準(zhǔn)電壓是固定的,通過查ROM的數(shù)組來改變輸出電壓來描繪出波形,而程控放大模塊的基準(zhǔn)是接到波形發(fā)生電路的輸出,因此輸出VOUT=VREF*DATA/256。其中DATA值通過改變單片機(jī)連接到DA數(shù)據(jù)口的電平值即可以改變其放大倍數(shù)。其硬件電路圖如圖3.11所示。圖3.11程控放大電路設(shè)計3.6負(fù)壓轉(zhuǎn)換電路設(shè)計由于電路中很多芯片都需要正負(fù)電源供電,而我們的電源只有正5伏的電壓,因此這里使用ICL7660進(jìn)行產(chǎn)生一個負(fù)5伏電壓。該ICL7660S超電壓轉(zhuǎn)換器是一個單片電路CMOS電壓轉(zhuǎn)換IC,保證顯著的性能優(yōu)于其他類似裝置。這是一個直接替換工業(yè)標(biāo)準(zhǔn)的ICL7660提供了一個擴(kuò)大經(jīng)營范圍的電源電壓高達(dá)12V,低電源電流。無需外部二極管所需的ICL7660S。此外,高頻升壓腳已被納入,使用戶能夠?qū)崿F(xiàn)較低的輸出阻抗,盡管使用較小的電容器。圖3.12ICL7660S引腳所有改良中所強(qiáng)調(diào)的電氣規(guī)格一節(jié)。關(guān)鍵參數(shù)都保證在整個商業(yè),工業(yè)和軍事溫度范圍內(nèi)工作。ICL7660S執(zhí)行的電源電壓轉(zhuǎn)換從積極的消極的輸入電壓范圍1.5V至12V的,因此互補(bǔ)的輸出電壓-1.5V~-12V的。只有2個非關(guān)鍵外部電容器所需要的電荷泵和負(fù)責(zé)水庫的功能。該ICL7660S可以連接到作為一個電壓倍增,并會產(chǎn)生高達(dá)22.8V的12V輸入。它也可以被用來作為電壓倍增器或分壓器。圖3.13ICL7660硬件電路圖4.系統(tǒng)軟件設(shè)計4.1系統(tǒng)軟件總體設(shè)計圖4.1主程序流程圖主程序流程圖如圖4.1所示,單片機(jī)上電后先進(jìn)行初始化,去除一些參數(shù)的初值,然后顯示相關(guān)波形的參數(shù),每個循環(huán)單片機(jī)都會判斷用戶是否按下設(shè)定按鍵,如果按下那么進(jìn)入相關(guān)參數(shù)的設(shè)置。圖4.2LCD1602初始化子信號流程圖首先先調(diào)用液晶自定義的字庫,設(shè)置好DDRAM地址后在第一行顯示,根據(jù)程序中的數(shù)據(jù)設(shè)置顯示數(shù)據(jù)的首地址并設(shè)置循環(huán)量,在循環(huán)過程中不斷的取字符代碼直到終止,第二行的顯示過程同一行的顯示過程一樣,兩行顯示完畢后便結(jié)束子程序[4]。4.2程序設(shè)計原理軟件任務(wù)分析和硬件電路設(shè)計結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計根本定型后,也就根本上決定下來了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測量,計算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計方法各有特色,執(zhí)行軟件的設(shè)計偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時,應(yīng)將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進(jìn)行功能定義和接口定義〔輸入輸出定義〕。在各執(zhí)行模塊進(jìn)行定義時,將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對來講,執(zhí)行模塊任務(wù)明確單純,比擬容易編程,而監(jiān)控程序較易出問題。這如同當(dāng)一名操作工人比擬容易,而當(dāng)一個廠長就比擬難了。軟件任務(wù)分析的另一個內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個系統(tǒng)軟件可分為后臺程序〔背景程序〕和前臺程序。后臺程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序〔鍵盤解釋程序〕,顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實(shí)時性要求較高的內(nèi)容,如定時系統(tǒng)和外部中斷〔如掉電中斷〕。也可以將全部程序均安排在前臺,后臺程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)〞,以利于系統(tǒng)節(jié)電和抗干擾。5.系統(tǒng)調(diào)試5.1硬件調(diào)試本系統(tǒng)的電路較為復(fù)雜,涉及的模塊比擬多,其中包含信號產(chǎn)生模塊,程控增益模塊,單片機(jī)最小系統(tǒng)模塊,液晶模塊,因此對于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯誤,那么會對檢測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否那么會刺破帶有包皮的導(dǎo)線,那么會對電路造成短路現(xiàn)象。在制作硬件電路之前,我們先根據(jù)實(shí)際需要的功能劃分硬件模塊,并且在PROTEL里面畫出其硬件原理圖和PCB圖,檢查無誤后開始再開始焊接。在本系統(tǒng)的硬件調(diào)試中遇到了很多的問題?;叵脒@些問題只要認(rèn)真多思考都是可以防止的,以下為主要的問題:問題:一開始波形一直輸出不正常,輸出的電壓一直都是正電壓。解決:由于DA轉(zhuǎn)換器后面的電壓轉(zhuǎn)換電路輸出為負(fù)電壓,因此運(yùn)放需要使用正負(fù)電源供電,后來使用ICL7660芯片產(chǎn)生出-5V電壓供電便解決了問題。5.2軟件調(diào)試本系統(tǒng)是一個比擬復(fù)雜的數(shù)字系統(tǒng),所以對于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時出現(xiàn)了相對較多的問題。首先為了更好的測試效果,我最開始是直接在PROTUES軟件下進(jìn)行一些顯示界面仿真,在確定無誤后,再把程序燒錄到實(shí)物中運(yùn)行。最后經(jīng)過屢次的模塊子程序的修改,一步一步的完成,最終解決了軟件上的各種問題。在軟件的調(diào)試過程中主要遇到的問題如下:問題1.燒入程序后,LCD液晶顯示閃動,而且亮度不均勻。解決:首先對調(diào)用的延時進(jìn)行逐漸修改,可以解決顯示閃動問題。其次,由于本作品使作動態(tài)掃描方式顯示的數(shù)字,動態(tài)掃描很快,人的肉眼是無法看出,但是調(diào)用的顯示程序時,如果不在反回時屏蔽掉最后的附值,那么會出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。問題2.當(dāng)用戶按下按鍵的時候,單片機(jī)讀取的數(shù)值跟設(shè)定的數(shù)值不對。解決:重新檢查獨(dú)立鍵盤電路的連接,重新建立一個新的對應(yīng)關(guān)系。結(jié)論通過這次畢業(yè)設(shè)計,我學(xué)到了不少課本上沒有的知識,也鍛煉了自己的動手能力,將以前學(xué)過的零散的知識串到一起。經(jīng)過我長時間的設(shè)計及調(diào)試,本系統(tǒng)根本能實(shí)現(xiàn)本系統(tǒng)的所有功能。缺乏之處有:1.硬件的穩(wěn)定性有待進(jìn)一步提高2.系統(tǒng)界面人性化還缺乏。我的綜合設(shè)計主要涉及硬件和軟件兩方面的內(nèi)容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,根本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作。根本掌握了Proteus原理圖的方法,并設(shè)計了一個單片機(jī)最小系統(tǒng)。通過開發(fā)板的設(shè)計和硬件搭建的過程,使我對51系單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路引腳和連接方法,如LCD液晶,鍵盤等。并且我學(xué)會了分析問題解決問題的能力,加深了對所學(xué)理論知識的理解和運(yùn)用。我的動手能力得到了很大的提高,創(chuàng)新意識得到了鍛煉。致謝在這次畢業(yè)設(shè)計中,最應(yīng)該感謝的是我的指導(dǎo)老師梁芳老師,本次多功能信號發(fā)生器的成功設(shè)計與梁老師的幫助是息息相關(guān)的。導(dǎo)師淵博的專業(yè)知識,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作態(tài)度,誨人不倦的高尚師德,嚴(yán)以律己、寬厚待人的崇高風(fēng)范,樸實(shí)無華。平易近人的人格魅力對我影響深遠(yuǎn)。從論文到選題的完成,每一步都是在指導(dǎo)老師的指導(dǎo)下完成的,傾注了導(dǎo)師的大量心血,再次謹(jǐn)向?qū)煴硎境绺呔匆?。還有就是應(yīng)該感謝我校陜西理工學(xué)院圖書館的相關(guān)及圖書及文獻(xiàn),以及網(wǎng)上前輩們的優(yōu)秀研究成果,通過對這些資料的學(xué)習(xí)與借鑒,完成和豐富了本次畢業(yè)設(shè)計的內(nèi)容。再加上自己的思考和領(lǐng)悟才能預(yù)期成功地完成的本次目標(biāo)。梁老師在論文前期、中期、后期都對我的想法及設(shè)計經(jīng)行了獨(dú)特地分析,這深深的影響了我對學(xué)習(xí)的態(tài)度,也大大促進(jìn)了本次設(shè)計的順利進(jìn)行。參考文獻(xiàn)[1]吳巖.單片機(jī)在電子技術(shù)中的應(yīng)用和開發(fā)技術(shù)研究[J].黑龍江科技信息,202319-24[2]李富林.淺談單片機(jī)的應(yīng)用領(lǐng)域[J].網(wǎng)絡(luò)財富2023112-120[3]閻石.?dāng)?shù)字電子技術(shù)根底.北京:高等教育出版社,1997[4]張曉麗等.?dāng)?shù)據(jù)結(jié)構(gòu)與算法.北京:機(jī)械工業(yè)出版社,2002[5]李建忠.單片機(jī)原理及應(yīng)用.西安:西安電子科技大學(xué),20027-8[6]韓志軍等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計[M].機(jī)械工業(yè)出版社,2004[7]馬忠梅等.單片機(jī)的C語言應(yīng)用程序設(shè)計[M].北京航空航天大學(xué)出版社,2006[8]劉樹中,孫書膺,王春平.單片機(jī)和液晶顯示驅(qū)動器串行接口的實(shí)現(xiàn)[J].微計算機(jī)信息,2007[9]Baskakov,S.I.Signalsandcircuits.mirpublishiers,1986[10]Levan,N.Systemsandsignals.NewYork::OptimizationSoftware,Inc.,,c1983[11]Marven,Craig.,Ewers,Gillian.Buildyourownlow-costsignalgenerator.NewYork::TAB,,c1994.附錄A系統(tǒng)仿真圖附錄B元件清單元件名稱數(shù)量STC12C5A60S2130PF212MHZ晶振1輕觸按鍵510UF電容76USB座子11000UF1LCD16021110K排阻1TL4311DAC08322TL0721UA741110K電阻120K電阻2100PF電容2銅柱+螺帽4板子1ICL76601DIP40座子1DIP20座子2DIP8座子3附錄C系統(tǒng)源程序#include"reg52.h"#include"LCD1602.h"#include"key.h"#defineDAPortP3sbitIO=P2^0;unsignedintcount;staticunsignedcharcodeTableSin[256]={128,131,134,137,140,143,146,149,152,155,158,162,165,167,170,173,176,179,182,185,188,190,193,196,198,201,203,206,208,211,213,215,218,220,222,224,226,228,230,232,234,235,237,238,240,241,243,244,245,246,248,249,250,250,251,252,253,253,254,254,254,255,255,255,255,255,255,255,254,254,254,253,253,252,251,250,250,249,248,246,245,244,243,241,240,238,237,235,234,232,230,228,226,224,222,220,218,215,213,211,208,206,203,201,198,196,193,190,188,185,182,179,176,173,170,167,165,162,158,155,152,149,146,143,140,137,134,131,127,124,121,118,115,112,109,106,103,100,97,93,90,88,85,82,79,76,73,70,67,65,62,59,57,54,52,49,47,44,42,40,37,35,33,31,29,27,25,23,21,20,18,17,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,17,18,20,21,23,25,27,29,31,33,35,37,40,42,44,47,49,52,54,57,59,62,65,67,70,73,76,79,82,85,88,90,93,97,100,103,106,109,112,115,118,121,124};staticunsignedcharcodeTableTriangle[256]={128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,255,254,252,250,248,246,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,140,138,136,134,132,130,128,126,124,122,120,118,116,114,112,110,108,106,104,102,100,98,96,94,92,90,88,86,84,82,80,78,76,74,72,70,68,66,64,62,60,58,56,54,52,50,48,46,44,42,40,38,36,34,32,30,28,26,24,22,20,18,16,14,12,10,8,6,4,2,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126};staticunsignedcharcodeTableSaw[256]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255};voidmain(void){ LCDInit(); AmPort=0xff; fword=1048; TMOD=0x02; TH0=0xf0;TL0=0xf0; TR0=1;//計數(shù)器停止計數(shù) ET0=1;//開啟計數(shù)器0中斷 LCDDispString(0,1,"wave:SinVo:5.0V"); LCDDispString(0,2,"f:01000HzD:--%"); EA=1;//開總中斷 while(1) { key_scan(); }} //gType=0:正弦波//gType=1:方波//gType=2:三角波//gType=3:鋸齒波voidtimer0(void)interrupt1//計數(shù)器0中斷{ count=count+fword; switch(gType) { case0: DAPort=TableSin[count>>8]; break; case1:if(count>Duty*655) DAPort=0xff; else DAPort=0x00; break; case2: DAPort=TableTriangle[count>>8]; break; case3: DAPort=TableSaw[256-(count>>8)]; break; default:DAPort=TableSin[count>>8]; }} #include<reg52.h>#include"LCD1602.h"/*********************************************************Function:staticvoidDelayN40us(unsignedintn)Description:延時函數(shù),延時40us的整數(shù)倍,傳入值n代表延時 時間到n*40us,不能實(shí)現(xiàn)準(zhǔn)確延時,只能實(shí)現(xiàn)大 概時間的延時,利用的是指令實(shí)現(xiàn)延時功能。不允 許外部調(diào)用。Calls:沒有調(diào)用其它函數(shù)CalledBy:voidLCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);Input:unsignedintn用于延時時間確實(shí)定,取值、為1~65535Output:無Return:無***********************************************************/voidDelayN40us(unsignedintn){ unsignedinti; unsignedcharj; for(i=n;i>0;i--) for(j=0;j<80;j++);}/*********************************************************Function:voidLCDInit(void);Description:液晶初始化函數(shù),對LCD1602進(jìn)行初始化操作,在每一次實(shí)用液晶前必須用到的,外部可調(diào)用函數(shù)。Calls:voidLCDWriteCommand(unsignedchardat); DelayN40us(unsignedintn);CalledBy:main();或其他Input:無Output:無Return:無***********************************************************/voidLCDInit(void) { LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7*/ LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7*/ LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7,有的液晶做的不好,寫三遍保險?。。?!*/ LCDWriteCommand(0x0c);/*整體顯示,關(guān)光標(biāo),不閃爍*/ LCDWriteCommand(0x06);/*設(shè)定輸入方式,增量不移位*/ LCDWriteCommand(0x01);/*去除屏幕顯示*/ DelayN40us(100); /*清屏延時*/}/*********************************************************Function:staticvoidLCDWriteCommand(unsignedchardat);Description:寫命令函數(shù),對LCD1602內(nèi)部存放器進(jìn)行操作,不允許外部調(diào)用Calls:DelayN40us(unsignedintn);CalledBy:voidLCDInit(void); voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat); voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat); Input:unsignedchardat寫入的命令Output:無Return:無***********************************************************/staticvoidLCDWriteCommand(unsignedchardat){ LCD_DB=dat;LCD_RS=0;/*選擇寫指令*/ LCD_RW=0;/*寫入指令值*/ LCD_E=1;/*使能LCD1602*/ LCD_E=0; DelayN40us(1);/*寫命令延時*/}/*********************************************************Function:staticvoidLCDWriteData(unsignedchardat);Description:寫數(shù)據(jù)函數(shù),將數(shù)據(jù)寫入LCD1602中,不允許外 部調(diào)用Calls:DelayN40us(unsignedintn);CalledBy:voidLCDInit(void); voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat); voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat); Input:unsignedchardat寫入的數(shù)據(jù)Output:無Return:無***********************************************************/staticvoidLCDWriteData(unsignedchardat) //寫數(shù)據(jù)函數(shù){ LCD_DB=dat; LCD_RS=1;/*選擇寫數(shù)據(jù)*/ LCD_RW=0;/*寫入數(shù)據(jù)值*/ LCD_E=1;/*使能LCD1602*/ LCD_E=0; DelayN40us(1);/*寫數(shù)據(jù)延時*/}/*********************************************************Function:voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat);Description:在某個屏幕位置上(x,y)位置顯示一個字符,可外部調(diào)用。Calls:LCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);CalledBy:main();及其他Input:X〔0-15),y(1-2),dat為顯示字符‘a(chǎn)’形式。Output:無Return:無***********************************************************/voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat){ unsignedcharaddress; if(y==1) address=0x80+x; /*顯示在第一排的時候的x的地址*/ else address=0xc0+x; /*顯示在第二排的時候的x的地址*/ LCDWriteCommand(address); /*輸入地址*/ LCDWriteData(dat); /*輸入數(shù)據(jù)*/}/*********************************************************Function:voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat);Description:在某個屏幕位置上(x,y)位置顯示一個數(shù)字,可外部調(diào)用。Calls:LCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);CalledBy:main();及其他Input:X〔0-15),y(1-2),dat(0-9)。Output:無Return:無***********************************************************/voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat){ unsignedcharaddress; if(y==1) address=0x80+x; /*顯示在第一排的時候的x的地址*/ else address=0xc0+x; /*顯示在第二排的時候的x的地址*/ LCDWriteCommand(address); /*輸入地址*/ LCDWriteData(dat+48); /*輸入數(shù)據(jù)*/}/*********************************************************Function:voidLCDDispString(unsignedcharx,unsignedchary,unsignedchar*string)Description:在屏幕上顯示一串字符,考慮到我的數(shù)值均存儲于數(shù)組中,為方便而作,允許外部調(diào)用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論