利用HC SR04和51微控制器製造超聲波測距模組

2021-10-07 20:19:32 字數 1855 閱讀 3618

硬體電路分析:

1.hc-sr04一共有4個引腳,分別為vcc,gnd,trig,echo。

​ 分別接入51微控制器的vcc,gnd,已經io口p10和p32;

2.利用串列埠,將距離資料在電腦上用除錯助手列印出來

3.led點亮,提示系統正常執行

由圖我們可以簡而易的:

hc-sr04的工作原理:

1.採用io口trig觸發測距,給至少10us的高電平訊號來啟動模組。

2.模組自動傳送8個40khz的方波,自動檢測是否有訊號返回。

3.如果有訊號返回,通過io口echo輸出乙個高電平,高電平持續的時間就是超聲波從發射到返回的時間。通過公式計算測試距離=(高電平時間*聲速(340m/s))/2

即我們只需要提供乙個 10us 以上脈衝觸發訊號,該模組內部將

發出 8 個 40khz 週期電平並檢測回波。一旦檢測到有回波訊號則輸出迴響訊號。

迴響訊號的脈衝寬度與所測的距離成正比。由此通過發射訊號到收到的迴響訊號

時間間隔可以計算得到距離。

距離公式公式:us/58=厘公尺或者 us/148=英吋;或是:距離=

高電平時間*聲速(340m/s)/2;建議測量週期為 60ms 以上,以防止發射訊號對

迴響訊號的影響。

示例將採用定時器0計算高電平時間

void time0_init(void) //定時器0配置函式

切記void time0(void) interrupt 1 //空的定時器0服務函式,沒有可能會發生不知名的錯誤

void ultrasonic_init(void) //超聲波初始化函式

void startmodule(void) //開始模組,根據手冊得知將trig拉高20us左右

計算距離的方式有很多種,示例只是其中一種

其中的s是全域性變數int s; (也可是float數,列印時使用%f)

void conut(void) //計算距離的函式

void ultrasonic_distance(void)

/* 檢測是否有訊號回來,有則進行計算,有訊號返回,通過io口echo輸出乙個高電平,

高電平持續的時間就是超聲波從發射到返回的時間。通過公式計算測試距離=(高電平時間*聲速(340m/s))/2 */

**有關超聲波的相關函式封裝完畢,在主函式進行呼叫即可**
串列埠的配置

串列埠的配置不進行過多描述,51微控制器基礎知識就有教,只有配置好相關暫存器即可在主函式使用

串列埠傳送以及接受的資訊都存放在sbuf中

void senddelay(unsigned long time) //串列埠傳送訊息時的延遲函式

{int i = 0;

int j = 0;

for(i = 0;i<100;i++)

{for(j = 0;j只要在主函式中呼叫inituart()進行串列埠初始化

向串列埠列印資訊時使用sprintf();和sendmes(buf);即可

切記要將波特率設定成串列埠初始化時選用的波特率,示例中選用的波特率是115200

微控制器 51微控制器時鐘 利用中斷

include include delay delay.h define timeport p0 sbit bit select p2 0 sbit seg select p2 1 sbit key1 p2 2 sbit key2 p2 3 code unsigned char timedata 1...

51微控制器多工機制的實現策略

0 引言 51微控制器在微型智慧型控制系統中應用很廣,隨著人們對控制系統的要求不斷提高,51微控制器的功能侷限越發明顯。特別是51系列微控制器不具有實時多工支援功能,大大限制其在控制系統中的進一步發展。而多工恰恰是現在作業系統的突出特點,將多工機制引入51微控制器系統,可以大大提高先有微控制器系統的...

51微控制器利用定時器中斷製作秒錶

include define led p0 sbit la p2 4 對應著138解碼器c,b,a埠 sbit lb p2 3 sbit lc p2 2 sbit start p3 1 三個鍵控制開關和暫停 sbit pulse p3 0 sbit end p3 2 char count 中斷次數定...