頻率計(jì)實(shí)驗(yàn)報(bào)告_第1頁
頻率計(jì)實(shí)驗(yàn)報(bào)告_第2頁
頻率計(jì)實(shí)驗(yàn)報(bào)告_第3頁
頻率計(jì)實(shí)驗(yàn)報(bào)告_第4頁
頻率計(jì)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

-.z.頻率計(jì)實(shí)驗(yàn)報(bào)告一,實(shí)驗(yàn)?zāi)康?.應(yīng)用AT89S52單片機(jī)、單片機(jī)的I/O端口外擴(kuò)驅(qū)動(dòng)器74HC573和74HC138、LED數(shù)碼管動(dòng)態(tài)顯示等實(shí)現(xiàn)對(duì)外部信號(hào)頻率進(jìn)展準(zhǔn)確計(jì)數(shù)的設(shè)計(jì)。二,實(shí)驗(yàn)要求A.根本要求:使用單片機(jī)的定時(shí)器/計(jì)數(shù)器功能,設(shè)計(jì)頻率測量裝置。〔1〕當(dāng)被測頻率f*<100Hz時(shí),采用測周法,顯示頻率***.***;當(dāng)被測頻率f*>100Hz時(shí),采用測頻法,顯示頻率******。〔2〕利用鍵盤分段測量和自動(dòng)分段測量。〔3〕完成單脈沖測量,輸入脈沖寬度范圍是100μs-0.1s。B.擴(kuò)展局部:三,實(shí)驗(yàn)根本原理以單片機(jī)AT89S52為核心,利用單片機(jī)AT89S52的計(jì)數(shù)/定時(shí)器〔T1和T0〕的功能來實(shí)現(xiàn)頻率的計(jì)數(shù),并且利用單片機(jī)的動(dòng)態(tài)掃描把測出的數(shù)據(jù)送到數(shù)字顯示電路顯示。利用7SEG-MP*8-CC-BLUE共陰極數(shù)碼管,顯示電路共由六位共陰極數(shù)碼管組成,總體原理框圖如圖1.1所示。單片機(jī)單片機(jī)AT89S52電路7SEG-MP*8-CC-BLUE共陰極數(shù)碼管信號(hào)整形電路信號(hào)源+5V電源圖1.1總體設(shè)計(jì)框圖測頻原理測量頻率有測周法和測頻法兩種。如圖2.2和圖2.3所示MMNT圖1.2測周法圖1.3測頻法(1)測頻法〔T法〕:通過測量脈沖寬度來確定頻率,適用于高頻。(2)測周法〔M法〕:是計(jì)數(shù)器在一定時(shí)間內(nèi)對(duì)速度的脈沖數(shù),確定頻率,適用于低頻。四,實(shí)驗(yàn)設(shè)計(jì)分析針對(duì)要實(shí)現(xiàn)的功能,采用AT89S52單片機(jī)進(jìn)展設(shè)計(jì),AT89S52單片機(jī)是一款低功耗,高性能CMOS8位單片機(jī),片內(nèi)含8KB在線可編程〔ISP〕的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-52指令系統(tǒng)及80C5在程序方面,采用分塊設(shè)計(jì)的方法,這樣既減小了編程難度、使程序易于理解,又能便于添加各項(xiàng)功能。延時(shí)程序等。運(yùn)用這種方法,關(guān)鍵在于各模塊的兼容和配合,假設(shè)各模塊不匹配會(huì)出現(xiàn)意想不到的錯(cuò)誤。首先,在編程之前必須了解硬件構(gòu)造尤其是各引腳的用法,以及內(nèi)部存放器、存儲(chǔ)單元的用法,否則,編程無從下手,電路也無法設(shè)計(jì)。這是前期準(zhǔn)備工作。第二局部是硬件局部:依據(jù)想要的功能分塊設(shè)計(jì)設(shè)計(jì),比方輸入需要開關(guān)電路,輸出需要顯示驅(qū)動(dòng)電路和數(shù)碼管電路等。第三局部是軟件局部:先學(xué)習(xí)理解匯編語言的編程方法再根據(jù)設(shè)計(jì)的硬件電路進(jìn)展分塊的編程調(diào)試,最終完成程序設(shè)計(jì)。第四局部是軟件畫圖局部:設(shè)計(jì)好電路后進(jìn)展畫圖,包括電路圖和仿真圖的繪制。第五局部是軟件仿真局部:軟硬件設(shè)計(jì)好后將軟件載入芯片中進(jìn)展仿真,仿真無法完成時(shí)檢查軟件程序和硬件電路并進(jìn)展修改直到仿真成功。第六局部是硬件實(shí)現(xiàn)局部:連接電路并導(dǎo)入程序檢查電路,假設(shè)與設(shè)計(jì)的完全一樣一般能實(shí)現(xiàn)想要的功能。最后進(jìn)展功能擴(kuò)展,在已經(jīng)正確的設(shè)計(jì)根底上,添加額外的功能!五,實(shí)驗(yàn)要求實(shí)現(xiàn)A.電路設(shè)計(jì)1.整體設(shè)計(jì)此次設(shè)計(jì)主要是應(yīng)用單片機(jī)來設(shè)計(jì)頻率計(jì),硬件局部主要分以下電路模塊:顯示電路用8個(gè)共陰數(shù)碼管顯示頻率,通過動(dòng)態(tài)掃描進(jìn)展顯示,從而防止了譯碼器的使用,同時(shí)節(jié)約了I/0端口,使電路更加簡單。單片機(jī)采用AT89S52系列,這種單片機(jī)應(yīng)用簡單,適合頻率計(jì)設(shè)計(jì)。電路的總體設(shè)計(jì)框架如下:單片機(jī)單片機(jī)輸入局部晶振和復(fù)位輸出局部2.分塊設(shè)計(jì)模塊電路主要分為:輸入局部、輸出局部、復(fù)位和晶振電路。2.1輸入局部輸入信號(hào)主要是信號(hào)發(fā)生器發(fā)出,由按鍵控制。以下為輸入局部樣例:在本實(shí)驗(yàn)中主要用用P3口輸入按鍵信號(hào),還用到了特殊的P0口。對(duì)于P0口,由于其存在高阻狀態(tài),為了實(shí)現(xiàn)開關(guān)功能,給其添加上拉電阻,具體如以下圖所示:2.2輸出局部本電路的輸出信號(hào)為8段共陰極數(shù)碼管的位選和段選信號(hào)。本實(shí)驗(yàn)的數(shù)碼管是共陰的〔為了防止段選信號(hào)不能驅(qū)動(dòng)數(shù)碼管,故在P1口連接上拉電阻后,再送段選信號(hào),以提高驅(qū)動(dòng),圖中未畫出〕,位選信號(hào)直接從P2口接入,如以下圖:各模塊拼接組合,電路總體設(shè)計(jì)圖如下:B.程序設(shè)計(jì)B.1程序總體設(shè)計(jì)本實(shí)驗(yàn)用匯編程序完成.程序總的流程圖如下:開場開場系統(tǒng)初始化頻率測量是否有鍵按下?自動(dòng)測量S2鍵按下S3鍵按下S1鍵按下頻率是否超過110HZ?測頻法測周法測到的實(shí)際頻率頻率顯示測頻法測周法NYYN結(jié)合電路圖,程序設(shè)計(jì)的整體思路為:頻率計(jì)開場工作或者完成一次頻率測量,系統(tǒng)軟件都進(jìn)展測量初始化。測量初始化模塊設(shè)置堆棧指針〔SP〕、工作存放器、中斷控制和定時(shí)/計(jì)數(shù)器的工作方式。定時(shí)/計(jì)數(shù)器的工作首先被設(shè)置為計(jì)數(shù)器方式,即用來測量信號(hào)頻率。首先定時(shí)/計(jì)數(shù)器的計(jì)數(shù)存放器清0,運(yùn)行控制位TR置1,啟動(dòng)對(duì)待測信號(hào)的計(jì)數(shù)。計(jì)數(shù)閘門由軟件延時(shí)程序?qū)崿F(xiàn),從計(jì)數(shù)閘門的最小值〔即測量頻率的高量程〕開場測量,計(jì)數(shù)閘門完畢時(shí)TR清0,停頓計(jì)數(shù)。計(jì)數(shù)存放器中的數(shù)值經(jīng)過數(shù)制轉(zhuǎn)換程序從十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。判斷該數(shù)的最高位,假設(shè)該位不為0,滿足測量數(shù)據(jù)有效位數(shù)的要求,測量值和量程信息一起送到顯示模塊;假設(shè)該位為0,將計(jì)數(shù)閘門的寬度擴(kuò)大10倍,重新對(duì)待測信號(hào)的計(jì)數(shù),直到滿足測量數(shù)據(jù)有效位數(shù)的要求。定時(shí)/計(jì)數(shù)器的工作被設(shè)置為定時(shí)器方式,定時(shí)/計(jì)數(shù)器的計(jì)數(shù)存放器清0,在判斷待測信號(hào)的上跳沿到來后,運(yùn)行控制位TR置為1,以單片機(jī)工作周期為單位進(jìn)展計(jì)數(shù),直至信號(hào)的下跳沿到來,運(yùn)行控制位TR清0,停頓計(jì)數(shù)。系統(tǒng)軟件設(shè)計(jì)采用模塊化設(shè)計(jì)方法。整個(gè)系統(tǒng)由初始化模塊,信號(hào)頻率測量模塊,自動(dòng)量程轉(zhuǎn)換和顯示模塊等模塊組成。系統(tǒng)軟件流程圖如上圖所示。B.2程序主要模塊中斷效勞子程序T0中斷效勞子程序流程如圖4.2所示。測頻時(shí),定時(shí)器T0工作在定時(shí)方式,每次定時(shí)50mS,則T0中斷20次正好為1秒,即T0用來產(chǎn)生標(biāo)準(zhǔn)秒信號(hào)。定時(shí)器T1用作計(jì)數(shù)器,對(duì)待測信號(hào)計(jì)數(shù),每秒鐘的開場啟動(dòng)T1,每秒鐘的完畢關(guān)閉T1。20H=5020H=50T0初始化定時(shí)20ms啟動(dòng)定時(shí)器T0定時(shí)到產(chǎn)生中斷1s定時(shí)到采集計(jì)數(shù)數(shù)據(jù)中斷開場20H-1=0?中斷返回YN21H=0T1初始化置初值0計(jì)數(shù)開場計(jì)數(shù)溢出產(chǎn)生中斷21H=21H+1采集數(shù)據(jù)中斷開場1s是否到?中斷返回N圖4.2T0中斷效勞子程序圖4.3T1中斷效勞子程序YB.2.2顯示子程序設(shè)計(jì)顯示子程序?qū)⒋娣旁陲@示緩沖區(qū)的頻率或周期值送往數(shù)碼管上顯示出來,由于所有6位數(shù)碼管的8根段選線并聯(lián)在一起由單片機(jī)的P0口驅(qū)動(dòng)74HC573控制,因此,在每一瞬間6位數(shù)碼管會(huì)顯示一樣的字符,要想每位顯示不同的字符就必須采用掃描方法輪流點(diǎn)亮各位數(shù)碼管,即在每一瞬間只點(diǎn)亮*一位顯示字符,在此瞬間,段選控制口P0輸出相應(yīng)字符。由AT89S52單片機(jī)P2.0-P2.2口驅(qū)動(dòng)74HC138逐位輪流點(diǎn)亮各個(gè)數(shù)碼管,每位保持1mS,在10mS~20mS之內(nèi)再點(diǎn)亮一次,重復(fù)不止,利用人的視角暫留,好似6位數(shù)碼管同時(shí)點(diǎn)亮。數(shù)碼管顯示子程序流程如圖4.4所示。開場開場選擇檔位數(shù)據(jù)各位別離延時(shí)送數(shù)據(jù)顯示完畢圖4.4顯示子程序流程圖量程轉(zhuǎn)換程序使用定時(shí)方法實(shí)現(xiàn)頻率測量時(shí),外部的待測信號(hào)通過頻率計(jì)的預(yù)處理電路變成寬度等于待測信號(hào)周期的方波,該方波同樣加至定時(shí)/計(jì)數(shù)器的輸入腳。工作高電平是否加至定時(shí)/計(jì)數(shù)器的輸入腳;當(dāng)判定高電平加至定時(shí)/計(jì)數(shù)器的輸入腳,運(yùn)行控制位TR置1,啟動(dòng)定時(shí)/計(jì)數(shù)器對(duì)單片機(jī)的機(jī)器周期的計(jì)數(shù),同時(shí)檢測方波高電平是否完畢;當(dāng)判定高電平完畢時(shí)TR清0,停頓計(jì)數(shù),然后從計(jì)數(shù)存放器讀出測量數(shù)據(jù)。由顯示電路顯示測量結(jié)果,根據(jù)測量結(jié)果判斷,進(jìn)展頻率計(jì)比較后,進(jìn)展檔位的自動(dòng)切換,具體檔位自動(dòng)切換流程圖如圖4.5所示。判斷*值判斷*值測量頻率值調(diào)用***.***檔顯示頻率值調(diào)用******檔開場*<110Hz完畢YN圖4.5檔位自動(dòng)切換流程圖C.程序調(diào)試及仿真本程序通過Keil單片機(jī)開發(fā)平臺(tái)實(shí)現(xiàn)程序的編譯,,生成HE*文件。程序再編譯過程中可以發(fā)現(xiàn)錯(cuò)位,并及時(shí)改正,在設(shè)計(jì)時(shí)非常重要,使錯(cuò)誤被扼殺在搖籃中。通過Keil和硬件仿真平臺(tái)Proteus的聯(lián)合,可以將設(shè)計(jì)效果仿真出來,根據(jù)效果,有目的的改變?cè)O(shè)計(jì),優(yōu)化程序。c.1利用Keil軟件實(shí)驗(yàn)過程截圖:1,建一個(gè)工程,并設(shè)定與Proteus仿真相關(guān)的參數(shù)2,編譯程序,并生成HE*文件c.2利用Proteus仿真實(shí)驗(yàn)過程截圖:1.大于110Hz測頻法調(diào)用******檔2.小于110Hz測周法調(diào)用***.***檔五.實(shí)驗(yàn)總結(jié)及感想只有通過親自實(shí)踐,動(dòng)手去做,才能真正掌握這些知識(shí),也讓我對(duì)以前學(xué)習(xí)的模電知識(shí)有了形象的理解。經(jīng)過這次單片機(jī)課程設(shè)計(jì),我從一個(gè)單片機(jī)實(shí)踐的門外漢,已經(jīng)越升為略知一二的新手。雖然還有很多有關(guān)單片機(jī)的應(yīng)用有待學(xué)習(xí),但萬變不離其宗,只要深入了解單片的原理,全部知識(shí)點(diǎn),各個(gè)細(xì)節(jié),一切設(shè)計(jì)皆有可能。不懂得要問問同學(xué),更要學(xué)會(huì)上網(wǎng)找資料,一般網(wǎng)上的程序什么的都不可能符合要求,但是可以學(xué)習(xí)細(xì)節(jié)方面,實(shí)現(xiàn)方法,和主要思想。做實(shí)驗(yàn)時(shí)還有一個(gè)感覺,就是決定要做了,就要下決心立馬開場,不要說我先上會(huì)網(wǎng)、看會(huì)視頻什么的,如果那樣做的話,很可能接下來什么實(shí)驗(yàn)都沒研究,浪費(fèi)了一下午。做事要有決心,絕對(duì)不要偷懶,其實(shí)投入做實(shí)驗(yàn)的話還是很有意思。實(shí)驗(yàn)中遇到了不少問題,接下來總結(jié)一下,共同探討。本次設(shè)計(jì)用到的主要芯片是AT89S52。單片機(jī)用到的是P0口、P1口和P2口,P0口必須接上拉電阻,5v供電電壓;通過此次設(shè)計(jì),我知道了基于單片機(jī)的數(shù)字頻率計(jì)數(shù)器的工作流程,并自學(xué)了protel軟件的使用方法。領(lǐng)會(huì)單片機(jī)的使用,模電知識(shí)的應(yīng)用,當(dāng)然,最大的收獲是嘗試自主學(xué)習(xí),自主查資料,這對(duì)以后的很多學(xué)習(xí)、特別是工作有很大的幫助,也算是一個(gè)經(jīng)歷吧。以下為具體實(shí)現(xiàn)程序段:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongint//tab1段選;tab2位選;tab3 帶小數(shù)點(diǎn)的段選ucharcodetab1[]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f};ucharcodetab2[]={0*fe,0*fd,0*fb,0*f7,0*ef,0*df,0*bf,0*7f};ucharcodetab3[]={0*bf,0*86,0*db,0*cf,0*e6,0*ed,0*fd,0*87,0*ff,0*ef};ulongnum,t1,temp;//uchar;bitmode=0,autoo=1; //mode模式,0測頻法,1測周法,autoo表示手動(dòng)調(diào)節(jié)還是自動(dòng)調(diào)節(jié)voiddelay(uchar); //延時(shí)函數(shù)聲明voiddisplay(ulong); //顯示函數(shù)聲明voidinit(); //初始化函數(shù)聲明/***********主函數(shù)*****************/voidmain(){ init(); //調(diào)用初始化函數(shù) while(1) { if(P2==0*ee) //第一個(gè)鍵被按下,選擇手動(dòng)模式還是自動(dòng)模式 { while(P2==0*ee); autoo=!autoo; } if(autoo==0) //手動(dòng)模式 { if(P2==0*ed) //第二個(gè)鍵被按下,選擇測頻法還是測周法 { while(P2==0*ed); mode=!mode; //切換測頻率模式 temp=0; t1=0; if(mode==0) //模式0,開啟定時(shí)器1 { ET1=1; TR1=1; } else //模式1,關(guān)閉定時(shí)器1 { ET1=0; TR1=0; } } } display(num); }}/*********初始化函數(shù)*********/voidinit(){ TMOD=0*10; //定時(shí)器1選擇為模式1 EA=1; //開總中斷 E*0=1;//開外部中斷0 IT0=1;//下降沿觸發(fā) ET1=1;//開定時(shí)器1中斷 TR1=1;//定時(shí)器1開場工作 TH1=(65536-50000)/256; //設(shè)置高八位的初值 TL1=(65536-50000)%256; //設(shè)置低八位的初值 P2=0*ef;}/***********顯示函數(shù)*************/voiddisplay(ulongn){ ucharqw,bw,sw,wan,qian,bai,shi,ge; //分別表示千萬位、百萬位... qw=n/10000000; //得到千萬位的數(shù)字 bw=n/1000000%10; //得到百萬位的數(shù)字 sw=n/100000%10; wan=n/10000%10; qian=n/1000%10; bai=n/100%10; shi=n/10%10; ge=n%10; P0=tab2[0]; //顯示千萬位 P1=tab1[qw]; delay(1); P0=tab2[1]; //顯示百萬位 P1=tab1[bw]; delay(1); P0=tab2[2]; //顯示十萬位 P1=tab1[sw]; delay(1); P0=tab2[3]; //顯示萬位 P1=tab1[wan]; delay(1); if(mode==1) //測周法 { P0=tab2[4]; P1=tab3[qian]; //千位帶小數(shù)點(diǎn)顯示 delay(1); } else { P0=tab2[4]; P1=tab1[qian]; //測頻法千位不帶小數(shù)點(diǎn)顯示 delay(1); } P0=tab2[5]; //顯示百位 P1=tab1[bai]; delay(1); P0=tab2[6]; //顯示十位 P1=tab1[shi]; delay(1); P0=tab2[7]; //顯示個(gè)位 P1=tab1[ge]; delay(1);}/***********延時(shí)函數(shù)****************/voiddelay(ucharz) { uchar*,y; for(*=0;*<z;*++) //延時(shí)約1ms for(y=0;y<110;y++);}/*********外部中斷0函數(shù)***********/voide*ter0()interrupt0{ if(mode==1) { if(temp==1) { TH1=(65536-1000)/256; TL1=(65536-1000)%256; ET1=1; TR1=1; t1=0; } if(temp==5) //計(jì)數(shù)為4 { num=4000000/t1; //num為頻率的1000倍,這樣可有三位小數(shù) temp=0; ET1=0; //關(guān)閉定時(shí)器1中斷 TR1=0;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論