科技創(chuàng)新6-第03大組超聲波測量子系統(tǒng)設(shè)計(jì)報(bào)告_第1頁
科技創(chuàng)新6-第03大組超聲波測量子系統(tǒng)設(shè)計(jì)報(bào)告_第2頁
科技創(chuàng)新6-第03大組超聲波測量子系統(tǒng)設(shè)計(jì)報(bào)告_第3頁
科技創(chuàng)新6-第03大組超聲波測量子系統(tǒng)設(shè)計(jì)報(bào)告_第4頁
科技創(chuàng)新6-第03大組超聲波測量子系統(tǒng)設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

完成時(shí)間:2010/6/18科科技創(chuàng)新[6]設(shè)計(jì)報(bào)項(xiàng)目名稱:遠(yuǎn)程測控系統(tǒng)——超聲波測量子系統(tǒng)大組編號:第3大組設(shè)計(jì)小組名單:郭岸錦組長、石強(qiáng)、楊穎峰800800地郵錦FFF800800地郵摘要:超聲波具有聚束、定向以及反射、透射等特性,已經(jīng)被廣泛應(yīng)用到生活中,比如測距、探傷、、和醫(yī)學(xué)成像等。本文主要介紹了利用超聲波測距原理實(shí)現(xiàn)對測試樣塊厚度的測量以及探AVR單片機(jī)、AlCPLD板和超聲波傳感器。另外,此系統(tǒng)還包括了與本系統(tǒng)通信模塊,便于總的系統(tǒng)控制。:超聲波;單片機(jī);CPLD;傳感器;測Havingthefeaturesofspotlight,orientation,reflection,transmissionandsoon,ultrasonichasbeenwidelyappliedtoourdailylives,suchasdistancemeasurement,detectionofdefects,cleaning,grindingandmedicalimaging.Inthispaper,wemainlytalkaboutindetailthesystemdesign,whichcanmeasurethethicknessoftestspecimensanddetecttheirinternalstructuredefects(faultsorholes)usingtheultrasonicdistancemeasurement.Thedesignincludesthepartsofhardwaredesignandsoftwaredesign.AndthemainequipmentsweusedaretheAVRmicrocontroller,AlCPLDandultrasonicsensor.Inaddition,thissystemalsoincludesacommunicationmodulewiththelocalhostsystemtofacilitatetheoverallsystemcontrol.Ultrasonic,microcontroller,CPLD,sensor,distance第第PAGE1 概 編寫目 名詞定 縮略 系統(tǒng)綜 系統(tǒng)組 系統(tǒng)的主要功 超聲波子系統(tǒng)各個(gè)部分功能簡 超聲波發(fā)射電 超聲波接收處理電 AVR單片 系統(tǒng)的硬件結(jié) 硬件總體結(jié) <超聲波發(fā)射機(jī)模塊>描 功能描 接口定 工作原 調(diào)試過程中遇到的問題及解決方法 <超聲波模塊>描 功能描 接口定 實(shí)現(xiàn)方 超聲波軟件設(shè)計(jì)部 CPLD程序設(shè) 設(shè)計(jì)原 CPLD輸入輸出端 4.1.3CPLD程序流程 CPLD邏輯仿 AVR單片機(jī)程序設(shè) 設(shè)計(jì)原 端口設(shè) AVR單片機(jī)程序流 遇到的問 實(shí)驗(yàn)心 致 參考文 附 第PAGE第PAGE10概編寫目學(xué)習(xí),也能作為一份技術(shù)資料作為專業(yè)的參考。同時(shí)希望借總結(jié)經(jīng)驗(yàn)教訓(xùn),加深筆者對名詞定超聲波:頻率大于20KHz的聲波為超聲單片機(jī):微型計(jì)算機(jī)系統(tǒng),由CPU,ROM,RAM,輸入輸出設(shè)備組成的集成電縮略CPLD:complex blelogic系統(tǒng)綜系統(tǒng)組超聲波回波分析計(jì)算顯示(CPLD和AVR單片機(jī))以及通信(AVR單片機(jī)系統(tǒng)的主要測量超聲波回波之間的時(shí)間,然后利用超聲波的速度計(jì)算出兩回波之間的距離,即為相應(yīng)超聲波接收處理超聲波接收處理超聲波發(fā)射部分2-1超聲波子系統(tǒng)各個(gè)部分首先通過CPLD產(chǎn)生一個(gè)正向窄脈沖,此脈沖經(jīng)IR4427驅(qū)動后,使得場效應(yīng)管在瞬時(shí)導(dǎo)通,從80V以上的負(fù)脈沖(后接負(fù)載值),此即超聲波發(fā)射板子系統(tǒng)功能。檢波、第二級放大、比較整形,最終產(chǎn)生幅度為5V左右的脈沖,便于后續(xù)的計(jì)時(shí)和計(jì)數(shù)處理。AVRAVR單片機(jī)的控制信號進(jìn)行復(fù)位或者輸出檢測數(shù)據(jù)。AVR單片CPLDCPLD檢測完成反饋信號,輸出數(shù)據(jù)控制信號讀入數(shù)據(jù)并進(jìn)行計(jì)算處理,將結(jié)果顯示于8段數(shù)碼管,以及與本系統(tǒng)間進(jìn)行通信。系統(tǒng)的硬件結(jié)硬件總體結(jié)CPLD傳來的控制信號,產(chǎn)生相應(yīng)的高電壓脈沖,通過超超聲波模塊的主要功能是將超聲波傳感器接收到的回波(其實(shí)也包含了始波),進(jìn)行一系列的處理,最后產(chǎn)生相應(yīng)的脈沖,輸出到CPLD板進(jìn)行計(jì)數(shù)。CPLD控制脈CPLD控制脈產(chǎn)生高電產(chǎn)生超聲檢測超聲波板3-1<超聲波發(fā)射機(jī)模塊>描此模塊的主要功能是將CPLD產(chǎn)生的正向窄脈沖經(jīng)IR4427驅(qū)動后,使得場效應(yīng)管在瞬時(shí)導(dǎo)通,80V以上的負(fù)脈沖(后接負(fù)載值),激發(fā)產(chǎn)生超聲波。發(fā)射機(jī)的總體電路圖如下:τ

3-2CPLDCPLD控制脈產(chǎn)生高電產(chǎn)生超聲3-3超聲波脈沖發(fā)射模塊框圖表3-1電路部分器件說標(biāo) 型號與實(shí)際取 說

500V10W以上的場效應(yīng)管回路充放電時(shí)間可越長,R1可以越大。1MΩ250V電源的輸出電流較小。此模塊有一個(gè)輸入接口,輸入電壓幅度為3.3V左右的電脈沖,直接與CPLD板的輸出口相連當(dāng)T截止時(shí),250V電壓源通過R1和RLC15C1250V當(dāng)T瞬時(shí)導(dǎo)通,T、C1和RL50Ω,故C1中的電荷被0.5~1.5us。10~30ns(最理想情況3-4U1IR4427,且輸入波形是正脈沖,故脈沖信號在很長的時(shí)間內(nèi)處于低電平,即輸入三極管的信號的平均幅值不至于損壞場效應(yīng)管。所以實(shí)際設(shè)計(jì)可以舍去U1前的限流電74LS123對前端輸入信號進(jìn)行整形,同時(shí)亦有驅(qū)動下級電路的功能。但是實(shí)際調(diào)試中我們發(fā)現(xiàn),由CPLD電路產(chǎn)生的前級信號輸出的窄之后,RL的設(shè)計(jì)也是不可或缺的,為了防止過大電流損害超聲波探頭,在輸出端并聯(lián)一個(gè)電PCB板插孔的不匹配性,PCB板的插孔,以使其能夠正常裝配到超聲波發(fā)射板上。0.5~1.5us間,輸出后段紋波較小,波形穩(wěn)定,說明超聲波發(fā)射電路工作正常,且完全<超聲波模塊>描CPLD板計(jì)時(shí)和計(jì)數(shù)的電脈沖。處理的過程包括:限幅,第一級放大,檢波,第二級放大,比較整

3-5比較板3-6此模塊有一個(gè)輸出接口,輸出電壓幅度為5V左右的電脈沖,直接與CPLD板的輸相連5個(gè)部分,限幅電路部分、第一級放大電路部分、檢波電路部分、第二級放大3-7由于是直接與發(fā)射機(jī)相連的,在產(chǎn)生超聲波的過程中,發(fā)射機(jī)會產(chǎn)生150V左右的電壓脈沖,如果在這里不加以限制,則會對后面的電路造成極大的損害。采用了如上圖所示的限在上圖的電容Ci之后還接了一個(gè)電阻,阻值為1kΩ,Ci的取值為0.1μF,Ci不宜太大,否則超0.1μFRC10kHz,用于濾出20kHz,所以不會把超聲波濾除。3-8此部分電路的功能主要是對信號進(jìn)行初步放大,以便于后續(xù)的檢波處理。其運(yùn)算放大器的型號A81815的脈沖,同時(shí)取得太大,在相同的檢波電路部分的參數(shù)下,會使得檢波后的脈沖的時(shí)間拉長,這樣就得調(diào)整檢波部分的電阻和電容值,使其時(shí)間常數(shù)變得很小。經(jīng)實(shí)驗(yàn),倍數(shù)設(shè)為15,取10~20倍均可以取得不錯(cuò)的效果,只是要將檢波電路部分的參數(shù)值3-9的參數(shù)取得也必須要適中、合理,既不能使RC值取得太小,否則會使一個(gè)超聲波有多個(gè)上升沿,產(chǎn)生最終的錯(cuò)誤結(jié)果,也不能使RC值取得太大,否則會使當(dāng)前脈沖的持續(xù)時(shí)間拉長,會將后面到也會產(chǎn)生最終的錯(cuò)誤結(jié)果。最后,C取為0.1μF,R用一個(gè)范圍為1k~10kΩ的變阻器,便于3-10此部分電路的主要功能是對檢波后的信號進(jìn)行進(jìn)一步的放大,信號經(jīng)檢波電路后幅度會有所衰減,再加上本來信號的幅度就不是很高,所以需要這一級的放大,便于后面的比較整形電路的的放大倍數(shù)不宜取得很大,否則會有一些不需要的信號也會通過后面的比較整形電路,高于門53-11此部分電路的功能主要是對前面產(chǎn)生的脈沖進(jìn)行整形,產(chǎn)生幅度為5V的,然后直接輸入到CPLD的輸入端,進(jìn)行后續(xù)處理。此部分的主要器件是低功耗比較器LM393。R取為一個(gè)1k~10kΩ的變阻器,便于調(diào)整門限電壓。超聲波軟件設(shè)計(jì)CPLD程序設(shè)鐘脈沖,使用7狀態(tài)的狀態(tài)機(jī),分別控制將對應(yīng)物塊的厚度計(jì)數(shù)下來。CPLD輸入輸出端port in in in instd_logic_vector(2downto0); outstd_logic; out outstd_logic_vector(11downto其中,sig_in為超聲波接收處理部分輸出地信號,clk50MHz時(shí)鐘,rstAVR單片機(jī)CPLD的復(fù)位信號,key_inCPLD輸出數(shù)據(jù)的控制信號,done為CPLD完成一次檢測的響應(yīng)信號,sig_out為超聲波發(fā)生部分的啟動脈沖信號,data_outAVR12位二進(jìn)制信CPLD程序流如下圖所示,CPLDAVRrst=0rst=1后machine_statesimcountersig_out并同時(shí)進(jìn)行響應(yīng)物塊厚度的計(jì)數(shù),其中物i(blocki)ii+1個(gè)回波之間的脈沖數(shù)(i=1,2,…,5),5塊物塊的測量(受到超聲波探頭的能力影響,具體還可以進(jìn)行擴(kuò)充)(cnt="1111111111111111")done1AVR狀態(tài)機(jī)、計(jì)數(shù)器復(fù)位信號啟動檢測完成,檢測完成響應(yīng)信AVRkey_inCPLDdata_outkey_in為“000”時(shí)輸出為接收到的回波數(shù)counter。數(shù)據(jù)輸出完成后,等待AVR復(fù)位信號啟動下一次檢測狀態(tài)機(jī)、計(jì)數(shù)器復(fù)位信號啟動檢測完成,檢測完成響應(yīng)信等待復(fù)位信號啟動下一次等待復(fù)位信號啟動下一次根據(jù)控制信號輸出數(shù)據(jù)至4-1CPLDCPLD邏輯仿14-2CPLDAVR單片機(jī)程序設(shè)AVR單片機(jī)內(nèi)部時(shí)鐘頻率為8MHz,每5ms進(jìn)行中斷子程序,中斷子程序中進(jìn)行按鍵檢測,輸CPLD端口相連接入。即物塊長度l=n*(1/ )s*2500m/s*1000mm/1m/2=n*5/2(10^(-2)mm),其中n*5/2為最終顯示在8段數(shù)碼管上的4位十進(jìn)制數(shù)據(jù),小數(shù)占兩位,單位為mm。這里將超聲波在介質(zhì)中的考慮到AVR本身的時(shí)鐘計(jì)數(shù)周期較大,使用時(shí)鐘周期更短的CPLD作為回波計(jì)數(shù)時(shí)鐘PORTA=0x00;//PAPA0~PA4作為輸入,DDRA0xe0;//PAPA7、PA6、PA5PORTB=0x00;//PBDDRB0x00;//PBPORTC=0xf0;//PCPC7、PC6、PC5、PC4DDRC=0x0f;//PC0~PC2作為輸出PORTD=0x00;//PD留作通信用DDRD=0x04;其中,對應(yīng)接口方式為,PBCPLDJ3相連,PACPLDJ7相連,PCCPLD的J4相連,通口這里不做說明。AVR單片機(jī)程序流主要的AVR實(shí)現(xiàn)功能如下,其中,sw3為復(fù)位控制鍵,sw3按下后,CPLD的rst信號置0,啟動一次超聲波檢測。sw1為顯示控制鍵,按下后顯示相應(yīng)物塊的厚度。另外,sw2按鍵控制切換4個(gè)8段數(shù)碼管顯示物塊的位置(I)和物塊的厚度。nysw3SW14-3AVR遇到的問counter-1。輸出顯示由sw1控制CPLD狀態(tài)機(jī)的數(shù)量。沖差,即n+2或n-2,換算成長度為0.05mm,這是理論的測量精度。實(shí)際中,由于超聲波在介質(zhì)中實(shí)驗(yàn)心超聲波子系統(tǒng)的實(shí)驗(yàn)原理并不,難在系統(tǒng)性能的提高,包括測量精度,量程,以及測量數(shù)目。當(dāng)然最直接簡單的方法是換用更高精度的探頭,但實(shí)驗(yàn)中并不允許。我們主要采取控制接收信是的兩個(gè)量,若增加系統(tǒng)量程,則需降低測量門限,這使得主發(fā)射波變寬,那么會造成覆蓋相5mm的物塊不能單獨(dú)測出。本次實(shí)驗(yàn)通過我們的共同努力,克服了重重,總算把基本功能完成了93點(diǎn)才把總體系統(tǒng)全部接成功,之后一個(gè)大組的同學(xué)在一起吃叫來的外賣,其形也可檢測時(shí)出現(xiàn)了問題,不能測出單塊5mm的厚度,但是我把它寫在了測試報(bào)告上,檢測老師很明考驗(yàn),最終將以更強(qiáng)的姿態(tài)迎接未來的。致本次科創(chuàng)實(shí)驗(yàn)的設(shè)計(jì)、焊接、調(diào)試以及最終完成離不開交通大學(xué)電子工程系以及相關(guān)實(shí)驗(yàn)室的支持,也離不開老師細(xì)致的內(nèi)容介紹、的課件演示以及耐心的實(shí)驗(yàn)指導(dǎo)。同時(shí),我們得到了其他組同學(xué)的熱情幫助以及認(rèn)真講解,是他們不厭其煩地幫助我們反復(fù)檢查、調(diào)試、分析,在工作的學(xué)長以及器材科的老師,沒有他們,沒有舒適的實(shí)驗(yàn)環(huán)境以及及時(shí)的器材更換。最后,感謝檢測的老師,他們常常要工作好長時(shí)間來回奔跑為我們檢測結(jié)果,有時(shí)候一個(gè)小組沒有結(jié)果或者結(jié)果不好還要重新測幾遍,感謝他們不辭勞苦的工作,沒有他們的指導(dǎo),我們將無法正確地認(rèn)識到自己實(shí)驗(yàn)的不足之處,有時(shí)候老師們的幾句點(diǎn)撥之語,使我們開,想清楚了很多問題。參考文《超聲波系列講座》,,2010,交通大《AVR單片機(jī)原理及測控工程應(yīng)用:基于ATmega48/ATmega16》,劉海成,2008,航空航天大學(xué)《單片機(jī)KeilCx51應(yīng)用開發(fā)技術(shù)》,青等著,人民郵電附 WindowsXPQuartusII8.0AVRstudioDesignExplorer程CPLD源程LIBRARYUSEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEentityultra_sonicport(sig_in: instd_logic; instd_logic;rst:instd_logic; instd_logic_vector(2downto0); outstd_logic;sig_out:out outstd_logic_vector(11downtoENDarchitectureultra_sonicofultra_sonictypestateis(ready,b1,b2,b3,b4,b5,ow);signalmachine_state:state;signalfinish:std_logicsignalcnt:std_logic_vector(15downto0):=(OTHERS=>'0');signalsig:STD_LOGIC;signalblock1:STD_LOGIC_VECTOR(11DOWNTO0):=(OTHERS=>'0');signalblock2:STD_LOGIC_VECTOR(11DOWNTO0):=(OTHERS=>'0');signalblock3:STD_LOGIC_VECTOR(11DOWNTO0):=(OTHERS=>'0');signalblock4:STD_LOGIC_VECTOR(11DOWNTO0):=(OTHERS=>'0');signalblock5:STD_LOGIC_VECTOR(11DOWNTO0):=(OTHERSsignalcounter:std_logic_vector(11downto0):=(others=>'0');signalsim :std_logic_vector(11downto0):=(others=>'0');if(rst='0')elsif(clk'eventandclk='1')--if(cnt="1111111111111111")if(cnt="10100") casemachine_stateiswhenb1=>if(block1<"111111111111")thenblock1<=block1+1;endif;whenb2=>if(block2<"111111111111")thenblock2<=block2+1;endif;whenb3=>if(block3<"111111111111")thenblock3<=block3+1;endif;whenb4=>if(block4<"111111111111")thenblock4<=block4+1;endif;whenb5=>if(block5<"111111111111")thenblock5<=block5+1;endif;whenOTHERS=>NULL;endendendif;endprocess;

if(cnt<="0000000000000011")if(cnt<"00110")thensig<='1';elsesig<='0';endif(clk'eventandclk='0')if(sig_in='1')thensim<=sim+1;if(sim="1")thencasemachine_stateiswhenready=>machine_state<=b1;whenb1 =>machine_state<=b2;whenb2 =>machine_state<=b3;whenb3 =>machine_state<=b4;whenb4 =>machine_state<=b5;whenb5 =>machine_state<=ow;whenow =>machine_state<=ow;whenOTHERS=>NULL;endcase;endif;elsesim<=(others=>'0');endendendendif(finish='1')thencasekey_iniswhenwhen"001"=>if(block1="111111111111")thenend

when"010"=>if(block2="111111111111")thenend

when"011"=>if(block3="111111111111")thenend

when"100"=>if(block4="111111111111")thenend

when"101"=>if(block5="111111111111")thenend

whenendcase;endendENDAVR單片機(jī)源程 常量定 //AVRapplicationbuilder:2010-04-06//Target://Crystal:#include<avr/io.h>#include<avr/interrupt.h> 常量定 //1s軟件定時(shí)器溢出值,200個(gè)5ms#defineV_T1s #defineCrystal#defineBaud1200 變量定 unsignedcharunsignedchar1sunsignedchar1sunsignedcharvolatileunsignedchar//unsignedcharunsignedcharunsignedintunsignedcharvolatileunsignedcharunsignedchar*hhigh;unsignedchar*llow;//0unsignedchar*llength1,*llength2,*llength3;unsignedcharlow[6];unsignedcharhigh[6];unsignedintunsignedintlength1,length2,length3,pulsenum;unsignedcharflag;unsignedint//unsignedchar 函數(shù)定 7 DATA:需要顯示的數(shù)字或符號 7D7~0PGFEDCBAunsignedcharNUMTOSEG7(unsignedchar{unsignedcharAA;switch(DATA){case0:AA=0xc0;break;//case1:AA=0xf9;break;//case2:AA=0xa4;break;//case3:AA=0xb0;break;//case4:AA=0x99;break;//case5:AA=0x92;break;//case6:AA=0x82;break;//case7:AA=0xf8;break;//case8:AA=0x80;break;//case9:AA=0x90;break;//‘9’case10:AA=0x88;break;//‘A’case11:AA=0x83;break;//‘B’case12:AA=0xc6;break;//‘C’case13:AA=0xa1;break;//‘D’case14:AA=0x86;break;//‘E’case15:AA=0x8e;break;//‘F’caseAA=0xdf;break;破折號case'_':AA=0xf7;break下劃線case'':AA=0xff;break;//消隱default:AA=0xff;break;}}voiddisy_led(unsignedcharseg,unsignedchar{unsignedchar//selPORTA&= //PA7=0;for{if((sel&0x80)==0)//最送U2SERPORTA&=~(1<<PA5);//PORTA|= //PORTA&= PORTA|= //PA6=1srclk=1sel //sel}//seg74hc595for(i=0;i<8;i++){if((seg&0x80)==0)//最送U2SERPORTA&=~(1<<PA5);PORTA|= PORTA&= PORTA|= //PA6=1srclk=1seg //seg}PORTA|= //PA7=1;PORTA&= //PA7=0;rclk=0,產(chǎn)生鎖存輸出信第第PAGE32}void{PORTA0x00;PAPA0~PA4作為輸入,DDRA=0xe0;PAPA7、PA6、PA5PORTB0x00/PBDDRB=0x00;//PBPORTC0xf0;//PCPC7、PC6、PC5、PC4DDRC=0x0fPC0~PC2作為輸出PORTD0x00;PDDDRD=0x04;UCSRB= UCSRA UCSRC= //0000//8位字符,1UBRRL=(Crystal/8/(Baud+1))%256;//若為正常異步模式USX=0則UBRRH=(Crystal/8/(Baud+1))/256;//參見ATMAGE16UCSRB=0xD8//允許發(fā)送}//TIMER0initialize-//WGM://desiredvalue://actualvalue:200.321Hz(0.2%)voidtimer0_init(void){TCCR0=0x00;//stopTCNT0=0x64;//setcountOCR0=0x9C;//setcompare TCCR0=0x04;//start 第PAGE第PAGE35}ISR(TIMER0_OVF_vect)//定時(shí)器05ms{TCNT00x64;//reloadcountervalueoutput_sel=0x00;//此處應(yīng)初始化{}{}

PORTC&=PORTC|=***檢測到按鍵被按下(0)時(shí),相應(yīng)的指示燈亮ifPINC&(1<<PC7))==0)//PC4,C4count=(count+1)%6;//led1led2led3block/*if(flag1>=7)else//countled,PC0switch{caseled1=1;led2=1;led3=1;PORTC&=~(1<<PC0);PORTC&=~(1<<PC1);PORTC&=caseled1=0;led2=1;led3=1;PORTC|=(1<<PC0);PORTC&=~(1<<PC1);PORTC&=caseled1=1;led2=0;led3=1;PORTC&=~(1<<PC0);PORTC|=(1<<PC1);PORTC&=~(1<<PC2);caseled1=0;led2=0;led3=1;PORTC|=(1<<PC0);PORTC|=(1<<PC1);PORTC&=~(1<<PC2);caseled1=1;led2=1;led3=0;PORTC&=~(1<<PC0);PORTC&=~(1<<PC1);PORTC|=(1<<PC2);caseled1=0;led2=1;led3=0;PORTC|=(1<<PC0);PORTC&=~(1<<PC1);PORTC|=(1<<PC2);led1=1;led2=1;led3=1;PORTC&=~(1<<PC0);PORTC&=~(1<<PC1);PORTC&=}//SW2ifPINC&(1<<PC5))==0)//PC6,C6{}/*else

//SW3,ifPINC&(1<<PC6))==0)//PC6,C6PORTC&=PORTC|={}{}

led4=led4=//SW4,/*if((PINC&(1<<PC7))==0)//PC7,C7led4=led4={}{

第第PAGE37}if((PINA&(1<<PA4))==0x00)//iffinish=0,pa4=0anddetectionisnot{}{

low[count]PINB&(0xff//length8high[count]PINA&(0x0f);//length8 high[count]=length[count]=//length[count]=//length[count]if(count!=0)length[count]length[count]*5/2;//length/2/(50*10^6)*2500*100*1000digi[0]=length[count]/1000;//計(jì)算千位數(shù)digi[1](length[count]%1000)/100;計(jì)算百位數(shù)digi[2]=(length[count]%100)/10;//計(jì)算十位數(shù)digi[3]=(length[count]%10);//計(jì)算個(gè)位數(shù)}{} 第PAGE第PAGE38145ms間隔對一個(gè)數(shù)碼管進(jìn)行驅(qū)動,20ms回if(++digi_scaner>=5)digi_scaner=1;output_sel=led1*16+led2*32+led3*64+led4*128;四個(gè)發(fā)光管送高四位switch(digi_scaner){case1:output_sel+=output_8seg=NUMTOSEG7(digi[0]);case2:output_sel+=output_8seg=NUMTOSEG7(digi[1])+0x80;case3:output_sel+=output_8segNUMTOSEG7(digi[2]);顯示小數(shù)點(diǎn)case4:output_sel+=output_8seg=NUMTOSEG7(digi[3]);}disy_led(output_8seg,output_sel);//串轉(zhuǎn)并輸}void{}//callthisroutinetoinitializeallperipheralsvoidinit_devices(void){//stoperrantinterruptsuntilsetupcli();//disableallinterruptsMCUCR=0x00;GICR=0x00;TIMSK=0x01;//timerinterruptsourcessei();//re-enableinterrupts//allperipheralsarenow}int{init_devices(//主循環(huán),本例中,在T0環(huán){}}第第PAGE40#include<avr/io.h>#include<avr/interrupt.h> //externunsignedchar*//externunsignedchar*externunsignedintlength1,length2,length3;externunsignedintlength[6];voidultra_sound_parse_cmd(intcharbuildInfoFrame(&frame_received,0x00,0x00,0x00,0x000x00,a);//清

charerrorinfo=parseFrame(&frame_received,str_received,lengthOfReceived);if(frame_received.adr!=1)return;//地址不匹配if(errorinfo!=0){//解析buildInfoFrame(&frame_to_send,0x10,0x00,frame_received.cmd1_rspd,}//buildInfoFrame(&frame_to_send,0x10,0x00,0x00,0x04,0x00,a);} buildInfoFrame(&frame_to_send,0x10,0x00,0x00,0x00,0x00, }//測量//buildInfoFrame(&frame_to_send,0x10,0x00,0x01,0x04,0x0a,a);}buildInfoFrame(&frame_to_send,0x10,0x00,0x01,0x00,0x0a,a);}buildInfoFrame(&frame_to_send,0x10,0x00,frame_received.cmd1_rspd,0x03,0x00,a);} 第PAGE第PAGE42 //發(fā)送和接chartemp UCSRB=0xD8; if(temp!='~')}}} #include<avr/io.h>#includestructInfoFrameframe_received;structInfoFrameframe_to_send;charstr_to_send[14+(MAX_INFO_LENGTH<<1)];charintcursor_send=0;intcursor_receive=0;intsend_length=0;intreceive_length=0;charcalcChkSum(structInfoFrame*{ infoframe->cmd2_rtn+infoframe->length));inti=for(;i<infoframe->length;i++)temp=(char)(temp+infoframe-}return(char)(~temp+}//voidbuildInfoFrame(structInfoFrame*infoframe,charVER,charADR,charCMD1_RSPD,charCMD2_RTN,charLENGTH,char*INFO){infoframe->ver=VER;infoframe->adr=infoframe->cmd1_rspd=CMD1_RSPD;infoframe->cmd2_rtn=CMD2_RTN;infoframe->length=LENGTH;inti=for(;i<infoframe->length;i++){infoframe->info[i]=INFO[i];}infoframe->chksum=}chartoDoubleChar_high(charb){unsignedcharhigh=b/16;if(high>9)return(char)('A'+high-10);elsereturn(char)('0'+high);}chartoDoubleChar_low(charb){unsignedcharlow=b%16;if(low>9)return(char)('A'+low-10);elsereturn(char)('0'+low);}chartoSingleChar(charhigh,charlow){if(high>='A')high-=('A'-10);elsehigh-='0';if(low>='A')low-=('A'-10);elselow-='0';return(high<<4)+low;}intencode(structInfoFrame*infoframe,char*{int}return14+((infoframe-}charparseFrame(structInfoFrame*infoframe,char*str,int{intstartIndex=0;if}if(startIndex>=lengthOfStr)returnif(lengthOfStr<14)return255;char*temp;temp=infoframe->ver=toSingleChar(temp[0],temp[1]);infoframe->adr=toSingleChar(temp[0],infofr

溫馨提示

  • 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

提交評論