<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機測量頻率的設(shè)計與實現(xiàn)

          單片機測量頻率的設(shè)計與實現(xiàn)

          作者: 時間:2012-11-27 來源:網(wǎng)絡(luò) 收藏

          對于周期波頻率的測量方法很多,但大多是通過測量間接計算頻率。本文介紹了用目前應(yīng)用比較廣泛的系列對周期波頻率進行測量,并通過LED以數(shù)字形式直觀地示出頻率,實現(xiàn)測量的智能化,省去間接對頻率計算的麻煩與錯誤。文章對其測量原理,設(shè)計和實現(xiàn)作了說明,介紹了主要程序,并進行了誤差分析。

          引言
          目前廣泛應(yīng)用到國民經(jīng)濟建設(shè)和日常生話的許多領(lǐng)域,成為測控技術(shù)現(xiàn)代化不可缺少的重要工具。而本文適應(yīng)這一發(fā)展趨勢,把系列應(yīng)用于對周期波頻率的測量。并通過LED顯示器自動顯示出來,這對于頻率的測量帶來了極大的方便。

          設(shè)計思想
          利用施密特觸發(fā)器將邊緣緩慢變化的周期性信號如正弦波、三角波或任意形狀的模擬信號變換成同頻率的矩形脈沖。通過系列單片機內(nèi)部的兩個十六位定時,計數(shù)器測量某段時間內(nèi)的外加脈沖數(shù),經(jīng)過處理并通過LED直接顯示出所加信號的頻率。單片機內(nèi)部的T0用來定時,T1用來計數(shù)(下降沿觸發(fā))。當(dāng)來一個計數(shù)脈沖則計數(shù)一次。在T0開始定時的同時,T1開始計數(shù);T0定時1s時間到時,T1停止計數(shù)。方框圖如圖1所示。
          單片機測量頻率的設(shè)計與實現(xiàn)

          硬件設(shè)計
          的硬件電路主要由計數(shù)脈沖形成電路和計數(shù)顯示電路兩大部分組成。計數(shù)脈沖形成電路用"555"定時器接成施密特觸發(fā)器對外加的周期波進行變換,使之輸出為矩形脈沖。電路如圖2所示,計數(shù)顯示電路如圖3所示,主要包括:
          (1)由INTEL公司生產(chǎn)、晶振頻率為12MHz的89S02單片機。通過軟件編程使它內(nèi)部的定時器T0定時,T1對外部的所加脈沖計數(shù)。然后把測量結(jié)果值通過P0口輸出。89S02自帶8K閃存,可以有90—100個現(xiàn)場測量數(shù)據(jù),供回放調(diào)檢。
          (2)4位七段共陰極的LED顯示器。
          (3)由于采用的是4位共陰極的動態(tài)掃描方式顯示,段代碼由89S02的P0口提供,位選線則由89S02P2口的P2.0~P2.3提供。由于89S02的輸入,輸出口不能提供足夠的灌電流,因此用G1~G4提供給LED足夠的顯示電流。
          單片機測量頻率的設(shè)計與實現(xiàn)
          單片機測量頻率的設(shè)計與實現(xiàn)

          軟件設(shè)計
          用MCS-51單片機的程序主要包括:初始化程序,定時計數(shù)程序、LED顯示程序。初始化程序略。定時計數(shù)主要程序:
          MOV R2,#14H ;定時20個0.05秒
          ANL TMOD,#0FH;設(shè)置T0定時T1計數(shù)
          ORL TMOD,#51H
          MOV TH0,#3AH;置定時器初值
          MOV TL0,#B1H
          MOV TH1,#00H;置計數(shù)器初值
          MOV TL1,#00H
          SETB TR0 ;啟動定時
          SETB TR1 ;啟動計數(shù)
          XX:JBC TF0,LOOP ;定時溢出則轉(zhuǎn)移
          SJMP XX ;否則繼續(xù)查詢
          LOOP:MOV TH0,#3AH ;置定時初值
          MOV TL0,#B1H
          DJNZ R2,XX ;R2不等于0則轉(zhuǎn)移
          CLR TR1 ;停止計數(shù)
          LED顯示程序
          MOV A,0H
          MOV A,TL1 ;TL1值送累加器A
          MOV B,#100 ;處理計數(shù)結(jié)果
          DIV AB
          MOV R0,B ;余數(shù)放77H單元
          MOV 77H,R0
          MOV 7AH,A ;商放7AH單元
          MOV A,0H
          MOV A,77H ;77H送累加器A
          MOV B,#10 ;處理計數(shù)結(jié)果
          DIV AB
          MOV R0,B ;余數(shù)放78H單元
          MOV 78H,R0
          MOV 79H,A ;商放79H單元
          (測量數(shù)據(jù)存儲程序略)
          DPLOP1: MOV A,78H ;取出時間的十位數(shù)送A
          MOVC A,@A+DPTR ;查表
          MOV P0,A ;送P0口
          CLR P2.3 ;開個位顯示
          ACALL D1MS ;延時0.1秒
          SETB P2.3 ;關(guān)個位顯示
          MOV A,79H ;取出時間的個位數(shù)送A
          MOVC A,@A+DPTR ;查表
          MOV P0,A ;送P0口
          CLR P2.2 ;開十位顯示
          ACALL D1MS ;延時0.1秒
          SETB P2.2 ;關(guān)十位顯示
          MOV A,7AH ;取出時間的百位數(shù)送A
          MOVC A,@A+DPTR ;查表
          MOV P0,A ;送P0口
          CLR P2.1 ;開百位顯示
          ACALL D1MS ;延時0.1秒
          SETB P2.1 ;關(guān)百位顯示
          D1MS:MOV R5,#60
          DJNZ R5,$
          LJMP DPLOP1
          RET
          ;段數(shù)碼管各劃的數(shù)字排列表
          NUMTAB:DB
          0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;
          顯示內(nèi)容的對應(yīng)代碼
          0 1 2 3 4 5 6 7 8 9;顯示內(nèi)容

          測量范圍
          在上述程序下的最大為255Hz。適當(dāng)調(diào)整程序后的最大測量頻率可為89S02主頻的1/12,但在保證測量精度的前提下最大測量頻率宜安排在主頻的1/100以下。

          誤差分析
          上述程序的最大測量頻率為255Hz,由于單片機在響應(yīng)中斷的時候有2—6個機器周期,按最大誤差計算,6-2=4個機器周期,在1 s鐘中斷響應(yīng)一共發(fā)生20次,最不利的累計誤差時間為4×20=80微秒,因此在此程序下的最大誤差為80/1000000=0.08/1000,這樣的精度完全能滿足現(xiàn)場檢測的需要。

          塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
          施密特觸發(fā)器相關(guān)文章:施密特觸發(fā)器原理


          關(guān)鍵詞: 單片機 測量頻率 MCS-51

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();