頻率計-單片機實訓報告_第1頁
頻率計-單片機實訓報告_第2頁
頻率計-單片機實訓報告_第3頁
頻率計-單片機實訓報告_第4頁
頻率計-單片機實訓報告_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《單片機原理及應用》實訓報告學號姓名指導教師:2012年10月18日實訓題目:頻率計1系統(tǒng)設計1.1設計要求1.1.1設計任務使用555產(chǎn)生矩形波信號,輸入到單片機進行測量頻率。1.1.2性能指標要求1設計測頻電路中波形產(chǎn)生部分硬件電路; 2根據(jù)測頻法和測周法的優(yōu)缺點選擇并切換頻率測量的方法. 3數(shù)碼管顯示頻率測量的結果 4選作:其他特殊功能。 1.2設計思路及設計框圖1.2.1設計思路測試頻率有兩種方法,測周法與測頻法,低頻適用于測周法,高頻適用測頻法。1測周法:通過測量被測信號的周期的倒數(shù)得到頻率,選用適當?shù)臅r基,以被測信號作為計數(shù)的閘門進行測量,得到閘門內(nèi)的計數(shù)值,與時基相乘即為被測信號的周期,周期的倒數(shù)即為頻率。該法適合測量頻率低的信號。2測頻法:通過頻率的定義即單位時間的脈沖數(shù),得到被測信號的頻率。選用適當?shù)臅r基,如1秒,以此作為計數(shù)閘門,得到閘門內(nèi)的計數(shù)值即為信號的頻率。該法適合測量頻率高的信號。外部的頻率信號由單片機的外部中斷0輸入。時基信號由內(nèi)部定時器0產(chǎn)生,定時器1產(chǎn)生中斷用來數(shù)碼管的動態(tài)掃描。測周法的實現(xiàn):外部中斷由下降沿觸發(fā),第一次觸發(fā),打開定時器0,第二次觸發(fā)關閉定時器,讀出定時時間,即為周期,再轉(zhuǎn)換成頻率進行顯示。測頻法的實現(xiàn):當?shù)谝粋€中斷來臨,打開定時器0,定時一秒,一秒的過程中,對中斷次數(shù)進行統(tǒng)計,一秒后,停止計數(shù),此時的數(shù)據(jù)即為頻率。555構成多諧振蕩器電路。輸出高電平時間,及電容充電的時間0.693*(Ra+Rb)C;輸出低電平的時間,及電容放電時間0.693*Rb*C;總的周期T=0.693*(Ra+2Rb)C;占空比:q=(Ra+Rb)/(Ra+2Rb);由給定器件可知,兩個滑阻若為0,則Ra=1K,Rb=1k,c=1uf,最小的周期為:2.079*10E-3.則最大的頻率為1/2.079*10E-3=481HZ最大周期:0.693*(501000+2*501000)*1E-6=1.041s最小的頻率為1/1.041=0.96HZ;該電路產(chǎn)生周期的范圍是1hz到481hz1.2.2總體設計框圖2各個模塊程序的設計 主函數(shù):用于測頻法測周法的切換 voidmain(){ initial(); while(1) { if(freq<=20) { cal_t(); } else { cal_f(); } }}數(shù)碼管的顯示:uchara=0xfe;ucharb=4;ucharseg[10]={ 0xd7,0x14,0xcd,0x5d,//0~3 0x1e,0x5b,0xdb,0x15,//4~7 0xdf,0x5f };voiddisplay(){ P0=a; P2=seg[num[b-1]]; //b由于硬件原因如此循環(huán) a=a<<1|0x01; b--; if(b==0) { a=0xfe; b=4; } }頻率的拆分計算:voidtakeout(uintf){ num[3]=f/1000; num[2]=f/100%10; num[1]=f/10%10; num[0]=f%10;}復位操作:voidreset(){ EX0=0; TR0=0; freqnum=0; ms_0_1=0; ms_10=0; s=0; time=0;}測周法程序設計:voidcal_t(){ EX0=1; while(freqnum==0) { } while(freqnum==1) { TR0=1; if(ms_0_1) { time++; ms_0_1=0; } if(time==10000) { freq=1; reset(); return; } } freq=10000/time; takeout(freq); reset(); }測頻法程序設計:voidcal_f(){ EX0=1; TR0=1; while(s==0) { } freq=freqnum; takeout(freq); reset(); }3調(diào)試過程在調(diào)試過程中遇到了一些問題:在頻率測試到400hz時頻率會跑飛,經(jīng)過思考,是每次顯示之前我都進行了一次頻率的拆分,百位十位個位的計算,這個非常的消耗時間。分析,并不是每次顯示都需要計算,而是測試結束后只需計算一次就可以了。所以把計算部分獨立出來,寫了takeout函數(shù)。改正后顯示正常。數(shù)碼管閃爍,之前使用延時的方法進行數(shù)碼管動態(tài)顯示。由于計算,測頻需要一定延時,導致數(shù)碼管的延時時間加長會出現(xiàn)閃爍。于是,數(shù)碼管的動態(tài)掃描改為中斷方式。并且程序盡可能的執(zhí)行效率較高,對計算測頻不產(chǎn)生影響。在調(diào)試555時,3腳示波器波形輸出不是方波,于是測試2腳的波形,2腳正常,經(jīng)過查找原因,是滑阻調(diào)的太大。導致頻率太低,將其調(diào)小后,頻率升高,示波器可以測試正常。4功能測試4.1測試儀器與設備示波器4.2性能指標測試 由于555的電路原因產(chǎn)生的頻率的范圍是1hz到481hz,經(jīng)測試與示波器比對,該頻率計測試范圍2hz到512hz。4.3誤差分析測周法與測頻法我都做了同步的處理,誤差主要在單片機計時的所用的振蕩源上面。但是這個誤差在1us完全可以忽略。5實訓心得體會本次實訓讓我對程序的編寫又有了進一步的認識。畫好流程圖,有明確的思路非常有助于程序的編寫。我采用至上而下的編寫方式完成。在測頻方面的算法方面我做了同步處理,使得誤差減小。本次由于是洞洞板焊接,我沒有畫pcb圖,但是花了連線草圖。仍需要精心布局,盡量減少跳線。在測試方面,熟練使用了示波器測試555,根據(jù)原理測試2,3腳的的波形,很快調(diào)試正常,是我明白通過懂得原理才能更好的上手。6參考文獻喻宗泉.單片機原理與應用技術,西安科技大學出版社,2008年。附錄附錄1:仿真圖附錄2:程序清單#include"global.h"#include"seg.h"#include"isr.h"#include"compute.h"ucharh;uchark;voidmain(){ initial(); while(1) { if(freq<=20) { cal_t(); } else { cal_f(); } }}#include"seg.h"#include"isr.h"#include"compute.h"uchara=0xfe;ucharb=4;ucharseg[10]={ 0xd7,0x14,0xcd,0x5d,//0~3 0x1e,0x5b,0xdb,0x15,//4~7 0xdf,0x5f };voiddisplay(){ P0=a; P2=seg[num[b-1]]; //b由于硬件原因如此循環(huán) a=a<<1|0x01; b--; if(b==0) { a=0xfe; b=4; } }#include"isr.h"#include"seg.h"#include"compute.h"/* 定時器初始化 定時器0,產(chǎn)生時間脈沖:0.1ms(用于測周法的基準時間)10ms(用于動態(tài)掃描數(shù)碼管)1s(用于測頻法的時間閥門) */uchari,j;ucharms_0_1,ms_10,s;uintfreqnum;ucharctime;uchardistime;ucharcount;voidinitial(){ TMOD=0x12; //8位重裝模式 TH0=0x9c; TL0=0x9c; //產(chǎn)生0.1ms的時間脈沖 TH1=0xec; TL1=0x78; ET0=1; ET1=1; TR1=1; IT0=1; //下降沿觸發(fā) EA=1; }voidtime_pulse()interrupt1 //產(chǎn)生0.1ms,10ms,1s三種脈沖{ ms_0_1=1; i++; if(i==100) { ms_10=1; i=0; j++; } if(j==100) { s=1; j=0; }}voidfrequence()interrupt0{ freqnum++;}voiddisp()interrupt3 //10ms{ TH1=0xec; TL1=0x78;/* count++; if(count==5) { ctime=1; } distime=1;*/ display(); }#include"compute.h"#include"isr.h"#include"seg.h"uintfreq;uinttime;ucharnum[4];voidtakeout(uintf){ num[3]=f/1000; num[2]=f/100%10; num[1]=f/10%10; num[0]=f%10;}voidreset(){ EX0=0; TR0=0; freqnum=0; ms_0_1=0; ms_10=0; s=0; time=0;}voidcal_t(){ EX0=1; while(freqnum==0) { } while(freqnum==1) { TR0=1; if(ms_0_1) { time++; ms_0_1=0; } if(time==10000) { freq=1; reset(); return; } } freq=10000/time; takeout(freq); reset(); }voidcal_f(){ EX0=1; TR0=1; while(s==0) { } freq=freqnum; takeout(freq); reset(); }#ifndef_GLOBAL_H_#define_GLOBAL_H_#defineucharunsignedchar#defineuintunsignedint#include<reg52.h>#endif#ifndef_SEG_H_#define_SEG_H_#include"global.h"externvoiddisplay();#endif#ifndef_ISR_H_#define_ISR_H_#include"global.h"externucharm

溫馨提示

  • 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

提交評論