51單片機(jī)頻率計(jì)_第1頁(yè)
51單片機(jī)頻率計(jì)_第2頁(yè)
51單片機(jī)頻率計(jì)_第3頁(yè)
51單片機(jī)頻率計(jì)_第4頁(yè)
51單片機(jī)頻率計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱基于8255的8LED數(shù)顯頻率計(jì)課程名稱Protues軟件設(shè)計(jì)(51單片機(jī))班級(jí)學(xué)號(hào)姓名一、實(shí)驗(yàn)要求基本要求:用P1或P3口,產(chǎn)生一方波信號(hào),頻率為1000Hz,用一組數(shù)碼管或LCD顯示頻率和周期以及脈寬等參數(shù)(也可用信號(hào)源或模擬信號(hào)源)。將輸出信號(hào)輸入到另一端口(INT0/INT1)作頻率計(jì)的信號(hào)輸入端,測(cè)量此方波信號(hào)的頻率、周期和脈寬,在另一組數(shù)碼管或LCD上將參數(shù)值顯示出來(lái)。(刷新時(shí)間1秒)。發(fā)揮部分:1、設(shè)置一功能鍵,能將當(dāng)前數(shù)碼管或LCD上的信號(hào)參數(shù)值鎖定。2、通過(guò)鍵盤(pán),可修改方顯示參數(shù),刷新時(shí)間。3、按鍵時(shí),蜂鳴器發(fā)出提示音,表示按鍵有效4、用圖形方式顯示輸入波形(

2、用模擬示波器)動(dòng)態(tài)顯示格式:自定二、實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容為基于8255的簡(jiǎn)易8LED數(shù)字顯示頻率計(jì),利用8255的擴(kuò)展功能,來(lái)擴(kuò)展51單片機(jī)的功能管腳,使其可以實(shí)現(xiàn)利用8255的A,B端口實(shí)現(xiàn)輸入輸出功能,從而實(shí)現(xiàn)51單片機(jī)管腳的擴(kuò)展。三、實(shí)驗(yàn)原理頻率計(jì)主要功能是測(cè)量頻率。頻率是指一秒內(nèi)發(fā)生相同波形的次數(shù),根據(jù)這一定義,可以初步得出測(cè)量頻率的方法,就是通過(guò)計(jì)量一定時(shí)間的脈沖次數(shù)就可以通過(guò)計(jì)算累加獲得頻率的次數(shù),然后通過(guò)數(shù)值譯碼輸送的數(shù)顯電路當(dāng)中去。根據(jù)實(shí)驗(yàn)假設(shè),可以知道實(shí)驗(yàn)中需要用的兩個(gè)定時(shí)裝置,一個(gè)為定時(shí)裝置,另一個(gè)為計(jì)數(shù)裝置。而單片機(jī)中正好就設(shè)置了這樣的計(jì)時(shí)器。8051提供兩個(gè)16位的內(nèi)部定時(shí)

3、器(計(jì)數(shù)器),分別為Time0,Time1(簡(jiǎn)稱T0,T1)這兩個(gè)定時(shí)器可以用作為內(nèi)部定時(shí)器或者外部計(jì)數(shù)器,作為內(nèi)部計(jì)時(shí)的時(shí)候是計(jì)算的是內(nèi)部的脈沖,以12MHz的計(jì)時(shí)脈沖系統(tǒng)為例,將此計(jì)數(shù)器時(shí)鐘脈沖除12后送入定時(shí)器,因此定時(shí)器所計(jì)數(shù)的脈沖周期為1uso若采用16位的定時(shí)器,最多可以計(jì)數(shù)65536,約為0,065"因而我們選擇0.05S作為單位計(jì)數(shù)時(shí)間長(zhǎng)度。若當(dāng)成外部計(jì)數(shù)器時(shí)則計(jì)數(shù)由T0或T1管腳送入脈沖,同樣地,若采用16位的定時(shí)模式,則最多可以數(shù)65536個(gè)計(jì)數(shù)量,相當(dāng)可觀。在51單片機(jī)中有兩個(gè)16位的定時(shí)/計(jì)數(shù)器T0,T1,分別由TH0、TL0和TH1、TL1組成,它們均是8位

4、寄存器,在特殊功能寄存器中占地址8AH-8DH。它們用于存放定時(shí)或計(jì)數(shù)的初始值。此外,內(nèi)部還有一個(gè)8位的方式寄存器TMOD和一個(gè)8位的控制寄存器TCONo用于選擇和控制定時(shí)/計(jì)數(shù)器的工作。其格式見(jiàn)下面兩表:方式控制寄存器TMODGATEC/TM1M0GATEC/TM1M0門控開(kāi)關(guān)計(jì)數(shù)/定時(shí)方式選擇門控開(kāi)關(guān)計(jì)數(shù)/定時(shí)方式選擇TCON控制寄存器TF1TR1TF0TROIE1IT1IE0IT0T1請(qǐng)求有/無(wú)T1工作啟/停T0iW有/無(wú)T0工作啟/停INT1請(qǐng)求啟/無(wú)INT1方式下沿INT1請(qǐng)求啟/無(wú)INT1方式下沿根據(jù)定時(shí)時(shí)間要求或計(jì)數(shù)要求計(jì)算計(jì)數(shù)器初值;將工作方式控制字寫(xiě)入TMOD寄存器;將計(jì)數(shù)初

5、值寫(xiě)入THX和TLX寄存器;啟動(dòng)定時(shí)器/計(jì)數(shù)器,即將TRX置位。如果工作于中斷方式,需置位EA(中斷總開(kāi)關(guān))及ETX(允許定時(shí)/計(jì)數(shù)器中斷),并編寫(xiě)中斷服務(wù)程序。實(shí)驗(yàn)當(dāng)中規(guī)定要求為使用INT0/INT1作頻率計(jì)的信號(hào)輸入端,所以啟用的是外部中斷來(lái)執(zhí)行計(jì)數(shù)過(guò)程。外部中斷有INT0和INT1兩個(gè),CPU通過(guò)兩個(gè)外部引腳即可接受外部中斷的請(qǐng)求。外部中斷信號(hào)的采樣方式可分為電平觸發(fā)(低電平)以及邊緣觸發(fā)(負(fù)邊沿觸發(fā))兩種。若采用電平觸發(fā),需要將TCON寄存器中的IT0(或IT1)設(shè)定為0,則只要INT0引腳為低電平,視為外部中斷要求。若采用邊緣觸發(fā),需要將TCON寄存器中的IT0(或IT1)設(shè)定為1,

6、則只要INT0引腳的信號(hào)由高電平轉(zhuǎn)為低電平,則視為外部中斷需求。這些中斷需求將反映在IE0(IE1)里,若IE寄存器的EX0(或EX1)=1,且EA=1,CPU則進(jìn)入我們?cè)O(shè)定好的中斷程序。IE中斷啟用寄存器IE7IE6IE5IE4IE3IE2IE1IE0EAESET1EX1ET0EX0顯示單路部分,因?yàn)橐笫褂?LED數(shù)碼管顯示電路,所以只用對(duì)數(shù)碼管分別送入數(shù)據(jù)信號(hào)和掃描信號(hào)即可。顯示原理如圖所示8位數(shù)碼管3i位t所以利用8255分別寫(xiě)入數(shù)據(jù)和掃描信號(hào)既可以是其產(chǎn)生所要顯示的內(nèi)容8255的控制字的設(shè)置也有不少問(wèn)題需要解決,RESET控回寄存不ccGM)RDCS上組端UBP%PB,圖X28255

7、A編程模型需要對(duì)8255A進(jìn)行控制字的寫(xiě)入圖13方式控制字根據(jù)設(shè)計(jì)的電路我設(shè)計(jì)的控制字為D8255=0x80;設(shè)定的各端口的地址為#defineA8255XBYTE0xfff0#defineB8255XBYTE0xfff1#defineC8255XBYTE0xfff2#defineD8255XBYTE0xfff3四、設(shè)計(jì)思路及設(shè)計(jì)流程圖基本上可以分為三個(gè)階段,第一階段為讀取外部指令,為測(cè)量頻率,測(cè)量周期,測(cè)量脈寬。我采用了P1端口的P1.0,P1.1P1.2三個(gè)管腳來(lái)作為外部指令的輸入方式。主程序流程圖測(cè)量函數(shù)部分我使用的是利用外部中斷INT0管腳輸入信號(hào),設(shè)置為負(fù)邊沿觸發(fā),利用此來(lái)觸發(fā)外部中

8、斷子程序voidEX_INT0()interrupt0。同時(shí)計(jì)時(shí)器開(kāi)始0.05s的計(jì)時(shí)程序,當(dāng)計(jì)時(shí)次數(shù)滿二十次的情況是正好滿1S則鎖存實(shí)驗(yàn)所得數(shù)據(jù)然后送進(jìn)顯示電路進(jìn)行顯示。中斷程序部分為:voidEX_INT0()interrupt0countA+;若要做的便是將CountA的數(shù)值在計(jì)時(shí)中斷滿二十次時(shí)進(jìn)行鎖存而后輸出即可顯示函數(shù)頻率測(cè)量函數(shù)流程圖對(duì)于周期測(cè)量我是對(duì)測(cè)量因?yàn)闇y(cè)量數(shù)據(jù)分為測(cè)量周期還有測(cè)量脈寬等部分,的頻率值進(jìn)行了一定的內(nèi)部處理利用周期=1/頻率這一特性進(jìn)行的計(jì)算。對(duì)于脈寬的測(cè)量也是建立在這一基礎(chǔ)之上。發(fā)生程序我嵌套在主程序中的掃描函數(shù)當(dāng)中,當(dāng)對(duì)主程序進(jìn)行循環(huán)的是時(shí)候如果檢測(cè)到有按鍵

9、操作則啟動(dòng)發(fā)生程序voidPlay(chart)(chari;for(i=0;i<120;i+)(BEEP=BEEP;delay(t);BEEP=0;五、實(shí)驗(yàn)成品通過(guò)protues進(jìn)行仿真程序,連接各電路,下圖為運(yùn)行后的初始畫(huà)面型:北大隊(duì):.:X/氣之I工3奈.+|二程序共有三個(gè)外部按鍵,從上往下依次為頻率,周期,脈寬。以下分別為設(shè)定外部輸入信號(hào)為1kHz的周期信號(hào),所得到的實(shí)驗(yàn)畫(huà)面燃眼::口之I、!-£T«11二4LJ2.學(xué)二我r-t*PCIMXP33RTJ忙XU】nui4j4KWI3酷曲1,KIWIF*m1bC<ft-SEF9T1n=-I.*:M,'

10、yflTEiTZ-S.-ik-BrfdRL口.f-Y«Ift1r-/JL_X_L<-口MB工當(dāng)工4JLJLrfrsr碧理此圖為按下第二個(gè)按鍵的效果最后兩個(gè)字符為us的意思,周期為1000usnnnirruuuuIHJJ.Jir*J-全昔五lidMtt!“uw鼻皿qF*EUP,*AMriMn(F:j*qPJdAU和01MFW-ihaunt-jsxSTralfiFTfl-LO*'一葭4溟凳11蹺A此圖為按下第三個(gè)按鍵后的效果圖脈寬為500ushiFAE31!41VKPJ-Ufri和噓rw!>(-<"L-ff-l-:MrSTTFIS“<>4打

11、六、實(shí)驗(yàn)代碼#include<reg51.h>#include<absacc.h>/*定義8255控制端口以及ABC端口的地址#defineA8255XBYTE0xfff0#defineB8255XBYTE0xfff1#defineC8255XBYTE0xfff2#defineD8255XBYTE0xfff3#defineucharunsingedchar#defineuintunsignedint/*輸入按鍵操作*sbitPB0=P1A0;sbitPB1=P1A1;sbitPB2=P1A2;sbitBEEP=P3A0;chardisbuffer8=0,1,2,3,4,

12、5,6,7;charTAB11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,;/0x83改為0x82修正了數(shù)字6的顯示問(wèn)題charchocode8=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/charchocode8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;12345678變?yōu)?7654321charcodevalue8=0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0;最初沒(méi)有取反,后來(lái)前后次序亂使數(shù)據(jù)原本為#defin

13、ecount_M150000#defineH_0(65636-count_M1)/256#defineL_0(65636-count_M1)%256chartimes=0;bitstatus_F=1;/charscan=1;unsignedlongintfreq=11;unsignedlonginttime=0;unsignedlongintcountA=0;unsignedlongintmk=0;/設(shè)計(jì)處為短型,所以導(dǎo)致程序運(yùn)行不正常sfr16DPTR=0x82;voiddelay(int);voiddisplay(void);/顯示函數(shù);voidmeasureA(void);voidmea

14、sureTT(void);voidmeasureMK(void);/*延遲函數(shù)*voiddelay(intx)inti;intj;for(i=0;i<x;i+)for(j=0;j<120;j+);)/*發(fā)聲程序*奇怪的現(xiàn)象,當(dāng)T0接輸入時(shí),喇叭會(huì)自動(dòng)的響voidPlay(chart)chari;for(i=0;i<120;i+)BEEP=BEEP;delay(t);)BEEP=0;)/測(cè)量頻率主函數(shù)main()P1=0xff;設(shè)定P1端口的初始值防止外部干擾D8255=0x80;while(1)if(PB0=0)Play(1);status_F=0;measureA();wh

15、ile(status_F=0);)if(PB1=0)Play(2);status_F=0;measureA();while(status_F=0);measureTT();)if(PB2=0)Play(3);status_F=0;measureA();while(status_F=0);measureMK();)elsedisplay();)/測(cè)頻率使用外部中斷voidmeasureA(void)(IE=0x8f;TMOD=0x51;TH0=H_0;TL0=L_0;countA=0;IT1=1;IT0=1;PX0=1;TR0=1;TR1=0;/*夕卜部中斷int0*計(jì)時(shí)程序*voidEX_IN

16、T0()interrupt0(countA+;/display();*T0秒時(shí)間中斷*voidT0_1S(void)interrupt1TH0=H_0;TL0=L_0;if(+times=20)times=0;TR1=0;TR0=0;DPL=TL1;DPH=TH1;freq=countA;codevalue7=TABfreq/10000000;codevalue6=TAB(freq/1000000)%10;codevalue5=TAB(freq/100000)%10;codevalue4=TAB(freq/10000)%10;codevalue3=TAB(freq/1000)%10;codev

17、alue2=TAB(freq/100)%10;codevalue1=TAB(freq/10)%10;codevalue0=TAB(freq%10);status_F=1;/*測(cè)量周期*voidmeasureTT(void)time=1000000/freq;codevalue1=0xc1;codevalue0=TAB5;codevalue7=TAB(time/100000)%10;codevalue6=TAB(time/10000)%10;codevalue5=TAB(time/1000)%10;codevalue4=TAB(time/100)%10;codevalue3=TAB(time/1

18、0)%10;codevalue2=TAB(time%10);/*測(cè)量脈寬*voidmeasureMK(void)mk=500000/freq;codevalue1=0xc1;codevalue0=TAB5;codevalue7=TAB(mk/100000)%10;codevalue6=TAB(mk/10000)%10;codevalue5=TAB(mk/1000)%10;codevalue4=TAB(mk/100)%10;codevalue3=TAB(mk/10)%10;codevalue2=TAB(mk%10);voiddisplay(void)chari,p,temp;if(codeval

19、ue7=TAB0)/不能拿codevalue直接和0xc0進(jìn)行比較因?yàn)轭愋筒煌圆荒鼙容^兒賦值的時(shí)候則不同!codevalue7=0xff;if(codevalue6=TAB0)codevalue6=0xff;if(codevalue5=TAB0)codevalue5=0xff;if(codevalue4=TAB0)codevalue4=0xff;if(codevalue3=TAB0)codevalue3=0xff;if(codevalue2=TAB0)codevalue2=0xff;if(codevalue1=TAB0)codevalue1=0xff;if(codevalue0=TAB0)codevalue0=0xc0;for(i=0;i<8;i+)p=disbufferi;temp=chocodep;B8255=temp;temp=codevaluep;A8255=temp;/delay(1);多余的延時(shí)程序temp=chocodei;B8255=temp;delay(1);七、實(shí)驗(yàn)體會(huì)和意見(jiàn)在實(shí)驗(yàn)過(guò)程中遇到了很多很多的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論