![基于單片機(jī)頻率計(jì)的設(shè)計(jì)_第1頁](http://file4.renrendoc.com/view/eec1d101c8f96de68060f452162be846/eec1d101c8f96de68060f452162be8461.gif)
![基于單片機(jī)頻率計(jì)的設(shè)計(jì)_第2頁](http://file4.renrendoc.com/view/eec1d101c8f96de68060f452162be846/eec1d101c8f96de68060f452162be8462.gif)
![基于單片機(jī)頻率計(jì)的設(shè)計(jì)_第3頁](http://file4.renrendoc.com/view/eec1d101c8f96de68060f452162be846/eec1d101c8f96de68060f452162be8463.gif)
![基于單片機(jī)頻率計(jì)的設(shè)計(jì)_第4頁](http://file4.renrendoc.com/view/eec1d101c8f96de68060f452162be846/eec1d101c8f96de68060f452162be8464.gif)
![基于單片機(jī)頻率計(jì)的設(shè)計(jì)_第5頁](http://file4.renrendoc.com/view/eec1d101c8f96de68060f452162be846/eec1d101c8f96de68060f452162be8465.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)頻率計(jì)的設(shè)計(jì)PAGE下載可編輯復(fù)制經(jīng)典文下載可編輯復(fù)制前言單片機(jī)是20世紀(jì)中期發(fā)展起來的一種面向控制的大規(guī)模集成電路模塊,具有功能強(qiáng)、體積小、可靠性高、價(jià)格低廉等特點(diǎn),在工業(yè)控制、數(shù)據(jù)采集、智能儀表、機(jī)電一體化、家用電器等領(lǐng)域得到了廣泛的應(yīng)用,極大的提高了這些領(lǐng)域的技術(shù)水平和自動(dòng)化程度。51系列單片機(jī)是國內(nèi)目前應(yīng)用最廣泛的一種8位單片機(jī)之一,隨著嵌入式系統(tǒng)、片上系統(tǒng)等概念的提出和普遍接受及應(yīng)用。51系列及其衍生單片機(jī)還會在繼后很長一段時(shí)間占據(jù)嵌入式系統(tǒng)產(chǎn)品的低端市場,因此,作為新世紀(jì)的大學(xué)生,在信息產(chǎn)業(yè)高速發(fā)展的今天,掌握單片機(jī)的基本結(jié)構(gòu)、原理和使用是非常重要的。本次課程設(shè)計(jì)的內(nèi)容是使用89C51RC2頻率計(jì)原理頻率的測量實(shí)際上就是在1s時(shí)間內(nèi)對信號進(jìn)行計(jì)數(shù),計(jì)數(shù)值就是信號頻率。用單片機(jī)設(shè)計(jì)頻率計(jì)通常采用兩種辦法,第一種方法是使用單片機(jī)自帶的計(jì)數(shù)器對輸入脈沖進(jìn)行計(jì)數(shù);第二種方法是單片機(jī)外部使用計(jì)數(shù)器對脈沖信號進(jìn)行計(jì)數(shù),計(jì)數(shù)值再由單片機(jī)讀取。第一種方法的好處是設(shè)計(jì)出的頻率計(jì)系統(tǒng)結(jié)構(gòu)和程序編寫簡單,成本低廉,不需要外部計(jì)數(shù)器,直接利用所給的單片機(jī)最小系統(tǒng)就可以實(shí)現(xiàn)。這種方法的缺陷是受限于單片機(jī)計(jì)數(shù)的晶振頻率,輸入的時(shí)鐘頻率通常是單片機(jī)晶振頻率的幾分之一甚至是幾十分之一,在本次設(shè)計(jì)使用的98C51單片機(jī),由于檢測一個(gè)由“1”到“0”的跳變需要兩個(gè)機(jī)器周期,前一個(gè)機(jī)器周期測出“1”,后一個(gè)周期測出“0”。故輸入時(shí)鐘信號的最高頻率不得超過單片機(jī)晶振頻率的二十四分之一。第二種方法的好處是輸入的時(shí)鐘信號頻率可以不受單片機(jī)晶振頻率的限制,可以對相對較高頻率進(jìn)行測量,但缺點(diǎn)是成本比第一種方法高,設(shè)計(jì)出來的系統(tǒng)結(jié)構(gòu)和程序也比較復(fù)雜。由于成本有限,本次設(shè)計(jì)中采用第一種方法,因此輸入的時(shí)鐘信號最高頻率不得高于11.0592MHz/24=460.8KHz。對外部脈沖的占空比無特殊要求?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第1頁。根據(jù)頻率檢測的原理,很容易想到利用51單片機(jī)的T0、T1兩個(gè)定時(shí)/計(jì)數(shù)器,一個(gè)用來定時(shí),另一個(gè)用來計(jì)數(shù),兩者均應(yīng)該工作在中斷方式,一個(gè)中斷用于1s時(shí)間的中斷處理,一個(gè)中斷用于對頻率脈沖的計(jì)數(shù)溢出處理,(對另一個(gè)計(jì)數(shù)單元加一),此方法可以彌補(bǔ)計(jì)數(shù)器最多只能計(jì)數(shù)65536的不足?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第1頁。3設(shè)計(jì)思想明確頻率計(jì)工作原理以后,為了更方思路更清晰地對程序編寫,還應(yīng)該作出程序的總體框圖,如圖3.1所示。程序的主體可以分為4個(gè)模塊:定時(shí)計(jì)數(shù)、采集數(shù)據(jù)、進(jìn)制轉(zhuǎn)換和數(shù)碼顯示,當(dāng)然,程序還應(yīng)該包括很多細(xì)節(jié)問題,例如為了數(shù)碼顯示通過通信的方式把需要顯示的數(shù)據(jù)傳送給數(shù)碼管管理芯片ZLG7290;為了數(shù)碼管能清晰的顯示數(shù)據(jù),需要先對管理芯片對應(yīng)的顯示區(qū)域清零;通常十進(jìn)制數(shù)字高位的零時(shí)不用顯示的,所以還應(yīng)該對數(shù)碼顯示高位的零屏蔽掉。圖3.1頻率計(jì)系統(tǒng)總體框圖451單片機(jī)系統(tǒng)的硬件連接及調(diào)試本次課程設(shè)計(jì)使用的單片機(jī)系統(tǒng)是根據(jù)老師提供的系統(tǒng)原件,自己焊接而成。焊接完成以后,首先燒寫控制LED發(fā)光二極管閃爍的程序后,發(fā)現(xiàn)發(fā)光二極管是根據(jù)自己的設(shè)計(jì)而閃爍,燒寫程序控制發(fā)光數(shù)碼管顯示時(shí),數(shù)碼管同樣是根據(jù)自己的設(shè)計(jì)而顯示的字符,說明本次51單片機(jī)的硬件焊接取得成功。此次設(shè)計(jì)要求制作一頻率計(jì)系統(tǒng),需要使用的硬件主要包括51單片機(jī)芯片,ZLG7290數(shù)碼管管理芯片和數(shù)碼管。另外還是用到排線若干,下載線及電源線。其中51單片機(jī)硬件鏈接如圖4.1所示,ZLG7290芯片連接圖如圖4.2所示,數(shù)碼管連接圖如圖4.3所示?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第2頁?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第2頁。圖4.151單片機(jī)硬件連接圖圖4.2ZLG7290硬件連接圖基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第3頁?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第3頁。圖4.3數(shù)碼管硬件連接圖5單元程序的設(shè)計(jì)5.11s定時(shí)本次設(shè)計(jì)選用定時(shí)器T0完成定時(shí)功能,選用方式1時(shí)最多也只能定時(shí),顯然不能滿足定時(shí)1的要求,可以用下面這種方法解決:采用T0定時(shí)10,連續(xù)循環(huán)定時(shí)100次即可完成1定時(shí),用一個(gè)計(jì)數(shù)單元20H存放循環(huán)的次數(shù),每一次循環(huán)20H單元自減1,當(dāng)20H單元為零時(shí)則1定時(shí)到時(shí)。其程序流程圖如圖5.1所示。基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第4頁?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第4頁。圖5.11s定時(shí)流程圖定時(shí)器T0初始化程序如下:MOVIE,#8AH;開放T0、T1中斷MOVTMOD,#51H;T0定時(shí),T1計(jì)數(shù),都工作于方式一MOV20H,#100;100*10ms=1sSETBTR0根據(jù)流程圖設(shè)計(jì)的1s定時(shí)程序如下:T0INT:DJNZ20H,NEXTNEXT:MOVTH0,#0DCH;1s還未到則置初值繼續(xù)定時(shí)基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第5頁。MOVTL0,#00H基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第5頁。EXIT:RETI5.2T1計(jì)數(shù)程序設(shè)計(jì)中T1采用計(jì)數(shù)功能,需要注意的一個(gè)問題是,輸入的待測時(shí)鐘信號的頻率最高可以達(dá)到460800Hz,但計(jì)數(shù)器最多只能計(jì)數(shù)65536次,顯然需要對計(jì)數(shù)單元進(jìn)行擴(kuò)展,擴(kuò)展的思路是除了計(jì)數(shù)器T1的TH1和TL1用于計(jì)數(shù)外,再選用一個(gè)計(jì)數(shù)單元23H,每當(dāng)計(jì)數(shù)器T1溢出回零時(shí)產(chǎn)生中斷,中斷程序執(zhí)行23H單元自增1,這樣,當(dāng)一秒到時(shí)時(shí)采集的計(jì)數(shù)數(shù)據(jù),23H單元存放的是數(shù)據(jù)的最高位,TH1存放的是數(shù)據(jù)的次高位,TL1存放的是數(shù)據(jù)的最低位。當(dāng)然,這里所說的“最高位”“次高位”以及“最低位”都是針對十六進(jìn)制而言的。T1計(jì)數(shù)程序的流程圖如圖5.2所示?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第6頁。圖5.2T1計(jì)數(shù)流程圖基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第6頁。計(jì)數(shù)器T1初始化程序如下:MOVIE,#8AH;開放T0、T1中斷MOVTMOD,#51H;T0定時(shí),T1計(jì)數(shù),都工作于方式一MOVTH1,#00HMOVTL1,#00H;計(jì)數(shù)初值為零SETBTR1根據(jù)流程圖設(shè)計(jì)的計(jì)數(shù)程序如下:MOV21H,#0MOV22H,#0MOV23H,#0 ;此三個(gè)單元存放采集到的頻率T1INT:INC23H;計(jì)數(shù)器溢出則23H單元自增1RETI5.3頻率數(shù)據(jù)采集到1定時(shí)時(shí),存儲計(jì)數(shù)器T1以及擴(kuò)充計(jì)數(shù)單元23H記錄的數(shù)據(jù)即為輸入時(shí)鐘信號的頻率,為了保證記錄的頻率精確度,到1定時(shí)后應(yīng)立即停止T1的計(jì)數(shù),因?yàn)橹噶畹膱?zhí)行也需要時(shí)間,并且待測的時(shí)鐘信號頻率越高,指令執(zhí)行所需要的時(shí)間就越不能忽略,這里采用的指令為CLRTR1。數(shù)據(jù)采集程序如下:CLRTR0MOV22H,TH1;1s定時(shí)到則采集數(shù)據(jù)MOV21H,TL1AJMPEXIT5.4進(jìn)制轉(zhuǎn)換基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第7頁。從計(jì)數(shù)器采集到的頻率數(shù)據(jù)是十六進(jìn)制的,如果直接把這些數(shù)據(jù)送給數(shù)碼管顯示顯然很不直觀,因此需要把這些數(shù)據(jù)向十進(jìn)制轉(zhuǎn)換。轉(zhuǎn)換的算法有兩種,第一種算法的思想是對該十六進(jìn)制數(shù)除以100,商為百位,余數(shù)再除以10,再得到的商為十位,余數(shù)為個(gè)位。這種算法雖然程序的編寫非常簡單,但是它的局限性也非常明顯,即它只能對不大于兩位的十六進(jìn)制數(shù)進(jìn)行轉(zhuǎn)換,對于大于兩位的十進(jìn)制數(shù)則無能為力。這次設(shè)計(jì)的頻率計(jì)頻率范圍遠(yuǎn)不止兩位十六進(jìn)制數(shù)就能記得下,所以這里采用第二種方法?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第7頁。第二種方法算法的編程實(shí)現(xiàn)非常復(fù)雜,但是可以對任意長度的十六進(jìn)制數(shù)向十進(jìn)制轉(zhuǎn)換。這種算法的基本思路是:第一步將最高位的高半字節(jié)提出來,除以10,把商存儲起來,余數(shù)與最高位的低半字節(jié)組合成一個(gè)字節(jié),再除以10,再存儲商,余數(shù)以此類推,直到最后一次計(jì)算得到的余數(shù)即為十進(jìn)制數(shù)的個(gè)位;第二步把第一步存儲的商組合成一個(gè)字節(jié),依次除以10,仍然把每次得到的商存儲起來,以此類推最后一次得到的余數(shù)即為十進(jìn)制數(shù)的十位;以后也是以此類推得到十進(jìn)制數(shù)的百位、千位……以上算法必須要注意的一個(gè)為題是,每次得到的余數(shù)與低位的半字節(jié)組合成一個(gè)字節(jié)時(shí),余數(shù)必須放在該字節(jié)的高半字節(jié),否則計(jì)算錯(cuò)誤。該本次頻率計(jì)系待測的時(shí)鐘信號的最高頻率為460800Hz,對應(yīng)的十六進(jìn)制數(shù)為70800H,這里就以70800H轉(zhuǎn)換為十進(jìn)制數(shù)為例來說明這種算法。第一步:用7H除以10,商0H余7H,把商0存儲在24H單元,余數(shù)7H與下一個(gè)字節(jié)08H的高半字節(jié)0H組合成一個(gè)字節(jié)70H。70H除以10,商BH余2H,把商BH存儲在25H單元,余數(shù)2H與8H組合成一個(gè)字節(jié)28H。28H除以10,商4H余0H,把商4H存儲在26H單元,余數(shù)0H與0H組合成一個(gè)字節(jié)00H。00H除以10,商0H余0H,把商0H存儲在27H單元,余數(shù)0H與0H組合成一個(gè)字節(jié)00H。00H除以10,商0H余0H,把商0H存儲在28H單元,余數(shù)0即為所需十進(jìn)制數(shù)的個(gè)位。第二步:把存儲在24H與25H單元的商組合成一個(gè)字節(jié)0BH。0BH除以10,同第一步,存儲商,余數(shù)與下一個(gè)商組合成一個(gè)字節(jié),再除以10,一次類推得到十進(jìn)制數(shù)的十位0。第三步:方法同第二步,得到十進(jìn)制數(shù)的百位8。第四步:方法同第三步,得到十進(jìn)制數(shù)的千位0。第五步:方法同第四步,得到十進(jìn)制數(shù)的萬位6和十萬位4?;趩纹瑱C(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第8頁。最后得到了十進(jìn)制數(shù)460800。圖5.3詳細(xì)的展示了這種進(jìn)制轉(zhuǎn)換算法的過程。基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第8頁。圖5.3進(jìn)制轉(zhuǎn)換說明圖這種算法的編程實(shí)現(xiàn)如下,轉(zhuǎn)換后的十進(jìn)制數(shù)由低到高依次存放再50H—60H單元中。ZHUANHUAN:;向十進(jìn)制轉(zhuǎn)換MOVA,23HMOVB,#0AHDIVABMOV24H,A;存儲第一位商;MOVA,BMOV30H,22HANL30H,#0F0HADDA,30HSWAPA基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第9頁。MOVB,#0AH基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第9頁。DIVABMOV25H,A;存儲第二位商;MOVA,BSWAPAANL22H,#0FHADDA,22HMOVB,#0AHDIVABMOV26H,A;存儲第三位商;MOVA,BMOV30H,21HANL30H,#0F0HADDA,30HSWAPAMOVB,#0AHDIVABMOV27H,A;存儲第四位商;MOVA,BSWAPAANL21H,#0FHADDA,21HMOVB,#0AHDIVABMOV28H,A;存儲第五位商MOV50H,B;存儲十進(jìn)制數(shù)個(gè)位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVABMOV24H,A;存儲第一位商;MOVA,BSWAPAADDA,26HMOVB,#0AHDIVABMOV25H,A;存儲第二位商;MOVA,BSWAPAADDA,27HMOVB,#0AHDIVABMOV26H,A;存儲第三位商;MOVA,BSWAPAADDA,28HMOVB,#0AHDIVABMOV27H,A;存儲第四位商MOV51H,B;存儲十進(jìn)制數(shù)十位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVABMOV24H,A;存儲第一位商;MOVA,BSWAPAADDA,26H基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第10頁。MOVB,#0AH基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第10頁。DIVABMOV25H,A;存儲第二位商;MOVA,BSWAPAADDA,27HMOVB,#0AHDIVABMOV26H,A;存儲第三位商MOV52H,B;存儲十進(jìn)制數(shù)百位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVABMOV24H,A;存儲第一位商;MOVA,BSWAPAADDA,26HMOVB,#0AHDIVABMOV25H,A;存儲第二位商MOV53H,B;存儲十進(jìn)制數(shù)千位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVABMOV54H,B;存儲十進(jìn)制數(shù)萬位MOV55H,A;存儲十進(jìn)制數(shù)十萬位5.5數(shù)碼顯示將采集到的頻率轉(zhuǎn)換為十進(jìn)制數(shù)后,還不能直接將這些數(shù)送給數(shù)碼顯示,因?yàn)槠叨蜭ED數(shù)碼管內(nèi)部由7個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。本次設(shè)計(jì)所給數(shù)碼管十進(jìn)制數(shù)顯示代碼如下所示。表5.1LED十進(jìn)制字形顯示代碼表0FC1602DA30FC1602DA3F24665B66BE7E08FE9E6基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第11頁。將十進(jìn)制數(shù)轉(zhuǎn)換為相應(yīng)的LED顯示的代碼,最容易實(shí)現(xiàn)的編程方法就是查表,因數(shù)碼管最多只需要顯示六位,只需要查六次表就可以了,圖5.4是將十進(jìn)制數(shù)對應(yīng)的LED顯示代碼存入以60H為首單元的流程圖。基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第11頁。圖5.4十進(jìn)制數(shù)轉(zhuǎn)換為顯示代碼流程圖根據(jù)流程圖編寫的流程圖如下:MOVR0,#50HMOVR1,#5FHMOVDPTR,#TABNEXT3:MOVA,@R0MOVCA,@A+DPTRINCR0基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第12頁。INCR1基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第12頁。MOV@R1,A;把即將數(shù)碼管顯示的數(shù)據(jù)送入以60H為首的單元DJNZR2,NEXT3TAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H得到十進(jìn)制數(shù)的LED顯示代碼以后,就可以把這些代碼送入數(shù)碼管顯示了,方法是50單片機(jī)先通過通信的方式把顯示代碼發(fā)送給數(shù)碼管管理芯片ZLG7290相應(yīng)的顯示區(qū)域,就可以通過數(shù)碼管顯示頻率了。51單片機(jī)通過通信傳送數(shù)據(jù)的過程如圖5.5所示。圖5.5通信過程框圖具體程序?qū)崿F(xiàn)如下:NUMBYTEQU5DHSLAEQU5EHMTDEQU5FHSCLEQUP1.0SDAEQUP1.1MOVMTD,#10H;字節(jié)數(shù)據(jù)發(fā)送MOVNUMBYT,#09HMOVSLA,#70HLCALLWRNBYTWRNBYT:PUSHPSWWRNBYT1:MOVPSW,#18hCALLSTA基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第13頁。MOVA,SLA基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第13頁。CALLWRBCALLCACKJBF0,WRNBYTMOVR0,#MTDMOVR5,NUMBYTWRDA:MOVA,@R0LCALLWRBLCALLCACKJBF0,WRNBYT1INCR0DJNZR5,WRDALCALLSTOPPOPPSWRETWRB:MOVR7,#8WLP:RLCAJCWR1CLRSDASETBSCLNOPNOPNOPNOPCLRSCLDJNZR7,WLPRETWR1:SETBSDASETBSCLNOPNOPNOPNOPCLRSCLCLRSDADJNZR7,WLPRETCACK:;應(yīng)答位檢查SETBSDASETBSCLNOPNOP基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第14頁。MOVC,SDA基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第14頁。MOVF0,CCLRSCLNOPNOPRETSTA:SETBSDA;發(fā)送起始位SETBSCLNOPNOPNOPNOPCLRSDANOPNOPNOPNOPCLRSCLRETSTOP:CLRSDA;發(fā)送停止位SETBSCLNOPNOPNOPNOPSETBSDANOPNOPNOPNOPCLRSCLRETI6頻率計(jì)系統(tǒng)總體程序各單元子程序已經(jīng)設(shè)計(jì)完畢,將各子程序通過適當(dāng)?shù)闹噶铈溄悠饋恚偝绦虻牡谝徊糠譃門0、T1初始化,第二部分為1定時(shí),第三部分為計(jì)數(shù),第四部分為采集頻率,第五福分為進(jìn)制轉(zhuǎn)化,第六部分為數(shù)碼顯示,這幾各部分即構(gòu)成了頻率計(jì)系統(tǒng)的總體程序,如下所示。NUMBYTEQU5DHSLAEQU5EHMTDEQU5FHSCLEQUP1.0SDAEQUP1.1ORG0000HAJMPSTARTORG000BH;T0中斷入口AJMPT0INTORG001BH;T1中斷入口AJMPT1INTORG0030HSTART:MOVSP,#70HMOVIE,#8AH;開放T0、T1中斷MOVTMOD,#51H;T0定時(shí),T1計(jì)數(shù)MOVTH0,#0DCHMOVTL0,#00H;定時(shí)10ms基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第15頁。MOV20H,#100;100*10ms=1s基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第15頁。MOVTH1,#00HMOVTL1,#00HMOV21H,#0MOV22H,#0MOV23H,#0;存放采集到的頻率SETBTR1SETBTR0WAIT:AJMPWAIT;等待中斷T1INT:INC23H;計(jì)數(shù)器溢出則23H單元自增1RETIT0INT:;定時(shí)10ms產(chǎn)生中斷DJNZ20H,NEXT1CLRTR1CLRTR0MOV22H,TH1;1s時(shí)間到則采集數(shù)據(jù)MOV21H,TL1ACALLDISPLAYAJMPEXITNEXT1:MOVTH0,#0DCH;繼續(xù)定時(shí)MOVTL0,#00HEXIT:RETIDISPLAY:MOVR0,#60HMOVR1,#08H;對60H-67H單元清零NEXT2:MOV@R0,#0INCR0DJNZR1,NEXT2ZHUANHUAN:;進(jìn)制轉(zhuǎn)換MOVA,23HMOVB,#0AHDIVABMOV24H,A;存儲第一位商;MOVA,BMOV30H,22HANL30H,#0F0HADDA,30HSWAPAMOVB,#0AHDIVABMOV25H,A;存儲第二位商;MOVA,BSWAPA基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第16頁。ANL22H,#0FH基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第16頁。ADDA,22HMOVB,#0AHDIVABMOV26H,A;存儲第三位商;MOVA,BMOV30H,21HANL30H,#0F0HADDA,30HSWAPAMOVB,#0AHDIVABMOV27H,A;存儲第四位商;MOVA,BSWAPAANL21H,#0FHADDA,21HMOVB,#0AHDIVABMOV28H,A;存儲第五位商MOV50H,B;存儲十進(jìn)制數(shù)個(gè)位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVABMOV24H,A;存儲第一位商;MOVA,BSWAPAADDA,26HMOVB,#0AHDIVABMOV25H,A;存儲第二位商;MOVA,BSWAPAADDA,27HMOVB,#0AHDIVABMOV26H,A;存儲第三位商;MOVA,BSWAPAADDA,28HMOVB,#0AHDIVABMOV27H,A;存儲第四位商MOV51H,B;存儲十進(jìn)制數(shù)十位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第17頁。MOV24H,A;存儲第一位商基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第17頁。;MOVA,BSWAPAADDA,26HMOVB,#0AHDIVABMOV25H,A;存儲第二位商;MOVA,BSWAPAADDA,27HMOVB,#0AHDIVABMOV26H,A;存儲第三位商MOV52H,B;存儲十進(jìn)制數(shù)百位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVABMOV24H,A;存儲第一位商;MOVA,BSWAPAADDA,26HMOVB,#0AHDIVABMOV25H,A;存儲第二位商MOV53H,B;存儲十進(jìn)制數(shù)千位;;;;;;;;;;;;;;;;;MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVABMOV54H,B;存儲十進(jìn)制數(shù)萬位MOV55H,A;存儲十進(jìn)制數(shù)十萬位PINBI:;將高位的0屏蔽不顯示MOVR3,#0MOVR0,#55HST2:MOVA,@R0JZST1AJMPSHUMAST1:INCR3DECR0AJMPST2SHUMA:MOVA,#6CLRCSUBBA,R3MOVR2,A;將需要顯示的位數(shù)存入R2MOVR0,#50HMOVR1,#5FHMOVDPTR,#TAB基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第18頁。NEXT3:MOVA,@R0基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第18頁。MOVCA,@A+DPTRINCR0INCR1MOV@R1,ADJNZR2,NEXT3MOVMTD,#10HMOVNUMBYT,#09HMOVSLA,#70HLCALLWRNBYTRETWRNBYT:PUSHPSWWRNBYT1:MOVPSW,#18hCALLSTAMOVA,SLACALLWRBCALLCACKJBF0,WRNBYTMOVR0,#MTDMOVR5,NUMBYTWRDA:MOVA,@R0LCALLWRBLCALLCACKJBF0,WRNBYT1INCR0DJNZR5,WRDALCALLSTOPPOPPSWRETWRB:MOVR7,#8;字節(jié)數(shù)據(jù)發(fā)送WLP:RLCAJCWR1CLRSDASETBSCLNOPNOPNOPNOPCLRSCLDJNZR7,WLPRETWR1:SETBSDASETBSCLNOPNOPNOPNOPCLRSCLCLRSDADJNZR7,WLPRETCACK:基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第19頁。SETBSDA基于單片機(jī)頻率計(jì)的設(shè)計(jì)全文共22頁,當(dāng)前為第19頁。SETBSCLNOPNOPMOVC,SDAMOVF0,CCLRSCLNOPNOPRETSTA:SETBSDA;發(fā)送起始位SETBSCLNOPNOPNOPNOPCLRSDANOPNOPNOPNOPCLRSCLRETSTOP:CLRSDA;發(fā)送停止位SETBSCLNOPNOPNOPNOPSETBSDANOPNOPNOPNOPCLRSCLRETITAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6HEND7程序的調(diào)試編寫的頻率計(jì)總體程序編譯成HEX文件,燒寫入51單片機(jī)內(nèi),P3.5角輸入一定頻率(較小)的時(shí)鐘信號,觀察數(shù)碼管顯示的頻率與輸入信號的頻率相符,逐漸增大輸入信號的頻率,數(shù)碼顯示的頻率開始出現(xiàn)誤差,并且誤差隨著輸入信號頻率的增加而增加,當(dāng)輸信號達(dá)到頻率計(jì)所允許輸入的最高頻率時(shí),誤差達(dá)到了650Hz,即誤差此誤差很小可以認(rèn)誤差在允許的范圍內(nèi),即頻率計(jì)的計(jì)頻功能滿足要求。另外在觀察數(shù)碼管顯示的時(shí)候,發(fā)現(xiàn)高位的“0”仍然能夠顯示,而通常十進(jìn)制的高位的“0”通常是省略的。顯示“0”的原因是沒有考慮到頻率值小于六位十進(jìn)制數(shù)的情況,當(dāng)頻率小于六位十進(jìn)制數(shù)時(shí),傳送到ZLG7290顯示區(qū)的數(shù)據(jù)仍然是六位,高位由“0”填充,因此會出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年眉山貨運(yùn)資格證模擬考試新題庫
- 電梯加件協(xié)議書(2篇)
- 電力需求預(yù)測合同(2篇)
- 2024-2025學(xué)年四年級語文上冊第五單元橋12橋之思備課教案北師大版
- 湘教版數(shù)學(xué)七年級下冊2.2.2《運(yùn)用完全平方公式進(jìn)行計(jì)算》聽評課記錄
- 律師事務(wù)所年度檢查考核總結(jié)
- 第三季度財(cái)務(wù)工作總結(jié)
- 采購計(jì)劃年終工作總結(jié)
- 聽評課記錄二年級語文
- 領(lǐng)導(dǎo)給員工的評語與希望
- 2025年度化妝品電商平臺流量互換銷售合作合同
- 學(xué)習(xí)解讀2025年印發(fā)《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》課件
- 全過程造價(jià)咨詢服務(wù)的質(zhì)量、進(jìn)度、保密等保證措施
- 縣城屠宰場建設(shè)可行性研究報(bào)告
- 25學(xué)年六年級數(shù)學(xué)寒假作業(yè)《每日一練》
- 2025高考數(shù)學(xué)一輪復(fù)習(xí)-第8章-第3節(jié) 圓的方程【課件】
- 環(huán)保行業(yè)深度研究報(bào)告
- 保障性住房補(bǔ)貼委托書范本
- 公益捐助活動(dòng)影響力評估方法
- 國家電網(wǎng)安全培訓(xùn)
- 2025年中國陪診服務(wù)行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報(bào)告
評論
0/150
提交評論