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

下載本文檔

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

文檔簡(jiǎn)介

題目多功能信號(hào)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名王振華學(xué)號(hào)1213014069所在學(xué)院專業(yè)班級(jí)電子信息工程指導(dǎo)教師梁芳完成地點(diǎn)物理與電信工程學(xué)院實(shí)驗(yàn)室2023年6月2日多功能信號(hào)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)王振華〔陜西理工學(xué)院物理與電信工程學(xué)院電子信息工程專業(yè),2023級(jí)3班,陜西漢中723000〕指導(dǎo)教師:梁芳[摘要]本文介紹的是利用STC12C5A60S2單片機(jī)和數(shù)模轉(zhuǎn)換器件DAC0832產(chǎn)生所需不同信號(hào)的低頻信號(hào)源,其信號(hào)幅度和頻率都是可以按要求控制的。文中簡(jiǎn)要介紹了DAC0832數(shù)模轉(zhuǎn)換器的結(jié)構(gòu)原理和使用方法,STC12C5A60S2的根底理論,以及與設(shè)計(jì)電路有關(guān)的各種芯片。著重介紹了如何利用單片機(jī)控制D/A轉(zhuǎn)換器產(chǎn)生上述信號(hào)的硬件電路和軟件編程。信號(hào)頻率幅度也按要求可調(diào)。本設(shè)計(jì)核心任務(wù)是:以STC12C5A60S2為核心,結(jié)合D/A轉(zhuǎn)換器和DAC0832等器件,用仿真軟件設(shè)計(jì)硬件電路,用C語(yǔ)言編寫(xiě)驅(qū)動(dòng)程序,以實(shí)現(xiàn)程序控制產(chǎn)生正弦波、三角波、方波、三種常用低頻信號(hào)??梢酝ㄟ^(guò)鍵盤(pán)選擇波形和輸入任意頻率值。[關(guān)鍵詞]單片機(jī);LCD1602;信號(hào)發(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研究概況及開(kāi)展趨勢(shì)146691.3本系統(tǒng)主要功能2352.總體方案論證與設(shè)計(jì)32030631133931388832981041065342843044948577805216273.1.1STC12C5A60S2單片機(jī)主要特性5121783.1.2STC12C5A60S2單片機(jī)的中斷系統(tǒng)7237233.1.3單片機(jī)最小系統(tǒng)設(shè)計(jì)8140653.2LCD液晶顯示器簡(jiǎn)介8279953.2.1液晶原理介紹831901928873916928101880510293343.4.1直接數(shù)字合成技術(shù)介紹11261793.4.2DAC0832芯片介紹12309123.4.3DAC0832波形發(fā)生電路設(shè)計(jì)1322231348323.6負(fù)壓轉(zhuǎn)換電路設(shè)計(jì)14219581531321152041316957418137018233941828045結(jié)論1928045致謝 2028045參考文獻(xiàn) 2122647附錄A 2225524附錄B 234821附錄C244821附錄D 404821附錄E 454821附錄F 481引言1.1目的和意義信號(hào)發(fā)生器亦稱波形發(fā)生器,主要作為實(shí)驗(yàn)用信號(hào)源,是現(xiàn)今各種電子電路實(shí)驗(yàn)設(shè)計(jì)應(yīng)用中必不可少的儀器設(shè)備之一。目前,市場(chǎng)上常見(jiàn)的波形發(fā)生器多為純硬件的搭接而成,波形種類多為鋸齒、正弦、方波、三角等波形。用分立元件組成的信號(hào)發(fā)生器,通常是單信號(hào)發(fā)生器且頻率不高,其工作不很穩(wěn)定,不易調(diào)試;用集成芯片的信號(hào)發(fā)生器,可到達(dá)較高的頻率和產(chǎn)生多種波形信號(hào),但電路較為復(fù)雜且不易調(diào)試。利用DA轉(zhuǎn)換器配合單片機(jī)可以實(shí)現(xiàn)波形產(chǎn)生的功能,而且可以根據(jù)需要進(jìn)行調(diào)整,設(shè)計(jì)靈活。隨著電子測(cè)量及其他部門(mén)對(duì)各類信號(hào)發(fā)生器的廣泛需求及電子技術(shù)的迅速開(kāi)展促使信號(hào)發(fā)生器種類增多性能提高尤其隨著70年代微處理器的出現(xiàn)更促使信號(hào)發(fā)生器向著自動(dòng)化智能化方向開(kāi)展現(xiàn)在許多信號(hào)發(fā)生器帶有微處理器因而具備了自校自檢自動(dòng)故障診斷和自動(dòng)波形形成和修正等功能可以和控制計(jì)算機(jī)及其他測(cè)量?jī)x器一起方便的構(gòu)成自動(dòng)測(cè)試系統(tǒng)當(dāng)前信號(hào)發(fā)生器總的趨勢(shì)是向著寬頻率覆蓋低功耗高頻率精度多功能自動(dòng)化和智能化方向開(kāi)展[1]。在科學(xué)研究工程教育及生產(chǎn)實(shí)踐中如工業(yè)過(guò)程控制教學(xué)實(shí)驗(yàn)機(jī)械振動(dòng)試驗(yàn)動(dòng)態(tài)分析材料試驗(yàn)生物醫(yī)學(xué)等領(lǐng)域常常需要用到低頻信號(hào)發(fā)生器而在我們?nèi)粘I钪幸约耙恍┛茖W(xué)研究中鋸齒波和正弦波矩形波信號(hào)是常用的根本測(cè)試信號(hào)譬如在示波器電視機(jī)等設(shè)備中為了使電子按照一定規(guī)律運(yùn)動(dòng)以利用熒光屏顯示圖像常用到鋸齒波產(chǎn)生器作為時(shí)基電路信號(hào)發(fā)生器作為一種通用的電子儀器在生產(chǎn)科研測(cè)控通訊等領(lǐng)域都得到了廣泛的應(yīng)用但市面上能看到的儀器在頻率精度帶寬波形種類及程控方面都已不能滿足許多方面實(shí)際應(yīng)用的需求加之各類功能的半導(dǎo)體集成芯片的快速生產(chǎn)都使我們研制一種低功耗寬頻帶能產(chǎn)生多種波形并具有程控等低頻的信號(hào)發(fā)生器成為可能[2]。信號(hào)發(fā)生器作為一種常見(jiàn)的電子儀器設(shè)備,既能夠構(gòu)成獨(dú)立的信號(hào)源,也可以是高新能的網(wǎng)絡(luò)分析儀,頻譜儀以及自動(dòng)測(cè)試裝備的組成局部,函數(shù)信號(hào)發(fā)生器的關(guān)鍵技術(shù)是多種高性能儀器的根本組成局部,函數(shù)信號(hào)發(fā)生器的關(guān)鍵技術(shù)是多種高性能儀器的支撐技術(shù),因?yàn)樗悄軌蛱岣哔|(zhì)量的精密信號(hào)源及掃描源,可使相應(yīng)系統(tǒng)的檢測(cè)過(guò)程大大簡(jiǎn)化,降低檢測(cè)費(fèi)用并且提高檢測(cè)精度。1.2研究概況及開(kāi)展趨勢(shì)信號(hào)發(fā)送器是指產(chǎn)生所需參數(shù)的電測(cè)試信號(hào)的儀器。因其應(yīng)用廣泛,種類繁多,特性各異,分類也不盡一致。按信號(hào)波形可分為正弦信號(hào)、函數(shù)信號(hào)、脈沖信號(hào)和隨機(jī)信號(hào)發(fā)生器等四大類。信號(hào)波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點(diǎn),不僅可以模擬各種復(fù)雜信號(hào),還可對(duì)頻率、幅值、相移、波形進(jìn)行動(dòng)態(tài)、及時(shí)的控制,并能夠與其它儀器進(jìn)行通訊,組成自動(dòng)測(cè)試系統(tǒng),因此被廣泛用于自動(dòng)控制系統(tǒng)、震動(dòng)鼓勵(lì)、通訊和儀器儀表領(lǐng)域。在70年代前,信號(hào)發(fā)生器主要有兩類:正弦波和脈沖波,而信號(hào)發(fā)生器介于兩類之間,能夠提供正弦波、余弦波、方波、三角波、上弦波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時(shí),需要采用較復(fù)雜的電路和機(jī)電結(jié)合的方法。這個(gè)時(shí)期的波形發(fā)生器多采用模擬電子技術(shù),而且模擬器件構(gòu)成的電路存在著尺寸大、價(jià)格貴、功耗大等缺點(diǎn),并且要產(chǎn)生較為復(fù)雜的信號(hào)波形,那么電路結(jié)構(gòu)非常復(fù)雜。同時(shí),主要表現(xiàn)為兩個(gè)突出問(wèn)題,一是通過(guò)電位器的調(diào)節(jié)來(lái)實(shí)現(xiàn)輸出頻率的調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖的占空比不可調(diào)節(jié)。在70年代后,微處理器的出現(xiàn),可以利用處理器、A/D/和D/A,硬件和軟件使波形發(fā)生器的功能擴(kuò)大,產(chǎn)生更加復(fù)雜的波形。這時(shí)期的波形發(fā)生器多以軟件為主,實(shí)質(zhì)是采用微處理器對(duì)DAC的程序控制,就可以得到各種簡(jiǎn)單的波形。90年代末,出現(xiàn)幾種真正高性能、高價(jià)格的信號(hào)發(fā)生器、但是HP公司推出了型號(hào)為HP770S的信號(hào)模擬裝置系統(tǒng),它由HP8770A任意波形數(shù)字化和HP1776A波形發(fā)生軟件組成。HP8770A實(shí)際上也只能產(chǎn)生8中波形,而且價(jià)格昂貴。不久以后,Analogic公司推出了型號(hào)為Data-2023的多波形合成器,Lecroy公司生產(chǎn)的型號(hào)為9100的任意波形發(fā)生器等。到了二十一世紀(jì),隨著集成電路技術(shù)的高速開(kāi)展,出現(xiàn)了多種工作頻率可過(guò)GHz的DDS芯片,同時(shí)也推動(dòng)了信號(hào)波形發(fā)生器的開(kāi)展,2003年,Agilent的產(chǎn)品33220A能夠產(chǎn)生17種波形,最高頻率可到達(dá)20M,2005年的產(chǎn)品N6030A能夠產(chǎn)生高達(dá)500MHz的頻率,采樣的頻率可達(dá)1.25GHz。由上面的產(chǎn)品可以看出,信號(hào)波形發(fā)生器開(kāi)展很快近幾年來(lái),國(guó)際上波形發(fā)生器技術(shù)開(kāi)展主要表達(dá)在以下幾個(gè)方面:〔1〕過(guò)去由于頻率很低應(yīng)用的范圍比擬狹小,輸出波形頻率的提高,使得波形發(fā)生器能應(yīng)用于越來(lái)越廣的領(lǐng)域。波形發(fā)生器軟件的開(kāi)發(fā)正使波形數(shù)據(jù)的輸入變得更加方便和容易。波形發(fā)生器通常允許用一系列的點(diǎn)、直線和固定的信號(hào)段把波形數(shù)據(jù)存入存儲(chǔ)器。同時(shí)可以利用一種強(qiáng)有力的數(shù)學(xué)方程輸入方式,復(fù)雜的波形可以由幾個(gè)比擬簡(jiǎn)單的公式復(fù)合成v=f(t)形式的波形方程的數(shù)學(xué)表達(dá)式產(chǎn)生。從而促進(jìn)了信號(hào)波形發(fā)生器向任意波形發(fā)生器的開(kāi)展,各種計(jì)算機(jī)語(yǔ)言的飛速開(kāi)展也對(duì)任意波形發(fā)生器軟件技術(shù)起到了推動(dòng)作用。目前可以利用可視化編程語(yǔ)言(如VisualBasic,VisualC等等)編寫(xiě)任意波形發(fā)生器的軟面板,這樣允許從計(jì)算機(jī)顯示屏上輸入任意波形,來(lái)實(shí)現(xiàn)波形的輸入?!?〕與VXI資源結(jié)合。目前,波形發(fā)生器由獨(dú)立的臺(tái)式儀器和適用于個(gè)人計(jì)算機(jī)的插卡以及新近開(kāi)發(fā)的VXI模塊。由于VXI總線的逐漸成熟和對(duì)測(cè)量?jī)x器的高要求,在很多領(lǐng)域需要使用VXI系統(tǒng)測(cè)量產(chǎn)生復(fù)雜的波形,VXI的系統(tǒng)資源提供了明顯的優(yōu)越性,但由于開(kāi)發(fā)VXI模塊的周期長(zhǎng),而且需要專門(mén)的VXI機(jī)箱的配套使用,使得波形發(fā)生器VXI模塊僅限于航空、軍事及國(guó)防等大型領(lǐng)域。在民用方面,VXI模塊遠(yuǎn)遠(yuǎn)不如臺(tái)式儀器更為方便?!?〕隨著信息技術(shù)蓬勃開(kāi)展,臺(tái)式儀器在走了一段下坡路之后,又重新繁榮起來(lái)。不過(guò)現(xiàn)在新的臺(tái)式儀器的形態(tài),和幾年前的己有很大的不同。這些新一代臺(tái)式儀器具有多種特性,可以執(zhí)行多種功能。而且外形尺寸與價(jià)格,都比過(guò)去的類似產(chǎn)品減少了一半。1.3本系統(tǒng)主要功能本系統(tǒng)設(shè)計(jì)制作一個(gè)基于DAC0832的信號(hào)發(fā)生器。能實(shí)現(xiàn)以下幾種功能:〔1〕用戶可以通過(guò)按鍵設(shè)定頻率、波形、幅度這些參數(shù)。?!?〕本系統(tǒng)輸出方波、三角波、正弦波和鋸齒波。最小步進(jìn)值為1HZ。〔4〕系統(tǒng)所有的設(shè)置的參數(shù)都能在LCD1602上顯示。〔5〕正弦波:1Hz~10KHz;三角波:1Hz~5KHz;方波:1Hz~10KHz;鋸齒波:1Hz~5KHz。2.總體方案論證與設(shè)計(jì) 根據(jù)所要實(shí)現(xiàn)的功能劃分,系統(tǒng)一共需要以下幾個(gè)模塊:主控模塊、顯示模塊、信號(hào)產(chǎn)生模塊、程控增益模塊和負(fù)壓產(chǎn)生模塊,以下就針對(duì)這幾個(gè)模塊的選型和論證進(jìn)行討論。方案一: 采用MSP430系列單片機(jī),該單片機(jī)是TI公司1996年開(kāi)始推向市場(chǎng)的一種16位超低功耗的混合信號(hào)處理器。其內(nèi)部集成了很多模擬電路、數(shù)字電路和微處理器,提供強(qiáng)大的功能。不過(guò)該芯片昂貴不適合一般的設(shè)計(jì)開(kāi)發(fā)。方案二 采用51系列的單片機(jī),該單片機(jī)是一個(gè)高可靠性,超低價(jià),無(wú)法解密,高性能的8位單片機(jī),32個(gè)IO口,且STC系列的單片機(jī)可以在線編程、調(diào)試,方便地實(shí)現(xiàn)程序的下載與整機(jī)的調(diào)試。因此選用方案二中的51系列單片機(jī)作為主控芯片。方案一: 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比擬適宜,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以不用此種作為顯示[3]。方案二: 采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格雖適中,對(duì)于顯示數(shù)字也最適宜,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用單片機(jī)口線少。但是由于數(shù)碼管動(dòng)態(tài)掃描需要借助74LS164移位存放器進(jìn)行移位,該芯片在電路調(diào)試時(shí)往往有很多障礙,所以不采用LED數(shù)碼管作為顯示。方案三: 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見(jiàn),對(duì)于本設(shè)計(jì)而言一個(gè)LCD1602的液晶屏即可,價(jià)格也還能接受,需要的借口線較多,但會(huì)給調(diào)試帶來(lái)諸多方便。所以本設(shè)計(jì)中方案三中的LCD1602液顯示屏作為顯示模塊。信號(hào)產(chǎn)生模塊的選型和論證方案一: 利用R2R型DA轉(zhuǎn)換器DAC0832進(jìn)行產(chǎn)生信號(hào),把要產(chǎn)生的信號(hào)根據(jù)其規(guī)那么建立一個(gè)ROM表,單片機(jī)每隔一段時(shí)間根據(jù)ROM表的值去改變數(shù)模轉(zhuǎn)換器的電壓輸出值,如果ROM表示根據(jù)正弦變化記錄的表那么輸出的波形那么為正弦波,如此類推,只用通過(guò)改變時(shí)間的間隔即可改變輸出波形的頻率。方案二: 利用集成芯片DDS芯片AD9833進(jìn)行產(chǎn)生信號(hào),該芯片可以通過(guò)與單片機(jī)通信設(shè)定其輸出波形和頻率,而且設(shè)定的頻率精度非常高。DDS芯片中主要包括頻率控制存放器、高速相位累加器和正弦計(jì)算器三個(gè)局部。頻率控制存放器可以串行或并行的方式裝載并存放用戶輸入的頻率控制碼。方案一由于使用的獨(dú)立的DA轉(zhuǎn)換器,設(shè)計(jì)比擬靈活,只要預(yù)先先把波形的ROM表生產(chǎn)好存儲(chǔ)到單片機(jī)內(nèi)即可輸出,定頻率的設(shè)定波形而選用DDS芯片那么只需要通過(guò)固定的時(shí)序控制那么能方便產(chǎn)生設(shè)。但是由于DDS本錢(qián)較為高昂,因此本設(shè)計(jì)選用DA轉(zhuǎn)換器來(lái)實(shí)現(xiàn)波形產(chǎn)生的功能。方案一:選用DAC0832搭配外部電路構(gòu)成程控放大器,由于DAC0832是一個(gè)8位DA轉(zhuǎn)換器,因此能設(shè)置成256檔放大倍數(shù)。通過(guò)單片機(jī)控制DA轉(zhuǎn)換器的數(shù)字端口即可改變放大倍數(shù)。方案二:選用VCA810作為主芯片進(jìn)行程控放大,VCA是一款高性能的壓控放大器芯片,它有一個(gè)增益控制引腳,用戶可以通過(guò)改變?cè)撃_的電壓進(jìn)行增益的控制,增益的控制范圍為-40dB~40dB,不過(guò)VCA810需要搭配外部的DA轉(zhuǎn)換器才能實(shí)現(xiàn)程控放大的功能。由于DAC0832的價(jià)格較VCA810廉價(jià),而且VCA810需要搭配外部DA轉(zhuǎn)換器才能實(shí)現(xiàn)增益改變的功能,因此這里選用DAC0832進(jìn)行程控放大。由于DAC0832搭配運(yùn)放后輸出的電壓為負(fù)電壓,為了能正常輸出,因此運(yùn)放的電源需要正負(fù)電源供電,因?yàn)橄到y(tǒng)供電只有一個(gè)5V電源,為了得到一個(gè)-5V電源,這里使用了ICL7660負(fù)壓產(chǎn)生芯片來(lái)實(shí)現(xiàn)。2.6系統(tǒng)整體設(shè)計(jì)概述本系統(tǒng)以單片機(jī)為控制核心,對(duì)系統(tǒng)進(jìn)行初始化,主要完成對(duì)鍵盤(pán)的響應(yīng)、液晶顯示、波形產(chǎn)生、增益調(diào)節(jié)等功能的控制,起到總控和協(xié)調(diào)各模塊之間工作的作用。放大電路數(shù)/模轉(zhuǎn)換電路單放大電路數(shù)/模轉(zhuǎn)換電路單片機(jī)顯示電路波形輸出復(fù)位電路波形輸出復(fù)位電路鍵盤(pán)電路鍵盤(pán)電路圖2.1系統(tǒng)結(jié)構(gòu)框圖3.系統(tǒng)硬件電路設(shè)計(jì)3.1主控模塊主控模塊模塊在整個(gè)系統(tǒng)中起著統(tǒng)籌的作用,需要檢測(cè)鍵盤(pán),波形控制等各種功能,同時(shí)驅(qū)動(dòng)液晶顯示相關(guān)參數(shù),在這里我們選用了51系列單片機(jī)中的STC12C5A60S2單片機(jī)作為系統(tǒng)的主控芯片[5]。51系列單片機(jī)最初是由Intel公司開(kāi)發(fā)設(shè)計(jì)的,但后來(lái)Intel公司把51核的設(shè)計(jì)方案賣(mài)給了幾家大的電子設(shè)計(jì)生產(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個(gè)引腳,4個(gè)8位并行I/O口,1個(gè)全雙工異步串行口,同時(shí)內(nèi)含5個(gè)中斷源,2個(gè)優(yōu)先級(jí),2個(gè)16位定時(shí)/計(jì)數(shù)器。STC12C5A60S2的存儲(chǔ)器系統(tǒng)由4K的程序存儲(chǔ)器(掩膜ROM),和128B的數(shù)據(jù)存儲(chǔ)器(RAM)組成。STC12C5A60S2單片機(jī)的根本組成框圖見(jiàn)圖3-1。圖3.1STC12C5A60S2單片機(jī)結(jié)構(gòu)圖3.1.1STC12C5A60S2單片機(jī)主要特性1.一個(gè)8位的微處理器(CPU)。2.片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(128B),用以存放可以讀/寫(xiě)的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等,SST89系列單片機(jī)最多提供1K的RAM。3.片內(nèi)程序存儲(chǔ)器ROM(4KB),用以存放程序、一些原始數(shù)據(jù)和表格。但也有一些單片機(jī)內(nèi)部不帶ROM/EPROM,如8031,8032,80C31等。目前單片機(jī)的開(kāi)展趨勢(shì)是將RAM和ROM都集成在單片機(jī)里面,這樣既方便了用戶進(jìn)行設(shè)計(jì)又提高了系統(tǒng)的抗干擾性。SST公司推出的89系列單片機(jī)分別集成了16K、32K、64KFlash存儲(chǔ)器,可供用戶根據(jù)需要選用。4.四個(gè)8位并行I/O接口P0~P3,每個(gè)口既可以用作輸入,也可以用作輸出。5.兩個(gè)定時(shí)器/計(jì)數(shù)器,每個(gè)定時(shí)器/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制。為方便設(shè)計(jì)串行通信,目前的52系列單片機(jī)都會(huì)提供3個(gè)16位定時(shí)器/計(jì)數(shù)器[4]。6.五個(gè)中斷源的中斷控制系統(tǒng)?,F(xiàn)在新推出的單片機(jī)都不只5個(gè)中斷源,例如SST89E58RD就有9個(gè)中斷源。7.一個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實(shí)現(xiàn)單片機(jī)之間或單機(jī)與微機(jī)之間的串行通信。8.片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率為12MHz。SST89V58RD最高允許振蕩頻率達(dá)40MHz,因而大大的提高了指令的執(zhí)行速度。圖3.2STC12C5A60S2單片機(jī)管腳圖局部引腳說(shuō)明:1.時(shí)鐘電路引腳XTAL1和XTAL2:XTAL2(18腳):接外部晶體和微調(diào)電容的一端;片內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。假設(shè)需采用外部時(shí)鐘電路時(shí),該引腳輸入外部時(shí)鐘脈沖。要檢查振蕩電路是否正常工作,可用示波器查看XTAL2端是否有脈沖信號(hào)輸出。XTAL1(19腳):接外部晶體和微調(diào)電容的另一端;在片內(nèi)它是振蕩電路反相放大器的輸入端。在采用外部時(shí)鐘時(shí),該引腳必須接地。2.控制信號(hào)引腳RST,ALE,PSEN和EA:RST/VPD(9腳):RST是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持備用電源的輸入端。當(dāng)主電源Vcc發(fā)生故障,降低到低電平規(guī)定值時(shí),將+5V電源自動(dòng)兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),就可以完成復(fù)位操作。RST引腳的第二功能是VPD,即接入RST端,為RAM提供備用電源,以保證存儲(chǔ)在RAM中的信息不喪失,從而合復(fù)位后能繼續(xù)正常運(yùn)行。ALE/PROG(30腳):地址鎖存允許信號(hào)端。當(dāng)8051上電正常工作后,ALE引腳不斷向外輸出正脈沖信號(hào),此頻率為振蕩器頻率fOSC的1/6。CPU訪問(wèn)片外存儲(chǔ)器時(shí),ALE輸出信號(hào)作為鎖存低8位地址的控制信號(hào)。平時(shí)不訪問(wèn)片外存儲(chǔ)器時(shí),ALE端也以振蕩頻率的1/6固定輸出正脈沖,因而ALE信號(hào)可以用作對(duì)外輸出時(shí)鐘或定時(shí)信號(hào)。如果想確定8051/8031芯片的好壞,可用示波器查看ALE端是否有脈沖信號(hào)輸出。如有脈沖信號(hào)輸出,那么8051/8031根本上是好的。ALE端的負(fù)載驅(qū)動(dòng)能力為8個(gè)LS型TTL(低功耗甚高速TTL)負(fù)載。此引腳的第二功能PROG在對(duì)片內(nèi)帶有4KBEPROM的8751編程寫(xiě)入(固化程序)時(shí),作為編程脈沖輸入端。PSEN(29腳):程序存儲(chǔ)允許輸出信號(hào)端。在訪問(wèn)片外程序存儲(chǔ)器時(shí),此端定時(shí)輸出負(fù)脈沖作為讀片外存儲(chǔ)器的選通信號(hào)。此引肢接EPROM的OE端(見(jiàn)后面幾章任何一個(gè)小系統(tǒng)硬件圖)。PSEN端有效,即允許讀出EPROM/ROM中的指令碼。PSEN端同樣可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。要檢查一個(gè)8051/8031小系統(tǒng)上電后CPU能否正常到EPROM/ROM中讀取指令碼,也可用示波器看PSEN端有無(wú)脈沖輸出。如有那么說(shuō)明根本上工作正常。EA/Vpp(31腳):外部程序存儲(chǔ)器地址允許輸入端/固化編程電壓輸入端。當(dāng)EA引腳接高電平時(shí),CPU只訪問(wèn)片內(nèi)EPROM/ROM并執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令,但當(dāng)PC(程序計(jì)數(shù)器)的值超過(guò)0FFFH(對(duì)8751/8051為4K)時(shí),將自動(dòng)轉(zhuǎn)去執(zhí)行片外程序存儲(chǔ)器內(nèi)的程序。當(dāng)輸入信號(hào)EA引腳接低電平(接地)時(shí),CPU只訪問(wèn)外部EPROM/ROM并執(zhí)行外部程序存儲(chǔ)器中的指令,而不管是否有片內(nèi)程序存儲(chǔ)器。對(duì)于無(wú)片內(nèi)ROM的8031或8032,需外擴(kuò)EPROM,此時(shí)必須將EA引腳接地。此引腳的第二功能是Vpp是對(duì)8751片內(nèi)EPROM固化編程時(shí),作為施加較高編程電壓(一般12V~21V)的輸入端。3.輸入/輸出端口P0/P1/P2/P3:P0口(~,39~32腳):P0口是一個(gè)漏極開(kāi)路的8位準(zhǔn)雙向I/O口。作為漏極開(kāi)路的輸出端口,每位能驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。當(dāng)P0口作為輸入口使用時(shí),應(yīng)先向口鎖存器(地址80H)寫(xiě)入全1,此時(shí)P0口的全部引腳浮空,可作為高阻抗輸入。作輸入口使用時(shí)要先寫(xiě)1,這就是準(zhǔn)雙向口的含義。在CPU訪問(wèn)片外存儲(chǔ)器時(shí),P0口分時(shí)提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。在此期間,P0口內(nèi)部上拉電阻有效。P1口(~,1~8腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。P1口每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。在P1口作為輸入口使用時(shí),應(yīng)先向P1口鎖存地址(90H)寫(xiě)入全1,此時(shí)P1口引腳由內(nèi)部上拉電阻拉成高電平。P2口~,21~28腳):P2口是一個(gè)帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。P口每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。在訪問(wèn)片外EPROM/RAM時(shí),它輸出高8位地址。P3口~,10~17腳):P3口是一個(gè)帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。P3口每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口與其它I/O端口有很大的區(qū)別,它的每個(gè)引腳都有第二功能,如下::(RXD)串行數(shù)據(jù)接收。:(RXD)串行數(shù)據(jù)發(fā)送。:(INT0#)外部中斷0輸入。:(INT1#)外部中斷1輸入。:(T0)定時(shí)/計(jì)數(shù)器0的外部計(jì)數(shù)輸入。:(T1)定時(shí)/計(jì)數(shù)器1的外部計(jì)數(shù)輸入。:(WR#)外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通。:(RD#)外部數(shù)據(jù)存儲(chǔ)器讀選通。3.1.2STC12C5A60S2單片機(jī)的中斷系統(tǒng)STC12C5A60S2系列單片機(jī)的中斷系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷效勞嵌套。由片內(nèi)特殊功能存放器中的中斷允許存放器IE控制CPU是否響應(yīng)中斷請(qǐng)求;由中斷優(yōu)先級(jí)存放器IP安排各中斷源的優(yōu)先級(jí);同一優(yōu)先級(jí)內(nèi)各中斷同時(shí)提出中斷請(qǐng)求時(shí),由內(nèi)部的查詢邏輯確定其響應(yīng)次序。[7]在單片機(jī)應(yīng)用系統(tǒng)中,常常會(huì)有定時(shí)控制需求,如定時(shí)輸出、定時(shí)檢測(cè)、定時(shí)掃描等;也經(jīng)常要對(duì)外部事件進(jìn)行計(jì)數(shù)。STC12C5A60S2單片機(jī)內(nèi)集成有兩個(gè)可編程的定時(shí)/計(jì)數(shù)器:T0和T1,它們既可以工作于定時(shí)模式,也可以工作于外部事件計(jì)數(shù)模式,此外,T1還可以作為串行口的波特率發(fā)生器。3.1.3單片機(jī)最小系統(tǒng)設(shè)計(jì)圖3.3單片機(jī)最小系統(tǒng)電路圖 圖3.3為單片機(jī)最小系統(tǒng)電路圖,單片機(jī)最小系統(tǒng)有單片機(jī)、時(shí)鐘電路、復(fù)位電路組成,時(shí)鐘電路選用了12MHZ的晶振提供時(shí)鐘,作用為給單片機(jī)提供一個(gè)時(shí)間基準(zhǔn),其中執(zhí)行一條根本指令需要的時(shí)間為一個(gè)機(jī)器周期,單片機(jī)的復(fù)位電路,按下復(fù)位按鍵之后可以使單片機(jī)進(jìn)入剛上電的起始狀態(tài)。圖中10K排阻為P0口的上拉電阻,由于P0口跟其他IO結(jié)構(gòu)不一樣為漏極開(kāi)路的結(jié)構(gòu),因此要加上拉電阻才能正常使用。3.2LCD液晶顯示器簡(jiǎn)介由于本設(shè)計(jì)中要求顯示界面顯示一些參數(shù),因此這里選用了LCD1602作為界面顯示,可以實(shí)時(shí)的顯示當(dāng)前信號(hào)輸出的頻率、波形、占空比以及幅值,同時(shí)也方便用戶設(shè)置相關(guān)的參數(shù)。3.2.1液晶原理介紹液晶顯示器(LCD)英文全稱為L(zhǎng)iquidCrystalDisplay,它一種是采用了液晶控制透光度技術(shù)來(lái)實(shí)現(xiàn)色彩的顯示器。和CRT顯示器相比,LCD的優(yōu)點(diǎn)是很明顯的。由于通過(guò)控制是否透光來(lái)控制亮和暗,當(dāng)色彩不變時(shí),液晶也保持不變,這樣就無(wú)須考慮刷新率的問(wèn)題。顯示接口用來(lái)顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示局部用的是LCD液晶模塊,采用一個(gè)16×2的字符型液晶顯示模塊[3]。點(diǎn)陣圖形式液晶由M行×N列個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對(duì)應(yīng)1個(gè)字節(jié)的8個(gè)位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元和顯示RAM區(qū)1024個(gè)字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和屏上相應(yīng)位置的亮暗對(duì)應(yīng)。一個(gè)字符由6×8或8×8點(diǎn)陣組成,即要找到和屏上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8個(gè)字節(jié),并且要使每個(gè)字節(jié)的不同的位為‘1’,其它的為‘0’,為‘1’的點(diǎn)亮,為‘0’的點(diǎn)暗,這樣一來(lái)就組成某個(gè)字符。但對(duì)于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比擬簡(jiǎn)單了,可讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。3LCD1602液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位存放器,指令存放器〔IR〕和數(shù)據(jù)存放器〔DR〕忙標(biāo)志〔BF〕,顯示數(shù)RAM〔DDRAM〕,字符發(fā)生器ROMA〔CGOROM〕字符發(fā)生器RAM〔CGRAM〕,地址計(jì)數(shù)器RAM(AC)。IR用于存放指令碼,只能寫(xiě)入不能讀出,DR用于存放數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫(xiě)入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來(lái)存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼,CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字符的對(duì)應(yīng)關(guān)系,CGRAM是為用戶編寫(xiě)特殊字符留用的,它的容量?jī)H64字節(jié),可以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,AC可以存儲(chǔ)DDRAM和CGRAM的地址,如果地址碼隨指令寫(xiě)入IR,那么IR自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM或CGRAM,LCD1602液晶模塊的引腳圖如圖3.4所示。圖3.4LCD1602引腳圖液晶存放器選擇控制如表3.1。表3.1存放器選擇控制RSR/W操作說(shuō)明00寫(xiě)入指令存放器〔去除屏等〕01讀busyflag〔DB7〕,以及讀取位址計(jì)數(shù)器〔DB0~DB6〕值10寫(xiě)入數(shù)據(jù)存放器〔顯示各字型等〕11從數(shù)據(jù)存放器讀取數(shù)據(jù)3STC12C5A60S2的接口如圖3-5所示。用STC12C5A60S2的P0口作為數(shù)據(jù)線,用P1.2、P1.1、P1.0分別作為L(zhǎng)CD的EN、R/W、RS。其中EN是下降沿觸發(fā)的片選信號(hào),R/W是讀寫(xiě)信號(hào),RS是存放器選擇信號(hào)本模塊設(shè)計(jì)要點(diǎn)如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點(diǎn)陣,然后設(shè)置為整體顯示,取消光標(biāo)和字體閃爍,最后設(shè)置為正向增量方式且不移位。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個(gè)字符數(shù)組,一個(gè)顯示字符,另一個(gè)顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個(gè)要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時(shí)2.5ms,判斷是否夠顯示的個(gè)數(shù),不夠那么地址加一取下一個(gè)要顯示的字符或數(shù)據(jù)[8]。圖3.5LCD1602與STC12C5A60S2的接口3.3鍵盤(pán)模塊設(shè)計(jì)本按鍵模塊使用的是多位獨(dú)立按鍵,按鍵一端接IO口,一端接地,由于單片機(jī)的IO口都有內(nèi)部上拉,因此當(dāng)按鍵沒(méi)有按下的時(shí)候,IO檢測(cè)到的時(shí)候高電平,當(dāng)按鍵按下的時(shí)候,相當(dāng)于IO短接地,因此這時(shí)候單片機(jī)檢測(cè)到的電平為低電平,通過(guò)檢測(cè)不同時(shí)刻的IO口狀態(tài)就可以判斷按下的是那個(gè)按鍵。4個(gè)按鍵分別代表以下功能,第一為功能按鍵,可以切換不同參數(shù)設(shè)置界面,第二個(gè)為切換按鍵,可以切換波形、頻率和幅值等參數(shù)進(jìn)行設(shè)置,第三個(gè)為增加按鍵,第四個(gè)為減少按鍵。鍵盤(pán)模塊電路圖如圖3.6所示。圖3.6鍵盤(pán)模塊電路圖3.4信號(hào)產(chǎn)生模塊設(shè)計(jì)這里由于要產(chǎn)生方波、正弦波、鋸齒波和三角波這幾種波形,綜合考慮選擇了DAC0832作為主芯片,DAC0832是一款是國(guó)家半導(dǎo)體公司采用先進(jìn)的DA轉(zhuǎn)換器,單片機(jī)通過(guò)查詢內(nèi)部的預(yù)存的波形ROM表來(lái)實(shí)現(xiàn)波形產(chǎn)生。3.4.1直接數(shù)字合成技術(shù)介紹本設(shè)計(jì)就是基于直接數(shù)字合成技術(shù)原理設(shè)計(jì)的,直接數(shù)字合成技術(shù)是美國(guó)學(xué)者于1971年提出的,即以全數(shù)字技術(shù),從相位概念出發(fā)直接合成所需波形的一中新的頻率合成原理,稱之為直接數(shù)字頻率合成器(DirectDigitalSynthesis)。這是頻率合成技術(shù)的一次重大革命。它的根本原理就是利用采樣原理,通過(guò)查表法產(chǎn)生波形。但是限于當(dāng)時(shí)微電子技術(shù)和數(shù)字信號(hào)處理技術(shù)的限制,DDS并沒(méi)有得到足夠的重視,隨著現(xiàn)代超大規(guī)模集成電路集成工藝的高速開(kāi)展,使得數(shù)字頻率合成技術(shù)得到了質(zhì)的飛躍,它在相對(duì)帶寬、頻率轉(zhuǎn)換時(shí)間、相位連續(xù)性、正交輸出、高分辨率以及集成化等一系列性能指標(biāo)方面,已遠(yuǎn)遠(yuǎn)超過(guò)了傳統(tǒng)頻率合成技術(shù)所能到達(dá)的水平。但是由于DDS數(shù)字化實(shí)現(xiàn)的固有特點(diǎn),決定了其輸出頻譜雜散較大。從20世紀(jì)80年代末開(kāi)始通過(guò)深入的研究認(rèn)識(shí)了DDS雜散成因及其分布規(guī)律后,對(duì)DDS相位累加器進(jìn)行了改良,ROM數(shù)據(jù)進(jìn)行了壓縮,使用了抖動(dòng)注入技術(shù)以及對(duì)DDS工藝結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)進(jìn)行了改良。DDS技術(shù)建立在采樣在采樣定理的根底上,它首先對(duì)需要產(chǎn)生的信號(hào)波形進(jìn)行采樣和量化,然后存入存儲(chǔ)器作為待產(chǎn)生信號(hào)波形的數(shù)據(jù)表。輸出信號(hào)波形時(shí),電路在一個(gè)高穩(wěn)定時(shí)鐘控制下從數(shù)據(jù)表中依次讀出信號(hào)波形的數(shù)據(jù),產(chǎn)生過(guò)數(shù)字化的信號(hào),這個(gè)信號(hào)再通過(guò)DAC轉(zhuǎn)換成所需的模擬信號(hào)波形。具體原理框圖如圖3.7所示。它的核心是相位累加器,由N位加法器與N位相位存放器構(gòu)成,類似一個(gè)簡(jiǎn)單的計(jì)數(shù)器。加法器將頻率控制字與累加存放器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至累加存放器的數(shù)據(jù)輸入端。這樣,相位累加器在時(shí)鐘作用下,不斷對(duì)頻率控制字進(jìn)行線性相位累加。由此可以看出,相位累加器輸出的數(shù)據(jù)就是合成信號(hào)的相位,相位累加器的溢出頻率就是DDS輸出的信號(hào)頻率。將相位存放器的輸出與相位控制字相加得到的數(shù)據(jù)作為一個(gè)地址對(duì)正弦查詢表進(jìn)行尋址,查詢表把輸入的地址相位信息映射成正弦波幅度信號(hào),通過(guò)D/A變換器把數(shù)字量變成模擬量,再經(jīng)過(guò)低通濾波器平滑并濾除不需要的取樣分量,以便輸出頻譜純潔的正弦波信號(hào)。在參考頻率為fs的情況下,DDS系統(tǒng)輸出信號(hào)的頻率fo為:〔3-1〕輸出信號(hào)的頻率分辨率Δfo為:〔3-2〕圖3.7DDS技術(shù)的原理框圖相對(duì)于其他信號(hào)波形產(chǎn)生技術(shù),DDS技術(shù)具有輸出信號(hào)的采樣頻率固定、頻率穩(wěn)定性高、信號(hào)頻率轉(zhuǎn)換時(shí)間輸出相位連續(xù)、全數(shù)字化、可編程和易于控制等優(yōu)點(diǎn)。但還是有兩點(diǎn)缺乏之處:〔1〕散分量豐富。這些雜散分量主要由相位舍位、幅度量化和DAC的非理想特性所引起,如圖3-8所示。因?yàn)樵趯?shí)際的DDS電路中,為了到達(dá)足夠小的頻率分辨率,通常將相位累加器的位數(shù)取大。但受體積和本錢(qián)的限制,即使采用先進(jìn)的存儲(chǔ)方法,ROM的容量都遠(yuǎn)小于此,因此在對(duì)ROM尋址時(shí),只是用相位累加器的高位去尋址,這樣不可防止地引起誤差,即相位舍位誤差。另外,一個(gè)幅值在理論上只能用一個(gè)無(wú)限長(zhǎng)的二進(jìn)制代碼才能精確表示,由于ROM的存儲(chǔ)能力,只采用了有限比特代碼來(lái)表示這一幅值,這必然會(huì)引起幅度量化誤差。另外,DAC的有限分辨率以及非線性也會(huì)引起誤差。所以對(duì)雜散的分析和抑制,一直是國(guó)內(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)行相接。存儲(chǔ)的硅鉻R-2R電阻梯形網(wǎng)絡(luò)將參考電流分開(kāi),并為電路提供適宜的溫度處理特性〔全范圍最大線性溫度誤差的0.05%〕。電路利用CMOS電流開(kāi)關(guān)和控制邏輯來(lái)取得最少的電能損耗和最小的輸出泄露電流誤差。特殊的電路也能提供TTL邏輯輸入電壓的水平兼容。雙緩沖可以使這些D/A轉(zhuǎn)換器在獲取下一個(gè)數(shù)位字時(shí)輸出相應(yīng)一個(gè)數(shù)位字的電壓。這就使得任何一個(gè)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è)計(jì)由于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)行提供。為了使輸出信號(hào)幅度范圍以0V為中間值,使用了AMP1B搭建成一個(gè)加法器進(jìn)行信號(hào)放大和偏置調(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è)計(jì)3.5程控放大模塊的設(shè)計(jì)程控放大模塊的結(jié)構(gòu)跟波形發(fā)生局部相似,區(qū)別在于波形發(fā)生局部的基準(zhǔn)電壓是固定的,通過(guò)查ROM的數(shù)組來(lái)改變輸出電壓來(lái)描繪出波形,而程控放大模塊的基準(zhǔn)是接到波形發(fā)生電路的輸出,因此輸出VOUT=VREF*DATA/256。其中DATA值通過(guò)改變單片機(jī)連接到DA數(shù)據(jù)口的電平值即可以改變其放大倍數(shù)。其硬件電路圖如圖3.11所示。圖3.11程控放大電路設(shè)計(jì)3.6負(fù)壓轉(zhuǎn)換電路設(shè)計(jì)由于電路中很多芯片都需要正負(fù)電源供電,而我們的電源只有正5伏的電壓,因此這里使用ICL7660進(jìn)行產(chǎn)生一個(gè)負(fù)5伏電壓。該ICL7660S超電壓轉(zhuǎn)換器是一個(gè)單片電路CMOS電壓轉(zhuǎn)換IC,保證顯著的性能優(yōu)于其他類似裝置。這是一個(gè)直接替換工業(yè)標(biāo)準(zhǔn)的ICL7660提供了一個(gè)擴(kuò)大經(jīng)營(yíng)范圍的電源電壓高達(dá)12V,低電源電流。無(wú)需外部二極管所需的ICL7660S。此外,高頻升壓腳已被納入,使用戶能夠?qū)崿F(xiàn)較低的輸出阻抗,盡管使用較小的電容器。圖3.12ICL7660S引腳所有改良中所強(qiáng)調(diào)的電氣規(guī)格一節(jié)。關(guān)鍵參數(shù)都保證在整個(gè)商業(yè),工業(yè)和軍事溫度范圍內(nèi)工作。ICL7660S執(zhí)行的電源電壓轉(zhuǎn)換從積極的消極的輸入電壓范圍1.5V至12V的,因此互補(bǔ)的輸出電壓-1.5V~-12V的。只有2個(gè)非關(guān)鍵外部電容器所需要的電荷泵和負(fù)責(zé)水庫(kù)的功能。該ICL7660S可以連接到作為一個(gè)電壓倍增,并會(huì)產(chǎn)生高達(dá)22.8V的12V輸入。它也可以被用來(lái)作為電壓倍增器或分壓器。圖3.13ICL7660硬件電路圖4.系統(tǒng)軟件設(shè)計(jì)4.1系統(tǒng)軟件總體設(shè)計(jì)圖4.1主程序流程圖主程序流程圖如圖4.1所示,單片機(jī)上電后先進(jìn)行初始化,去除一些參數(shù)的初值,然后顯示相關(guān)波形的參數(shù),每個(gè)循環(huán)單片機(jī)都會(huì)判斷用戶是否按下設(shè)定按鍵,如果按下那么進(jìn)入相關(guān)參數(shù)的設(shè)置。圖4.2LCD1602初始化子信號(hào)流程圖首先先調(diào)用液晶自定義的字庫(kù),設(shè)置好DDRAM地址后在第一行顯示,根據(jù)程序中的數(shù)據(jù)設(shè)置顯示數(shù)據(jù)的首地址并設(shè)置循環(huán)量,在循環(huán)過(guò)程中不斷的取字符代碼直到終止,第二行的顯示過(guò)程同一行的顯示過(guò)程一樣,兩行顯示完畢后便結(jié)束子程序[4]。4.2程序設(shè)計(jì)原理軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計(jì)根本定型后,也就根本上決定下來(lái)了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來(lái)看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量,計(jì)算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門(mén)用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義〔輸入輸出定義〕。在各執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問(wèn)題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤(pán)設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對(duì)來(lái)講,執(zhí)行模塊任務(wù)明確單純,比擬容易編程,而監(jiān)控程序較易出問(wèn)題。這如同當(dāng)一名操作工人比擬容易,而當(dāng)一個(gè)廠長(zhǎng)就比擬難了。軟件任務(wù)分析的另一個(gè)內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個(gè)系統(tǒng)軟件可分為后臺(tái)程序〔背景程序〕和前臺(tái)程序。后臺(tái)程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時(shí)性要求不是太高,延誤幾十ms甚至幾百ms也沒(méi)關(guān)系,故通常將監(jiān)控程序〔鍵盤(pán)解釋程序〕,顯示程序和打印程序等與操作者打交道的程序放在后臺(tái)程序中執(zhí)行;而前臺(tái)程序安排一些實(shí)時(shí)性要求較高的內(nèi)容,如定時(shí)系統(tǒng)和外部中斷〔如掉電中斷〕。也可以將全部程序均安排在前臺(tái),后臺(tái)程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)〞,以利于系統(tǒng)節(jié)電和抗干擾。5.系統(tǒng)調(diào)試5.1硬件調(diào)試本系統(tǒng)的電路較為復(fù)雜,涉及的模塊比擬多,其中包含信號(hào)產(chǎn)生模塊,程控增益模塊,單片機(jī)最小系統(tǒng)模塊,液晶模塊,因此對(duì)于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯(cuò)誤,那么會(huì)對(duì)檢測(cè)造成很大的不便,而且電路的交線較多,對(duì)于各種鋒利的引腳要注意處理,否那么會(huì)刺破帶有包皮的導(dǎo)線,那么會(huì)對(duì)電路造成短路現(xiàn)象。在制作硬件電路之前,我們先根據(jù)實(shí)際需要的功能劃分硬件模塊,并且在PROTEL里面畫(huà)出其硬件原理圖和PCB圖,檢查無(wú)誤后開(kāi)始再開(kāi)始焊接。在本系統(tǒng)的硬件調(diào)試中遇到了很多的問(wèn)題?;叵脒@些問(wèn)題只要認(rèn)真多思考都是可以防止的,以下為主要的問(wèn)題:?jiǎn)栴}:一開(kāi)始波形一直輸出不正常,輸出的電壓一直都是正電壓。解決:由于DA轉(zhuǎn)換器后面的電壓轉(zhuǎn)換電路輸出為負(fù)電壓,因此運(yùn)放需要使用正負(fù)電源供電,后來(lái)使用ICL7660芯片產(chǎn)生出-5V電壓供電便解決了問(wèn)題。5.2軟件調(diào)試本系統(tǒng)是一個(gè)比擬復(fù)雜的數(shù)字系統(tǒng),所以對(duì)于它的程序也較為復(fù)雜,所以在編寫(xiě)程序和調(diào)試時(shí)出現(xiàn)了相對(duì)較多的問(wèn)題。首先為了更好的測(cè)試效果,我最開(kāi)始是直接在PROTUES軟件下進(jìn)行一些顯示界面仿真,在確定無(wú)誤后,再把程序燒錄到實(shí)物中運(yùn)行。最后經(jīng)過(guò)屢次的模塊子程序的修改,一步一步的完成,最終解決了軟件上的各種問(wèn)題。在軟件的調(diào)試過(guò)程中主要遇到的問(wèn)題如下:?jiǎn)栴}1.燒入程序后,LCD液晶顯示閃動(dòng),而且亮度不均勻。解決:首先對(duì)調(diào)用的延時(shí)進(jìn)行逐漸修改,可以解決顯示閃動(dòng)問(wèn)題。其次,由于本作品使作動(dòng)態(tài)掃描方式顯示的數(shù)字,動(dòng)態(tài)掃描很快,人的肉眼是無(wú)法看出,但是調(diào)用的顯示程序時(shí),如果不在反回時(shí)屏蔽掉最后的附值,那么會(huì)出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問(wèn)題。問(wèn)題2.當(dāng)用戶按下按鍵的時(shí)候,單片機(jī)讀取的數(shù)值跟設(shè)定的數(shù)值不對(duì)。解決:重新檢查獨(dú)立鍵盤(pán)電路的連接,重新建立一個(gè)新的對(duì)應(yīng)關(guān)系。結(jié)論通過(guò)這次畢業(yè)設(shè)計(jì),我學(xué)到了不少課本上沒(méi)有的知識(shí),也鍛煉了自己的動(dòng)手能力,將以前學(xué)過(guò)的零散的知識(shí)串到一起。經(jīng)過(guò)我長(zhǎng)時(shí)間的設(shè)計(jì)及調(diào)試,本系統(tǒng)根本能實(shí)現(xiàn)本系統(tǒng)的所有功能。缺乏之處有:1.硬件的穩(wěn)定性有待進(jìn)一步提高2.系統(tǒng)界面人性化還缺乏。我的綜合設(shè)計(jì)主要涉及硬件和軟件兩方面的內(nèi)容,通過(guò)這些我的硬件和軟件開(kāi)發(fā)能力都獲得了提高。首先硬件方面,根本了解了電子產(chǎn)品的開(kāi)發(fā)流程和所要做的工作。根本掌握了Proteus原理圖的方法,并設(shè)計(jì)了一個(gè)單片機(jī)最小系統(tǒng)。通過(guò)開(kāi)發(fā)板的設(shè)計(jì)和硬件搭建的過(guò)程,使我對(duì)51系單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路引腳和連接方法,如LCD液晶,鍵盤(pán)等。并且我學(xué)會(huì)了分析問(wèn)題解決問(wèn)題的能力,加深了對(duì)所學(xué)理論知識(shí)的理解和運(yùn)用。我的動(dòng)手能力得到了很大的提高,創(chuàng)新意識(shí)得到了鍛煉。致謝在這次畢業(yè)設(shè)計(jì)中,最應(yīng)該感謝的是我的指導(dǎo)老師梁芳老師,本次多功能信號(hào)發(fā)生器的成功設(shè)計(jì)與梁老師的幫助是息息相關(guān)的。導(dǎo)師淵博的專業(yè)知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作態(tài)度,誨人不倦的高尚師德,嚴(yán)以律己、寬厚待人的崇高風(fēng)范,樸實(shí)無(wú)華。平易近人的人格魅力對(duì)我影響深遠(yuǎn)。從論文到選題的完成,每一步都是在指導(dǎo)老師的指導(dǎo)下完成的,傾注了導(dǎo)師的大量心血,再次謹(jǐn)向?qū)煴硎境绺呔匆?。還有就是應(yīng)該感謝我校陜西理工學(xué)院圖書(shū)館的相關(guān)及圖書(shū)及文獻(xiàn),以及網(wǎng)上前輩們的優(yōu)秀研究成果,通過(guò)對(duì)這些資料的學(xué)習(xí)與借鑒,完成和豐富了本次畢業(yè)設(shè)計(jì)的內(nèi)容。再加上自己的思考和領(lǐng)悟才能預(yù)期成功地完成的本次目標(biāo)。梁老師在論文前期、中期、后期都對(duì)我的想法及設(shè)計(jì)經(jīng)行了獨(dú)特地分析,這深深的影響了我對(duì)學(xué)習(xí)的態(tài)度,也大大促進(jìn)了本次設(shè)計(jì)的順利進(jìn)行。參考文獻(xiàn)[1]吳巖.單片機(jī)在電子技術(shù)中的應(yīng)用和開(kāi)發(fā)技術(shù)研究[J].黑龍江科技信息,202319-24[2]李富林.淺談單片機(jī)的應(yīng)用領(lǐng)域[J].網(wǎng)絡(luò)財(cái)富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è)計(jì)[M].機(jī)械工業(yè)出版社,2004[7]馬忠梅等.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006[8]劉樹(shù)中,孫書(shū)膺,王春平.單片機(jī)和液晶顯示驅(qū)動(dòng)器串行接口的實(shí)現(xiàn)[J].微計(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;//計(jì)數(shù)器停止計(jì)數(shù) ET0=1;//開(kāi)啟計(jì)數(shù)器0中斷 LCDDispString(0,1,"wave:SinVo:5.0V"); LCDDispString(0,2,"f:01000HzD:--%"); EA=1;//開(kāi)總中斷 while(1) { key_scan(); }} //gType=0:正弦波//gType=1:方波//gType=2:三角波//gType=3:鋸齒波voidtimer0(void)interrupt1//計(jì)數(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í)函數(shù),延時(shí)40us的整數(shù)倍,傳入值n代表延時(shí) 時(shí)間到n*40us,不能實(shí)現(xiàn)準(zhǔn)確延時(shí),只能實(shí)現(xiàn)大 概時(shí)間的延時(shí),利用的是指令實(shí)現(xiàn)延時(shí)功能。不允 許外部調(diào)用。Calls:沒(méi)有調(diào)用其它函數(shù)CalledBy:voidLCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);Input:unsignedintn用于延時(shí)時(shí)間確實(shí)定,取值、為1~65535Output:無(wú)Return:無(wú)***********************************************************/voidDelayN40us(unsignedintn){ unsignedinti; unsignedcharj; for(i=n;i>0;i--) for(j=0;j<80;j++);}/*********************************************************Function:voidLCDInit(void);Description:液晶初始化函數(shù),對(duì)LCD1602進(jìn)行初始化操作,在每一次實(shí)用液晶前必須用到的,外部可調(diào)用函數(shù)。Calls:voidLCDWriteCommand(unsignedchardat); DelayN40us(unsignedintn);CalledBy:main();或其他Input:無(wú)Output:無(wú)Return:無(wú)***********************************************************/voidLCDInit(void) { LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7*/ LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7*/ LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7,有的液晶做的不好,寫(xiě)三遍保險(xiǎn)?。。。?/ LCDWriteCommand(0x0c);/*整體顯示,關(guān)光標(biāo),不閃爍*/ LCDWriteCommand(0x06);/*設(shè)定輸入方式,增量不移位*/ LCDWriteCommand(0x01);/*去除屏幕顯示*/ DelayN40us(100); /*清屏延時(shí)*/}/*********************************************************Function:staticvoidLCDWriteCommand(unsignedchardat);Description:寫(xiě)命令函數(shù),對(duì)LCD1602內(nèi)部存放器進(jìn)行操作,不允許外部調(diào)用Calls:DelayN40us(unsignedintn);CalledBy:voidLCDInit(void); voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat); voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat); Input:unsignedchardat寫(xiě)入的命令Output:無(wú)Return:無(wú)***********************************************************/staticvoidLCDWriteCommand(unsignedchardat){ LCD_DB=dat;LCD_RS=0;/*選擇寫(xiě)指令*/ LCD_RW=0;/*寫(xiě)入指令值*/ LCD_E=1;/*使能LCD1602*/ LCD_E=0; DelayN40us(1);/*寫(xiě)命令延時(shí)*/}/*********************************************************Function:staticvoidLCDWriteData(unsignedchardat);Description:寫(xiě)數(shù)據(jù)函數(shù),將數(shù)據(jù)寫(xiě)入LCD1602中,不允許外 部調(diào)用Calls:DelayN40us(unsignedintn);CalledBy:voidLCDInit(void); voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat); voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat); Input:unsignedchardat寫(xiě)入的數(shù)據(jù)Output:無(wú)Return:無(wú)***********************************************************/staticvoidLCDWriteData(unsignedchardat) //寫(xiě)數(shù)據(jù)函數(shù){ LCD_DB=dat; LCD_RS=1;/*選擇寫(xiě)數(shù)據(jù)*/ LCD_RW=0;/*寫(xiě)入數(shù)據(jù)值*/ LCD_E=1;/*使能LCD1602*/ LCD_E=0; DelayN40us(1);/*寫(xiě)數(shù)據(jù)延時(shí)*/}/*********************************************************Function:voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat);Description:在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)字符,可外部調(diào)用。Calls:LCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);CalledBy:main();及其他Input:X〔0-15),y(1-2),dat為顯示字符‘a(chǎn)’形式。Output:無(wú)Return:無(wú)***********************************************************/voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat){ unsignedcharaddress; if(y==1) address=0x80+x; /*顯示在第一排的時(shí)候的x的地址*/ else address=0xc0+x; /*顯示在第二排的時(shí)候的x的地址*/ LCDWriteCommand(address); /*輸入地址*/ LCDWriteData(dat); /*輸入數(shù)據(jù)*/}/*********************************************************Function:voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat);Description:在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)數(shù)字,可外部調(diào)用。Calls:LCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);CalledBy:main();及其他Input:X〔0-15),y(1-2),dat(0-9)。Output:無(wú)Return:無(wú)***********************************************************/voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat){ unsignedcharaddress; if(y==1) address=0x80+x; /*顯示在第一排的時(shí)候的x的地址*/ else address=0xc0+x; /*顯示在第二排的時(shí)候的x的地址*/ LCDWriteCommand(address); /*輸入地址*/ LCDWriteData(dat+48); /*輸入數(shù)據(jù)*/}/*********************************************************Function:voidLCDDispString(unsignedcharx,unsignedchary,unsignedchar*string)Description:在屏幕上顯示一串字符,考慮到我的數(shù)值均存儲(chǔ)于數(shù)組中,為方便而作,允許外部調(diào)用

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論