freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于89c51單片機(jī)的超聲波測距-資料下載頁

2024-11-10 16:09本頁面

【導(dǎo)讀】隨著社會的發(fā)展,人們對距離或長度測量的要求越來越高。超聲波測距由于其能。進(jìn)行非接觸測量和相對較高的精度,越來越被人們所重視。本設(shè)計的超聲波測距儀,可以對不同距離進(jìn)行測試,并可以進(jìn)行詳盡的誤差分析。能進(jìn)一步提高自身的電路設(shè)計水平,深入對單片機(jī)的理解和應(yīng)用。超聲波傳感器模塊在測量方面有著廣泛、普遍的應(yīng)用。利用單片機(jī)控制超聲波檢??茖W(xué)家們將每秒鐘振動的次數(shù)稱為聲音的頻率,它的。因此,把頻率高于20K赫茲的聲波稱。通常用于醫(yī)學(xué)診斷的超聲波頻率為1~5兆赫。超聲波具有方向性好,超聲波在介質(zhì)中傳播時,介質(zhì)質(zhì)點振動的頻率很高,因而能量很大。用小風(fēng)扇把霧滴吹入室內(nèi),就可以增加室內(nèi)空氣濕度.這就是超聲波加濕器的原理。超聲波的波速c與溫度有關(guān),表1-1列出了幾種不同溫度下的。只要測得超聲波往返的時間t,即可求得距離S。單片機(jī)控制超聲波模塊發(fā)射及檢波接收,其系統(tǒng)原理框圖如圖1-3所示。

  

【正文】 la=0。 wela=0。 P0=0xbf。 wela=1。 wela=0。 遼寧科技大學(xué)本科生畢業(yè)設(shè)計 第 30 頁 delay(2)。 P0=table[mm]。 dula=1。 dula=0。 P0=0xdf。 wela=1。 wela=0。 delay(2)。 } void dsreset(void) //send reset and initialization mand { uint i。 DS=0。 i=103。 while(i0)i。 DS=1。 i=4。 while(i0)i。 } bit tmpreadbit(void) //read a bit { uint i。 bit dat。 DS=0。i++。 //i++ for delay DS=1。i++。i++。 dat=DS。 遼寧科技大學(xué)本科生畢業(yè)設(shè)計 第 31 頁 i=8。while(i0)i。 return (dat)。 } uchar tmpread(void) //read a byte date { uchar i, j, dat。 dat=0。 for(i=1。i=8。i++) { j=tmpreadbit()。 dat=(j7)|(dat1)。 //讀出的數(shù)據(jù) 最低位在最前面,這樣剛好一個字節(jié)在DAT里 } return(dat)。 } void tmpwritebyte(uchar dat) //write a byte to ds18b20 { uint i。 uchar j。 bit testb。 for(j=1。j=8。j++) { testb=datamp。0x01。 dat=dat1。 if(testb) //write 1 { DS=0。 遼寧科技大學(xué)本科生畢業(yè)設(shè)計 第 32 頁 i++。i++。 DS=1。 i=8。while(i0)i。 } else { DS=0。 //write 0 i=8。while(i0)i。 DS=1。 i++。i++。 } } } void tmpchange(void) //DS18B20 begin change { dsreset()。 delay(1)。 tmpwritebyte(0xcc)。 // address all drivers on bus tmpwritebyte(0x44)。 // initiates a single temperature conversion } uint tmp() //get the temperature { float tt。 uchar a, b。 dsreset()。 delay(1)。 遼寧科技大學(xué)本科生畢業(yè)設(shè)計 第 33 頁 tmpwritebyte(0xcc)。 tmpwritebyte(0xbe)。 a=tmpread()。 b=tmpread()。 temp=b。 temp=8。 //two byte pose a int variable temp=temp|a。 tt=temp*。 temp=tt*10+。 return temp。 } void readrom() //read the serial { uchar sn1, sn2。 dsreset()。 delay(1)。 tmpwritebyte(0x33)。 sn1=tmpread()。 sn2=tmpread()。 } void main(void) { uint distance_data。 uchar a。 float tem。 flag=0。 //標(biāo)志位, 1 表示收到回波, 0則未收到 test=0。 //控制燈閃爍 Trig=0。 TMOD=0x11。 //對定 時器 1 選擇 16位模式 遼寧科技大學(xué)本科生畢業(yè)設(shè)計 第 34 頁 IT0=0。 //設(shè)置觸發(fā)方式為低電平觸發(fā) IE0=0。 EA=1。 //開總中斷 tmpchange()。 //測出當(dāng)時溫度 ET0=0。 TR0=0。 while(1) { EA=0。 TH1=0。 TL1=0。 Trig=1。 //讓 TRIG 引腳為高電平 delay_20us()。 //延時 20us Trig=0。 //產(chǎn)生方波 while(Echo==0)。 //等待 Echo 變?yōu)榈碗娖剑撮_始發(fā)射超聲波 TR1=1。 //開始計時 succeed_flag=0。 EX0=1。 TF1=0。 EA=1。 while((TH125)amp。amp。(!IE0))。 //等待 25us 或者中斷產(chǎn)生(即收到回波) TR1=0。 //停止計時 EX0=0。 //關(guān)閉中斷 if(succeed_flag==1) //如果收到回波 { distance_data=outeH。 //先保存高 8位 distance_data=8。 //將高 8位左移,低八位則全置0 遼寧科技大學(xué)本科生畢業(yè)設(shè)計 第 35 頁 distance_data=distance_data|outeL。 //將高低八位組成新的 16位數(shù)據(jù) tem=tmp()。 //取得溫度 tem/=10。 tem=+*tem。 //得出當(dāng)前波速 tem/=2020。 distance_data*=tem。 distance_data=distance_data*126000/120200。 //代入晶振頻率及當(dāng)前波速算出距離 for(a=300。a0。a) { display(distance_data)。 //顯示距離 } } if(succeed_flag==0) //如果沒有收到回波 { distance_data=0。 test = !test。 } } } INTO_() interrupt 0 //外部中斷 0 { outeH =TH1。 outeL =TL1。 succeed_flag=1。 EX0=0。 } (完)
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1