脈沖時間寬度c語言,基于AT89C52脈沖寬度測量儀的設計與實現

趙翠玉

468609ddc4560956abc76818958c329f.png

25c6f3e323206d31db7958b471a0bc9a.png

摘要:本文基于AT89C52的脈沖寬度測量儀的設計。該儀器測量結果采用了軟件數字濾波,消除了測量中抖動問題,測量精度高、穩定性好,具有一定的實用性。

關鍵詞:AT89C52;測量儀;脈沖寬度

中圖分類號:TM935.4 文獻標識碼:A 文章編號:1007-9416(2019)02-0129-01

0 引言

脈沖寬度的測量,實質是時間的測量,以往測量儀采用的是門電路來進行脈沖寬度測量,而 AT89C52單片機系統資源豐富:內置256KB的RAM模塊、32個外部雙向可編程I/O口線、3個16位定時器/計數器、0-24MHz時鐘頻率、2個外中斷口[1]。該單片機不僅提供豐富的硬件資源,也提供良好的上位機控制軟件,只要通過軟件的功能操作就能實現:源代碼的調試編譯,查找與修改錯誤之處,在線代碼下載等功能。基于以上優點,本文設計了采用AT89C52單片機實現脈沖寬度測量儀。

1 測量機理

基于AT89C52的脈沖寬度測量儀以AT89C52為系統控制核心,通過AT89C52內部的定時器對脈沖寬度進行測量。設定AT89C52工作于定時器方式,計數的輸入為內部時鐘信號,頻率為固定的12MHz。只要令GATE=1,TR0=1,TR1=1,將輸入脈沖接到INT1口,即可測量輸入脈沖寬度,測量機理如圖1所示。

2 系統硬件設計

該測量儀主要由AT89C52單片機最小系統、555定時電路、LED顯示驅動電路、LED顯示電路和電源電路等組成[2]。

測量時通過單片機外中斷INT1和定時器T1配合來完成外部待測脈沖高電平持續時間的測量。首先將U1(AT89C52)的T1設為定時器方式,且門控GATE=1;然后將U2(NE555)的3腳輸出的方波信號送至U1的P3.3腳(INT1口),當P3.3腳的信號出現下降沿時,進入INT1中斷服務程序并判斷脈沖位置,如果是第一個方波脈沖,則打開計數器T1的開關(將TR1設為1),否則關閉T1的開關(將TR1設為0),等到第二個方波脈沖上升沿抵達U1的P3.3腳時,TH1、TL1自動開始計數,當第二個方波脈沖下降沿到來時計數器自動關閉停止計數,此時為待測信號高電平期間,且再次進入外部中斷INT1的中斷服務程序中,讀取TH1、TL1的計數值,并計算出所測量的結果,該結果就是待測方波脈沖的寬度。隨后,清零TH1和TL1,以便下一個脈寬的測量。同時,測得的信號寬度數值從U1的P1.0~P1.7口分別輸出a~g及dp八位段選字符編碼信號至數碼管的相應段選線,從U1的P3.4~P3.7口輸出四只數碼管的位選信號,分別經Q5~Q8處理送至四只數碼管相應的位選線,控制相應數碼管的點亮,實現被測結果的實時顯示。系統工作電壓由電源電路把220交流電經變壓器降壓、D1~D4整流、C9~C10濾波、U3(7805)穩壓得到+5V穩定電壓來提供。

可以得出測量脈沖寬度分兩個階段:一個是準備階段,完成狀態的設置;另一個是測量階段,從脈沖上升沿開始測量計數,到脈沖下降沿結束計數,以兩個脈沖為一個測量周期。

3 系統軟件設計

該系統軟件使用C語言進行了編寫,采用了模塊化的設計思想[3],將設計劃分為T0溢出中斷、T1溢出中斷和INT1溢出中斷等相應的程序模塊,分別進行設計、調試,增強了程序的條理性。AT89C52的脈沖寬度測量儀主程序設計流程如圖2所示。

4 數據及結果的分析

通過實驗觀察,對T0、T2兩種方式都可以達到計數脈寬的長度的要求,實驗數據均可以達到所要求的:6位 LED顯示計數值,時間精確到0.1秒。

實驗中也遇到一些問題,如數碼管顯示不出數值(P口位置插錯),小數點顯示錯位(沒有在程序中編對位置),顯示只顯示第一次多出數值(調用程序返回時出錯)等問題。

5 結語

本文的創新在于遵循硬件電路可靠、操作簡便,充分借助AT89C52單片機系統的豐富資源,通過硬件的完整設計和軟件強大的編程等過程,實現了脈沖寬度的測量功能,具有實際的應用價值。

參考文獻

[1] 羅印升.單片微機原理與應用[M].北京:機械工業出版社,2012.

[2] 路而紅.專用集成電路設計與電子設計自動化[M].北京:清華大學出版社,2004.

[3] 張培仁.基于C語言編程MCS-51單片機原理與應用[M].北京:清華大學出版社,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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode1433. 檢查一個字符串是否可以打破另一個字符串(貪心算法)

給你兩個字符串 s1 和 s2 ,它們長度相等,請你檢查是否存在一個 s1 的排列可以打破 s2 的一個排列,或者是否存在一個 s2 的排列可以打破 s1 的一個排列。 字符串 x 可以打破字符串 y (兩者長度都為 n )需滿足對于所有 …

cordova 人臉識別_html5與EmguCV前后端實現——人臉識別篇(一)

上個月因為出差的關系,斷更了很久,為了補償大家長久的等待,送上一個新的系列,之前幾個系列也會抽空繼續更新。大概半年多前吧,因為工作需要,我開始研究圖像識別技術。OpenCV在這方面已經有了很多技術積累&a…

[轉載] mysql 索引中的USING BTREE 的意義

索引是在存儲引擎中實現的,因此每種存儲引擎的索引都不一定完全相同,并且每種存儲引擎也不一定支持所有索引類型。 根據存儲引擎定義每個表的最大索引數和最大索引長度。所有存儲引擎支持每個表至少16個索引,總索引長度至少為256字節。 大多數…

git-命令

git config --global user.email “郵箱” git config --global user.name ”用戶名” git init           初始化 忽略指定文件 echo "temp/" >> .gitignore echo "private_key" >> .gitginore 狀態 git status 添加 git add …

C語言 floor四舍五入,Math函數的四舍五入,Floor,Ceiling,Round的一些注意事項!...

1.Math.Round:四舍六入五取偶引用內容Math.Round(0.0) //0Math.Round(0.1) //0Math.Round(0.2) //0Math.Round(0.3) //0Math.Round(0.4) //0Math.Round(0.5) //0Math.Round(0.6) //1Math.Round(0.7) //1Math.Round(0.8) //1Math.Round(0.9) //1說明:對於…

Command Magicks:如何使用控制臺處理文件和字符串

by Luciano Strika通過盧西亞諾斯特里卡(Luciano Strika) Command Magicks:如何使用控制臺處理文件和字符串 (Command Magicks: How to Manipulate Files and Strings with the Console) As developers, there are lots of repetitive things we do every day that…

dreamweaver后綴名_讓 Dreamweaver 8 支持其它擴展名的方法

有的時候,我們為了網站的安全考慮,常常會修改網站的擴展名,如我看到有些網站的擴展名為 *.do,很明顯這個擴展名是有意改掉的,可是改了這擴展名對于我們修改網頁來說就麻煩了,比如用 Dreamweaver 8 來修改的…

sublime 3143 注冊碼

請大家支持購買正版,或者使用Atom、Vimsublime 3143版本的注冊碼:—– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 94D7F7D4 95BC8C1C 527DA828 560B…

【BZOJ1857】【SCOI2010】傳送帶 [三分]

傳送帶 Time Limit: 1 Sec Memory Limit: 64 MB[Submit][Status][Discuss]Description 在一個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段AB和線段CD。lxhgww在AB上的移動速度為P,在CD上的移動速度為Q,在平…

google android廣告異步加載,谷歌廣告異步代碼和同步代碼的解決方法

通常大部分人初次接觸谷歌google adsense廣告聯盟都會有疑問,在新建單元界面我們可以看到獲取代碼類型選項。下面是學習啦小編為大家整理的關于谷歌廣告異步代碼和同步代碼的解決方法,一起來看看吧!谷歌廣告異步代碼和同步代碼的解決方法選擇同步還是異步…

openssl 加密解密 指令_Shell openssl命令加密解密字符串

Linux下的 openssl 命令解密我們以在線加密網站為例 http://tool.chacuo.net/cryptdes我們選擇des cbc模式,密鑰為abcdefgh, 偏移量為12345678,以base64輸出結果 對hello進行加密,得到結果8Snw/EmQdY我們再用將在線網站改用shell命…

使用Docker 安裝Elasticsearch、Elasticsearch-head、IK分詞器 和使用

使用Docker 安裝Elasticsearch、Elasticsearch-head、IK分詞器 和使用 原文:使用Docker 安裝Elasticsearch、Elasticsearch-head、IK分詞器 和使用Elasticsearch的安裝 一、elasticsearch的安裝 1.鏡像拉取 docker pull elasticsearch:tag2.啟動 docker run -it -e "disc…

Spring 的持久化實例(JDBC, JdbcTemplate、HibernateDaoSupport、JdbcDaoSupport、SqlSessionDaoSupport等)...

2019獨角獸企業重金招聘Python工程師標準>>> 一、表(這里用mysql,數據庫名為yiibai) CREATE TABLE customer (CUST_ID int(10) UNSIGNED NOT NULL,NAME varchar(100) NOT NULL,AGE int(10) UNSIGNED NOT NULL ) ENGINEInnoDB DEFA…

開始使用gradle

前提配置gradle環境 每個gradle構建都是以一個腳本開始的。gradle構建默認的名稱為build.gradle。當在shell中執行gradle命令時,gradle會去尋找為build.gradle文件,如果找不到就會顯示幫助信息。 下面我們以經典的helloworld為例。 1、首先建立一個build…

freecodecamp_freeCodeCamp的新編碼課程現已上線,其中包含1,400個編碼課程和6個開發人員認證

freecodecampFor the past year, our community has been hard at work on a massive new programming curriculum. And now that curriculum is live and out of beta!在過去的一年中,我們的社區一直在努力編寫大量的新編程課程。 現在,該課程已上線并且…

麥克勞林展開式_數學家麥克勞林與牛頓的故事

數學家麥克勞林麥克勞林(Colin Maclaurin1698年2月-1746年6月), 蘇格蘭數學家,麥克勞林是18世紀英國最具有影響的數學家之一。01麥克勞林是一位牧師的兒子,半歲喪父,9歲喪母。由其叔父撫養成人。叔父也是一位牧師。麥克勞林是一個“神童”&am…

html隱藏層點擊顯示不出來,[js+css]點擊隱藏層,點擊另外層不能隱藏原層

1貨幣轉換,下圖顯示了這個程序子只進行簡單的 把元素放在下面的目錄下,在創幣轉換應用程序這個例 所需的界面,包括一些UI組件實例(Button, ComboB 貨幣轉換,下圖顯示了這個程序組件實例(Button, ComboB 貨幣轉換,下圖顯…

Oracle 10.2.0.5 非歸檔current redolog損壞處理一例

操作系統: RHEL5.8 x64數據庫 : Oracle 10.2.0.5.0故障情況:一臺單機曙光PC服務器4塊300G SAS盤,RAID5壞兩塊磁盤(服務器面板無故障提示,無人發現),造成RAID5磁盤陣列掛掉,操作系統當機,系統無…

基礎命令

date --help date %T 15:04:58 whatis date date (1) - print or set the system date and timeman date 獲取詳細的命令解釋cd ~/wntlab //新建文件夾 mkdir example //新建文件 touch b c //復制文本內容 cp b c//把 b的內容復制給 c cp b a/ //把 文件b復制…

微信小程序把玩(三十三)Record API

微信小程序把玩(三十三)Record API 原文:微信小程序把玩(三十三)Record API其實這個API也挺奇葩的,錄音結束后success不走,complete不走,fail也不走, 不知道是不是因為電腦測試的原因…