資源描述:
《單片機作業(yè)(冉懋淞092003111093)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、引言:隨著集成電路技術(shù)的發(fā)展、單片機的普及,用單片機組成的測量電路頻率具有精度高、速度快、成本低的優(yōu)點,日益受到人們的重視。MCS-51系列單片機內(nèi)部精確的時鐘源及校正電路,能進行在線檢測及顯示,具有測試精度和速度好大的優(yōu)點。設(shè)計任務(wù):設(shè)計一個基于MCS-51的簡易頻率計設(shè)計要求:1:測量范圍:幅度0.5V—5V,頻率1Hz—10KHz;2:測量精度≤0.1℅;3:用4位數(shù)碼管顯示,當(dāng)頻率變化時,能通過數(shù)碼管及時看到變化后的信號頻率。4:若信號為A、B頻率相同,要求測出這兩個信號的相位差。設(shè)計原理:如圖1所示。待測信號V1,V2經(jīng)過前
2、置處理和整形后,經(jīng)過相位差檢測電路,輸出結(jié)果直接送入單片機進行處理,標(biāo)準(zhǔn)正弦信號由ICL8038產(chǎn)生,用于對待測信號V1,V2的相位差進行校正,提高精度(精度≤0.1℅)。前置處理模塊前置處理模塊主要是對信號進行濾波,濾除干擾并進行適當(dāng)?shù)姆糯?它與整形模塊一同構(gòu)成信號預(yù)處理電路,輸出TTL電平,為相位差的檢測作好準(zhǔn)備。信號整形信號經(jīng)過帶通濾波器濾掉高頻干擾和低頻漂移信號并進行線性放大后,變?yōu)橐徊ㄐ握?guī)、幅值適當(dāng)?shù)恼倚盘?然后經(jīng)過滯回比較器及晶體三極管整形成TTL電平。采用滯回比較器,能夠提高電路的抗干擾能力,本系統(tǒng)將滯回比較器的閾值
3、電壓設(shè)為0.4V,能夠有效濾除放大后幅值小于0.4V的干擾信號,并得到與輸入信號同頻率、占空比為50%的方波。電路如圖2所示。相位差檢測電路由兩個J-K觸發(fā)器組成的邊沿觸發(fā)型相位差檢測電路如圖3所示。F1的輸出Q1和分別接F2的J2和K2,所以F2在CLK2端受下跳沿觸發(fā)后,建立的狀態(tài)與F1相同;F2的輸出Q2和分別接F1的K1和J1所以F1在CLK1端受下跳沿觸發(fā)后,建立的狀態(tài)與F2相反。根據(jù)上述特點,并考慮到F1和F2是下跳沿觸發(fā)的J-K觸發(fā)器,可畫出Q1和Q的輸出波形以及經(jīng)過與非門后的輸出脈沖波形,如圖4所示。圖4(c)中實線波
4、形對應(yīng),虛線波形對應(yīng)。由圖4可見,輸出電壓平均值與相位差成線性關(guān)系校正電路標(biāo)準(zhǔn)正弦信號由ICL8038產(chǎn)生,經(jīng)反相后分成兩路信號,即標(biāo)準(zhǔn)相位差為180?,用于對待測信號V1,V2的相位差進行校正,提高精度。信號的采集、處理及顯示信號從P3.3和P3.5輸入,從P3.5輸入的信號用于測量方波的頻率時作用,而P3.3信號時用于測量正脈沖信號寬度時作用。設(shè)計思路對于測量頻率:采用定時閘門計數(shù)方法測量脈沖頻率。設(shè)定時器/計數(shù)器0為定時方式,提供100MS的基準(zhǔn)閘門時間TR。在10TR期間,定時器/計數(shù)器1對外部脈沖進行計數(shù),所獲得的計數(shù)值M即
5、為被測脈沖信號的頻率。設(shè)定時器/計數(shù)器參數(shù)設(shè)定定時器/計數(shù)器0用來提供100MS的基準(zhǔn)閘門時間,單片機時鐘振蕩器頻率為6MHZ,定時器/計數(shù)器1對外部脈沖進行計數(shù)。定時器/計數(shù)器0采用方式1,定時器狀態(tài)由內(nèi)部TR0控制啟停;定時器/計數(shù)器1采用方式1,計數(shù)器狀態(tài)由內(nèi)部TR1控制啟停。因此TMOD=01010001B=51H.T0的計數(shù)初值為式中,,則程序見附錄1對于測量脈沖寬度:由外部引腳控制計數(shù)器定時計數(shù)的啟動,停止,高電平時啟動計數(shù),低電平時停止計數(shù)。當(dāng)為高電平時,計數(shù)器中的計數(shù)值N為12分頻的時鐘頻率的周期數(shù),則脈沖寬度定時器/
6、計數(shù)器的控制字本程序中選用T1,方式1,外部控制啟/停(GATE=1),及定時器方式()故TMOD=1001B.令TMOD=90H程序見附錄1計算公式附錄一MAIN:SJMPMSFC;跳轉(zhuǎn)到MSFCMOVR4,#64HSSS:MOVTMOD,#01H;設(shè)定T0狀態(tài)字MOVTL0,#0CH;計數(shù)器TH,TL0裝入初值MOVTH0,#0FEHSETBTR0;開始計時SSS1:JBCTF0,SSS2SJMPSSS1SSS2:DJNZR4,SSSCLRTR0SJMPSTW;跳轉(zhuǎn)到STWSJMPMAINMSFC:MOVTMOD,#51H;設(shè)T0
7、,T1控制字MOVR0,#0AH;100MS定時的10倍擴展MOVTL1,#00H;T1計數(shù)器清零MOVTH1,#00HMOVTL0,#0B0H;T0計數(shù)器裝入計數(shù)初值MOVTH0,#3CHSETBP3.5;置T1引腳為輸入方式JBP3.5$;等待為低電平SETBTR0;動T0計數(shù)SETBTR1;啟動T1計數(shù)WAIT:JBCTF0,SECC;查詢100MS定時時間,定時時間到,轉(zhuǎn)SECCSJMPWAIT;100MS定時未到,等待SECC:MOVTL0,#0B0H;重裝計數(shù)初值MOVTH0,#3CHDJNZR0,WITH;查詢1S定時到
8、,為轉(zhuǎn)到WAITCLRTR1;1S定時到,停止T1計數(shù)CLRTR0;停止T0計數(shù)MOV31H,TH1;將T1計數(shù)值M送入31H,30HMOV30H,TL1MOVR3,0AH;給R3賦初值MOVA,31HMOVB,R3DI