單片機課程設(shè)計(波形發(fā)生器)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  1 波形發(fā)生器概述1</p><p>  1.1波形發(fā)生器的背景1</p><p>  1.2波形發(fā)生器的發(fā)展?fàn)顩r1</p><p><b>  2 設(shè)計要求2</b></p><p><b>

2、  3 硬件設(shè)計3</b></p><p>  3.1 設(shè)計方案3</p><p>  3.1.1 系統(tǒng)總框圖3</p><p>  3.2 8255可編程通用并行接口芯片4</p><p>  3.3 DAC0832芯片6</p><p>  3.4 ADC0832芯片7</p>

3、<p>  3.5 51單片機原理………………………………………………….</p><p>  3.6 硬件原理圖設(shè)計……………………………………………….</p><p><b>  4 軟件設(shè)計8</b></p><p>  4.1軟件框圖設(shè)計…………………………………………………</p><p>  

4、4.2 源程序代碼…………………………………………………………</p><p>  5系統(tǒng)調(diào)試及分析17</p><p>  5.1 運行結(jié)果17</p><p>  5.2軟件調(diào)試錯誤及處理19</p><p>  5.3硬件接線調(diào)試19</p><p><b>  6心得體會19</b&g

5、t;</p><p><b>  參考文獻19</b></p><p><b>  附錄120</b></p><p><b>  1.波形發(fā)生器概述</b></p><p><b>  1.1背景</b></p><p>  

6、波形發(fā)生器也稱函數(shù)發(fā)生器,作為實驗信號源,是現(xiàn)今各種電子電路實驗設(shè)計應(yīng)用中必不可少的儀器設(shè)備之一。目前,市場上常見的波形發(fā)生器多為純硬件的搭接而成,且波形種類有限,多為鋸齒波,正弦波,方波,三角波等波形。在電子工程、通信工程、自動控制、遙測控制、測量儀器、儀表和計算機等技術(shù)領(lǐng)域,經(jīng)常需要用到各種各樣的信號波形發(fā)生器。隨著集成電路的迅速發(fā)展,用集成電路可很方便地構(gòu)成各種信號波形發(fā)生器。用集成電路實現(xiàn)的信號波形發(fā)生器與其它信號波形發(fā)生器相比

7、,其波形質(zhì)量、幅度和頻率穩(wěn)定性等性能指標(biāo),都有了很大的提高。</p><p>  1.2波形發(fā)生器的發(fā)展?fàn)顩r及應(yīng)用</p><p>  波形發(fā)生器是能夠產(chǎn)生大量的標(biāo)準(zhǔn)信號和用戶定義信號,并保證高精度、高穩(wěn)定性、可重復(fù)性和易操作性的電子儀器。函數(shù)波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點,不僅可以模擬各種復(fù)雜信號,還可對頻率、幅值、相移、波形進行動態(tài)、及時的控制,并能夠與其它儀器進行通

8、訊,組成自動測試系統(tǒng),因此被廣泛用于自動控制系統(tǒng)、震動激勵、通訊和儀器儀表領(lǐng)域。</p><p>  在 70 年代前,信號發(fā)生器主要有兩類:正弦波和脈沖波,而函數(shù)發(fā)生器介于兩類之間,能夠提供正弦波、余弦波、方波、三角波、上弦波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時,需要采用較復(fù)雜的電路和機電結(jié)合的方法。這個時期的波形發(fā)生器多采用模擬電子技術(shù),而且模擬器件構(gòu)成的電路存在著尺寸大、價格貴、功耗大等缺點,并且要產(chǎn)生較為復(fù)

9、雜的信號波形,則電路結(jié)構(gòu)非常復(fù)雜。同時,主要表現(xiàn)為兩個突出問題,一是通過電位器的調(diào)節(jié)來實現(xiàn)輸出頻率的調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖的占空比不可調(diào)節(jié)。</p><p>  在 70 年代后,微處理器的出現(xiàn),可以利用處理器、A/D/和 D/A,硬件和軟件使波形發(fā)生器的功能擴大,產(chǎn)生更加復(fù)雜的波形。這時期的波形發(fā)生器多以軟件為主,實質(zhì)是采用微處理器對 DAC的程序控制,就可以得到各種簡單的波形。 <

10、/p><p>  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ā)生器等。 </p>

11、<p>  到了二十一世紀(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ā)生器技術(shù)發(fā)展主要體現(xiàn)在以

12、下幾個方面:</p><p> ?。?)過去由于頻率很低應(yīng)用的范圍比較狹小,輸出波形頻率的提高,使得波形發(fā)生器能應(yīng)用于越來越廣的領(lǐng)域。波形發(fā)生器軟件的開發(fā)正使波形數(shù)據(jù)的輸入變得更加方便和容易。波形發(fā)生器通常允許用一系列的點、直線和固定的函數(shù)段把波形數(shù)據(jù)存入存儲器。同時可以利用一種強有力的數(shù)學(xué)方程輸入方式,復(fù)雜的波形可以由幾個比較簡單的公式復(fù)合成 v=f (t)形式的波形方程的數(shù)學(xué)表達式產(chǎn)生。從而促進了函數(shù)波形發(fā)生

13、器向任意波形發(fā)生器的發(fā)展,各種計算機語言的飛速發(fā)展也對任意波形發(fā)生器軟件技術(shù)起到了推動作用。目前可以利用可視化編程語言(如Visual Basic ,Visual C 等等)編寫任意波形發(fā)生器的軟面板,這樣允許從計算機顯示屏上輸入任意波形,來實現(xiàn)波形的輸入。 </p><p> ?。?)與VXI資源結(jié)合。目前,波形發(fā)生器由獨立的臺式儀器和適用于個人計算機的插卡以及新近開發(fā)的VXI模塊。由于VXI總線的逐漸成熟

14、和對測量儀器的高要求,在很多領(lǐng)域需要使用VXI系統(tǒng)測量產(chǎn)生復(fù)雜的波形,VXI的系統(tǒng)資源提供了明顯的優(yōu)越性,但由于開發(fā)VXI模塊的周期長,而且需要專門的VXI機箱的配套使用,使得波形發(fā)生器VXI模塊僅限于航空、軍事及國防等大型領(lǐng)域。在民用方面,VXI模塊遠遠不如臺式儀器更為方便。 </p><p>  (3)隨著信息技術(shù)蓬勃發(fā)展,臺式儀器在走了一段下坡路之后,又重新繁榮起來。不過現(xiàn)在新的臺式儀器的形態(tài),和幾年前的己

15、有很大的不同。這些新一代臺式儀器具有多種特性,可以執(zhí)行多種功能。而且外形尺寸與價格,都比過去的類似產(chǎn)品減少了一半。</p><p>  早在 1978 年,由美國 Wavetek 公司和日本東亞電波工業(yè)公司公布了最高取樣頻率為 5MHz ,可以形成 256 點(存儲長度)波形數(shù)據(jù),垂直分辨率為8bit,主要用于振動、醫(yī)療、材料等領(lǐng)域的第一代高性能信號源,經(jīng)過將近30年的發(fā)展,伴隨著電子元器件、電路、及生產(chǎn)設(shè)備的高

16、速化、高集成化,波形發(fā)生器的性能有了飛速的提高。變得操作越來越簡單而輸出波形的能力越來越強。波形操作方法的好壞,是由波形發(fā)生器控制軟件質(zhì)量保證的,編輯功能增加的越多,波形形成的操作性越好。</p><p><b>  2.設(shè)計要求</b></p><p><b>  2.1設(shè)計內(nèi)容</b></p><p>  設(shè)計一個波形

17、發(fā)生器,能產(chǎn)生三角波、方波、正弦波。用按鍵來選擇波形輸出(A按鍵輸出三角波,B按鍵輸出方波,C按鍵輸出正弦波),調(diào)節(jié)電位器能改變輸出波形的頻率。并用四位LED顯示,第1位顯示目前輸出什么波形,后3位顯示頻率值,即經(jīng)A/D轉(zhuǎn)換后得到的數(shù)字值。</p><p><b>  2.2設(shè)計目的</b></p><p>  1.了解波形發(fā)生器及鍵盤掃描的基本方法</p>

18、;<p>  2.掌握軟硬件的相互配合和相互作用的關(guān)系</p><p><b>  3.硬件設(shè)計</b></p><p><b>  3.1設(shè)計方案</b></p><p>  3.1.1系統(tǒng)總體框圖:</p><p><b>  系統(tǒng)框圖</b></p&g

19、t;<p>  使用51單片機來控制8255輸入輸出,鍵盤輸入和七段數(shù)碼管顯示由8255控制,按A選擇三角波代碼為A,按B選擇方波代碼為B,按下C選擇正弦波代碼為C。通過軟件程序來判斷是哪種波形,由DAC0832產(chǎn)生波形。通過ADC0809,將模擬量轉(zhuǎn)換成數(shù)字量,數(shù)字量可作為軟件中的參數(shù),通過電位器調(diào)節(jié)模擬量而改變數(shù)字量從而改變波形頻率。波形的頻率可以通過一系列的算法計算出顯示在數(shù)碼管上。</p><p

20、>  3.2 8255芯片</p><p>  8255是Intel公司生產(chǎn)的可編程并行I/O接口芯片,有3個8位并行I/O口。具有3個通道3種工作方式的可編程并行接口芯片(40引腳)。 其各口功能可由軟件選擇,使用靈活,通用性強。8255可作為單片機與多種外設(shè)連接時的中間接口電路。 </p><p>  8255作為主機與外設(shè)的連接芯片,必須提供與主機相連的3個總線接口,即數(shù)據(jù)線、

21、地址線、控制線接口。同時必須具有與外設(shè)連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內(nèi)部結(jié)構(gòu)分為3個部分:與CPU連接部分、與外設(shè)連接部分、控制部分。 </p><p>  1)與CPU連接部分 </p><p>  根據(jù)定義,8255能并行傳送8位數(shù)據(jù),所以其數(shù)據(jù)線為8根D0~D7。由于8255具有3個通道A、B、C,所以只要兩根地址線就能尋址A、B、

22、C口及控制寄存器,故地址線為兩根A0~A1。此外CPU要對8255進行讀、寫與片選操作,所以控制線為片選、復(fù)位、讀、寫信號。各信號的引腳編號如下: </p><p> ?。?)數(shù)據(jù)總線DB:編號為D0~D7,用于8255與CPU傳送8位數(shù)據(jù)。 </p><p>  (2)地址總線AB:編號為A0~A1,用于選擇A、B、C口與控制寄存器。 </p><p> ?。?)

23、控制總線CB:片選信號、復(fù)位信號RST、寫信號、讀信號。當(dāng)CPU要對8255進行讀、寫操作時,必須先向8255發(fā)片選信號選中8255芯片,然后發(fā)讀信號或?qū)懶盘枌?255進行讀或?qū)憯?shù)據(jù)的操作。 </p><p>  2)與外設(shè)接口部分 </p><p>  根據(jù)定義,8255有3個通道A、B、C與外設(shè)連接,每個通道又有8根線與外設(shè)連接,所以8255可以用24根線與外設(shè)連接,若進行開關(guān)量控制,

24、則8255可同時控制24路開關(guān)。各通道的引腳編號如下: </p><p> ?。?)A口:編號為PA0~PA7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。 </p><p>  (2)B口:編號為PB0~PB7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。 </p><p> ?。?)C口:編號為PC0~PC7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù),當(dāng)8255工作于應(yīng)答

25、I/O方式時,C口用于應(yīng)答信號的通信。 </p><p><b>  3)控制器 </b></p><p>  8255將3個通道分為兩組,即PA0~PA7與PC4~PC7組成A組,PB0~PB7與PC0~PC3組成B組。如圖7.5所示,相應(yīng)的控制器也分為A組控制器與B組控制器,各組控制器的作用如下: </p><p> ?。?)A組控制器:控

26、制A口與上C口的輸入與輸出。 </p><p> ?。?)B組控制器:控制B口與下C口的輸入與輸出。 </p><p><b>  8255管腳</b></p><p><b>  特性</b></p><p>  (1)一個并行輸入/輸出的LSI芯片,多功能的I/O器件,可作為CPU總線與外圍的接

27、口. </p><p>  (2)具有24個可編程設(shè)置的I/O口,即3組8位的I/O口為PA口,PB口和PC口.它們又可分為兩組12位的I/O口,A組包括A口及C口(高4位,PC4~PC7),B組包括B口及C口(低4位,PC0~PC3).A組可設(shè)置為基本的I/O口,閃控(STROBE)的I/O閃控式,雙向I/O3種模式;B組只能設(shè)置為基本I/O或閃控式I/O兩種模式,而這些操作模式完全由控制寄存器的控制字決定.

28、</p><p><b>  引腳功能</b></p><p>  RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 </p><p>  CS:芯片選擇信號線,當(dāng)這個輸入引腳為低電平時,即/CS=0時,表示芯片被選中,允許8255與CPU進行通訊;/CS=1時,8255無

29、法與CPU做數(shù)據(jù)傳輸. </p><p>  RD:讀信號線,當(dāng)這個輸入引腳為低跳變沿時,即/RD產(chǎn)生一個低脈沖且/CS=0時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 </p><p>  WR:寫入信號,當(dāng)這個輸入引腳為低跳變沿時,即/WR產(chǎn)生一個低脈沖且/CS=0時,允許CPU將數(shù)據(jù)或控制字寫入8255。 </p><

30、p>  D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。 </p><p>  8255具有3個相互獨立的輸入/輸出通道端口,用+5V單電源供電,能在以下三種方式下工作。 </p><p>  方式0————基本輸入輸出方式;方式1————選通輸入/出方式;方式2————雙

31、向選通輸入/輸出方式; </p><p>  PA0~PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。 工作于三種方式中的任何一種; </p><p>  PB0~PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 不能工作于方式二; </p><p>  PC0~PC7:端口C輸入輸出線,一個8位

32、的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。'不能工作于方式一或二。 </p><p>  A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器. </p><p>  當(dāng)A1=0,A0=0時,P

33、A口被選擇; </p><p>  當(dāng)A1=0,A0=1時,PB口被選擇; </p><p>  當(dāng)A1=1,A0=0時,PC口被選擇; </p><p>  當(dāng)A1=1.A0=1時,控制寄存器被選擇.</p><p>  3.3 DAC0832芯片</p><p>  D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時

34、間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會出錯); </p><p>  * ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效; </p><p>  * CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效; </p><p>  * WR1:數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時,數(shù)據(jù)鎖存

35、器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存; </p><p>  * XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應(yīng)大于500ns)有效; </p><p>  * WR2:DAC寄存器選通輸入線,負脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數(shù)據(jù)鎖存器的

36、內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。 </p><p>  * IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化; </p><p>  * IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù); </p><p>  * Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度; </p><p>  * Vcc:

37、電源輸入端,Vcc的范圍為+5V~+15V; </p><p>  * VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V~+10V; </p><p>  * AGND:模擬信號地 </p><p>  DGND:數(shù)字信號地 </p><p>  3.4 ADC0809芯片</p><p>  ADC0809是美國國

38、家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式A/D模數(shù)轉(zhuǎn)換器。其內(nèi)部有一個8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉(zhuǎn)換。是目前國內(nèi)應(yīng)用最廣泛的8位通用A/D芯片 </p><p><b>  1.主要特性</b></p><p>  1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。 </p>

39、<p>  2)具有轉(zhuǎn)換起??刂贫?。 </p><p>  3)轉(zhuǎn)換時間為100μs(時鐘為640kHz時),130μs(時鐘為500kHz時)  </p><p>  4)單個+5V電源供電 </p><p>  5)模擬輸入電壓范圍0~+5V,不需零點和滿刻度校準(zhǔn)。 </p><p>  6)工作溫度范圍為-40~+85攝氏度

40、</p><p>  7)低功耗,約15mW。 </p><p><b>  2.內(nèi)部結(jié)構(gòu)</b></p><p>  ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如圖所示,它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器、逐次逼近寄存器、邏輯控制和定時電路組成。 </p><p>

41、  3.外部特性(引腳功能)</p><p>  ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖所示。下面說明各引腳功能。 </p><p>  IN0~IN7:8路模擬量輸入端。 </p><p>  2-1~2-8:8位數(shù)字量輸出端。 </p><p>  ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一

42、路 </p><p>  ALE:地址鎖存允許信號,輸入,高電平有效。 </p><p>  START: A/D轉(zhuǎn)換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復(fù)位,下降沿啟動A/D轉(zhuǎn)換)。 </p><p>  EOC: A/D轉(zhuǎn)換結(jié)束信號,輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平(轉(zhuǎn)換期間一直為低電平)。 </p&

43、gt;<p>  OE:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 </p><p>  CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。 </p><p>  REF(+)、REF(-):基準(zhǔn)電壓。 </p><p>  Vcc:電源,單一+5V。 </p>&l

44、t;p><b>  GND:地。 </b></p><p>  ADC0809的工作過程</p><p>  首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動 A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)

45、換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請。當(dāng)OE輸入高電平 時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。 </p><p>  轉(zhuǎn)換數(shù)據(jù)的傳送 A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時傳送給單片機進行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認A/D轉(zhuǎn)換的完成,因為只有確認完成后,才能進行傳送。為此可采用下述三種方式。 </p><p> ?。?)定時傳送方式 </p>&l

46、t;p>  對于一種A/D轉(zhuǎn)換器來說,轉(zhuǎn)換時間作為一項技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時間為128μs,相當(dāng)于6MHz的MCS-51單片機共64個機器周期??蓳?jù)此設(shè)計一個延時子程序,A/D轉(zhuǎn)換啟動后即調(diào)用此子程序,延遲時間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進行數(shù)據(jù)傳送。 </p><p><b> ?。?)查詢方式 </b></p><p>  

47、A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號,例如ADC0809的EOC端。因此可以用查詢方式,測試EOC的狀態(tài),即可確認轉(zhuǎn)換是否完成,并接著進行數(shù)據(jù)傳送。 </p><p><b> ?。?)中斷方式 </b></p><p>  把表明轉(zhuǎn)換完成的狀態(tài)信號(EOC)作為中斷請求信號,以中斷方式進行數(shù)據(jù)傳送。 </p><p>  不管使用上述哪種方

48、式,只要一旦確定轉(zhuǎn)換完成,即可通過指令進行數(shù)據(jù)傳送。首先送出口地址并以信號有效時,OE信號即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機接受。</p><p>  3.5 51單片機原理結(jié)構(gòu)</p><p><b>  引腳功能</b></p><p>  MCS-51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳分布請參照----單片機引腳圖: &l

49、t;/p><p><b>  8051引腳</b></p><p>  l P0.0~P0.7 P0口8位雙向口線(在引腳的39~32號端子)。 </p><p>  l P1.0~P1.7 P1口8位雙向口線(在引腳的1~8號端子)。 </p><p>  l P2.0~P2.7 P2口8位雙向口線(在引腳的21~28號端

50、子)。 </p><p>  l P3.0~P3.7 P3口8位雙向口線(在引腳的10~17號端子)。 </p><p>  這4個I/O口具有不完全相同的功能,大家可得學(xué)好了,其它書本里雖然有,但寫的太深,初學(xué)者很難理解,這里都是按我自已的表達方式來寫的,相信你也能夠理解。 </p><p><b>  四個I/O口:</b></p&g

51、t;<p><b>  P0口有三個功能</b></p><p>  1、外部擴展存儲器時,當(dāng)做數(shù)據(jù)總線(如圖1中的D0~D7為數(shù)據(jù)總線接口) </p><p>  2、外部擴展存儲器時,當(dāng)作地址總線(如圖1中的A0~A7為地址總線接口) </p><p>  3、不擴展時,可做一般的I/O使用,但內(nèi)部無上拉電阻,作為輸入或輸出時

52、應(yīng)在外部接上拉電阻。 </p><p><b>  P1口</b></p><p>  只做I/O口使用:其內(nèi)部有上拉電阻。 </p><p><b>  P2口有兩個功能</b></p><p>  1、擴展外部存儲器時,當(dāng)作地址總線使用 </p><p>  2、做一般I

53、/O口使用,其內(nèi)部有上拉電阻; </p><p><b>  P3口有兩個功能</b></p><p>  除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來設(shè)置,具體功能請參考我們后面的引腳說明。 </p><p>  有內(nèi)部EPROM的單片機芯片(例如8751),為寫入程序需提供專門的編程脈沖和編程電源,這些信號也是

54、由信號引腳的形式提供的, </p><p>  即:編程脈沖:30腳(ALE/PROG) </p><p>  編程電壓(25V):31腳(EA/Vpp) </p><p><b>  3.6 硬件原理圖</b></p><p><b>  見附錄</b></p><p>

55、;  單片機的P0口:雙向三態(tài)I/O口,在外接存儲器時,與地址總線的低8位及數(shù)據(jù)總線復(fù)用,能以吸收電流的方式驅(qū)動8個TTL負載..</p><p>  P2口:是8位準(zhǔn)雙向I/O口,在訪問外部存儲時,它可以作為高8位地址總線送出高8位地址.</p><p>  當(dāng)P0口做地址總線的低8位時,需要通過一個74LS373進行鎖存,再通過74LS138譯碼器進行譯碼輸出來控制各個功能模塊.<

56、;/p><p>  CS8255接F228H,CS0809接F230H,CS0832接F218H.</p><p>  DAC0832模塊用來產(chǎn)生波形,將數(shù)字量轉(zhuǎn)換成模擬量輸出,連接到示波器上.DI0到DI7接P0口,此時P0口作為數(shù)據(jù)總線直接與DI0到DI7相連接.</p><p>  ADC0809模塊用于產(chǎn)生一個數(shù)字量來作延時參數(shù),通過調(diào)節(jié)電位器來改變參數(shù)的值就可

57、以改變時間,</p><p>  8255鍵盤掃描顯示模塊,用來顯示波形代碼以及波形周期.PB作輸入口,PC和PA作輸出口,PA口地址為F228H,PB口地址為F229H,PC口地址為F22AH.PB口用來判斷是否有鍵按下.PC口與譯碼器相連,譯碼用來作位選,PA口用來作段選.</p><p><b>  4軟件設(shè)計</b></p><p> 

58、 4.1系統(tǒng)軟件框圖設(shè)計</p><p><b>  主程序框圖</b></p><p><b>  三角波框圖</b></p><p><b>  方波框圖</b></p><p>  注:R2是用來記數(shù),每產(chǎn)生25個方波測一次頻率.</p><p>

59、<b>  頻率計算</b></p><p><b>  正弦波</b></p><p><b>  注:R5用來查表.</b></p><p><b>  框圖說明:</b></p><p>  主程序:先進行8255的初始化,然后掃描鍵盤第二行,判斷是

60、否有鍵值按下,若A按下,則輸出三角波,B按下輸出方波,C按下輸出正弦波,在用DA轉(zhuǎn)換產(chǎn)生波形的時候也需要不斷的掃描鍵盤判斷是否有新的按鍵,否則按鍵無法跳出.</p><p>  頻率計算:波形的周期是根據(jù)AD轉(zhuǎn)換輸出的數(shù)字量與波形實際周期的關(guān)系得出的,需要用肉眼觀察示波器上波形的周期,不難發(fā)現(xiàn)波形周期與數(shù)字量成線形關(guān)系,通過一系列的算法即可得到波形大致周期,有誤差.再把周期顯示在數(shù)碼管上.</p>

61、<p>  三角波:波形先上升再下降,當(dāng)三角波輸出完一個周期時計算三角波的頻率.</p><p>  方波:方波只有兩個值,可以采用兩個極端值0和FFH.每產(chǎn)生25個方波測量一次方波的頻率.</p><p>  正弦波:可以利用查表來產(chǎn)生。查表法是事先將正弦波的數(shù)據(jù)計算出來,列表放在程序中,運行時直接調(diào)取數(shù)據(jù)。用公式y(tǒng)=127.5+127.5sin(360n/m)可計算出正弦波的

62、輸出值.每產(chǎn)生一個正弦波測量一次頻率.</p><p><b>  4.2源代碼</b></p><p>  C8255 EQU 0F22BH ;8255命令口地址</p><p>  P8255A EQU 0F228H ;8255 PA口地址</p><p>  P8255B EQU 0F22

63、9H ;8255 PB口地址</p><p>  P8255C EQU 0F22AH ;8255 PC口地址</p><p>  KEYVAL EQU 30H ;讀到的鍵碼</p><p>  NUMS1 EQU 31H</p><p>  NUMS2 EQU 32H</p><p

64、>  NUMS3 EQU 33H</p><p><b>  ORG 0000H</b></p><p>  SJMP START</p><p><b>  ORG 0080H</b></p><p>  START:MOV SP,#60H </p><p&

65、gt;  LCALL DINGSHI</p><p>  MOV KEYVAL,#00H ;顯示初始值</p><p>  MOV DPTR,#C8255</p><p>  MOV A,#82H ;PB口輸入,PA,PC口輸出</p><p>  MOVX @DPTR,A</p><p>

66、;  MOV DPTR,#P8255C</p><p>  MOV A,#00H</p><p>  MOVX @DPTR,A</p><p><b>  KB_DIS:</b></p><p>  LCALL RD_KB ;讀鍵子程序</p><p>  LCALL DISP

67、 ;波形代碼顯示子程序</p><p>  LCALL WAVE ;波形顯示</p><p>  SJMP KB_DIS ;循環(huán)掃描</p><p><b>  WAVE:</b></p><p>  CJNE R6,#7CH,ZHENGXIAN</p><p> 

68、 FANGBO: ;方波發(fā)生器</p><p>  MOV R2,#50</p><p>  FANGBODI: </p><p>  MOV A,#0H</p><p>  MOV DPTR,#0F218H </p><p>  MOVX @DPTR,A</p><

69、;p>  SETB P3.0 ;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動 A_D</p><p>  JNB P3.0,$ ;等待 EOC變高</p><p>  JB P3.0,$ ;等待 EOC變

70、低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A </p><p><b>  ;數(shù)據(jù)輸出</b></p><p><b>  MOV R1,A</b>

71、;</p><p><b>  MOV R4,A</b></p><p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB ;掃描鍵盤</p><p>  LCALL DISP</p><p>  CJNE R6,#7CH,ZHENGX

72、IAN ;判斷鍵值</p><p>  CJNE R2,#25,FANGBOGAO</p><p>  LCALL DISPFANGBO ;顯示頻率</p><p>  FANGBOGAO:</p><p>  MOV DPTR,#0F218H</p><p>  MOV A,#255</p>

73、<p>  MOVX @DPTR,A</p><p>  SETB P3.0 </p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動 A_D</p><p>  JNB P3.0,$ ;等待 EOC變高</p><

74、p>  JB P3.0,$ ;等待 EOC變低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A</p><p><b>  ;數(shù)據(jù)輸出</b></p><p

75、><b>  MOV R1,A</b></p><p><b>  MOV R4,A</b></p><p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB</p><p>  LCALL DISP</p><p&g

76、t;  CJNE R6,#7CH,ZHENGXIAN</p><p>  DJNZ R2,FANGbodi</p><p>  LCALL DISPFANGBO</p><p>  SJMP FANGBO</p><p>  ZHENGXIAN:CJNE R6,#39H,SANJIAO ;正弦波發(fā)生器</p><p&g

77、t;  MOV R5,#00H</p><p><b>  SIN:</b></p><p><b>  MOV A,R5</b></p><p>  MOV DPTR,#TAB</p><p>  MOVC A,@A+DPTR</p><p>  MOV DPTR,#0F2

78、18H</p><p>  MOVX @DPTR,A</p><p>  SETB P3.0 ;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動 A_D</p><p>  JNB P3.0,$ ;等待 E

79、OC變高</p><p>  JB P3.0,$ ;等待 EOC變低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A</p><p><b>  MOV R4,A<

80、/b></p><p><b>  MOV R1,A</b></p><p><b>  DJNZ R1,$</b></p><p><b>  INC R5</b></p><p>  LCALL RD_KB</p><p>  LCALL DI

81、SP</p><p>  CJNE R6,#39H,SANJIAO</p><p>  CJNE R5,#128,CC</p><p>  LCALL DISPZHENGXIAN</p><p>  CC:CJNE R5,#0,DD</p><p>  LCALL DISPZHENGXIAN</p>&l

82、t;p>  DD:SJMP SIN</p><p>  SANJIAO:CJNE R6,#77H,NEXT1 ;三角波發(fā)生器</p><p><b>  MOV A,#0</b></p><p><b>  SJUP:</b></p><p>  MOV DPTR,#0F218H<

83、/p><p>  MOVX @DPTR,A </p><p><b>  ;三角上升波形</b></p><p><b>  INC A</b></p><p><b>  PUSH ACC</b></p><p>  SETB P3.0

84、;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動 A_D</p><p>  JNB P3.0,$ ;等待 EOC變高</p><p>  JB P3.0,$ ;等待 EOC變低</p><p>  MO

85、V DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A ;數(shù)據(jù)輸出</p><p><b>  MOV R4,A</b></p><p><b>  MOV R1,A</b></p>

86、;<p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB</p><p>  LCALL DISP</p><p><b>  POP ACC </b></p><p>  CJNE R6,#77H,NEXT1</p><p>

87、;  CJNE A,#44H,SJUP</p><p>  LCALL DISPSANJIAO ;顯示頻率</p><p>  SJDO: MOV DPTR,#0F218H</p><p>  MOVX @DPTR,A ;三角下降波形</p><p><b>  DEC A</b>&

88、lt;/p><p><b>  PUSH ACC</b></p><p>  SETB P3.0 ;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動 A_D</p><p>  JNB P3.0,$

89、 ;等待 EOC變高</p><p>  JB P3.0,$ ;等待 EOC變低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A ;數(shù)據(jù)輸出</p><p>&

90、lt;b>  MOV R4,A</b></p><p><b>  MOV R1,A</b></p><p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB</p><p>  LCALL DISP</p><p><

91、;b>  POP ACC </b></p><p>  CJNE R6,#77H,NEXT1</p><p>  CJNE A,#0H,SJDO</p><p>  LCALL DISPSANJIAO</p><p>  SJMP SANJIAO</p><p><b>  NEXT1:RE

92、T</b></p><p>  DISPZHENGXIAN: ;頻率顯示模塊</p><p>  LCALL DINGSHI</p><p><b>  PUSH ACC</b></p><p>  MOV A,R4 ;頻率顯示算法設(shè)計</p><p>&

93、lt;b>  MOV B,#2</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADD A,#180</p>&

94、lt;p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p><b>  MO

95、V A,R0</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS1,A</p><p><b>  MOV A,R4</b></p>

96、<p><b>  MOV B,#2</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADDC A,#180&

97、lt;/p><p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p>&

98、lt;b>  MOV A,R0</b></p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS2,A&

99、lt;/p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#2</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p>&l

100、t;b>  MUL AB</b></p><p>  ADDC A,#180</p><p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p>

101、<p><b>  MOV B,A</b></p><p><b>  MOV A,R0</b></p><p>  ANL B,#0FH</p><p><b>  MOV A,B</b></p><p>  MOV DPTR,#LEDSEG</p>

102、<p>  MOVC A,@A+DPTR</p><p>  MOV NUMS3,A</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#08H</p><p>  MOVX @DPTR,A ;位選</p><p>  MOV DPTR,#P8255A</

103、p><p>  MOV A,NUMS1</p><p>  MOVX @DPTR,A ;段選</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#10H</p><p>  MOVX @DPTR,A<

104、/p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS2</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#18H</p&g

105、t;<p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS3</p><p>  MOVX @DPTR,A</p><p><b>  POP ACC</b></p><p><b>  RET&

106、lt;/b></p><p>  DISPSANJIAO:</p><p>  LCALL DINGSHI</p><p><b>  PUSH ACC</b></p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#4

107、</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADD A,#100</p><p><b> 

108、 MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p><b>  MOV A,R0</b>&l

109、t;/p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS1,A</p><p><b>  MOV A,R4</b></p><p><b>

110、;  MOV B,#4</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADDC A,#100</p><p&g

111、t;<b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p><b>  MOV A,R0

112、</b></p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS2,A</p><p&g

113、t;<b>  MOV A,R4</b></p><p><b>  MOV B,#4</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB<

114、;/b></p><p>  ADDC A,#100</p><p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>

115、;  MOV B,A</b></p><p><b>  MOV A,R0</b></p><p>  ANL B,#0FH</p><p><b>  MOV A,B</b></p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A

116、,@A+DPTR</p><p>  MOV NUMS3,A</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#08H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUM

117、S1</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#10H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A&

118、lt;/p><p>  MOV A,NUMS2</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#18H</p><p>  MOVX @DPTR,A</p>

119、;<p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS3</p><p>  MOVX @DPTR,A</p><p><b>  POP ACC</b></p><p><b>  RET</b></p><p>  DISP

120、FANGBO:</p><p>  LCALL DINGSHI</p><p><b>  PUSH ACC</b></p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#5</b></p><p><b&

121、gt;  DIV AB</b></p><p><b>  ADD A,#12</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS1,A</

122、p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#5</b></p><p><b>  DIV AB</b></p><p><b>  ADD A,#12</b></p><p><b

123、>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS2,A</p><p>  MOV DPTR,#P8255C</p><

124、p>  MOV A,#08H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS1</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  M

125、OV DPTR,#P8255C</p><p>  MOV A,#10H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS2</p><p>  MOVX @DPTR,A</p><p>  LCALL

126、DINGSHI</p><p><b>  POP ACC</b></p><p><b>  RET</b></p><p>  DISP:MOV DPTR,#P8255A ;顯示鍵值</p><p>  MOV A,KEYVAL</p><p>  MOVX @DPT

127、R,A</p><p><b>  RET</b></p><p><b>  RD_KB:</b></p><p>  MOV A,#01H ;掃描第二行</p><p>  MOV DPTR,#P8255C</p><p>  MOVX @DPTR,A&l

128、t;/p><p>  MOV DPTR,#P8255B</p><p>  MOVX A,@DPTR</p><p>  CJNE A,#0FFH,J_KEYL0 ;判斷是否有鍵按下,有鍵轉(zhuǎn)J-KEYL0</p><p>  SJMP NOKEY</p><p>  J_KEYL0:LCALL DINGSHI ;

129、延時消抖</p><p>  MOV DPTR,#P8255B ;讀鍵值</p><p>  MOVX A,@DPTR</p><p>  MOV R7,#08H</p><p>  CJNE A,#0FFH,KEYCAL ;計算鍵值</p><p>  SJMP NOKEY</p>

130、<p>  KEYCAL:MOV R0,#08H</p><p>  SHIFT:RRC A</p><p><b>  JNC CALC</b></p><p><b>  INC R7</b></p><p>  DJNZ R0,SHIFT</p><p> 

131、 CALC:MOV DPTR,#LEDSEG ;換算顯示碼</p><p><b>  MOV A,R7</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV KEYVAL,A</p><p><b>  MOV R6,A</b></p><p&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論