單片機的脈寬測量_第1頁
單片機的脈寬測量_第2頁
單片機的脈寬測量_第3頁
單片機的脈寬測量_第4頁
單片機的脈寬測量_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北 華 航 天 工 業(yè) 學 院課程設計報告(論文)設計課題: 單片機技術課程設計 專業(yè)班級: 自動化 學生姓名: 張玉壘 指導教師: 李葉紫 設計時間: 2010年4月25日 北華航天工業(yè)學院電子工程系單片機技術 課程設計任務書姓 名:張玉壘專 業(yè):自動化班 級:B07221指導教師:李葉紫職 稱:副教授課程設計題目:外部輸入正脈寬度測量已知技術參數(shù)和設計要求:技術指標:1測量范圍:4ms512ms2測量信號:方波3測量信號電壓:35V4顯示位數(shù):6位基本要求:1 完成單片機外部輸入正脈寬度測量的綜合設計2編程實現(xiàn)題目要求的基本功能,程序運行通過3撰寫課程實踐報告(設計思路、實現(xiàn)方法、硬件資源

2、分配、程序流程圖、運行結(jié)果分析等)所需儀器設備:偉福Lab6000綜合實驗仿真系統(tǒng)一臺套、微機一臺成果驗收形式:程序上機運行參考文獻:1胡輝、李葉紫,單片機原理與應用,中國水利水電出版社,2007 2Lab6000綜合實驗仿真系統(tǒng)說明書時間安排(1) 第八周:選題、方案設計(2) 第1次上機調(diào)試程序(3) 第2次上機課題驗收(4) 第九周:上交實踐報告指導教師: 李葉紫 教研室主任:李葉紫 2010 年 4 月 25 日目 錄一 概 述 3二 方案設計與論證3三 單元電路設計與參數(shù)計算41. 總程序框圖42. 單元電路設計 5 3. 單元程序模塊 74. 參數(shù)計算 9四 總原理圖及硬件資源分配

3、 10五 安裝與調(diào)試 11六 性能測試與分析 12七 結(jié)論 12八 心得體會 12九 參考文獻 13 一、概述 近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據(jù)具體硬件結(jié)構,以及針對具體應用對象特點的軟件結(jié)合,加以完善。工程上常需要對各種機構工作的時間特性進行分析測量,如圖1給出的這種時間特性示意圖,其中t表示時間脈沖寬度,T表示一個工作循環(huán)周期。工程實際中,影響時間特性的因素很多,因而工程中常需測量這種脈沖序列正脈沖或負脈沖的寬度。 圖1

4、脈沖波形本系統(tǒng)采用單片機AT89C51為中心器件來設計脈沖寬度測量器,系統(tǒng)實用性強、操作簡單、擴展性強。在現(xiàn)有的單片機仿真機系統(tǒng)上掌握相關軟硬件設計與調(diào)試知識,根據(jù)所選擇題目,焊接好硬件電路,正確進行元器件的測試與調(diào)試,并在計算機上編寫匯編程序調(diào)試運行,并實現(xiàn)參考選題中要求的設計。二、方案設計與論證1設定一個開關控制測量開始。按動開關接外部中斷0,響應1次外部中斷。在中斷程序中測量脈寬。2將脈沖信號從P3.3腳引入。將T1設為定時器方式工作。并工作在門控方式。初值TH1、TL1設為零。在待測脈沖高電平期間,T1對內(nèi)部周期脈沖進行計數(shù)。在待測脈沖高電平結(jié)束時,其下降沿向P3.3發(fā)中斷,在外中斷1

5、的中斷服務程序中,讀取TH1、TL1的計數(shù)值,該值就是待測脈沖的脈寬。隨后清零TH1和TL1,以便下一脈寬的測量。3由于T1方式1最大定時時間為131ms,因此當測脈沖寬度超過131ms時,需要進行進位處理。4為防止在外部輸入正脈沖當中啟動計數(shù)而產(chǎn)生錯誤測量,要在測到是低電平之后的下一個高電平才開始啟動定時器,再次測到低電平時停止計數(shù),把計數(shù)結(jié)果處理后送數(shù)碼管顯示。三、單元電路設計與參數(shù)計算1總程序框圖2單元電路設計本設計由單片機、測量控制電路、鍵盤及顯示電路幾個組成部分,各部分采用的電路形式及主要器件確定如下:(1)單片機部分選用89C51作為主機,同時要設計89C51單片機的晶振電路和復位

6、電路。單片機部分框圖單片機部分原理圖(2)測量電路部分直接利用單片機內(nèi)部的定時/計數(shù)器實現(xiàn)頻率的測量。測量電路框圖(3)顯示部分具體電路顯示部分框圖顯示部分原理圖3單元程序模塊(1)主程序START: MOV SP ,#50H MOV TMOD ,#90H ;設置定時器1的工作方式為1,GEAE置1 MOV TH1 ,#00H MOV TL1 ,#00H ;定時器時間初值置零 MOV IE ,#81H ;開外部中斷0 CALL LED ;調(diào)顯示 LJMP START END(2)中斷服務子程序 (啟動定時功能)INT_0: CLR EX0 ;關中斷 MOV DATC ,#00H MOV TH1

7、 ,#00H MOV TL1 ,#00H SETB TR1 ;啟動定時器1,但不計數(shù) JNB P3.3,$ ;等待正脈沖CH0: JNB TF1 ,CH1 ;計數(shù)沒溢出,跳轉(zhuǎn) INC DATC CLR TF1 MOV TH1 ,#00H ;裝入初值 MOV TL1 ,#00H SETB TR1 ;啟動定時器CH1: JB P3.3 ,CH0 ;判斷正脈沖是否結(jié)束 CLR TR1 ;停止計數(shù) MOV A ,TL1 MOV DATL ,A MOV A ,TH1 MOV DATH ,A(3)顯示子程序LEDMAP:DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h D

8、B 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hLED: MOV R0 ,#LEDBuf MOV R1 ,#6 ; 共6個八段管 MOV R2 ,#00100000b ; 從左邊開始顯示Loop: MOV DPTR ,#8002H MOV A ,#0 MOVX DPTR,A ; 關所有八段管 MOV A ,R0 MOV DPTR ,#8004H MOVX DPTR,A MOV DPTR ,#8002H MOV A ,R2 MOVX DPTR,A ; 顯示一位八段管 MOV R6 ,#1 MOV R7 ,#0L: DJNZ R7 ,L DJNZ R6 ,L MOV

9、 A ,R2 ; 顯示下一位 RR A MOV R2, A INC R0 DJNZ R1 ,Loop RET4參數(shù)計算 計算脈寬:d=1/f(輸入信號頻率)*2測量脈寬:d=計數(shù)值×TC(機器周期)(s),d(s)÷1000d(ms)四、總原理圖及硬件資源分配1總原理圖 2硬件資源分配表存儲單元、寄存器用途備注30H存放計數(shù)低8位31H存放計數(shù)高8位32H存放計數(shù)進位位33H-38H顯示緩沖區(qū)50H堆棧區(qū)R0存放顯示緩沖區(qū)指針R1存放用于顯示的數(shù)碼管數(shù)R2點亮數(shù)碼管的位選量R3暫存處理計數(shù)壓縮BCD碼形式的小數(shù)后百分位、千分位R4暫存處理計數(shù)壓縮BCD碼形式的個位、小數(shù)后十

10、分位R5暫存處理計數(shù)壓縮BCD碼形式的百位、十位R6用于延時程序R7用于延時程序五、安裝與調(diào)試1硬件連線: 單片機外部中斷1接信號發(fā)生器來引入所測量的外部脈沖,外部中斷0接負脈沖發(fā)生器作為單片機的中斷控制,顯示部分按照試驗箱上實驗十六(八段數(shù)碼管的顯示)的連線連接。 2在調(diào)試過程中遇到的問題及調(diào)試解決方法: (1)程序開始調(diào)試時總報錯,程序無法運行調(diào)試。檢查了保存情況,程序保存后綴名正確。仔細排查后發(fā)現(xiàn),在輸入程序時為了輸入注釋漢字,大部分情況下中英文輸入法混淆切換使用,使得程序中逗號分隔符有些是在中文輸入狀態(tài)下輸入的,導致程序無法運行。修正方法:將程序中所有逗號在英文輸入狀態(tài)下重新輸入。再次

11、運行成功,進入正常調(diào)試。(2)在同一個外部正脈沖的情況下,多次測量卻得到不同的數(shù)值。思考后認為問題應該出在計數(shù)算時間部分,檢查推敲計數(shù)算時間程序段,原來是計數(shù)開始時刻選取的不對,原程序為SETB TR1JB P3.3 ,$ JNB P3.3 ,$這樣的話,如果相應外部中斷的時候外部信號正好是高電平,則定時器開始計數(shù),得到了不正確的計數(shù)結(jié)果,由于每次加外部中斷的時刻不同,導致了同一個信號測得多個數(shù)值。修改辦法:將程序調(diào)整為JB P3.3 ,$SETB TR1JNB P3.3 ,$如此,當外部信號是高電平時等待,低電平來時等待,再次是高電平時才開始計數(shù),低電平時結(jié)束計數(shù),得到了正確的計數(shù)結(jié)果。3、

12、數(shù)碼管高位起第二位總是顯示數(shù)字7而不是應有的結(jié)果。此處錯誤較為隱秘,先是檢查了硬件試驗箱是否損壞,調(diào)用了實驗數(shù)碼管顯示程序,數(shù)碼管可以正常顯示,說明是程序錯誤;檢查了程序整個的邏輯,沒問題;應該是顯示程序段的錯誤,但多次仔細檢查了數(shù)值轉(zhuǎn)化及顯示程序段并未發(fā)現(xiàn)錯誤;排除了是邏輯錯誤,應該是非邏輯錯誤,最后查找相關資料并向老師請教,才明白錯誤是字型碼表放錯了位置,誤把其放在了將數(shù)值轉(zhuǎn)換成非壓縮的BCD碼的程序段前面,字型碼表的第一個3FH可能是某條指令的機器碼,當程序執(zhí)行到這時,發(fā)生了錯誤的指令執(zhí)行,導致了錯誤的顯示。修正方法:將字型碼表調(diào)整到整個程序段的末尾或主程序開始前。再次運行得出了正確的結(jié)

13、果。六、性能測試與分析 完成調(diào)試后運行程序,在單片機外部中斷1加外部脈沖信號,用單片機外部中斷0控制中斷,數(shù)碼管能準確顯示外部方波信號正脈沖寬度,根據(jù)輸入脈沖信號的頻率,計算輸入脈沖的寬度與測量結(jié)果對照,是否符合設計要求。七、結(jié)論 本系統(tǒng)采用單片機AT89C51為中心器件來設計脈沖寬度測量器,系統(tǒng)實用性強、操作簡單、擴展性強。該系統(tǒng)測量4ms512ms的方波,共顯示6位數(shù),精確到0.001ms。通過該系統(tǒng)的測量結(jié)果和理論值的對比,系統(tǒng)誤差小,能很好的實現(xiàn)系統(tǒng)要求。八、設計總結(jié)經(jīng)過一個學期的單片機的學習,我有機會又學到了一種新的機器語言。經(jīng)過老師詳細講解我已對單片機的各個指令功能,尋址方式,程序

14、設計方法有了初步了解。但畢竟課本上的只是理論。這次課設我分到的任務是外部輸入正脈沖寬度的測量,科設的題目綜合性很強,用到了外部中斷0,定時器T1的方式1,數(shù)制轉(zhuǎn)換,數(shù)碼管顯示等。平時學習時我們都學到了各子模塊的程序,到真正將他們綜合起來去控制實驗箱還是第一次。首先在編寫程序時我們就遇到了很大的困難, 編寫程序需要有一個冷靜的頭腦,心浮氣躁是不行的。遇到困難時更是要心平氣和,細致思考。幸運的是在我們小組激烈討論,老師細心指導下我們順利完成了課設。最終的程序由主程序,中斷服務子程序 (啟動定時功能),顯示子程序,計數(shù)值*機器周期,數(shù)制轉(zhuǎn)換,壓縮BCD碼轉(zhuǎn)換成非壓縮BCD碼六個模塊組成。在對程序的宏

15、觀理解基礎上,細微處理決定成敗。課設讓我對單片機軟件與硬件結(jié)合有了一定的了解,也激發(fā)了我學習這門課的熱情,同時我也認識到現(xiàn)在知道的單片機知識遠遠不夠,要想要將所學運用到實際工作中還需刻苦努力鉆研,大量實踐。在以后的學習中我一定注意這方面的練習。本系統(tǒng)是以單片機89C51芯片為核心部件,通過89C51芯片內(nèi)部軟件計數(shù)來測量脈沖寬度的功能。此次在軟件上是花費時間最多的,我們上網(wǎng)找資料,上圖書館,盡可能的了解有關于脈沖寬度測量這方面的知識。通過這次課程設計,使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我在單片機的基本原理、單片機應用系統(tǒng)結(jié)合過程,以及在常用編程設計思路技巧(特別是匯編語言C51語言)的掌握方面都能向前邁了一大步。九、參考文獻1胡輝、李葉紫,單片機原理與應用,中國水利水電出版社,2007

溫馨提示

  • 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

提交評論