藍橋杯----超聲波

(一)、超聲波

1、原理(圖 一)

? ????發送信號階段:單片機通過翻轉發送的引腳P1^0,發送8個40MHZ的方波,此時開始計時。

? ? ? 等待接收信號:通過單片機的接收引腳P1^1檢測,未接收到信號時,引腳處于高電平1;接收到信號時,引腳處于低電平0,此時停止計時。如果距離過遠的話,定時器會超出計時的范圍,數據溢出,成為一個無效的數據。

?? ????計算距離:我們通過計算發送與接收之間的時間間隔,再利用數學公式Distance=v * t/2 (v代表聲速340m/s ,v*t代表來回的距離,除2后就是要測量的距離),注意此時我們的單位是cm,而且測量的t單位為us,所以還需Distance還需 *103*10-6,換算成最終公式Distance = 0.017 * t (單位cm)

? ? ? ? ? ? ? ? ? ? ? ? 圖 一 單片機超聲波原理

??

2、代碼解讀

圖 二 前置工作:開始需要引用頭文件,_nop()函數需要定義INTRINS.h,要生成40MHZ方波,通過計算可知周期為25us。注意此時i = 33可以進行少許修改33-37都可以試試,哪個數據更加穩定就用哪個。

? ? ? ? ? ? ? ?? ?圖 二 超聲波代碼解讀(前置階段)

????????????????????????

圖 三 初始化工作:產生8個40MHZ方波,方波占空比為50%,占空比是高電平在一個周期中所占時間比,因此可以先拉高引腳,12us后再拉低引腳。stc-isp無法生成12.5us精度的延時,所以可以通過現象試一試12us、13us哪一個更適合。

? ? ? ? ? ? ? ?? 圖 三 超聲波代碼解讀(初始化階段)

??? ?圖 四做完準備工作后,就可以開始寫測距的函數啦,這里我們用PCA計數器來計時。51單片機本身計時器比較少,定時器0需要用于顯示功能掃描,定時器可能用于NE555頻率獲取,定時器2一般用于串口,當然,超聲波也可以用定時器1。CMOD=0x00就是初始化PCA計數器,CL = CH = 0就是讓它高八位與低八位為0。

? ? ? ? ? ? ? ? ?圖 超聲波代碼解讀(測距階段)

附參考底層代碼

#include <STC15F2K60S2.H>
#include <INTRINS.h>sbit Tx = P1^0;
sbit Rx = P1^1;void Delay12us(void)	//@12.000MHz
{unsigned char data i;_nop_();_nop_();i = 36;    //注意根據獲取數據穩定性作修改while (--i);
}void Ultra_Init(void)  //發送8個40HZ方波
{unsigned char i;EA = 0;   for(i = 0;i<8;i++){Tx = 1;Delay12us();Tx = 0;Delay12us();}EA = 1;
}unsigned char Ultra_Distance(void)
{unsigned int Time;   //注意為int類型數據CMOD = 0x00;         //啟動外部定時器CH = CL = 0;         //清空高八位與低八位Ultra_Init();CR = 1;   //初始化發送后開始計時while((Rx == 1) && (CF == 0)); //等待返回波或者距離太遠跳出循環CR = 0;   //停止計時if(CF == 0)  //計時變量沒有超限{Time = (CH<<8)|CL;return Time*0.017;  //正常返回數據}else         //計時變量超限{CF = 0;  //手動拉低標志位重新開始計時return 0;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91516.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91516.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91516.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java學習-運算符

1.在代碼中&#xff0c;如果有小數參與計算&#xff0c;結果有可能不精確。2.整數參與計算&#xff0c;結果只能是整數。3.數字進行運算時&#xff0c;數據類型不一樣不能運算&#xff0c;需要轉成一樣的&#xff0c;才能運算。&#xff08;1&#xff09;隱式轉換&#xff08;自…

一句話指令實現“2D轉3D”、“圖片提取線稿”

你是否曾為一張2D圖片無法完美展示3D效果而遺憾&#xff1f;是否曾因需要將手繪草圖轉為清晰線稿而耗時費力&#xff1f;這些曾讓設計師、電商賣家、內容創作者頭疼的難題&#xff0c;如今只需一句話指令&#xff0c;即可迎刃而解。一、案例一&#xff1a;2D圖片→3D模型痛點場…

層次聚類:無需“猜”K值,如何讓數據自己畫出“家族圖譜”?

層次聚類&#xff1a;無需“猜”K值&#xff0c;如何讓數據自己畫出“家族圖譜”&#xff1f;&#x1f44b; 大家好&#xff0c;我是小瑞瑞&#xff01;歡迎回到我的專欄&#xff01; 在上一期&#xff0c;我們學會了強大的K-Means算法&#xff0c;但它也給我們留下了一個“靈魂…

數據結構:鏈表(Linked List)

目錄 結構推導 回到最原始的問題 —— 我們如何存數據&#xff1f; 第二步&#xff1a;我們來看看數組的限制 第三步&#xff1a;那我們該怎么做呢&#xff1f; 第四步&#xff1a;我們推導鏈表的數據結構 結構講解 什么是鏈表&#xff1f; 什么是節點&#xff1f; …

[RK3566-Android11] U盤頻繁快速插拔識別問題

問題描述 做老化測試時&#xff0c;在使用U盤頻繁快速插拔的情況下&#xff0c;SDCard目錄會突然被Kill掉&#xff0c;然后又重新掛載上&#xff0c;這會導致系統及APP的數據因為讀寫異常&#xff0c;從而界面卡死正常U盤插拔不應該導致內部存儲卸載解決方案&#xff1a; SDK根…

【Golang】Go語言Map數據類型

Go語言Map數據類型 文章目錄Go語言Map數據類型一、Map1.1.1、map定義1.1.2、map的基本使用1.1.3、判斷某個鍵是否存在1.1.4、map的遍歷1.1.5、使用delete()函數刪除鍵值對1.1.6、按照指定順序遍歷map1.1.7、元素為map類型的切片1.1.8、值為切片類型的map一、Map map是一種無序…

Orange的運維學習日記--23.Linux計劃任務詳解

Orange的運維學習日記–23.Linux計劃任務詳解 文章目錄Orange的運維學習日記--23.Linux計劃任務詳解一次性計劃任務atd 服務at 命令基本語法交互式示例腳本文件示例timespec 格式示例查看與管理任務查看當前隊列查看任務詳細內容刪除任務用戶權限控制用戶周期性計劃任務查看任務…

Ubuntu 24.04.2 LTS 安裝mysql8.0.36保姆級教程(從安裝到遠程連接)

目錄 前言 一、系統準備 二、安裝 MySQL 8.0.36 1. 查看可用版本 2.如果沒有對應版本則需要手動下載mysql-apt-config&#xff08;有則跳過&#xff09; 2.1下圖是mysql-apt-config各版本對應的mysql版本 2.2下載mysql apt repository 2.3安裝 MySQL APT Repository 包 …

【LLM】講清楚MLA原理

需要你對MHA、MQA、GQA有足夠了解&#xff0c;相信本文能幫助你對MLA有新的認識。 本文內容都來自https://www.youtube.com/watch?v0VLAoVGf_74&#xff0c;如果閱讀本文出現問題&#xff0c;建議直接去看一遍。 按照Deepseek設定一些參數值&#xff1a;輸入token長度n10&…

谷歌采用 Ligero 構建其 ZK 技術棧

1. 引言 前序博客有&#xff1a; Ligero 和 Ligetron 中的 MPC 和 ZKLigetron&#xff1a;Nim Network開發的針對AI的zkVMLigetron&#xff1a;基于MPC-In-The-Head范式的zkVM簡介 在隱私保護身份驗證領域邁出重要一步&#xff0c;谷歌最近宣布 將零知識證明&#xff08;ZKP…

Flutter渲染引擎:Impeller和Skia

一、Impeller 渲染引擎的發布時間Impeller 是 Flutter 團隊為解決 Skia 引擎在移動端&#xff08;尤其是 iOS 平臺&#xff09;的性能問題而開發的全新渲染引擎&#xff0c;其發展歷程如下&#xff1a;首次公開&#xff1a;2021 年 Google I/O 大會上首次提及&#xff0c;作為 …

網絡編程-加密算法

目錄 一.網絡編程基礎 1. 概述 2. IP地址 3. 域名 4. 網絡模型 5. 常用協議 6. 小結 二.TCP編程 1. 什么是Socket&#xff1f; 2. 服務器端 3. 客戶端 4. Socket流 5. 小結 三.UDP編程 1. 概述 2. 服務器端 3. 客戶端 4. 小結 案例&#xff1a; 四.加密算法 …

【網絡工程師軟考版】網絡安全

任何形式的網絡服務都會導致安全方面的風險&#xff0c;問題是如何將風險降到最低程度&#xff0c;目前的網絡安全措施有數據加密、數字簽名、身份認證、防火墻、特征過濾等。所涉內容&#xff1a;1、網絡安全基礎2、加密技術與哈希算法3、數字簽名4、數字證書5、VPN技術6、防火…

深入淺出設計模式——創建型模式之建造者模式 Builder

文章目錄建造者模式簡介建造者模式結構建造者模式代碼實例定義產品類House定義建造者定義抽象建造者AbstractBuilder定義具體建造者定義指揮者客戶端代碼示例運行結果建造者模式總結代碼倉庫建一棟房子總共分幾步&#xff1f;建造者模式告訴你答案&#xff01;“把大象裝冰箱&a…

OpenVLA: 論文閱讀 -- 開源視覺-語言-行動模型

更多內容&#xff1a;XiaoJ的知識星球 目錄OpenVLA&#xff1a;開源視覺-語言-行動模型1. 介紹2. 相關工作1&#xff09;視覺條件語言模型&#xff08;Visually-Conditioned Language Models&#xff09;2&#xff09;通用型機器人策略&#xff08;Generalist Robot Policies&a…

JavaWeb(蒼穹外賣)--學習筆記15(分頁查詢PageHelper)

前言 終于開始學習做項目了&#xff0c;本篇文章是學習B站黑馬程序員蒼穹外賣的學習筆記&#x1f4d1;。我的學習路線是Java基礎語法-JavaWeb-做項目&#xff0c;管理端的功能學習完之后&#xff0c;就進入到了用戶端微信小程序的開發&#xff0c;這篇文章來看看分頁查詢&#…

金融專題|某跨境支付機構:以榫卯企業云平臺 VPC 功能保障業務主體安全

作者&#xff1a;SmartX 金融團隊 金融機構在信息化建設時面臨諸多數據合規要求&#xff0c;例如&#xff1a;不同業務區域之間互相隔離、數據庫僅能由關聯的應用服務器訪問、僅有特定的服務器允許被外網訪問等。對此&#xff0c;某跨境支付機構以 SmartX 榫卯企業云平臺構建私…

Win10下python環境變量呼出微軟應用商店

以下是三種徹底解決 Windows 10 的 CMD 中運行 python 命令彈出應用商店問題的方法??方法一&#xff1a;調整環境變量優先級?-或者直接刪除微軟應用商店的環境變量%USERPROFILE%\AppData\Local\Microsoft\WindowsApp???操作步驟??打開系統環境變量設置&#xff08;右鍵…

字節跳動“扣子”(Coze)開源:AI智能體生態的技術革命

&#xff08;以下借助 DeepSeek-R1 輔助整理&#xff09; 在2025年7月26日的深夜&#xff0c;GitHub上悄然出現的兩個倉庫——Coze Studio和Coze Loop&#xff0c;在48小時內狂攬超過9,000顆Star。字節跳動以Apache 2.0許可證將自家AI智能體平臺的核心技術徹底開源。 “當所有人…

Camx-usecase ID和pipeline的匹配源碼解讀

組件關系整體流程&#xff1a;camxhal3.cpp:704 open()camxhal3.cpp:1423 configure_streams()chxextensionmodule.cpp:2810 InitializeOverrideSessionchxusecaseutils.cpp:850 GetMatchingUsecase()chxadvancedcamerausecase.cpp:4729 Initialize()chxadvancedcamerausecase.…