脉冲时间宽度c语言,基于AT89C52脉冲宽度测量仪的设计与实现
趙翠玉
摘要:本文基于AT89C52的脈沖寬度測量儀的設(shè)計(jì)。該儀器測量結(jié)果采用了軟件數(shù)字濾波,消除了測量中抖動(dòng)問題,測量精度高、穩(wěn)定性好,具有一定的實(shí)用性。
關(guān)鍵詞:AT89C52;測量儀;脈沖寬度
中圖分類號:TM935.4 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2019)02-0129-01
0 引言
脈沖寬度的測量,實(shí)質(zhì)是時(shí)間的測量,以往測量儀采用的是門電路來進(jìn)行脈沖寬度測量,而 AT89C52單片機(jī)系統(tǒng)資源豐富:內(nèi)置256KB的RAM模塊、32個(gè)外部雙向可編程I/O口線、3個(gè)16位定時(shí)器/計(jì)數(shù)器、0-24MHz時(shí)鐘頻率、2個(gè)外中斷口[1]。該單片機(jī)不僅提供豐富的硬件資源,也提供良好的上位機(jī)控制軟件,只要通過軟件的功能操作就能實(shí)現(xiàn):源代碼的調(diào)試編譯,查找與修改錯(cuò)誤之處,在線代碼下載等功能。基于以上優(yōu)點(diǎn),本文設(shè)計(jì)了采用AT89C52單片機(jī)實(shí)現(xiàn)脈沖寬度測量儀。
1 測量機(jī)理
基于AT89C52的脈沖寬度測量儀以AT89C52為系統(tǒng)控制核心,通過AT89C52內(nèi)部的定時(shí)器對脈沖寬度進(jìn)行測量。設(shè)定AT89C52工作于定時(shí)器方式,計(jì)數(shù)的輸入為內(nèi)部時(shí)鐘信號,頻率為固定的12MHz。只要令GATE=1,TR0=1,TR1=1,將輸入脈沖接到INT1口,即可測量輸入脈沖寬度,測量機(jī)理如圖1所示。
2 系統(tǒng)硬件設(shè)計(jì)
該測量儀主要由AT89C52單片機(jī)最小系統(tǒng)、555定時(shí)電路、LED顯示驅(qū)動(dòng)電路、LED顯示電路和電源電路等組成[2]。
測量時(shí)通過單片機(jī)外中斷INT1和定時(shí)器T1配合來完成外部待測脈沖高電平持續(xù)時(shí)間的測量。首先將U1(AT89C52)的T1設(shè)為定時(shí)器方式,且門控GATE=1;然后將U2(NE555)的3腳輸出的方波信號送至U1的P3.3腳(INT1口),當(dāng)P3.3腳的信號出現(xiàn)下降沿時(shí),進(jìn)入INT1中斷服務(wù)程序并判斷脈沖位置,如果是第一個(gè)方波脈沖,則打開計(jì)數(shù)器T1的開關(guān)(將TR1設(shè)為1),否則關(guān)閉T1的開關(guān)(將TR1設(shè)為0),等到第二個(gè)方波脈沖上升沿抵達(dá)U1的P3.3腳時(shí),TH1、TL1自動(dòng)開始計(jì)數(shù),當(dāng)?shù)诙€(gè)方波脈沖下降沿到來時(shí)計(jì)數(shù)器自動(dòng)關(guān)閉停止計(jì)數(shù),此時(shí)為待測信號高電平期間,且再次進(jìn)入外部中斷INT1的中斷服務(wù)程序中,讀取TH1、TL1的計(jì)數(shù)值,并計(jì)算出所測量的結(jié)果,該結(jié)果就是待測方波脈沖的寬度。隨后,清零TH1和TL1,以便下一個(gè)脈寬的測量。同時(shí),測得的信號寬度數(shù)值從U1的P1.0~P1.7口分別輸出a~g及dp八位段選字符編碼信號至數(shù)碼管的相應(yīng)段選線,從U1的P3.4~P3.7口輸出四只數(shù)碼管的位選信號,分別經(jīng)Q5~Q8處理送至四只數(shù)碼管相應(yīng)的位選線,控制相應(yīng)數(shù)碼管的點(diǎn)亮,實(shí)現(xiàn)被測結(jié)果的實(shí)時(shí)顯示。系統(tǒng)工作電壓由電源電路把220交流電經(jīng)變壓器降壓、D1~D4整流、C9~C10濾波、U3(7805)穩(wěn)壓得到+5V穩(wěn)定電壓來提供。
可以得出測量脈沖寬度分兩個(gè)階段:一個(gè)是準(zhǔn)備階段,完成狀態(tài)的設(shè)置;另一個(gè)是測量階段,從脈沖上升沿開始測量計(jì)數(shù),到脈沖下降沿結(jié)束計(jì)數(shù),以兩個(gè)脈沖為一個(gè)測量周期。
3 系統(tǒng)軟件設(shè)計(jì)
該系統(tǒng)軟件使用C語言進(jìn)行了編寫,采用了模塊化的設(shè)計(jì)思想[3],將設(shè)計(jì)劃分為T0溢出中斷、T1溢出中斷和INT1溢出中斷等相應(yīng)的程序模塊,分別進(jìn)行設(shè)計(jì)、調(diào)試,增強(qiáng)了程序的條理性。AT89C52的脈沖寬度測量儀主程序設(shè)計(jì)流程如圖2所示。
4 數(shù)據(jù)及結(jié)果的分析
通過實(shí)驗(yàn)觀察,對T0、T2兩種方式都可以達(dá)到計(jì)數(shù)脈寬的長度的要求,實(shí)驗(yàn)數(shù)據(jù)均可以達(dá)到所要求的:6位 LED顯示計(jì)數(shù)值,時(shí)間精確到0.1秒。
實(shí)驗(yàn)中也遇到一些問題,如數(shù)碼管顯示不出數(shù)值(P口位置插錯(cuò)),小數(shù)點(diǎn)顯示錯(cuò)位(沒有在程序中編對位置),顯示只顯示第一次多出數(shù)值(調(diào)用程序返回時(shí)出錯(cuò))等問題。
5 結(jié)語
本文的創(chuàng)新在于遵循硬件電路可靠、操作簡便,充分借助AT89C52單片機(jī)系統(tǒng)的豐富資源,通過硬件的完整設(shè)計(jì)和軟件強(qiáng)大的編程等過程,實(shí)現(xiàn)了脈沖寬度的測量功能,具有實(shí)際的應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 羅印升.單片微機(jī)原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2012.
[2] 路而紅.專用集成電路設(shè)計(jì)與電子設(shè)計(jì)自動(dòng)化[M].北京:清華大學(xué)出版社,2004.
[3] 張培仁.基于C語言編程MCS-51單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2003.
Design and Implementation of Pulse Width Measuring Instrument Based on AT89C52
ZHAO Cui-yu
(Jiangsu Urban and Rural Construction College,Changzhou Jiangsu? 213000)
Abstract:The design of pulse width measuring instrument based on AT89C52 is presented in this paper. The measurement results of the instrument are filtered by software digital filter, which eliminates the problem of jitter in the measurement. The measurement accuracy is high and the stability is good. It has certain practicability.
Key words:AT89C52; measuring instrument; pulse width
總結(jié)
以上是生活随笔為你收集整理的脉冲时间宽度c语言,基于AT89C52脉冲宽度测量仪的设计与实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD GPU任务调度(3) —— fe
- 下一篇: 手机充电器电路图应用讲解