日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

备战蓝桥杯day20__超声波基本应用

發(fā)布時間:2023/12/29 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 备战蓝桥杯day20__超声波基本应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一,超聲波測距原理

? ? ? ?

藍橋杯超聲波模塊分2個部分,為發(fā)送模塊和接收模塊。發(fā)送模塊負責發(fā)送超聲波,然后開始計時,接收模塊負責接收反彈回來的超聲波,然后停止計時,由此我們可以推斷出測距公式

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? L=340*t/2=170*t(假定聲速為340m/s)

發(fā)送端接在單片機的P1^0,接收端接在P1^1。

二,代碼部分

該代碼實現(xiàn)基本距離的測量,超基本距離顯示999。

如何實現(xiàn)超聲測距,我們需要一下步驟:

1,發(fā)射超聲波

我這里發(fā)送的是8個40KHZ的超聲波信號,把TX置1為發(fā)送信號,置0為停止發(fā)送,通過延時發(fā)送穩(wěn)定的超聲波信號。

2,接收超聲波

接收超聲波比發(fā)送要復雜許多,我們需要打開定時器,我這里使用的是定時器0,16位自動重裝模式。基本原理就是通過定時器計時,當發(fā)送的超聲波,超時間沒有返回時TF0會置1,而且如果接收到返回的超聲波信號RX會置0,與定時器配合就可以知道測距的時間。

注意:在發(fā)送超聲波后再啟用定時器

3,數(shù)據(jù)處理

我們的時間t是放在TH0與TL0中的,需要進行處理才能取出來,再*0.017得到正確的距離

#include "reg52.h" #include "intrins.h" #include "smgshow.h" sbit TX=P1^0; sbit RX=P1^1; unsigned int distance; void Delay12us() //@12.000MHz {unsigned char i;_nop_();_nop_();i = 33;while (--i); }void Send_wave() {unsigned char i;for(i=0;i<8;i++){TX=1;Delay12us();TX=0;} } void Measure_distance() {unsigned int t;TMOD &=0xf0;TL0=0x00;TH0=0x00;TF0=0;TR0=0;EA=1;ET0=1;Send_wave();TR0=1;while((RX==1) && (TF0==0));TR0=0;if(TF0==0){t=(TH0<<8) | TL0;distance=t*0.017;}else{distance=999;TF0=0;} } void Display() {Display_SMG(5,smgnotdotduanma[distance/100]);Display_SMG(6,smgnotdotduanma[distance/10%10]);Display_SMG(7,smgnotdotduanma[distance%10]); } void Init_system() {HC573(4,0xff);HC573(5,0x00); } void main() {Init_system();while(1){Measure_distance();Display();} }

??while((RX==1) && (TF0==0));的作用,可以理解為等待接收的結(jié)果,一種是正常距離,一種是接收的時間過長也就是超正常距離了。當正常距離時RX置1,退出循環(huán),此時TF0=0。若超正常距離TF0置1,退出循環(huán)。

三,總結(jié)

對于超聲波的理解還不夠透徹,對于多少時間采樣一次,或者使用別的方式觸發(fā)采樣都不夠熟練,需要多加練習。

總結(jié)

以上是生活随笔為你收集整理的备战蓝桥杯day20__超声波基本应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。