基于51單片機的數(shù)字頻率計設(shè)計報告_第1頁
基于51單片機的數(shù)字頻率計設(shè)計報告_第2頁
基于51單片機的數(shù)字頻率計設(shè)計報告_第3頁
基于51單片機的數(shù)字頻率計設(shè)計報告_第4頁
基于51單片機的數(shù)字頻率計設(shè)計報告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目錄34455553.2 芯片主要性能5 系統(tǒng)調(diào)試摘要: 數(shù)字頻率計是現(xiàn)代科研生產(chǎn)中不可或缺的測量儀器,它以十進制數(shù)顯示被測頻率,基本功能是測量正弦信號,方波信號,及其它各種單位時間內(nèi)變化的物理量。本系統(tǒng)采用AT89S52單片機智能控制,結(jié)合外圍電子電路,設(shè)計的頻率計性能穩(wěn)定。在軟件設(shè)計上采用了單片機的C語言設(shè)計,通過單片機內(nèi)部定時/計數(shù)器同時動作,在測量頻率時將測頻率和測周期相結(jié)合,提高了頻率計的測量準(zhǔn)確性。 測量結(jié)果在四位七段式數(shù)碼管上輸出顯示,結(jié)果精確到整數(shù)位。頻率計的軟件設(shè)計,系統(tǒng)軟件設(shè)計簡單明了,適用于測量頻率從19999Hz的脈沖信號,超頻自動報警,安全可

2、靠。關(guān)鍵詞:數(shù)字頻率計;AT89S52單片機;信號;AT89S52最小系統(tǒng)板;LG5011BSR正文1. 概述 單片機是20世紀(jì)中期發(fā)展起來的一種面向控制的大規(guī)模集成電路模塊,具有功能強、體積小、可靠性高、價格低廉等特點,在工業(yè)控制、數(shù)據(jù)采集、智能儀表、機電一體化、家用電器等領(lǐng)域得到了廣泛的應(yīng)用,極大的提高了這些領(lǐng)域的技術(shù)水平和自動化程度。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在線系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯

3、片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 本項目以AT89S52為基本控制元件,能夠?qū)?9999Hz頻段內(nèi)的正弦信號,方波信號,及其它各種單位時間內(nèi)變化的物理量進行初略測量,可應(yīng)用于教學(xué)實驗,學(xué)生自主實驗等對頻率精確度要求不高的場合,也可應(yīng)用于家用情況下頻率的初步獲取。在科技高度發(fā)達的今天,作為一名工科的大學(xué)生,一款簡易的頻率測量儀器,人手必備。2.總體設(shè)計方案2.1 軟件:采用Keil uVision3做為開發(fā)工具,進行編程設(shè)計,通過progisp2.0將程序下載到開發(fā)板芯片中。2.2設(shè)計思路:利用AT8

4、9S52 內(nèi)部的定時/計數(shù)器0,和定時/計數(shù)器1 結(jié)合完成,在初化AT89S5時,把定時/計數(shù)器0設(shè)置為計數(shù)方式,計數(shù)的信號來源于單片機的引腳P35,定時/計數(shù)器1設(shè)置為定時方式.上電后按下按鍵kye1(P20),去抖啟動,同時開始T1的定時過程和T0的計數(shù)過程,T1 定時20ms,設(shè)置定時中斷,當(dāng)T1第20次進入中斷定時結(jié)束時,停止T0 的計數(shù)過程。之后通過讀取T0的計數(shù)值N,就可以知道在1s內(nèi)輸入信號的頻率為val。若T1定時不到1s,T0計數(shù)到65536溢出,則進入計數(shù)中斷,蜂鳴器報警。輸出頻率蜂鳴器報警計數(shù)溢出按下按鍵計頻率 圖一 程序控制方框圖3系統(tǒng)硬件設(shè)計3.1主板【簡要說明】 3

5、.1.1 尺寸:長128mm寬87mm高18mm3.1.2 支持芯片:AT89S51/S52/S53 支持STC89C51/C52/C53(加 轉(zhuǎn)換板可使用ATMEGA8/48、ATMEGA16/32)3.1.3 工作電壓:直流4.55.5伏3.1.4 單片機標(biāo)準(zhǔn)十針下載接口。(可使用并口下載線和USB下載線 下載) 3.1.5 特點:(1)具有電源指示。       (2)所以I/O口以引出并有LED燈指示。       (3)四位數(shù)碼管顯示、四位按鍵輸入、32位

6、LED發(fā)光二極 管顯示。(4)標(biāo)準(zhǔn)的11.0592M晶振。(晶振可以插拔更換)       (5)具有上電復(fù)位和手動復(fù)位。       (6)四種供電接口(USB供電、端子引入供電、排針引入供電、電源頭接口供電)       (7)串口通信使用MAX232接口,同時可以下載STC單片機程序。3.2 芯片主要性能:l 與MCS-51單片機產(chǎn)品兼容l 8K字節(jié)在線系統(tǒng)可編程Flash存儲器l

7、 1000次擦寫周期l 4.0V-5.5V工作電壓l 全靜態(tài)操作:0Hz33Hzl 三級加密程序存儲器l 256*8字節(jié)的內(nèi)部數(shù)據(jù)存儲器l 32個可編程I/O口線l 三個16位定時器/計數(shù)器l 八個中斷源l 全雙工UART串行通道l 低功耗空閑和掉電模式l 掉電后中斷可喚醒 圖二 芯片管腳示意圖l 看門狗定時器l 雙數(shù)據(jù)指針l 掉電標(biāo)識符l 快速編程周期l 靈活I(lǐng)SP編程(字節(jié)和 模式)l 綠色(-免費)工作包操作3.3 功能特性描述:AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在線系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80

8、C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方

9、式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。3.4 引腳描述:VCC : 電源GND: 地P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口。P1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“

10、1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX)。在flash編程和校驗時,P1口接收低8位地址字節(jié)。引腳號第二功能P1.0T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出P1.1T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)P1.2MOSI(在系統(tǒng)編程用)P1.6MISO(在系統(tǒng)編程用)P1.7SCK(在系統(tǒng)編程用) 表1 P1口第二功能說明P2 口:P2 口是一個具有內(nèi)

11、部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,

12、p2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的 原因,將輸出電流(IIL)。在flash編程和校驗時,P3口也接收一些控制信號。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。Port PinAlternate FunctionsP3.0RXD (serial input port)P3.1TXD (serial output port)P3.2INT0 (external interrupt 0)P3.3INT1 (external interrupt 1)P

13、3.4T0 (timer 0 external input)P3.5T1 (timer 1 external input)P3.6WR (external data memory write strobe)P3.7RD (external data memory read strobe)表2 P3口第二功能說明RST: 復(fù)位輸入。晶振工作時,RST腳持續(xù)2 個機器周期高電平將使單片機復(fù)位??撮T狗計時完成后,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下, 復(fù)位高電平有效。在訪問外部數(shù)據(jù)存儲器時,PSEN將不被激

14、活。定時器0 和定時器1:在AT89S52 中,定時器0 和定時器1 的操作與AT89C51 和AT89C52 一樣。圖三 頻率計系統(tǒng)組成圖開始4.系統(tǒng)軟件設(shè)計4.1 初始定義按下key1判別成功與 否4.2 子程序設(shè)計a. 畫流程圖 b編譯數(shù)碼顯示延時,按鍵去抖延時 T0計數(shù)T1計時c數(shù)碼管掃描 d記時20ms中斷(再次賦初值)T0中斷 e計數(shù)溢出中斷 f. 對記時,計數(shù),中斷初始化T1中斷顯示 圖四 流程圖4.3 主要源程序#include<reg52.h> /庫文件#define uchar unsigned char/宏定義無符號字符型#define uint unsign

15、ed int /宏定義無符號整型/*初始定義*/Code unchar seg7code10= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /顯示段碼 不加code,默認(rèn)在數(shù)據(jù)存儲器256buchar wei4=0XEf,0XDf,0XBf,0X7f; /位的控制端 (四位數(shù)碼管)sbit key1=P20;uint tcnt=0; /計中斷int th0,t0,val=0;sbit sound=P37; /蜂鳴器/*延時函數(shù)*/void delay(uchar t) uchar i,j; for(i=0;i<t;i+) for(

16、j=13;j>0;j-);void delay_2ms() uchar l,k; for(l=0;l<0;l+) for(k=0;k<254;k+); /*顯示函數(shù)*/ void Led(int date) /顯示函數(shù)/*數(shù)據(jù)轉(zhuǎn)換*/ uint z,x,c,v; z=date/1000; /求千位 x=date%1000/100; /求百位 c=date%100/10; /求十位 v=date%10; /求個位 P2=0XFF; P0=seg7codez; P2=wei0; delay(80); P2=0XFF; P0=seg7codex; P2=wei1; delay(80

17、); P2=0XFF; P0=seg7codec; P2=wei2; delay(80); P2=0XFF; P0=seg7codev; P2=wei3; delay(80); P2=0XFF;/*定時中斷服務(wù)函數(shù)*/void t1(void) interrupt 3 using 0 /定時中斷服務(wù)函數(shù) p23 ,p46 tcnt+; /每過50ms tcnt 加一 if(tcnt=20) /計滿20 次(1 秒)時 th0=TH0; /讀計數(shù)值 t0=TL0; val=th0*256+t0; /換算計數(shù)值 tcnt=0;/重新再計TH0=(65535-9999)/256;TL0=(65535

18、-9999)%256; TH1=(65535-50000)/256; /對TH1 TL1 賦值 TL1=(65535-50000)%256; void t00() interrupt 1 /計數(shù)中斷 sound=sound;/計數(shù)溢出中斷void init()TMOD=0x15; /定時器1工作方式1,計數(shù)器0工作方式1IE=0X8A; TR1=1; /開始計時TR0=1; /開始計數(shù) TH1=(65535-50000)/256; /對TH1 TL1 賦值TL1=(65535-50000)%256; TH0=(65535-9999)/256; TL0=(65535-9999)%256;/*主函

19、數(shù)*/void main() if(!key1) delay_2ms(); if(!key1) init(); while(1) Led(val); /*結(jié)束*/5.系統(tǒng)調(diào)試5.1 程序準(zhǔn)備:頻率計程序,脈沖源程序5.2 檢測硬件芯片:數(shù)碼管,按鍵,蜂鳴器5.3 調(diào)試: 5.3.1下載程序到板,導(dǎo)線連接脈沖源一P20到頻率計P34, 顯示頻率在91.92.83,99間跳變,復(fù)位。 5.3.2 調(diào)入脈沖源二,頻率顯示穩(wěn)定,復(fù)位。 5.3.3 調(diào)整脈沖源二程序,超頻,蜂鳴器報警。 5.3.4 再次調(diào)入脈沖源一,塞選頻段,顯示穩(wěn)定在91,92Hz。 5.3.5 調(diào)試結(jié)束。5.4 測試結(jié)果:可以準(zhǔn)確測

20、量從1到9999Hz占空比較為穩(wěn)定的信號源,超過此頻率范圍,系統(tǒng)報警。5.5 問題:開始時,未給定時器附初值,頻率顯示過大,用不同的板測試接果不同,頻率過大時結(jié)果出錯,蜂鳴器不報警。 解決方案:(1) 賦初值:示波器檢測信號源一,頻率為91.3Hz,以此為標(biāo)準(zhǔn)調(diào)整程序如下:void t1(void) interrupt 3 using 0 tcnt+; if(tcnt=20) th0=TH0; t0=TL0; val=th0*256+t0; tcnt=0;/TH0=(65535-9999)/256;/添加初始值TL0=(65535-9999)%256; TH1=(65535-50000)/25

21、6;/添加初始值 TL1=(65535-50000)%256; (2)查看晶振:同一批的板中晶振有12M的,也有16M的,因而頻率不同。(3)蜂鳴器缺少晶振,換版后添加計數(shù)中斷如下: void T0() interrupt 1 /計數(shù)中斷 sound=sound;/計數(shù)溢出中斷設(shè)計體會在此次單片機項目設(shè)計的過程中,我進一步認(rèn)識到全面專業(yè)知識以及邏輯思考方式對研究問題的重要性,以及成功最重要的一塊敲門磚是不妥協(xié),不放棄!雖然這門課修過公選,但時隔一年本就不大熟的知識更加淡漠,完成整體設(shè)計頗費周折。在這過程中書到用時方恨少,天下還是好人多同學(xué)和老師的幫助給了我莫大的動力。在這三周中,有時一天中翻專

22、業(yè)書的次數(shù)比前三周理論學(xué)習(xí)時合起來翻的次數(shù)都多,對理論聯(lián)系實際的重要性有了更新的領(lǐng)悟。在設(shè)計過程中也從網(wǎng)絡(luò)上獲取許多寶貴的資源,每種設(shè)計都有獨到之處,通過請教他人加上自己的理解,并與所學(xué)的知識緊密相結(jié)合,我相信這過程必然對我今后的學(xué)習(xí)和工作產(chǎn)生積極的影響。除了獲取新的知識,深感鞏固舊的學(xué)問也很重要,尤其是結(jié)合了這幾年學(xué)的相關(guān)的專業(yè)知識,對各門課都做一個全面的溫習(xí),才不用帶著書柜跑。這不僅對我現(xiàn)在的學(xué)習(xí)乃至今后的工作都會有很大的幫助。本次選擇設(shè)計的定時數(shù)字頻率計,因為受材料和個人知識水平的限制只能滿足滿足一般的測量要求,且電路在測試復(fù)雜信號時存在一定的問題,頻率只能穩(wěn)定在一定范圍內(nèi),雖可以通過選

23、取特定的頻段來排除頻率變化較復(fù)雜區(qū)段的干擾,但這樣針對不同的信號源都要重新調(diào)整程序,過于復(fù)雜。而更精確的頻率計設(shè)計,現(xiàn)有水平還不能達到,所以本次就未深入涉及。希望老師給以評點和支持,我將在今后朝著這些方向?qū)W習(xí)奮斗。7.參考文獻【1】盧勝利,郝立果,丁峰等. 單片機原理與應(yīng)用技術(shù)實踐M.北京:機械工業(yè)出版社,2009.5;【2】謝自美.電子線路設(shè)計M.武昌:華中科技大學(xué)出版社,2000.7 ;【3】張永瑞.電子測量技術(shù)基礎(chǔ)M.西安:西安電子科技大學(xué)出版社,2002.【4】李春.數(shù)字頻率計設(shè)計D.北京:邵陽電子廠,2011,02: 4頁到7頁;【5】張杰,楊艷麗,馬莉莉,張立倩.基于單片機C語言的

24、數(shù)字頻率計設(shè)計 內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報,第28卷,第二期,2007年6月。附錄1 總體電路圖附錄2 實驗板元器件分布圖附錄3 測頻程序一/* =直流電機的PWM速度控制程序= */ /* 晶振采用11.0592M,產(chǎn)生的PWM的頻率約為91Hz */ #include<reg52.h> #include<math.h> #define uchar unsigned char #define uint unsigned int sbit en1=P20; /* Enable A */ sbit s1=P22; /* Input 1 */ sbit s2=P23; /* Inp

25、ut 2 */ uchar t=0; /* 中斷計數(shù)器 */ uchar m1=0; /* 電機1速度值 */ uchar tmp1; /* 電機當(dāng)前速度值 */ /* 電機控制函數(shù) index-電機號(1,2); speed-電機速度(-100100) */ void motor(uchar index, char speed) if(speed>=-100 && speed<=100) if(index=1) /* 電機1的處理 */ m1=abs(speed); /* 取速度的絕對值 */ if(speed<0) /* 速度值為負(fù)則反轉(zhuǎn) */ s1=0; s2=1; else /* 不為負(fù)數(shù)則正轉(zhuǎn) */ s1=1; s2=0; void delay(uint j) /* 簡易延時函數(shù) */ for(j;j>0;j-); void main() char i; TMOD=0x02; /* 設(shè)定T0的工作模式為2 */ TH0=0x9B; /* 裝入定時器的初值 */ TL0=0x

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論