基于某c語言單片機數(shù)字頻率計課程設(shè)計_第1頁
基于某c語言單片機數(shù)字頻率計課程設(shè)計_第2頁
基于某c語言單片機數(shù)字頻率計課程設(shè)計_第3頁
基于某c語言單片機數(shù)字頻率計課程設(shè)計_第4頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計報告課程名稱:單片機課程設(shè)計報告題目:數(shù)字頻率計學(xué)生姓名:所在學(xué)院:專業(yè)班級:學(xué)生學(xué)號:指導(dǎo)教師:2013年12月25日課程設(shè)計任務(wù)書報告題目數(shù)字頻率計完成時間2013/12/25專 業(yè)學(xué)生姓名指導(dǎo)教師職稱講師班級總體設(shè)計要求和技術(shù)要點設(shè)計一個數(shù)字頻率計,要求如下:1完成單脈沖測量,輸入脈沖寬度范圍是 100 s0.1s 。2使用 AT89C51單片機的定時器 / 計數(shù)器的定時和計數(shù)功能,外部擴展6 位LED 數(shù)碼管,要求累計每秒進入單片機的外部脈沖個數(shù),用LED 數(shù)碼管顯示出來。3. 要求(1) 被測頻率 fx 110Hz,采用測周法,顯示頻率××× .

2、 ×××;fx 110Hz,采用測頻法,顯示頻率××××××。(2) 利用鍵盤分段測量和自動分段測量。(3) 完成單脈沖測量,輸入脈沖寬度范圍是100 s0.1s 。(4) 顯示脈沖寬度要求如下。Tx 1000 s,顯示脈沖寬度×××。Tx 1000 s,顯示脈沖寬度××××。工作內(nèi)容及時間進度安排1. 時間及任務(wù)17 周 -18 周周一到周五,上午 8:00-11:40,下午 2:00-5:40 。(1)17周周一:學(xué)生選題,明確任務(wù)

3、,指導(dǎo)教師對課題進行講解, 資料檢索。(2)17周周二:硬件設(shè)計(3)17周周三:硬件仿真(4)17周周四:軟件設(shè)計(5)17周周五:軟件設(shè)計(6)18周周一:軟件設(shè)計(7)18周周二:綜合調(diào)試(8)18周周三:書寫課程設(shè)計報告(9)18周周四:書寫課程設(shè)計報告(10)18周周五:答辯評分摘要以 ATMEL單片機為核心, 利用單片機的外部中斷、 定時器的計數(shù)模式和定時器的功能對信號發(fā)生器產(chǎn)生的脈沖頻率進行計數(shù)。 且可以根據(jù)頻率的不同, 單片機控制選擇測周法或者測頻法對產(chǎn)生的脈沖波形進行計數(shù), 以進行更加精確的頻率測量。而且可以通過按鍵來進行頻率測量方法的選擇。關(guān)鍵詞:數(shù)字頻率計;測頻發(fā);測周法

4、;單片機目錄111122212233341424354. 14 14 15一、概述數(shù)字頻率計是采用數(shù)字電路制成的實現(xiàn)對周期性變化信號的頻率的測量。數(shù)字頻率計是計算機、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測量儀器。它是一種用十進制數(shù)字,顯示被測信號頻率的數(shù)字測量儀器。它的基本功能是測量正弦信號,方波信號以及其他各種單位時間內(nèi)變化的物理量。在進行模擬、數(shù)字電路的設(shè)計、安裝、調(diào)試過程中,由于其使用十進制數(shù)顯示,測量迅速,精度高,顯示直觀,所以經(jīng)常要用到數(shù)字頻率。二、方案論證1 總體方案本次設(shè)計包含硬件設(shè)計與軟件設(shè)計兩部分,根據(jù)設(shè)計任務(wù)要求,采用AT89S52單片機,配置時鐘電路,復(fù)位電路構(gòu)成單

5、片機最小系統(tǒng),配置前置放大電路,人機對話通道中的鍵盤, 數(shù)碼管顯示, 從而構(gòu)成設(shè)計要求的單片機應(yīng)用測頻系統(tǒng),其結(jié)構(gòu)框圖如下圖 1-1 所示:前置放大整形復(fù)位電路時鐘電路單片數(shù)碼管顯示機鍵盤電路圖 1 結(jié)構(gòu)框圖12. 測量方案選擇方案一:直接測頻法。 直接測頻法是把被測頻率信號經(jīng)脈沖形成電路后加到閘門的一個輸入端 , 只有在閘門開通時間 T ( 以秒計 ) 內(nèi) , 被計數(shù)的脈沖被送到十進制計數(shù)器進行計數(shù)。 設(shè)計數(shù)器的值為 N , 由頻率定義式可以計算得到被測信號頻率為 : f = N / T。方案二:高精度恒誤差測頻法。 通過對傳統(tǒng)測量方法的研究 , 結(jié)合高精度恒誤差測量原理 , 設(shè)計一種測量精

6、度與被測頻率無關(guān)的硬件測頻電路。 本方法立足于快速的寬位數(shù)高精度浮點數(shù)字運算。方案三:倍頻法。直接測頻法在高頻段有著很高的精度。 可以把頻率測量范圍分成多個頻段 , 使用倍頻技術(shù) , 根據(jù)頻段設(shè)置倍頻系數(shù)將經(jīng)整形的低頻信號進行倍頻后再進行測量 , 高頻段則進行直接測量。從編程難易及單片機資源利用情況和測量誤差角度考慮,選擇方案一,盡管在測量低頻段時的相對測量誤差較大。但是可以通過增大T 來提高測量精度。三硬件設(shè)計1系統(tǒng)功能描述本次課程設(shè)計主要完成功能有:(1 )按 P34 鍵可選擇測量頻率。(2 )按 P35 鍵可以選擇測量周期。(3 )按 P36 鍵可以自動選擇測頻率與測周期。2硬件電路設(shè)計

7、框架根據(jù)設(shè)計要求,數(shù)字頻率計 整個系統(tǒng)硬件框架圖如下 2-1 待測信息信號放大信號限幅信號整形分頻電路數(shù)碼管顯示AT89S52單片機鍵盤電路圖 2 整機硬件電路框圖3. 單片機各部分電路( 1) P0口經(jīng)上拉電阻數(shù)據(jù)管顯示電路( 2) P34-P36 作為鍵盤設(shè)置端口2( 3) P33作為被測信號輸入端口( 4) P34被測信號接收端圖 3 單片機最小系統(tǒng)4. 放大整形部分待測信號經(jīng)過第一級放大后,進入第二級放大限幅電路。LM318是高數(shù)運放,工作電壓 ±5- ±20V,輸入帶寬 15MHZ,足夠處理高頻信號。放大倍數(shù): n=RL2/RL1(RL2用 50K,RL1用 10

8、K)。限幅原理:限幅電路的穩(wěn)壓管跨接在集成運放的輸出端和反相輸入端之間。假設(shè)穩(wěn)壓管截止,則集成運放必然工作在開環(huán)狀態(tài),輸出電壓不是+UOM,就是 -UOM。這樣,必將導(dǎo)致穩(wěn)壓管擊穿而工作在穩(wěn)壓狀態(tài), DZ 構(gòu)成負(fù)反饋通路,使反相輸入端為“虛地”,限流電阻上的電流 iR 等于穩(wěn)壓管的電流 iZ ,輸出電壓 u O=± UZ。3圖 4 放大電路四、軟件設(shè)計1測頻發(fā)所謂“頻率”,就是周期性信號在單位時間(1s)內(nèi)變化的次數(shù)。若在一定時間間隔T 內(nèi)測得這個周期性信號的重復(fù)變化次數(shù)N,則其頻率可表示為f=N/T 右圖其中脈沖形成電路的作用是將被測信號變成脈沖信號,其重復(fù)頻率 等 于 被 測 頻

9、 率f x 。 時 間 基 準(zhǔn) 信 號 發(fā) 生 器提供標(biāo)準(zhǔn)的時間脈沖信號,若其周期為1s,圖 5 測頻原理則門控電路的輸出信號持續(xù)時間亦準(zhǔn)確地等于1s。閘門電路由標(biāo)準(zhǔn)秒信號進行控制,當(dāng)秒信號來到時, 閘門開通, 被測脈沖信號通過閘門送到計數(shù)譯碼顯示電路。秒信號結(jié)束時閘門關(guān)閉,計數(shù)器停止計數(shù)。2測周法主要是利用單片機的定時器計時, 測量 2 個時間參數(shù) t1 和 t2 ,即如下所示:圖6測周法計算信號的一個波形的周期t=t1+t2則可以求出頻率 f=1/t 。43. 主程序流程圖設(shè)計開始采集頻率( 1s 內(nèi))頻率轉(zhuǎn)換十進制轉(zhuǎn)換P34=0P36=0那個按鍵按下P35=0測頻率測周期自動測頻測周數(shù)碼

10、管顯示圖 7流程圖54. 程序設(shè)計#include <reg52.h>#include <intrins.h>sbit smgdl=P26;sbit smgwl=P27;bit LED = P33;sbit key1 = P34;/ 定義按鍵 1sbit key2 = P35;/ 定義按鍵 2sbit key3 = P36;/ 定義按鍵 3sbit key4 = P37;/ 定義按鍵 4unsigned char value,smg;/ 保存按鍵接口狀態(tài)unsigned char lkey,key_time;unsigned char mode=0;unsigned i

11、nt time=0;unsigned char num=0;unsigned char key=0;unsigned char time_key=0;unsigned int flag_f=0;unsigned int f_temp1=0;unsigned int f_temp2=0;6unsigned int t_temp1=0;unsigned int t_temp2=0;unsigned char flag_int_0=0;/*/unsigned char tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;unsigned char tabledu=0x3f,0

12、x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77 ,0x7c,0x39,0x5e,0x79,0x71;unsigned char su=0,0,0,0,0,0,0,0;/*/*DIS_LED*/void delay(unsigned int a)/ 延時函數(shù)unsigned int b;unsigned char c;for(b=a;a>0;a-)for(c=100;c>0;c-);void display_smg(unsigned char smg,unsigned char value)/顯示函數(shù)smgwl=1;P0=tablew

13、esmg;smgwl=0;7smgdl=1;P0=tableduvalue;smgdl=0;delay(6);/延長顯示時間避開視覺暫留看數(shù)碼管顯示過程/*按鍵功能 *unsigned char ReadKey(void)if(key1 = 0)key_time+;if(key_time = 20)lkey = 1;mode=1;if(key_time > 20)key_time = 100;else if(key2 = 0)key_time+;if(key_time = 20)lkey = 2;mode=2;if(key_time > 20)key_time = 100;else

14、 if(key3 = 0)8key_time+;if(key_time = 20)lkey = 3;mode=3;if(key_time > 20)key_time = 100;elsekey_time = 0;return lkey;void main()unsigned char k;TMOD = 0x01;/定時器初始化TH0 = (65536 - 2000) / 256;TL0 = (65536 - 2000) % 256;/EA = 1;ET0 = 1;TR0 = 1;/PT0 = 1;/EX0 = 1;/外部中斷初始化IT0 = 1;EA=1;9while(1)display

15、_smg(0,su2); /數(shù)碼管顯示display_smg(1,su3); /數(shù)碼管顯示display_smg(2,su4); /數(shù)碼管顯示display_smg(3,su5); /數(shù)碼管顯示display_smg(4,su6); /數(shù)碼管顯示display_smg(5,su7); /數(shù)碼管顯示k = ReadKey();LED = LED;/ 脈沖發(fā)生void time_1() interrupt 1TH0 = (65536 - 1000) / 256;/定 時 器初始化TL0 = (65536 - 1000) % 256;time+;if(time = 500)time = 0;num+

16、;if(num >= 10) num=0;if(mode = 1)/測頻法模式10EX0 = 1; /外部中斷打開IT0 = 1;flag_f+;if(flag_f >= 600)/1S鐘計時flag_f = 0;mode = 0;EX0 = 0;su2 = f_temp2;su3 = f_temp1 / 10000;su4 = f_temp1 / 1000 % 10;su5 = f_temp1 / 100 % 10;su6 = f_temp1 / 10 % 10;su7 = f_temp1 % 10;f_temp1 = f_temp2 = 0;if(mode = 2)/測周法模式

17、EX0 = 1; /外部中斷打開IT0 = 0;PX0 = 1;if(flag_int_0 = 1)EX0 = 0;mode = 0;11flag_int_0 = 0;TR1 = 0;t_temp1 = TL1;t_temp2 = TH1;t_temp2 = t_temp2 * 256;t_temp1 = t_temp1 + t_temp2;/ su2 = t_temp2 / 100;su3 = t_temp1 / 10000; su4 = t_temp1 / 1000 % 10; su5 = t_temp1 / 100 % 10; su6 = t_temp1 / 10 % 10; su7 =

18、 t_temp1 % 10; TH1 = 0;TL1 = 0;if(mode = 3)/自動測頻測周EX0 = 1; /外部中斷打開IT0 = 1;flag_f+;if(flag_f >= 600)/1S鐘計時flag_f = 0;EX0 = 0;if(f_temp1 > 110)mode = 2;12if(f_temp1 <= 110)mode = 1;su0 = mode;su1 = num;void INT_0() interrupt 0/外部中斷if(mode = 1)EX0 = 0;f_temp1+;if(f_temp1 >= 50000)f_temp1 = 50000;f_temp2+;if(f_temp2 >= 5000)f_temp1 = f_temp2 = 0;EX0 = 1;if(mode = 2)13TR1 = 1;flag_int_0 = 1;五、結(jié)論與心得這次為期兩周的課程設(shè)計讓我受益匪淺。 以前只是對單片機更多的只是一些感性的,理論上的認(rèn)識,自己真正動

溫馨提示

  • 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

提交評論