3位數(shù)顯頻率計數(shù)器_第1頁
3位數(shù)顯頻率計數(shù)器_第2頁
3位數(shù)顯頻率計數(shù)器_第3頁
3位數(shù)顯頻率計數(shù)器_第4頁
3位數(shù)顯頻率計數(shù)器_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)原理及應(yīng)用設(shè)計說明書3位數(shù)顯頻率計數(shù)器起止日期: 2012年12月24日 至 2013年12月28日學(xué)生姓名劉揚(yáng)班級09電信2班成績指導(dǎo)教師(簽字)電子與信息工程系2013年12月28日目錄第一章:設(shè)計背景及要求1第二章:設(shè)計原理及總體方案12.2 方案的確定2第三章:硬件設(shè)計33.1 主控單元3第四章:軟件設(shè)置9第五章:仿真設(shè)計及結(jié)果1453仿真結(jié)果15第六章:總結(jié)及體會15第一章:設(shè)計背景及要求在現(xiàn)代社會中,隨著電子工業(yè)的發(fā)展,能夠精確測量各種設(shè)備儀器中電路的頻率、電壓、電流等參數(shù)已越來越重要。而傳統(tǒng)的電子測量儀器中,示波器在進(jìn)行頻率測量時測量精度較低,誤差較大。頻譜儀可以準(zhǔn)確的測量

2、頻率并顯示被測信號的頻譜,但測量速度較慢,無法實時快速的跟蹤捕捉到被測信號頻率的變化。正是由于頻率計能夠快速準(zhǔn)確的捕捉到被測信號頻率的變化,因此,頻率計擁有非常廣泛的應(yīng)用范圍。在生產(chǎn)制造企業(yè)中,頻率計被廣泛的應(yīng)用在生產(chǎn)線的生產(chǎn)測試中。頻率計能夠快速的捕捉到晶體振蕩器輸出頻率的變化,用戶通過使用頻率計能夠迅速的發(fā)現(xiàn)有故障的晶振產(chǎn)品,確保產(chǎn)品質(zhì)量。在計量實驗室中,頻率計被用來對各種電子測量設(shè)備的本地振蕩器進(jìn)行校準(zhǔn)。在無線通訊測試中,頻率計既可以被用來對無線通訊基站的主時鐘進(jìn)行校準(zhǔn),還可以被用來對無線電臺的跳頻信號和頻率調(diào)制信號進(jìn)行分析。我所設(shè)計的三位數(shù)顯頻率計數(shù)器,是基于ATMEL公司的AT89S

3、51單片機(jī),通過其T0與T1的定時與計數(shù)功能,來測量輸入信號的頻率,并通過六位動態(tài)數(shù)碼管顯示出來,并且盡可能使用最少的元器件,在滿足性能要求的前提下,盡量節(jié)省成本,以期最大的性價比。(1)基于AT89S51單片機(jī),設(shè)計一個精確測量輸入信號頻率的頻率計數(shù)器(2)能夠精確測量頻率范圍在0Hz250kHz之間的輸入信號(3)測量誤差不超過1Hz (4)使用六位數(shù)碼管顯示測量結(jié)果(5)在滿足性能的前提下,盡可能使用最少的、最廉價的元器件第二章:設(shè)計原理及總體方案頻率計的基本原理頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),此時

4、我們稱閘門時間為1秒。閘門時間也可以大于或小于一秒。閘門時間越長,得到的頻率值就越準(zhǔn)確,但閘門時間越長則每測一次頻率的間隔就越長。閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。測量一個信號的頻率有兩種方法:第一種是計時法,用基準(zhǔn)信號去測量被測信號的高電平持續(xù)的時間,然后轉(zhuǎn)換成被測信號的頻率。第二種是計數(shù)法,計算在基準(zhǔn)信號高電平期間通過的被測信號個數(shù)。根據(jù)設(shè)計要求測量0HZ250KHZ的正弦信號,首先要將正弦信號通過過零比較轉(zhuǎn)換成方波信號,然后變成測量方波信號。如果用第一種方法,當(dāng)信號頻率超過1KHZ的時候測量精度將超出測量精度要求,所以當(dāng)被測信號的頻率高于1KHZ的時候需要將被

5、測信號進(jìn)行分頻處理。如果被測信號頻率很高需要將被測信號進(jìn)行多次分頻直到達(dá)到設(shè)計的精度要求。 數(shù)字頻率計是一種應(yīng)用很廣泛的儀器電子,在廣泛的應(yīng)用領(lǐng)域內(nèi),到處可見到處理離散信息的數(shù)字電路。隨著數(shù)字電路制造工業(yè)的進(jìn)步,使得系統(tǒng)設(shè)計人員能在更小的空間內(nèi)實現(xiàn)更多的功能,從而提高系統(tǒng)可靠性和速度。本論文設(shè)計采用AT89C51單片機(jī)為控制器件來制作一個0HZ250KHZ的頻率計,并將所需得到的頻率通過數(shù)碼管顯示出來。根據(jù)設(shè)計要求用單片機(jī)的內(nèi)部T0產(chǎn)生基準(zhǔn)信號,由INTO輸入被測信號,通過定時方式計算被測信號的持續(xù)時間。通過單片機(jī)計算得出結(jié)果,最后通過數(shù)碼管顯示測量結(jié)果。系統(tǒng)的原理框圖如圖2-1所示。AT89

6、S51單片機(jī)3位數(shù)碼管頻率源圖2-1 數(shù)字頻率計系統(tǒng)框圖2.2 方案的確定系統(tǒng)采用MCS51系列單片機(jī)AT89S51作為控制核心,門控信號由AT89S51內(nèi)部的計數(shù)定時器產(chǎn)生,單位為1s。由于單片機(jī)的計數(shù)頻率上限較低(12MHZ晶振時約500KHZ),所以需對高頻被測信號進(jìn)行硬件分頻處理,AT89S51則完成運(yùn)算、控制及顯示功能。由于使用了單片機(jī),使整個系統(tǒng)具有極為靈活的可編程性,能方便地對系統(tǒng)進(jìn)行功能擴(kuò)展與改進(jìn)。原理圖如圖2-23位數(shù)碼管顯示單片機(jī)處理信號輸入圖2-2 單片機(jī)測頻原理圖在本設(shè)計方案中,我通過程序設(shè)定T0工作在計數(shù)狀態(tài)下,T1工作在計時狀態(tài)下。T0計數(shù)器對輸入的信號經(jīng)行計數(shù),其

7、最大計數(shù)值為fOSC/24,當(dāng)fOSC=12MHz時,T0的最大計數(shù)頻率為500kHz。由于信號的頻率就是每秒鐘信號脈沖的個數(shù),于是我讓T1工作在定時狀態(tài)下,定時時間為1秒。每定時1秒鐘到,就停止T0的計數(shù),然后從T0的計數(shù)單元中讀取計數(shù)的數(shù)值,即完成了信號頻率的測量。最后通過三位數(shù)碼管顯示出頻率值。由于要盡可能的使用最少的元件,在滿足設(shè)計要求的前提下,我盡可能的減少了元器件的使用。將被測信號不加任何處理,直接輸入單片機(jī)的T0口。而將被測信號經(jīng)行放大整形、倍頻鎖相等處理就不再進(jìn)行了。這樣做會使該頻率計在測量信號頻率時產(chǎn)生精度誤差,但能夠滿足設(shè)計要求。第三章:硬件設(shè)計3.1 主控單元主控單元主要

8、是AT89C51單片機(jī)系統(tǒng),采用12MHZ的晶振頻率。單片機(jī)的P3.2口接被處理后的被測信號,P0口接LED顯示器的數(shù)據(jù)輸入端,ALE,RD,WR,P0.0,P0.1通過外接控制電路接數(shù)碼管顯示器的控制端。單片機(jī)系統(tǒng)的電路如圖3-1所示。圖3-1 單片機(jī)系統(tǒng)AT89S51是一個低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-systemprogrammable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單

9、元,功能強(qiáng)大的微型計算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。AT89S51具有如下特點:40個引腳,4k Bytes Flash片內(nèi)程序存儲器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。此外,AT89S51設(shè)計和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷

10、激活或硬件復(fù)位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。AT89S51單片機(jī)內(nèi)部結(jié)構(gòu)如下圖:圖3-2 單片機(jī)內(nèi)部結(jié)構(gòu)圖 圖3-3 單片機(jī)引腳圖管腳說明:VCC:供電電壓。GND:接地。P0:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門

11、電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。

12、P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。

13、I/O口作為輸入口時有兩種工作方式即所謂的讀端口與讀引腳讀端口時實際上并不從外部讀入數(shù)據(jù)而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線經(jīng)過某種運(yùn)算或變換后再寫回到端口鎖存器只有讀端口時才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線上面圖中的兩個三角形表示的就是輸入緩沖器CPU將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號以完成不同的操作這是由硬件自動完成的不需要我們操心1然后再實行讀引腳操作否則就可能讀入出錯為什么看上面的圖如果不對端口置1端口鎖存器原來的狀態(tài)有可能為0Q端為0Q為1加到場效應(yīng)管柵極的信號為1該場效應(yīng)管就導(dǎo)通對地呈現(xiàn)低阻抗,此時即使引腳上輸入的信號為1也會因端口的低阻抗而使信號變低使得外加的1信號讀入后

14、不一定是1若先執(zhí)行置1操作則可以使場效應(yīng)管截止引腳信號直接加到三態(tài)緩沖器中實現(xiàn)正確的讀入由于在輸入操作時還必須附加一個準(zhǔn)備動作所以這類I/O口被稱為準(zhǔn)雙向口89C51的P0/P1/P2/P3口作為輸入時都是準(zhǔn)雙向口接下來讓我們再看另一個問題從圖中可以看出這四個端口還有一個差別除了P1口外P0P2P3口都還有其他的功能。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/

15、6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部

16、鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的 頻率采集頻率采集單元主要依靠單片機(jī)的定時器/計數(shù)器,定時器/計數(shù)器實質(zhì)上就是一個加1計數(shù)器,其控制電路受軟件控制、切換.當(dāng)定時器/計數(shù)器為定時工作方式時,計數(shù)器的加1信號由振蕩器的12分頻信號產(chǎn)生,即每過一個機(jī)器周期,計數(shù)器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統(tǒng)的振蕩頻率有關(guān)。因一個機(jī)器周期等于12個振蕩周期,所以計數(shù)頻率fcount=1/12osc。如果晶振為12MH

17、z,則計數(shù)周期為:T=1/(12106)Hz1/12=1s(3-1)這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當(dāng)選擇定時器的長度(如8位、13位、16位等)。當(dāng)定時器/計數(shù)器為計數(shù)工作方式時,通過引腳T0和T1對外部信號計數(shù),外部脈沖的下降沿將觸發(fā)計數(shù)。計數(shù)器在每個機(jī)器周期的S5P2期間采樣引腳輸入電平。若一個機(jī)器周期采樣值為1,下一個機(jī)器周期采樣值為0,則計數(shù)器加1。此后的機(jī)器周期S3P1期間,新的計數(shù)值裝入計數(shù)器。所以檢測一個由1至0的跳變需要兩個機(jī)器周期,故外部的最高計數(shù)頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計數(shù)頻率為0.5MHz。雖然對

18、外部輸入信號的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計數(shù)脈沖的高電平與低電平保持時間均需在一個機(jī)器周期以上。顯示單元本次設(shè)計中采用了LED顯示器,即數(shù)碼管。數(shù)碼管的每一個數(shù)碼段是一只發(fā)光二極管。當(dāng)發(fā)光二極管導(dǎo)通時,相應(yīng)的一個點或者一個筆畫發(fā)光,控制發(fā)光二極管發(fā)光組合,可以顯示出所需字符。我采用了共陰極結(jié)構(gòu)。在定義其顯示字形的碼段時,通過I/O口送出七段碼表3-1 段碼表顯示字形0 1 2 3 4 5 6 7 8 9 共陰3FH 06H 5BH4FH66H6DH7DH07H 7FH 6FH LED顯示模塊原理圖圖3-4 LED顯示原理圖圖3-5電路原理圖第四章:軟件設(shè)

19、置根據(jù)硬件和畢業(yè)設(shè)計所要求的功能,在KEIL51開發(fā)環(huán)境下編譯程序,首先要定義相關(guān)參量,然后初始化中斷,打開外中斷,T0是工作在計數(shù)狀態(tài)下,對輸入的頻率信號進(jìn)行計數(shù),但對工作在計數(shù)狀態(tài)下的T0,最大計數(shù)值為fOSC/24,由于fOSC12MHz,因此:T0的最大計數(shù)頻率為250KHz。對于頻率的概念就是在一秒只數(shù)脈沖的個數(shù),即為頻率值。所以T1工作在定時狀態(tài)下,每定時1秒中到,就停止T0的計數(shù),而從T0的計數(shù)單元中讀取計數(shù)的數(shù)值,然后進(jìn)行數(shù)據(jù)處理。送到數(shù)碼管顯示出來。T1工作在定時狀態(tài)下,最大定時時間為65ms,達(dá)不到1秒的定時,所以采用定時50ms,共定時20次,即可完成1秒的定時功能。編譯

20、實現(xiàn)相關(guān)功能程序,實現(xiàn)畢業(yè)設(shè)計所要求的功能,程序流程圖如下圖所示:初始化T0/T1初始化(設(shè)置T0為外部脈沖計數(shù),T1為1s定時)從P32接受外部中斷請求T1定時器是否達(dá)到1秒 計數(shù)顯示 結(jié)束 圖4-1 程序流程圖#include unsigned char code dispbit=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/共陰數(shù)碼管選通數(shù)組unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/ 數(shù)碼管顯示的數(shù)字?jǐn)?shù)組unsign

21、ed char dispbuf8=0,0,0,0,0,0,10,10;/數(shù)碼管顯示內(nèi)容數(shù)組unsigned char temp8;/數(shù)碼管顯示內(nèi)容緩沖數(shù)組unsigned char dispcount;/顯示計數(shù)unsigned char T0count; /計時器0的計數(shù) unsigned char timecount;bit flag; /頻率計開始工作標(biāo)志位 unsigned long x; /八個數(shù)碼管顯示的數(shù)void main(void) unsigned char i; TMOD=0x15;/設(shè)置兩個計時器模式 TH0=0; /初始化計時器1的高位 TL0=0; /初始化計時器1的

22、低位 TH1=(65536-4000)/256;/初始化計時器1的高位 TL1=(65536-4000)%256;/初始化計時器1的低位 TR1=1; /開計時器1 TR0=1; /開計時器0 ET0=1; /開外部計時中斷0 ET1=1; /開外部計時中斷1 EA=1; /開總中斷 while(1) if(flag=1) flag=0; x=T0count*65536+TH0*256+TL0; for(i=0;i8;i+) / tempi=0; /清緩沖數(shù)組內(nèi)容 i=0; while(x/10) tempi=x%10; /把個位數(shù)給緩沖區(qū) x=x/10; i+; tempi=x; / 把十位

23、數(shù)給緩沖 for(i=0;i6;i+) dispbufi=tempi;/ timecount=0;/清0 T0count=0; TH0=0; TL0=0; TR0=1; void t0(void) interrupt 1 using 0 /中斷計時器0實行的函數(shù) T0count+;void t1(void) interrupt 3 using 0 /中斷計時器1的函數(shù) TH1=(65536-4000)/256; TL1=(65536-4000)%256; timecount+; if(timecount=250) TR0=0; timecount=0; flag=1; P0=dispcodedispbufdispcount; /數(shù)碼管顯示內(nèi)容 P2=dispbitdispcount; /數(shù)碼管選通 dispcount+; if(dispcount=8) dispcount=0; 第五章:仿真設(shè)計及結(jié)果源程序編譯及結(jié)果53仿真結(jié)果第六章:總結(jié)及體會硬件測試時需要用到的器件有

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論