亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 547|回復: 0
打印 上一主題 下一主題
收起左側

使用8051單片機的超聲波測距儀

[復制鏈接]
跳轉到指定樓層
樓主
本文將介紹一款基于8051單片機的簡易超聲波測距傳感器。該傳感器可測量最遠2.5米的距離,精度為1厘米。AT89S51單片機和HC-SR04超聲波傳感器模塊構成了該電路的基礎。超聲波模塊向目標物體發送信號,接收反射信號,并輸出一個周期與距離成正比的波形。單片機接收該信號,進行必要的處理,并在3位七段數碼管上顯示相應的距離值。該電路廣泛應用于停車傳感器、障礙物預警系統、地形跟隨機器人、工業測距等領域。

HC-SR04超聲波模塊

HC-SR04是一款專為嵌入式項目設計的超聲波測距模塊。其分辨率為0.3厘米,測量范圍為2厘米至500厘米。該模塊采用5V直流電源供電,待機電流小于2mA。該模塊發射超聲波信號,接收其反射信號,測量兩次事件之間的時間間隔,并輸出一個波形,該波形的高電平周期由測量時間調制,測量時間與距離成正比。HC-SR04 模塊的圖片如下所示。

HC-SR04 超聲波測距模塊

HC-SR04 超聲波測距模塊

該模塊內置電路使其幾乎全自動運行,編程人員只需發送一個觸發信號即可啟動發射和接收反射信號,從而計算距離。HC-SR04 有四個引腳:Vcc、Trigger、Echo 和 GND,以下將詳細介紹。

VCC:此引腳連接 5V 直流電源電壓。

Trigger:此引腳用于施加啟動發射的觸發信號。觸發信號必須是持續時間為 10μs 的高電平脈沖。當模塊接收到有效的觸發信號時,它會從發射器發射 8 個 40kHz 的超聲波脈沖。接收器接收到反射的聲音信號。

回聲:模塊在此引腳輸出一個持續時間與距離成正比的高電平波形。

GND:此引腳接地。

HC-SR04 時序圖

HC-SR04 時序圖



從時序圖中可以看出,40kHz脈沖序列在10μs觸發脈沖之后立即發射,音頻輸出則在一段時間后接收。下一個觸發脈沖只能在音頻信號衰減后才能引入,這段時間稱為一個周期。HC-SR04的周期不得小于50ms。根據技術文檔,可以使用以下公式,根據反射脈沖的寬度計算距離:
距離(厘米)= 反射脈沖寬度(微秒)/ 58

距離(英寸)= 反射脈沖寬度(微秒)/ 148

基于 8051 單片機的超聲波測距電路圖

基于單片機的超聲波測距電路圖





超聲波模塊通過引腳 P3.0 和 P3.1 連接到微控制器。端口 0 用于向屏幕傳輸 8 位顯示數據,端口 P1.0、P1.1 和 P1.2 用于向相應的顯示單元 D1、D2 和 D3 傳輸顯示控制信號。按鈕 S1、電容 C3 和電阻 R9 構成噪聲復位電路。電容 C1、C2 和晶振 X1 與時鐘電路相關。

程序。

ORG 00H // 原點

MOV DPTR,#LUT // 將查找表 (LUT) 的地址移動到 DPTR

MOV P1,#00000000B // 將 P1 設置為輸出端口

MOV P0,#00000000B // 將 P0 設置為輸出端口

CLR P3.0 // 將 P3.0 設置為發送觸發信號的輸出端口

SETB P3.1 // 將 P3.1 設置為接收回顯信號的輸入端口

MOV TMOD,#00100000B // 將定時器 1 設置為模式 2 自動重載定時器

MAIN: MOV TL1,#207D // 加載初始計數值

MOV TH1,#207D // 加載重載值

MOV A,#00000000B // 清零累加器

SETB P3.0 // 開始觸發脈沖

ACALL DELAY1 // 為觸發脈沖設置 10 微秒的寬度

CLR P3.0 // 結束觸發脈沖。脈沖

此處:JNB P3.1,此處 // 循環至此處,直到收到回聲

返回:SETB TR1 // 啟動定時器1

此處1:JNB TF1,此處1 // 循環至此處,直到定時器溢出(例如:計數48)

CLR TR1 // 停止定時器

CLR TF1 // 清除定時器標志1

INC A // 每次定時器1溢出時,A值加一

JB P3.1,返回 // 如果仍有回聲,則跳轉至返回

MOV R4,A // 將A的值保存到R4

ACALL DLOOP // 調用顯示循環

SJMP MAIN // 跳轉至主循環

DELAY1:MOV R6,#2D // 延遲10微秒

LABEL1:DJNZ R6,LABEL1

返回

DLOOP:MOV R5,#100D // 將R5的值設置為100D

返回1:MOV A,R4 // 將A的值加載到R4 R4 到 A

MOV B,#100D // 將 100D 加載到 B 寄存器

DIV AB // 分離出第一個數字

SETB P1.0 // 激活 LED 顯示單元 D1

ACALL DISPLAY // 調用 DISPLAY 子程序

MOV P0,A // 將第一個數字的驅動模式移動到 P0 寄存器

ACALL DELAY // 延遲 1 毫秒

ACALL DELAY

MOV A,B // 將第一次除法的余數移動到 A 寄存器

MOV B,#10D // 將 10D 加載到 B 寄存器

DIV AB // 分離出第二個數字

CLR P1.0 // 關閉 LED 顯示單元 D1

SETB P1.1 // 激活 LED 顯示單元 D2

ACALL DISPLAY

MOV P0,A // 將第二個數字的驅動模式移動到 P0 寄存器

ACALL DELAY

ACALL DELAY

MOV A,B // 將第二次除法的余數移動到 A 寄存器

CLR P1.1 // 關閉 LED 顯示單元 D2

SETB P1.2 // 激活 LED 顯示單元 D3

ACALL DISPLAY

MOV P0,A // 將第三位數字的驅動模式移動到 P0

ACALL DELAY

ACALL DELAY

CLR P1.2 // 關閉 LED 顯示單元 D3

DJNZ R5,BACK1 // 重復顯示循環 100 次

RET

DELAY: MOV R7,#250D // 延遲 1 毫秒

LABEL2: DJNZ R7,LABEL2

RET

DISPLAY: MOVC A,@A+DPTR // 獲取 A 中內容的數字驅動模式

CPL A // 對數字驅動模式進行補碼(參見注釋 1)

RET

LUT: DB 3FH // 查找表 (LUT) 從此處開始

DB 06H

DB 5BH

DB 4FH

DB 66H

DB 6DH

DB 7DH

DB 07H

DB 7FH

DB 6FH

結束
程序的第一部分設置初始條件。端口 0 和端口 1 設置為輸出端口,用于發送相應的數字控制信號和數字控制信號。端口 3.0 設置為輸出引腳,用于向超聲波模塊發送觸發信號以啟動發射;端口 3.1 設置為輸入引腳,用于接收反射信號。微控制器的 TMOD 寄存器被加載,使定時器 1 工作在 2 位 8 位自動重載模式。此處未使用微控制器的定時器 0。在程序的下一部分(主循環)中,定時器 1 的 TL1 和 TH1 寄存器被加載初始值。TL1 被加載初始值,從該值開始計數,并持續計數直到循環結束(即 255D)。當循環發生時,TF1 標志位被置位,TL1 自動加載 TH1 中存儲的重載值,該序列重復執行,直到程序將 TR1 置低。TF1 在第一次循環后變為高電平,如果希望它作為每次循環的指示器,則必須在每次循環后使用程序將其清除。在主循環的下一部分,P3.0 被置高 10 微秒,然后清除以產生一個 10 微秒的觸發脈沖。超聲波模塊在接收到此觸發信號后會發射一個 40kHz 的脈沖波形,程序會等待直到在 P3.1 接收到有效的反射信號。反射信號的脈沖寬度與到障礙物的距離成正比,因此程序的下一個任務是測量脈沖寬度。當 P3.1 接收到有效的反射脈沖時,定時器 1 啟動并執行后續操作。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表