智能脈沖寬度測量儀_第1頁
智能脈沖寬度測量儀_第2頁
智能脈沖寬度測量儀_第3頁
智能脈沖寬度測量儀_第4頁
智能脈沖寬度測量儀_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘 要近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷地走向深入,人們已越來越多地將單片機技術應用于一些工業(yè)控制系統(tǒng)。如溫度、流量和壓力等參數(shù)進行檢測和控制。PC機具有強大的監(jiān)控和管理功能,而單片機則具有快速及靈活的控制特點,因此在實時檢測和自動控制的應用系統(tǒng)中,單片機往往是作為一個核心部件來使用。本系統(tǒng)采用單片機AT89C52為中心器件來設計智能脈沖寬度測量儀,本系統(tǒng)是由一個555定時器來產(chǎn)生脈沖信號,將信號輸入單片機中,然后運行程序,最后通過譯碼在LED數(shù)碼管動態(tài)顯示。本系統(tǒng)實用性強、操作簡單、擴展性強。在現(xiàn)有的單片機仿真系統(tǒng)上掌握相關軟硬件設計與調(diào)試知識,根據(jù)所選的題目,焊接好硬件電路,正

2、確進行元器件的測試與調(diào)試,并在計算機上編寫匯編程序調(diào)試運行,并實現(xiàn)參考選題中要求的設計。關鍵詞:脈沖寬度測量Title:Intelligent Pulse Width Measuring InstrumentApplicant:Zhang XinSpecialty:Electrical engineering and automationABSTRACTIn recent years, with the rapid development of science and technology, the application of SCM is developing continuously.

3、It has been increasingly used the technology of SCM to the industrial control system. Such as temperature, flow and pressure and so on. Though PC machines have powerful monitoring and management functions, in detection and automatic control application system, SCM is often used as a core component w

4、hich is rapid and flexible. This system uses the AT89C52 as the core component to design intelligent pulse width measuring instrument, This system generates the pulse signal which will be input the single chip microcomputer throught a 555 timer 。 Then I run and decode the program .Finally,the result

5、 will show dynamicly on the LED screen.this system is practical, simple operation and extensible. In the existing microcomputer simulation system hardware and software design and commissioning to master relevant knowledge, according to the selected topic, welding good hardware circuit and the correc

6、t components, and the testing and debugging assembly program on the computer test and operation, written and realize the design requirements of the reference topics.Keywords:Pulse Width Measurement目 錄1 前言11.1 課題研究背景1 單片機技術的發(fā)展狀況1 本文的研究內(nèi)容22 設計內(nèi)容及具體要求32.1 設計的主要任務32.2 設計的具體要求33 設計方案及總框架53.1 設計不同方案對比5 程控

7、脈沖測量5 等精度脈沖測量5 確定方案總框架圖6 各部分框圖簡介6 原理圖83.1.6 PCB板圖104 硬件部分原理及設計114.1 單片機部分11 功能特性描述11 引腳功能114.1.3 AT89C52的存儲器結(jié)構(gòu)13 定時器14 單片機內(nèi)部的中斷154.2 脈沖產(chǎn)生電路164.3 數(shù)碼管顯示電路205 軟件部分設計215.1 Keil C軟件的使用介紹215.2 Keil C軟件的基本操作步驟215.3 主程序設計23 主程序流程圖23 程序源代碼245.3.3 Kiel51源程序調(diào)試306 系統(tǒng)調(diào)試及誤差分析336.1 系統(tǒng)調(diào)試測驗336.2 實驗結(jié)果336.3 誤差分析33 算法誤

8、差:33 硬件誤差:337 總結(jié)與展望35致謝37參考文獻391 前 言1.1 課題研究背景近年來單片機的應用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此越來越廣泛地應用于智能化儀器,儀表,數(shù)據(jù)采集等各個領域,單片機往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應用對象特點的軟件結(jié)合, 通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用一些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用一些系列單片機,結(jié)果就會有天壤之

9、別!只因為單片機可以通過你編寫的程序?qū)崿F(xiàn)高智能,高效率,以及高可靠性!隨著社會的發(fā)展,科學的進步,人們的生活水平在逐步的提高,尤其是微電子技術的發(fā)展,猶如雨后春筍般的變化。單片機的應用已經(jīng)越來越貼近生活,用單片機來實現(xiàn)一些電子設計也變得容易起來。計算機在人們的日常中是比較的常見的電子產(chǎn)品之一。目前對各種物理量的檢測和控制都可得以實現(xiàn)。微機檢測控制系統(tǒng)不僅運用到航天航空、機器人技術、紡織機械、食品加工等工業(yè)過程控制,而且已經(jīng)成為日常各種家用電器當中的主要組成部分。而其中單片機技術以其實現(xiàn)簡單、使用靈活及數(shù)據(jù)傳輸可靠等有優(yōu)點被廣泛的應用于中小型實時控制系統(tǒng)中,其實時數(shù)據(jù)處理和控制功能可使測控系統(tǒng)始

10、終保持在最佳的工作狀態(tài),提高系統(tǒng)的工作效率。1.1.1 單片機技術的發(fā)展狀況單片機自20世紀70年代問世以來得到了廣泛的應用,主要應用于測試和控制領域。由于單片機在使用時,通常是處于測控系統(tǒng)的核心地位并嵌入其中,所以國際上通常把單片機稱為嵌入式控制器(Embedded MicroController Unit,EMCU)或微控制器(MicroController Unit,MCU)。而在我國,大部分工程技術人員則比較習慣使用“單片機”這一名稱。,單片機的出現(xiàn)是微型計算機技術高速發(fā)展的產(chǎn)物。單片機體積小、價格低、應用方便、穩(wěn)定可靠,因此,單片機的發(fā)展和普及給工業(yè)自動化等領域帶來了一場重大革命和技

11、術進步。僅從體積小方面來說,單片機幾乎可以在任何設施或任意裝置上做成非常小的、功能比較完善的單片機嵌入系統(tǒng)置于其中,以實現(xiàn)各種方式的檢測、計算或控制,在這一點上,一般的微型計算機根本做不到。由于單片機本身就事一個計算機系統(tǒng),因此只要在單片機外部適當增加一些必要的外圍擴展接口電路,就可以靈活的構(gòu)成各種應用系統(tǒng),如工業(yè)自動檢測監(jiān)視系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、自動控制系統(tǒng)、智能儀器儀表等。本設計是采用Intel公司生產(chǎn)的MCS-52系列的單片機,這類單片機的性能價格比高,所以被廣泛應用,是目前應用數(shù)量較多的單片機。1.1.2 本文的研究內(nèi)容本設計的題目是智能脈沖寬度測量儀,脈沖寬度的測量,實質(zhì)是時間的測量,

12、在生產(chǎn)和科學研究中,經(jīng)常要測量時間,例如,完成第一生產(chǎn)工序所需要的時間、周期性信號的周期、激光測距和雷達測量目標距離、運動體行程的時間等等都說明時間測量的重要性。本論文主要是采用單片機AT89C51為中心器件來設計脈沖寬度測量儀,在現(xiàn)有的單片機仿真機系統(tǒng)上掌握相關軟硬件設計與調(diào)試知識,根據(jù)所設計好的電路,焊接好硬件電路,正確進行元器件的測試與調(diào)試,并在計算機上編寫程序調(diào)試運行,并實現(xiàn)脈沖寬度的測量。具體包括以下幾方面的內(nèi)容:第一章,對單片機的應用背景進行了說明,并介紹了本次設計的實際意義。第二章,簡單概述了本次設計的內(nèi)容和具體要求。第三章,簡單介紹兩種不同的設計方案,通過對比先擇較合理的程控式

13、測量方案。第四章,介紹了硬件部分的原理及設計。 第五章,介紹了軟件部分的程序。第六章,進行系統(tǒng)測試檢驗,并做了誤差分析。第七章,對全文進行了總結(jié)。2 設計內(nèi)容及具體要求2.1 設計的主要任務(1)通過查閱相關資料,深入了解脈沖寬度測量儀的原理;(2)復習“MCS-51單片機原理及C語言程序設計”;(3)掌握其接口擴展包括:顯示、鍵盤等;(4)設計基于單片機的程控脈沖寬度測量儀的原理圖,構(gòu)建硬件平臺;(5)采用C語言編寫應用程序并調(diào)試通過;(6)制作出樣機并測試達到功能和技術指標要求;(7)寫出畢業(yè)設計論文。2.2 設計的具體要求(1)原始數(shù)據(jù)1被測信號為數(shù)字信號;2測量范圍:100微秒-100

14、毫秒;3數(shù)碼管顯示動態(tài)顯示。(2)技術要求:1用4位數(shù)碼管顯示測量值。用發(fā)光二極管分別指示所測元件的類別和單位。2測量精度5%。3電感測量試用瞬態(tài)響應法測量。(3)工作要求:1組建智能脈沖寬度測量儀的總體結(jié)構(gòu)框圖;2根據(jù)設計詳細的原理圖,選取只要元器件,通過理論分析和計算選擇電路參數(shù);3根據(jù)操作功能要求,確定操作按鍵的功能;4按設計要求確定顯示方式及信息量;5采用C語言編寫應用程序并調(diào)試通過;6對系統(tǒng)進行測試和結(jié)果分析;3 設計方案及總框架3.1 設計不同方案對比3.1.1 程控脈沖測量1.實驗脈沖由555定時器產(chǎn)生,只要改變外接電阻電容就能獲得不同寬度的脈沖,供測量使用。 2.采用MCS-5

15、2單片機和外設電路測量脈沖寬度。MCS-51子系列單片機有3個定時器(計數(shù)器),當他們工作于定時器方式時,計數(shù)的輸入為內(nèi)部的時鐘信號,頻率為固定的11.0592Hz。只要令GATE=1,TR0=1,TR1=1,將輸入脈沖接到“INT1(非)”口,即可測量輸入脈沖寬度。 3.采用動態(tài)數(shù)碼管顯示測量結(jié)果,兩片74LS573和位碼驅(qū)動鎖存器作為驅(qū)動電路。 4.為了使測量范圍更大,在程序中進行單位轉(zhuǎn)換,使用發(fā)光二極管指示單位。3.1.2 等精度脈沖測量對于脈沖寬度的測量,我們可以運用計數(shù)法的思想,即在一個脈沖的高電平期間填入給定的基準脈沖,通過填充的數(shù)量來計算需測量的脈沖寬度。為了提高其精度,減小誤差

16、,可以采用頻率較高的基準脈沖。根據(jù)題目要求,可將設計分為四部分:一為硬件方面的設計,由于同一類型的原理圖已給出,我們只需按照電路圖根據(jù)實際需要焊接好即可,并根據(jù)電路圖繪制相應的PCB板圖。二為主程序的設計,通過C52的有關功能包括計數(shù)/定時、中斷等編寫計數(shù)法的主程序。三為MFC-G12864點陣液晶屏輸出的設計,通過編程對其五個控制位進行操作,而有關數(shù)字文字以及符號的字??赏ㄟ^字模生成軟件得到。四為五個功能按鍵的設計,其主要是通過與單片機的五個端口進行操作,其中每個按鍵可看做是對相應的子函數(shù)的調(diào)用。根據(jù)總體設計要求,系統(tǒng)總框圖如圖31所示圖31 等精度設計的系統(tǒng)總框圖3.1.3 確定方案總框架

17、圖由以上兩種方案都可以測量脈沖寬度,等精度測量方法要比程控式的精度更高,但程控式是用數(shù)碼管來顯示的,受自然環(huán)境的影響小,而等精度是用的液晶顯示屏受環(huán)境影響大,比如光線,由于實驗要求我選擇了程控脈沖測量法,下面具體論述這種方法的可行性。圖32為設計硬件的總體連接圖。圖32程控式測量總體框圖3.1.4 各部分框圖簡介(1).按鍵控制:這個設計共有五個發(fā)光二極管和三個按鍵,作用如下:發(fā)光二極管1::顯示脈沖寬度時間的單位。(燈亮為ms,燈滅為s) 發(fā)光二極管2:顯示555定時器外圍電阻的單位。(燈亮為k,燈滅為M)發(fā)光二極管3:顯示555定時器外圍電容的單位。(燈亮為pf,燈滅為uf)發(fā)光二極管4:

18、顯示555定時器外圍有無電容。(燈亮為無,燈滅為有)發(fā)光二極管5:顯示555定時器外圍有無電阻。(燈亮為無,燈滅為有)按鍵1:控制脈沖寬度時間刷新。按鍵2:控制555定時器外圍電阻刷新。按鍵3:控制555定時器外圍電容刷新。圖 33 555信號發(fā)生器(2)信號源發(fā)生電路:信號源由555定時器構(gòu)成脈沖發(fā)生器(如圖3-3)。在測量的時候,會在R2和C1的兩端并聯(lián)電阻或者電容,本實驗將會測量脈沖的高電平的寬度,R2并聯(lián)的電阻值,以及C1并聯(lián)的電容值。由555脈沖發(fā)生器的基本原理可得以下結(jié)論:設:高電平的脈寬時間為TH,低電平的脈寬時間為TL.則R2=Tl*R1/(Th-Tl) (31)C1=(Th-

19、Tl)/(ln2*R1) (32)根據(jù)這個公式,通過單片機測出高電平,低電平的寬度,我們就可以計算出R2,C1的值。并且可以得到外圍點電路的R,C的值。(3).晶振電路:晶振是為電路提供頻率基準的元器件,通常分成有源晶振和無源晶振兩個大類,有源晶振不需要芯片的內(nèi)部振蕩器,可以提供高精度的頻率基準,信號質(zhì)量也較無源晶振要好。本實驗用f=11.0592MHz的晶振電路。晶振和C4、C5組成振蕩器,使單片機內(nèi)部產(chǎn)生周期為1us的脈沖信號。圖34 晶振電路(4).驅(qū)動及LED顯示電路本實驗用了兩片74LS573,一片用于輸出段碼,一片用于輸出位碼。一片2803,用于LED數(shù)碼管驅(qū)動。四個LED數(shù)碼管。

20、采用共陰極接法,用掃描的方式顯示,每一個時刻只選通一個數(shù)碼管。用動態(tài)顯示的方式來顯示555定時器外圍總電阻值,總電容值以及脈沖高電平時間值。(5).單片機采用89C52單片機,共用到了三個定時器中斷。1.LED顯示:定時器中斷0,每2500us刷新一次,動態(tài)顯示形式。2.脈寬高電平測量:定時器中斷1,由信號的上升沿觸發(fā),開始計數(shù),記錄的是信號的高電平的脈寬時間。3.周期測量:定時器中斷2,下降沿觸發(fā),采用捕捉模式,手動清零。定時器自動將周期時間存入固定的寄存器中。從而得到低電平的脈寬時間。這里簡單介紹一下這部分硬件,在下一章詳細的分析。3.1.5 原理圖通過Protel99繪圖及PCB制版,使

21、電路系統(tǒng)完整。根據(jù)我們以前所掌握的電路設計所用的軟件來講,能進行電路圖的設計以及針對我們設計要求,需做成PCB板,最終要根據(jù)PCB板進行實物的焊接和調(diào)試,因此,選取用protel99軟件進行電路的設計,進而對電路各個元件進行封裝,完成對PCB電路的生成,最終制成PCB板。圖35、圖36分別為整體電路原理圖和PCB電路圖。圖35 電路原理圖3.1.6 PCB板圖圖36 PCB板圖PCB板是兩層板,用protel99軟件生成的。4 硬件部分原理及設計4.1 單片機部分4.1.1 功能特性描述AT89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash 存儲器。使用Atme

22、l公司高密度非易失性存儲器技術制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89c52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。AT89c52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,兩個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計

23、數(shù)器、串口、中斷繼續(xù)工作17。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。4.1.2 引腳功能89C52單片機有44個引腳PLCC和TQFP方形封裝形式,40個引腳的雙列直插式封裝形式,最常用的40個引腳封裝形式及其配置如圖4.1所示,各個引腳功能說明如圖41: 圖4189C52單片機的引腳VCC:電源,接+5VGND:接地P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0具有

24、內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O 口,P1 輸出緩沖器能驅(qū)動4個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX)17,具體如表41所示。在flash編程和校驗時,P1口接收低8位地址字節(jié)。表41 89S52單片機P1口第

25、二功能引腳號第二功能P1.0T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出P1.1T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)P1.5MOSI(在系統(tǒng)編程用)P1.6MISO(在系統(tǒng)編程用)P1.7SCK(在系統(tǒng)編程用)P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2 口送出高八位地址。在

26、這種應用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動4個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如表42所示。在flash編程和校驗時,P3口也接收一些控制信號。表42 89S52單片機P3口第二功能引

27、腳號第二功能P3.0RXD(串行輸入線)P3.1TXD(串行輸出線)P3.2(外部中斷0輸入線)P3.3 (外部中斷0輸入線)P3.4T0(定時器0外部計數(shù)脈沖輸入)P3.5T1(定時器1外部計數(shù)脈沖輸入)P3.6(外部數(shù)據(jù)存儲器寫選通信號輸出)P3.7(外部數(shù)據(jù)存儲器寫選通信號輸出)RST:復位輸入。晶振工作時,RST腳將持續(xù)2個機器周期高電平將使單片機復位??撮T狗計時完成后,RST 腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。ALE/:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地

28、址的輸出脈沖。在flash編程時,此引腳()也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可以用來作為外部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置 “1”,ALE操作將無效。這一位置 “1”,ALE僅在執(zhí)行MOVX或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無效。:外部程序存儲器選通信號()是外部程序存儲器選通信號。當AT89S52從外部程序存儲器執(zhí)行外部代碼時,在每個機器周期被激活兩

29、次,而在訪問外部數(shù)據(jù)存儲器時,將不被激活。/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器讀取指令,必須接GND。為了執(zhí)行內(nèi)部程序指令,應該接VCC。在flash編程期間,也接收12伏VPP電壓。XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。4.1.3 AT89C52的存儲器結(jié)構(gòu)AT89S52器件有單獨的程序存儲器和數(shù)據(jù)存儲器。外部程序存儲器和數(shù)據(jù)存儲器都可以64KB尋址。程序存儲器:如果引腳接地,程序讀取只從外部存儲器開始。對于89S52,如果接VCC,讀寫程序先從內(nèi)部存儲器(地址為0000H1FFFH)開

30、始,接著從外部尋址,尋址地址為:2000HFFFFH。數(shù)據(jù)存儲器:AT89S52 有256 字節(jié)片內(nèi)數(shù)據(jù)存儲器。高128 字節(jié)與特殊功能寄存器重疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。當一條指令訪問高于7FH 的地址時,尋址方式?jīng)Q定CPU 訪問高128 字節(jié)RAM 還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。例如,下面的直接尋址指令訪問0A0H(P2口)存儲單元MOV 0A0H, #data 使用間接尋址方式訪問高128 字節(jié)RAM。例如,下面的間接尋址方式中,R0 內(nèi)容為0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它的地址也是0

31、A0H)。MOV R0, #data堆棧操作也是間接尋址方式。因此,高128字節(jié)數(shù)據(jù)RAM也可用于堆??臻g。4.1.4 定時器1MCS-51系列中51子系列有兩個16位的可編程定時/計數(shù)器:定時/計數(shù)器T0和定時/計數(shù)器T1,52子系列有三個,還有一個定時/計數(shù)器T2。2每個定時/計數(shù)器既可以對系統(tǒng)時鐘計數(shù)實現(xiàn)定時,也可以對外部信號計數(shù)實現(xiàn)計數(shù)功能,通過編程設定來實現(xiàn)。3每個定時/計數(shù)器都有多種工作方式,其中T0有四種工作方式;T1有三種工作方式,T2有三種工作方式。通過編程設置其方式寄存器TMOD可設定定時器工作于某種方式,方式寄存器TMOD格式見表43。表43 定時/計數(shù)器的方式寄存器TM

32、ODGATEC/M1M2GATEC/M1M2門 控開/關計數(shù)/定時方式選擇門 控開/關計數(shù)/定時方式選擇T1 T0GATE:門控信號。GATE=0,TRx=1時即可啟動定時器/計數(shù)器工作,是一種自啟動的方式;GATE=1,TRx=1, =1時才可啟動定時器/計數(shù)器工作。即是引腳加高電平啟動,是一種外啟動方式。C/:定時或計數(shù)方式選擇位,當C/=1時工作于計數(shù)方式;當C/=0時工作于定時方式。M1、M0:為工作方式選擇位,定時器/計數(shù)器的四種工作方式由M1M0設定,設定情況見表44。表44 M1M0的設定M1M0工作方式方式說明00013位定時/計數(shù)器01116位定時/計數(shù)器1028位自動重置定

33、時/計數(shù)器113T0為兩個8位定時/計數(shù)器4每一個定時/計數(shù)器定時計數(shù)時間到時產(chǎn)生溢出,使控制寄存器TCON中相應的溢出位置位,溢出可通過查詢或中斷方式處理,控制寄存器格式見表45。表45 定時/計數(shù)器的控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0T1請求 有/無T1工作啟/停T0請求有/無T0工作啟/停INT1請求有/無INT1方式下沿/低電平INT0請求有/無INT0方式下沿/低電平其中:TF1:定時/計數(shù)器T1的溢出標志位,當定時/計數(shù)器T1計滿時,由硬件使它置位,如中斷允許則觸發(fā)T1中斷。進入中斷處理后由內(nèi)部硬件電路自動清除。TR1:定時/計數(shù)器T1的啟動位,可由

34、軟件置位或清零,當TR1=1時啟動;TR1=0時停止。TF0:定時/計數(shù)器T0的溢出標志位,當定時/計數(shù)器T0計滿時,由硬件使它置位,如中斷允許則觸發(fā)T0中斷。進入中斷處理后由內(nèi)部硬件電路自動清除。TR0:定時/計數(shù)器T0的啟動位,可由軟件置位或清零,當TR0=1時啟動;TR0=0時停止。4.1.5 單片機內(nèi)部的中斷AT89S52 有6個中斷源:兩個外部中斷( 和),三個定時中斷(定時器0、1、2)和一個串行中斷。每個中斷源都可以通過置位或清除特殊寄存器IE中的相關中斷允許控制位分別使得中斷源有效或無效10。IE還包括一個中斷允許總控制位EA,它能一次禁止所有中斷。如表4.6所示,IE.6位是

35、不可以用的。它們?yōu)锳T89系列新產(chǎn)品預留。定時器2可以被寄存器T2CON中的TF2和EXF2的或邏輯觸發(fā)。程序進入中斷服務后,這些標志位都可以由硬件清0。實際上,中斷服務程序必須判定是否是TF2 或EXF2激活中斷,標志位也必須由軟件清0。定時器0和定時器1標志位TF0 和TF1在計數(shù)溢出的那個周期的S5P2被置位。它們的值一直到下一個周期被電路捕捉下來。然而,定時器2的標志位TF2在計數(shù)溢出的那個周期的S2P2被置位,在同一個周期被電路捕捉下來。表46 中斷允許控制寄存器(IE)EA -ET2 ES ET1 EX1 ET0 EX0EA:中斷允許總控位。EA=0,屏蔽所有的中斷請求;EA=1,

36、開放中斷。 ET2:定時器/計數(shù)器T2的溢出中斷允許位 ES:串行口中斷允許位。 ET1:定時器/計數(shù)器T1的溢出中斷允許位。 EX1:外部中斷 INT1的中斷允許位。 ET0:定時器/計數(shù)器T0的溢出中斷允許位。 EX0:外部中斷 INT0的中斷允許位。4.2 脈沖產(chǎn)生電路555定時器構(gòu)成的多諧振蕩器:555外接定時電阻R1、R2和電容C構(gòu)成的多諧振蕩器電路如圖4.2(a)所示,由圖可見,它將高電平觸發(fā)端TH和低電平觸發(fā)端TR相連,且放電回路中串接了一個定時電阻R2集成555定時器有雙極性型和CMOS型兩種產(chǎn)品。一般雙極性型產(chǎn)品型號的最后三位數(shù)都是555,CMOS型產(chǎn)品型號的最后四位數(shù)都是7

37、555.它們的邏輯功能和外部引線排列完全相同。器件電源電壓推薦為4512V,最大輸出電流200mA以內(nèi),并能與TTL、CMOS邏輯電平相兼容。其主要參數(shù)見表47。表47兩種555定時器的器件特性 (a)雙極性型5G555的主要性能參數(shù)參數(shù)名稱符號單位參數(shù)電源電壓VCCV516電源電流ICCmA10閾值電壓VTHVVCC觸發(fā)電壓VTRVVCC輸出低電平VOLV1輸出高電平VOHV13.3最大輸出電流IOMAXmA200最高振蕩頻率fMAXKHz300時間誤差tnS5 (b) CMOS型7555的主要性能參數(shù)參數(shù)名稱符號單位參數(shù)電源電壓VCCV318電源電流ICCA60閾值電壓VTHVVDD觸發(fā)電

38、壓VTRVVDD輸出低電平VV0.1輸出高電平VV14.8最大輸出電流IOMAXmA200最高振蕩頻率fMAXKHz500時間誤差tnS555定時器的內(nèi)部電路框圖及邏輯符號和管腳排列分別如圖42和圖43所示。圖4.2 555定時器邏輯符號和和引腳圖4.3 555定時器內(nèi)部結(jié)構(gòu)引腳功能:Vi1(TH):高電平觸發(fā)端,簡稱高觸發(fā)端,又稱閾值端,標志為TH。Vi2():低電平觸發(fā)端,簡稱低觸發(fā)端,標志為。VCO:控制電壓端。VO:輸出端。Dis:放電端。:復位端。555定時器原理:555定時器內(nèi)含一個由三個阻值相同的電阻R組成的分壓網(wǎng)絡,產(chǎn)生和兩個基準電壓;兩個電壓比較器C1、C2;一個由與非門G1

39、、G2組成的基本RS觸發(fā)器(低電平觸發(fā));放電三極管T和輸出反相緩沖器G3。是復位端,低電平有效。復位后, 基本RS觸發(fā)器的端為1(高電平),經(jīng)反相緩沖器后,輸出為0(低電平)。分析圖42的電路:在555定時器的VCC端和地之間加上電壓,并讓VCO懸空,則比較器C1的同相輸入端接參考電壓,比較器C2反相輸入端接參考電壓,為了學習方便,我們規(guī)定:當TH端的電壓時,寫為VTH=1,當TH端的電壓時,寫為VTR=1,當端的電壓時,寫為VTR=0。低觸發(fā):當輸入電壓Vi2且Vi1且Vi1,則VTH=1,比較器C1輸出為低電平,無論C2輸出何種電平,基本RS觸發(fā)器因=0,使Q1,經(jīng)輸出反相緩沖器后,V0

40、0;T導通。這時稱555定時器“高觸發(fā)”。555定時器的“低觸發(fā)”、“高觸發(fā)”和“保持”三種基本狀態(tài)和進入狀態(tài)的條件(即VTH、VTR的“0”、“1”)必須牢牢掌握。表48 555定時器控制功能表輸 入輸 出THVODis VCC VCC VCCLHHHLH不變L導通截止不變導通VCO為控制電壓端,在VCO端加入電壓,可改變兩比較器C1、C2的參考電壓。正常工作時,要在VCO和地之間接001F(電容量標記為103)電容。放電管Tl的輸出端Dis為集電極開路輸出。根據(jù)555定時器的控制功能,可以制成各種不同的脈沖信號產(chǎn)生與處理電路電路,例如,史密特觸發(fā)器、單穩(wěn)態(tài)觸發(fā)器、自激多諧振蕩器等。圖44所

41、示為自激多諧振蕩器電路和波形圖。自激多諧振蕩器用于產(chǎn)生連續(xù)的脈沖信號。電路采用電阻、電容組成RC定時電路,用于設定脈沖的周期和寬度。調(diào)節(jié)RW或電容C,可得到不同的時間常數(shù);還可產(chǎn)生周期和脈寬可變的方波輸出。脈沖寬度計算公式:Tw0.7 (R1+RW+R2) C圖44自激多諧振蕩器電路和波形圖振蕩周期計算公式:T0.7 (R1+RW+2R2) C電路的工作原理可對照圖所示工作波形圖來分析。當接通電源VCC時,如電容C上的初始電壓為0,則u0處于高電平,放電管T截止,電源通過R1、R2向C充電,經(jīng)過t1時間后,uc達到高觸發(fā)電平(2Vcc/3),U0由1變?yōu)?,這時放電管T導通,電容C通過電阻R2

42、放電,到t=t2時,u2下降到低觸發(fā)電平(Vcc/3),u0又翻回到1狀態(tài),隨即T又截止,電容C又開始充電。如此周而復始,重復上述的過程。就可以在輸出端(3端)得到矩形波電壓?,F(xiàn)在計算此電路的振蕩周期。為了簡單起見,設組件內(nèi)運放A、A的輸入電阻為無窮大,并近似地認為放電管T截止時,DIS端對地的等效電阻為無窮大,而放電管T導通時,管壓降為零?,F(xiàn)以t=t2為起始點,可得充電時間T為:若以t3為起始點,可得電容C的放電時間為:由此可得方波的周期為T=T1+T2,頻率為:振蕩頻率主要取決于時間常數(shù)R和C,改變R和C參數(shù)可改變振蕩頻率,幅度則由電源電壓VCC來決定。但是輸出的矩形波是不對稱的,占空比為

43、:如果R1R2,則占空比接近于1。由此可知,若將被測電阻Rx或電容Cx接到555定時器的合適位置,則只需測出555定時器所產(chǎn)生的信號頻率,即可根據(jù)以上分析計算得到Rx、Cx的數(shù)值。4.3 數(shù)碼管顯示電路數(shù)碼管顯示器,是用來顯示測量脈沖的結(jié)果的,分動態(tài)顯示和靜態(tài)顯示。但靜態(tài)顯示功耗很大,本實驗不予采用,而選用數(shù)碼管靜態(tài)顯示,可大幅降低硬件成本和功耗發(fā)熱,因為某時刻只有一個數(shù)碼管處于工作狀態(tài),也就是分時顯示。我們使用兩片74LS373作為7段碼和位碼驅(qū)動鎖存器,8個數(shù)碼管是共陰極數(shù)碼管,一片ULN2803作為位增強驅(qū)動器。單片機的定時器/計數(shù)器1來定時,用來控制每個數(shù)碼管顯示的時間(本題中定時時間

44、常數(shù)為2.5mS),則利用人眼的視覺暫留作用即可實現(xiàn)動數(shù)據(jù)的動態(tài)顯示。電路如圖45:圖45 數(shù)碼管顯示電路5 軟件部分設計5.1 Keil C軟件的使用介紹Keil C51集成開發(fā)環(huán)境是Keil Software,Inc/Keil Elektronik GmbH開發(fā)的基于80C51內(nèi)核的微處理器軟件開發(fā)平臺,內(nèi)嵌多種符合當前工業(yè)標準的開發(fā)工具,可以完成從工程建立到管理、編譯、鏈接、目標代碼的生成、軟件仿真、硬件仿真等完整的開發(fā)流程尤其是C編譯工具在產(chǎn)生代碼的準確性和效率方面達到了較高的水平,而且可以附加靈活的控制選項,在開發(fā)大型項目時非常理想。5.2 Keil C軟件的基本操作步驟第一步: 啟

45、動Keil集成開發(fā)軟件。第二步: 新建文本編輯窗。點擊工具欄上的新建文件快捷按鍵,即可在項目窗口的右側(cè)打開一個新的文本編輯窗,第三步:輸入源程序。在新的文本編輯窗中輸入源程序,可以輸入C語言程序,也可以輸入?yún)R編語言程序。在本設計輸入C語言程序。第四步:保存源程序。保存文件時必須加上文件的擴展名,如果你使用匯編語言編程,那么保存時文件的擴展名為“.ASM”,如果是C語言程序,文件的擴展名使用“*.C ”。第五步:新建立Keil工程。點擊 工程 新建工程 命令,將出現(xiàn)保存對話框。在保存工程對話框中輸入你的工程的文件名,Keil工程默認擴展名為.uv2,工程名稱不用輸入擴展名,一般情況下使工程文件名

46、稱和源文件名稱相同即可,輸入名稱后保存,將出現(xiàn)選擇設備對話框,在對話框中選擇CPU的型號。第六步:選擇CPU型號。為工程選擇CPU型號,本新建工程選擇了ATMEL公司的AT89C52單片機。第七步:加入源程序到工程中。在選擇好CPU型號后,點擊確定按鈕返回主界面,此時可見到工程管理窗中出現(xiàn)“Target 1”,點擊“Target 1”前面的“”號展開下一層的“Source Group 1”文件夾,此時的新工程是空的,“Source Group 1”文件夾中什么文件都沒有,必須把剛才輸入的源程序加入到工程當中。右擊工程管理窗中的“Source Group 1”,出現(xiàn)下拉菜單,點擊“增加文件到組S

47、ource Group 1”命令,將出現(xiàn)添加文件對話框。在添加文件對話框中,找到要添加到工程中的源程序文件。注意:在對話框中的文件類型默認為“C 源文件 (*.c)”,如果你要添加到工程中的是匯編語言程序,則在文件類型中必須選中“Asm 源文件 (*.a*; *.src) ”, 以*.asm為擴展名的匯編源程序才會出現(xiàn)在文件列表框中。第八步:工程目標Target 1屬性設置。在工程項目管理窗中的Target 1文件夾上右擊,出現(xiàn)下拉菜單,點擊“目標Target 1屬性”命令,就進入目標屬性設置界面。第九步:源程序的編譯與目標文件的獲得。至此,我們已經(jīng)完成了從源程序輸入、工程建立、工程詳細設置的

48、工作,接下來我們將完成最后的步驟,此時我們可以在文本編輯窗中繼續(xù)輸入或修改我們的源程序,使程序?qū)崿F(xiàn)我們的目標,在檢查程序無誤后保存工程。接著點擊“構(gòu)造目標”快捷按鈕,進行源程序的編譯連接,源程序編譯相關的信息會出現(xiàn)在輸出窗口中的“構(gòu)造”頁中。編譯結(jié)果為0錯誤,0警告,同時產(chǎn)生了目標文件lich1.hex。如果源程序中有錯誤,則不能通過編譯,錯誤會在輸出窗口中報告出來,雙擊該錯誤,就可以定位到源程序的出錯行,我們可以對源程序進行反復修改,再編譯,直到?jīng)]有錯誤為止。注意:每次修改源程序后一定要保存。編譯通過后,我們打開工程文件夾,可以看到文件夾中有了“l(fā)ich1.hex”,這就是我們需要的最終目標

49、文件,用編程器(也稱燒錄器)把該文件寫入單片機,單片機就可以實現(xiàn)我們程序的功能了,趕快把目標文件寫入單片機,在此,我們就可以看到良好的設計效果。5.3 主程序設計5.3.1 主程序流程圖程序初始化結(jié)束進入外部中斷1停止計數(shù)啟動定時器1T1是否溢出?否是計算技術次數(shù)以及脈寬點亮單位指示燈代碼轉(zhuǎn)換動態(tài)顯示脈寬溢出次數(shù)n=1圖51 程序主體框架 程序初始化后,當外部信號為高電平時輸入引腳T1,定時器開始工作運行程序,當?shù)碗娖降絹磉M入外部中斷1,開始計數(shù),當T1不溢出,再次進入中段1,停止計數(shù),運行程序計算脈沖寬度,通過譯碼在數(shù)碼管上顯示脈寬。P1口置1,TMOD=0x91,TH=TL=1,ET1=1

50、(T1溢出),EX1=1(INT1),IT1=1(下降沿)TR1=1,Delay()掩飾0.4s第一次進入外部中斷1,空操作,T1清0T1溢出?再次進入外部中斷2,TR1=EX=1。關閉計數(shù)和外部中斷計算計數(shù)次數(shù)和脈寬,根據(jù)脈寬的范圍點亮相應單位指示燈,進入代碼轉(zhuǎn)換動態(tài)顯示脈寬,利用定時器T0的溢出中斷來定時刷新(2.5ms)T1的溢出中斷3設置溢出次數(shù)n=1是否圖52 程序詳細流程5.3.2 程序源代碼#include #include #include #define SEGMENT XBYTE0x7fff /段碼寄存器地址#define BIT_LED XBYTE0xbfff /位碼寄存器地#define fosc 11.0592/晶振頻率#define time02500/定時2500uSsbit P10=P1

溫馨提示

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

評論

0/150

提交評論