藍橋杯微控制器設計與開發 超聲波模組

2021-10-20 05:06:19 字數 3415 閱讀 3335

超聲波發射模組向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時

因為超聲波在空氣中的傳播速度受溫度影響。聲波在空氣中的傳播速度與溫度的關係是:

在20攝氏度時,聲速v = 332 + 0.607t (m/s)

利用超聲波進行距離測量,要求精度一般都不高,取20攝氏度時候的聲速344m/s進行計算,再進行適當的補償就可以。所以,其計算公式為:距離l = 344m/s * t / 2 = 172m/s * t 。

產生8個40khz的超聲波訊號,通過tx引腳發射出去

啟動定時器,計算計數脈衝。

等待超聲波訊號返回,如果接收到反射回來的訊號,rx引腳變為低電平

停止定時器,讀取脈衝個數,即獲得時間t。

根據公式,l = v * t /2m進行距離的計算。

注:超聲波測距是一直以來都是國賽中重要的考點,幾乎每屆必考。雖然省賽還沒有考過,但也不能排除以後不考

在藍橋杯微控制器的競賽綜合平台ct107d中,超聲波模組的tx引腳接到微控制器的p1.0埠,rx引腳接到微控制器的p1.1埠。設計程式,進行超聲波測距,最大測量範圍約140cm。測量結果用cm作為顯示單位,顯示在數碼管的最左邊三位。如果測量距離超出範圍,則以「f」作為標誌,顯示在數碼管的最右邊一位。

sonic.c

#include

"sys.h"

#define sonic_nop ;

void

send_sonic

(void

)//傳送8個40khz脈衝訊號

}unsigned

intmea_distance()

else

//超出測量範圍

th1 =0;

tl1 =0;

return distance;

}

main.c

#include

"sys.h"

bit mea_sonic_flag;

void

main()

nixie_drive

(distance);}

}

sys.h

#ifndef __sys_h__

#define __sys_h__

//標頭檔案包含

#include

#include

//管腳宣告

sbit tx = p1^0;

//超聲波傳送

sbit rx = p1^1;

//超聲波接收

//變數型別宣告

typedef

unsigned

int uint;

typedef

unsigned

int u16;

typedef

unsigned

char uchar;

typedef

unsigned

char u8;

//外部變數宣告

//函式宣告

void

all_init()

;void

operate_delay

(unsigned

int ms)

;void

hc138_set

(u8 channel)

;void

timer0init()

;void

timer1init

(void);

void

nixie_scan()

;void

nixie_show()

;void

nixie_drive

(u16 dat)

;void

send_sonic()

;unsigned

intmea_distance()

;#endif

nixie.c

#include

"sys.h"

// 0 1 2 3 4 5 6 7

uchar code nixie=

;//共陽數碼管碼字

uchar nixiebuff=

;uchar smg1,smg2,smg3,smg4,smg5,smg6,smg7,smg8;

uchar code symbol=

;//全滅,-

void

nixie_scan()

void

nixie_show()

void

nixie_drive

(u16 dat)

else

}

sys.c

#include

"sys.h"

extern bit mea_sonic_flag;

/***@brief 外設初始化

*@param[in] none

*@return none

**/void

all_init()

/***@brief 延時函式

*@param[in] 延時多少ms(0~65535)

*@return none

**/void

operate_delay

(u16 ms)

/***@brief 74hc138解碼器通道選擇

*@param[in] channel (通道)

*@return none

**/void

hc138_set

(u8 channel)

}void

timer0init

(void

)//1毫秒@11.0592mhz

void

timer1init

(void

)//0微秒@11.0592mhz

void

timer0

() interrupt 1

nixie_show()

;nixie_scan()

;}

藍橋杯微控制器之超聲波

首先看原理圖 這裡的超聲波模組主要是介紹的是藍橋杯板子上的超聲波模組,超聲波的原理其實很簡單的 就是由於微控制器乙個引腳連線到發射模組 就可以利用這個引腳來發出一定頻率的訊號,而在 而在發射模組發射出的超聲波被接受回來之後 就會在接收端連線的一極產生下降沿 我們利用乙個定時器來計數 記錄下來回的時間...

超聲波模組與C51微控制器進行測距

一.超聲波感測器簡介 1.型號 hc sr04 2.外觀 3.管腳介紹 hc sr04模組針腳含義 針腳名稱 針腳含義 vcc模組供電的正極 gnd模組供電的負極 trig 超聲波發出超聲波的管腳 echo 當由高電平轉化成低電平之後表示接收到返回超聲波 4.主要引數 二.超聲波測距模組原理 1.時...

CT107D(藍橋杯)開發板超聲波模組

超聲波模組測距的簡單寫法 1 簡單原理 通過p10引腳傳送8個40khz的脈衝之後開始定時器1開始計時 當p11埠收到訊號的時候停止計時 因為聲音在空氣傳播的速度為340m s,又因為微控制器乙個機器週期 就是定時器計一次時間 大概是1us 所以每us的距離大概為340 10 3cm 10 6 因為...