基于S08的簡易頻率計(jì)設(shè)計(jì)_第1頁
基于S08的簡易頻率計(jì)設(shè)計(jì)_第2頁
基于S08的簡易頻率計(jì)設(shè)計(jì)_第3頁
基于S08的簡易頻率計(jì)設(shè)計(jì)_第4頁
基于S08的簡易頻率計(jì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 微控制原理課程設(shè)計(jì)題 目: 基于S08的簡易頻率計(jì)設(shè)計(jì) 院系名稱: 電氣工程學(xué)院 專業(yè)班級: 學(xué)生姓名: 學(xué) 號: 評語:成 績:任課教師:目 錄一 我的課題設(shè)計(jì)3二 方案比較與選擇3 1方案比較3 2方案論證4 3方案選擇4三 系統(tǒng)設(shè)計(jì)原理5四 S08AW簡介5五 電路設(shè)計(jì)6 1 顯示電路6 2 電路圖8六 程序設(shè)計(jì)9 1 程序流程圖9 2 C語言程序設(shè)計(jì)10七 功能分析17 1 外圍電路的理論分析17 2 頻率的測量 17八 總結(jié)17 參考文獻(xiàn)19一 我的課題設(shè)計(jì)本設(shè)計(jì)是基于s08單片機(jī)設(shè)計(jì)的簡易頻率計(jì)。技術(shù)指標(biāo):頻率(F)為:1Hz100MHz,周期(T)為:1S10E-7S

2、,精度為:10%。二 方案比較與選擇1 方案比較方案一:本方案主要以數(shù)字器件為核心,主要分為時(shí)基電路,邏輯控制電路,放大整形電路,閘門電路,計(jì)數(shù)電路,鎖存電路,譯碼顯示電路七大部分。其原理框圖如圖1.1所示:邏輯控制電路譯碼顯示器鎖存器閘門電路計(jì)數(shù)器時(shí)基電路放大整形電路圖1.1 方案一原理框圖方案二:本方案主要以單片機(jī)為核心,利用單片機(jī)的計(jì)數(shù)定時(shí)功能來實(shí)現(xiàn)頻率的計(jì)數(shù)并且利用單片機(jī)的動(dòng)態(tài)掃描把測出的數(shù)據(jù)送到數(shù)字顯示電路顯示。其原理框圖如1.2所示: 信號放大電路信號整形單片機(jī)S08電路數(shù)字顯示電路圖1.2 方案二原理圖2 方案論證方案一:本方案使用大量的數(shù)字器件,被測量信號經(jīng)過放大整形電路變成計(jì)

3、數(shù)器所要求的脈沖信號,其頻率與被測信號的頻率相同。同時(shí)時(shí)基電路提供標(biāo)準(zhǔn)時(shí)間基準(zhǔn)信號,其高電平持續(xù)時(shí)間1s,當(dāng)1s信號來到時(shí),閘門開通,被測脈沖信號通過閘門,計(jì)數(shù)器開始計(jì)數(shù),直到1s信號結(jié)束閘門關(guān)閉,停止計(jì)數(shù)。若在閘門時(shí)間1s內(nèi)計(jì)數(shù)器計(jì)得的脈沖個(gè)數(shù)為N,則被測信號頻率F(X)=N Hz。邏輯控制電路的作用有兩個(gè):一是產(chǎn)生鎖存脈沖,使顯示器上的數(shù)字穩(wěn)定;二是產(chǎn)生清零脈沖,使計(jì)數(shù)器每次測量從零開始計(jì)數(shù)。 方案二:本方案主要以單片機(jī)為核心,被測信號先進(jìn)入信號放大電路進(jìn)行放大,再被送到波形整形電路整形,把被測正弦波或者三角波轉(zhuǎn)換為方波,利用單片機(jī)的計(jì)數(shù)器和定時(shí)器的功能對被測信號進(jìn)行計(jì)數(shù)。編寫相應(yīng)的程序可

4、以使單片機(jī)自動(dòng)調(diào)節(jié)測量的量程,并把測出的頻率數(shù)據(jù)送到顯示電路顯示。3 方案選擇 比較以上兩種方案可以知道,方案二的核心是單片機(jī),使用的元器件少,原理電路簡單,調(diào)試簡單只要改變程序的設(shè)定值則可以實(shí)現(xiàn)不同頻率范圍的測量,能自動(dòng)選擇測試的量程。與方案二相比較方案一則使用了大量的數(shù)字元器件,原理電路復(fù)雜,硬件調(diào)試麻煩。如要測量高頻的信號還需要加上分頻電路,價(jià)格相對高。鑒于我們是第一次做與單片機(jī)有關(guān)的電子設(shè)計(jì)作品,為了減少一定的難度以及為今后更好的實(shí)現(xiàn)頻率計(jì)的精細(xì)化和準(zhǔn)確化,經(jīng)過小組討論,我們決定從基礎(chǔ)的頻率計(jì)出發(fā)。該頻率計(jì)是利用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器完成待測信號周期頻率的測量,測量范圍相比與要求較窄

5、,但具有一定的代表性和基礎(chǔ)性。三 系統(tǒng)設(shè)計(jì)原理本頻率計(jì)的設(shè)計(jì)以是S08AW為核心,利用它內(nèi)部的定時(shí)/計(jì)數(shù)器完成待測信號周期/頻率的測量,定時(shí)/計(jì)數(shù)器的工作可以由編程來實(shí)現(xiàn)定時(shí),計(jì)數(shù)和產(chǎn)生計(jì)數(shù)溢出時(shí)中斷要求的功能。在定時(shí)器工作方式下,在被測時(shí)間間隔內(nèi),每來一個(gè)機(jī)器周期,計(jì)數(shù)器自動(dòng)加1,這樣以機(jī)器周期為基準(zhǔn)可以用來測量時(shí)間間隔。在計(jì)數(shù)器工作方式下,加至外部引腳的待測信號發(fā)生從1到0的跳變計(jì)數(shù)器加1,這樣在計(jì)數(shù)閘門的控制下可以用來測量待測信號的頻率。外部輸入在每個(gè)機(jī)器周期被采用一次,這樣查測一次從1到0的跳變至少需要2個(gè)機(jī)器周期,所以最大計(jì)數(shù)速率為時(shí)鐘頻率1/24。定時(shí)/計(jì)數(shù)器的工作有運(yùn)行控制位TR

6、控制,當(dāng)TR置1,定時(shí)/計(jì)數(shù)器開始計(jì)數(shù);當(dāng)TR清0 ,停止計(jì)數(shù)。 當(dāng)待測信號的頻率>100HZ時(shí),定時(shí)/計(jì)數(shù)器構(gòu)成為計(jì)數(shù)器,以機(jī)器周期為基準(zhǔn),由軟件產(chǎn)生計(jì)數(shù)閘門,計(jì)數(shù)閘門寬度>1S時(shí),即可滿足頻率測量結(jié)果為3位有效數(shù)字。四 S08AW簡介 S08AW系列是Freescale公司推出的新一代S08系列微控制器中的一款增強(qiáng)型8位微控制器,它不僅集成度高、片內(nèi)資源豐富,接口模塊包括SPI、SCI、IIC、A/D、PWM 等,還具有很寬的工作溫度范圍:-40+125,它在汽車電子、工業(yè)控制、中高檔機(jī)電產(chǎn)品等領(lǐng)域具有廣泛的用途。S08AW 微控制器采用8位S08CPU,片內(nèi)總線時(shí)鐘最高可達(dá)2

7、0MHz;片內(nèi)資源包括2K RAM、將近62K Flash、串行接口模塊(SCI、SPI和IIC)、定時(shí)器模塊(TPM)、可選擇寬范圍時(shí)鐘頻率,它還提供一個(gè)8位/10位精度的A/D轉(zhuǎn)換器,并支持后臺調(diào)試模式BDM。S08AW是Freescale首個(gè)基于高性能S08CPU內(nèi)核并支持2.75.5V電源的微控制器。它包含眾多有應(yīng)用價(jià)值的特性:將近62K的flash存儲器、高達(dá)2K的RAM、靈活而無需外部元件的內(nèi)部時(shí)鐘發(fā)生器、低電壓檢測、高性能模/數(shù)轉(zhuǎn)換器(ADC)和串行通信模塊等。S08AW系列具有極佳的電磁兼容性能(EMC)并提供了不同的引腳數(shù)(64, 48或44)、封裝選項(xiàng)(QFP, LQFP或

8、QFN)及寬溫度范圍 (-40+125),可適應(yīng)各類惡劣環(huán)境,因此該微控制器適用于高可靠的工業(yè)與汽車電子領(lǐng)域。五 電路設(shè)計(jì)1 顯示電路我們測量的頻率最終要顯示出來,八段LED 數(shù)碼管顯示器由8 個(gè)發(fā)光二極管組成。基中7個(gè)長條形的發(fā)光管排列成“日”字形,另一個(gè)圓點(diǎn)形的發(fā)光管在數(shù)碼管顯示器的右下角作為顯示小數(shù)點(diǎn)用,它能顯示各種數(shù)字及部份英文字母。LED 數(shù)碼管顯示器有兩種形式:一種是8個(gè)發(fā)光二極管的陽極都連在一起的,稱之為共陽極LED 數(shù)碼管顯示器;另一種是8 個(gè)發(fā)光二極管的陰極都連在一起的,稱之為共陰極LED 數(shù)碼管顯示器。共陰和共陽結(jié)構(gòu)的LED 數(shù)碼管顯示器各筆劃段名和安排位置是相同的。當(dāng)二極

9、管導(dǎo)通時(shí),對應(yīng)的筆劃段發(fā)亮,由發(fā)亮的筆劃段組合而顯示的各種字符。8個(gè)筆劃段 h g f e d c b a 對應(yīng)于一個(gè)字節(jié)(8 位)的D7、D6、D5、D4、D3、D2、D1、D0,于是用8位二進(jìn)制碼就能表示欲顯示字符的字形代碼。我們使用的是SM420564-32系列的共陰四位一體數(shù)碼顯示管。4位一體數(shù)碼管,其內(nèi)部段已連接好,引腳如圖所示(正面朝自己,小數(shù)點(diǎn)在下方),a、b、c、d、e、f、g、dp為段引腳,1、2、3、4分別表示四個(gè)數(shù)碼管的位。 。 。 。 。 。 。 1 a f 2 3 b 。 。 。 。 。 。 e d dp c g 4 在單片機(jī)應(yīng)用系統(tǒng)中,數(shù)碼管顯示器顯示常用兩種辦法:

10、靜態(tài)顯示和動(dòng)態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個(gè)數(shù)碼管顯示器都要占用單獨(dú)的具有鎖存功能的I/O 接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼。因此,使用這種辦法單片機(jī)中CPU的開銷小,能供給單獨(dú)鎖存的I/O 接口電路很多。在單片機(jī)系統(tǒng)中動(dòng)態(tài)掃描顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,其接口電路是把所有顯示器的8個(gè)筆劃段a-h同名端連在一起,而每一個(gè)顯示器的公共極COM是各自獨(dú)立地受I/O 線控制。CPU 向字段輸出口送出字形碼時(shí),所有顯示器接收到相同的字形碼,但究竟是那個(gè)顯示器亮,則取決于COM 端,而這一端是由I/O

11、 控制的,所以我們就能自行決定何時(shí)顯示哪一位了。而所謂動(dòng)態(tài)掃描就是指我們采用分時(shí)的辦法,輪流控制各個(gè)顯示器的COM 端,使各個(gè)顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約1ms),但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。如圖原理圖5.1圖5.1 顯示電路原理圖2 電路圖 圖5.2 S08AW電路 其中含有晶振、復(fù)位電路、138譯碼輸出電路。六 程序設(shè)計(jì)1 程序流程圖圖6.1程序流程圖2 C語言程序設(shè)計(jì)#include<reg52.h>#def

12、ine unchar unsigned charvoid init_timer();/定時(shí)器初始化函數(shù)void delay();/基礎(chǔ)延時(shí)函數(shù)void mult_delay(unchar time);/基礎(chǔ)延時(shí)函數(shù)整數(shù)倍延時(shí)void convert_LED();/LED結(jié)果轉(zhuǎn)換函數(shù)void LED_number_add(unsigned int add);/加法函數(shù)void LED_display();/void LCM_display();unchar count = 0;unsigned int temp_add = 0;/加數(shù)add的臨時(shí)賦值unchar point = 7;/定義小數(shù)點(diǎn)

13、所在的位unchar LED_number3,LED_number2,LED_number1,LED_number0;/顯示在LED上的真實(shí)數(shù)字unchar LEDBUF=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/LED數(shù)據(jù)顯示緩沖區(qū)unchar led_point = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x08;/定義帶小數(shù)點(diǎn)的代碼段unchar leddata=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x0

14、8;/定義不帶小數(shù)點(diǎn)的代碼/*主函數(shù)*/void main()init_timer();/定時(shí)器配置LED_number0 = 0;LED_number1= 0;LED_number2= 0;LED_number3= 0;while(1)convert_LED();/將頻率值轉(zhuǎn)換成顯示在8段數(shù)碼管上的數(shù)據(jù) LED_display();/將前面轉(zhuǎn)換出來的數(shù)字顯示在LED上/*LED顯示函數(shù)*/void LED_display()unchar index = 0;unchar NOT_zero;NOT_zero = 0;for(index=0;index<8;index+)if(!(LEDB

15、UFindex=0)&(!NOT_zero)&(index != point)NOT_zero = 1;/P0 = index;P1 = 0x00;P0 &= 0xf8;P0 |= index;if(point=index)P1 = led_pointLEDBUFindex;elseP1 = leddataLEDBUFindex;mult_delay(1);/*基礎(chǔ)延時(shí)函數(shù)*/void delay()unsigned int time_length;time_length = 0x0a;while(time_length-);/*/基礎(chǔ)延時(shí)函數(shù)整數(shù)倍延時(shí)*/void m

16、ult_delay(unchar time)while(time-)delay();/*LED結(jié)果轉(zhuǎn)化函數(shù)*/void convert_LED()if(temp_add != 0)LED_number_add(temp_add);temp_add = 0;if(LED_number0>=100)LED_number1 += LED_number0/100;LED_number0 -= (LED_number0/100)*100;if(LED_number1>=100)LED_number2 += LED_number1/100;LED_number1 -= (LED_number1

17、/100)*100;if(LED_number2>=100)LED_number3 += LED_number2/100;LED_number2 -= (LED_number2/100)*100;if(LED_number3>=100)LEDBUF0 = 11;LEDBUF1 = 11;LEDBUF2 = 11;LEDBUF3 = 11;LEDBUF4 = 11;LEDBUF5 = 11;LEDBUF6 = 11;LEDBUF7 = 11;while(1)LED_display();LEDBUF7 = LED_number0%10;LEDBUF6 = LED_number0/10;

18、LEDBUF5 = LED_number1%10;LEDBUF4 = LED_number1/10;LEDBUF3 = LED_number2%10;LEDBUF2 = LED_number2/10;LEDBUF1 = LED_number3%10;LEDBUF0 = LED_number3/10;/*加法函數(shù)*/void LED_number_add(unsigned int add)unchar addH,addL;addH = add/100;addL = add%100;LED_number0 += addL;LED_number1 += addH;/*定時(shí)器初始化函數(shù)*/void i

19、nit_timer()EA = 1; /開總中斷ET0 = 1; /允許定時(shí)器0中斷TMOD = 0x51; /定時(shí)器工作方式選擇TL0 = 0x00;TH0 = 0x4c; /定時(shí)器賦予初值/*-*/TL1 = 0x00;TH1 = 0x00; /計(jì)數(shù)器賦予初值/*-*/TR0 = 1; /啟動(dòng)定時(shí)器TR1 = 1;/*定時(shí)器中斷服務(wù)函數(shù)*/void timer0() interrupt 1 /50ms中斷函數(shù)unchar temp_TL1 = 0;unchar temp_TH1 = 0;unsigned long temp_number = 0;TH0=0x4c; /50ms初值 晶振11

20、.0592TL0=0x00;count+;if(count=20)count=0;temp_TL1 = TL1;temp_TH1 = TH1;TL1 = 0x00;TH1 = 0x00;LED_number0 = 0x00;LED_number1 = 0x00;LED_number2 = 0x00;LED_number3 = 0x00;temp_number = temp_TH1*256+temp_TL1; LED_number3 = temp_number/1000000; LED_number2 = (temp_number%1000000)/10000; LED_number1 = (t

21、emp_number%10000)/100; LED_number0 = (temp_number%100);七 功能分析1 外圍電路的理論分析信號輸入幅值可能沒有到斯密特觸發(fā)器所能識別的幅值,所以要先由三極管進(jìn)行放大。放大后,由斯密特觸發(fā)器(74ls14)進(jìn)行整形,整形后輸出相同頻率的方波。而脈沖部分電平約為45v,為高電平。再根據(jù)單片機(jī)發(fā)出的信號是否要分頻。由于1M除以16為62500。而單片機(jī)計(jì)數(shù)器可以計(jì)到65536.可以減少設(shè)計(jì)要求。小頻率在分頻情況下,誤差較大,所以直接送給。而且由于普通單片機(jī)不能正確識別幾百khz的頻率。大于60khz進(jìn)行16分頻。設(shè)計(jì)中由于沒及時(shí)買到三態(tài)門,只用手

22、動(dòng)控制。2 頻率的測量 先將最后要存儲R0R7 清零,過程中出現(xiàn)位標(biāo)志等清零進(jìn)行初始化。然后將T0方式一賦初TH0=0B1H,TL0=0E7H.循環(huán)50次正好1S。計(jì)數(shù)方式一TH1.TH0清零同時(shí)開啟定時(shí)器T0和計(jì)數(shù)器T1。如果定時(shí)50次(1s)到了,就停止計(jì)數(shù)器T1.將T1的計(jì)數(shù)的值轉(zhuǎn)化十進(jìn)制數(shù)(調(diào)用網(wǎng)上了二位BCD碼轉(zhuǎn)化),形成十進(jìn)制的頻率。再判斷是否有進(jìn)行分頻。有的話,將十進(jìn)制數(shù)用每位都乘以16進(jìn)行移位相加,因?yàn)槊恳晃蛔畲鬄?.乘以16再加上進(jìn)位,也不會超過三位數(shù),所以可以用寄存器先進(jìn)行儲存。再用每位相加再加上進(jìn)位。得到乘以16的十進(jìn)制數(shù),如果超出1Mhz,對置位認(rèn)為超出量程。至此已經(jīng)得到在(11MHZ)的頻率。再進(jìn)行判斷頻率是否超過1khz. 如果超過1KHZ,直接送給顯示。如果小于1khz,先進(jìn)行測周期(見周期測量),再調(diào)用四字除法二字子程序。用100000000除以周期得到的值,得到頻率再轉(zhuǎn)化十進(jìn)制。得到頻率。取四位有效數(shù)值,誤差基本上達(dá)到很小。八 總結(jié)通過這次設(shè)計(jì),

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論