【TB作品】51單片機 Proteus仿真 00013紅外proteus仿真循跡避障小車

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

實驗報告:智能小車系統設計與實現

一、背景介紹

本實驗旨在設計并實現一個基于STC89C52單片機控制的智能小車系統。該系統通過超聲波傳感器進行避障,通過紅外接收器實現遠程控制,同時具備循跡功能。整個系統的核心是單片機,它通過對各種傳感器和執行器的控制,實現智能小車的多種功能。

二、硬件介紹

  1. STC89C52單片機:主控芯片,負責處理所有傳感器數據及控制信號。
  2. 紅外接收器:接收遙控器的信號,實現遠程控制。
  3. 超聲波傳感器:用于檢測前方障礙物的距離,進行避障處理。
  4. 電機及驅動模塊:控制小車的運動,包括前進、后退、左轉、右轉等。
  5. LCD1602顯示屏:用于顯示當前小車的狀態信息,如距離、按鍵值等。
  6. 蜂鳴器:提供聲音提示。

三、器件連接

  1. 紅外接收器連接到單片機的P3^3引腳。
  2. 超聲波傳感器的Trig和Echo分別連接到P10和P11引腳。
  3. 電機驅動連接到單片機的P30、P31、P32、P36、P34、P35引腳。
  4. LCD1602顯示屏連接到單片機的P0端口。
  5. 蜂鳴器連接到P2^4引腳。

四、設計原理

1. 紅外接收與解碼

紅外接收器接收遙控器發出的信號,通過外部中斷1(INT1)進行處理,記錄脈沖時間并存儲在IR_receive_data數組中。定時器1以256us的周期記錄脈沖寬度,通過分析脈沖寬度確定接收的數據位值。解碼后,將按鍵值存儲在IR_receive_code中。

2. 超聲波測距

超聲波傳感器通過發送Trig信號觸發測距,Echo信號返回高電平時間用于計算距離。距離計算公式為:
[ \text{距離} = \frac{\text{高電平時間} \times 1.7}{100} ]

3. 電機控制

電機通過H橋電路進行驅動,控制信號分別連接到P3端口,實現前進、后退、左轉、右轉及停止功能。

4. LCD1602顯示

LCD1602顯示屏用于顯示當前小車狀態信息,如距離、按鍵值等。通過LCD1602_init初始化后,通過LCD1602_Print函數進行顯示操作。

5. 蜂鳴器提示

蜂鳴器通過PWM控制發出聲音提示,主要用于操作確認。

五、電路原理

電路設計包括電源模塊、傳感器模塊、執行器模塊及顯示模塊。每個模塊與單片機連接,并通過單片機的I/O口進行數據采集與控制。

六、程序原理

程序包括初始化、主循環及各功能模塊的實現。

1. 初始化

包括定時器、外部中斷、LCD1602顯示屏及各傳感器的初始化。

void Init_Timer0() {TMOD &= 0xf0;TMOD |= 0x01;        // 設T0為方式1TH0 = 0;TL0 = 0;            // 定時器0初始化裝載0ET0 = 1;            // 允許T0中斷EA = 1;             // 開啟總中斷
}void IR_receive_init() {IR_receive_time = 0;IR_receive_flag = 0;IR_receive_bit = 0;IR_receive_OK = 0;IR_receive_end = 0;TMOD |= 0x20;        // 設置定時器1為8位自動重裝計數TH1 = 0x00;TL1 = 0x00;         // 設置定時時間為256usET1 = 1;            // 定時器1中斷打開EA = 1;             // 總中斷打開TR1 = 1;            // 啟動定時器1
}

2. 主循環

主循環主要負責超聲波測距、紅外信號處理及執行相應的控制操作。

void main(void) {// 初始化LCD1602LCD1602_init();LCD1602_Print(0, 0, "KEY:");LCD1602_Print(0, 1, "Distance:");IR_receive_init();      // 紅外解碼設置程序int1init();             // 外部中斷設置Init_Timer0();while (1) {delay_ms(50);// 測量超聲波距離并顯示TR0 = 0;TH0 = 0;TL0 = 0;Trig = 1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();Trig = 0;while (!Echo);TR0 = 1;while (Echo);TR0 = 0;distance = Conut();// 顯示距離count = 0;disp[count++] = distance % 1000 / 100 + '0';disp[count++] = distance % 100 / 10 + '0';disp[count++] = distance % 10 / 1 + '0';disp[count++] = 'c'; disp[count++] = 'm';disp[count++] = 0;LCD1602_Print(9, 1, disp);// 按鍵處理if (IR_receive_OK) {IR_receive_OK = 0;IR_code();      // 紅外數據解碼if (IR_receive_end) {IR_receive_end = 0;IR_check(IR_receive_code[2]); // 紅外按鍵值處理程序if (KEY == 1) {AUTOMODE = !AUTOMODE;   // 自動模式開關} else if (KEY == 2) {forward();              // 前進} else if (KEY == 5) {left();                 // 左轉} else if (KEY == 6) {stop();                 // 停止} else if (KEY == 7) {right();                // 右轉} else if (KEY == 10) {backward();             // 后退}beep();     // 蜂鳴器提示IR_receive_init(); // 重新初始化紅外接收int1init();}}// 自動模式下的避障與循跡if (AUTOMODE) {Avoid();    // 避障tracking(); // 循跡}}
}

七、實驗結果

通過上述設計與實現,小車能夠實現紅外遙控、超聲波避障及自動循跡功能。實驗過程中,通過LCD1602實時顯示距離及按鍵狀態,方便調試與觀察。

八、結論

本實驗成功實現了基于STC89C52單片機的智能小車系統,具備紅外遙控、超聲波避障及自動循跡等功能。通過合理的硬件連接與程序設計,小車能夠穩定運行,實現預期功能。進一步優化可以考慮提高傳感器精度及增加更多智能功能。

資料

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

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

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

相關文章

YOLOv10改進 | 損失函數篇 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等損失函數

一、本文介紹 本文給大家帶來的是YOLOv10最新改進,為大家帶來最近新提出的InnerIoU的內容同時用Inner的思想結合SIoU、WIoU、GIoU、DIoU、EIOU、CIoU等損失函數,形成 InnerIoU、InnerSIoU、InnerWIoU、等新版本損失函數,同時還結合了Focus和…

LeetCode42(接雨水)[三種解法:理解動態規劃,雙指針,單調棧]

接雨水 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 這是一道困難題,難度確實有點層次.我們先來樸素思想走一波. 要求能接多少雨水,我們可以具化到每個硅谷,每個硅谷能存多少雨水,那么答案就是每個…

PDA:Prompt-based Distribution Alignment for Unsupervised Domain Adaptation

文章匯總 式中, y s y^s ys表示源域數據的one-hot ground-truth, K K K為類數, w i w_i wi?和 z ~ s \tilde{z}_s z~s?分別表示源域經過提示調優的最終文本表示和最終圖像表示的第 i i i類。 同理,為了進一步利用目標領域的數據…

防火墻詳解(USG6000V)

0、防火墻組網模式 防火墻能夠工作在三種模式下分別是路由模式、透明模式、旁路檢測模式、混合模式 0.1、路由模式 路由模式:防火墻全部以第三層對外連接,即接口具有IP 地址。一般都用在防火墻是邊界的場景下 防火墻需要的部署/配置: 接…

【入門篇】STM32尋址范圍(更新中)

寫在前面 STM32的尋址范圍涉及存儲器映射和32位地址線的使用。并且STM32的內存地址訪問是按字節編址的,即每個存儲單元是1字節(8位)。 一、尋址大小與范圍 地址線根數 地址編號(二進制) 地址編號數(即內存大小) <

實現基于Elasticsearch的搜索服務

實現基于Elasticsearch的搜索服務 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. Elasticsearch簡介 Elasticsearch是一個開源的分布式搜索引擎&#xff0c;提供強大的全文搜索和分析功能。本文…

10、DDD分層架構

微服務架構模型有很多種&#xff0c;例如洋蔥架構、CQRS和六邊形架構等。雖然這些架構模式提出的時代和背景不同&#xff0c;但其核心理念都是為了設計出“高內聚&#xff0c;低耦合”的微服務&#xff0c;輕松實現微服務的架構演進。DDD分層架構的出現&#xff0c;使微服務的架…

什么是ThreadLocal以及內存泄漏問題、hash沖突問題

ThreadLocal是什么 ThreadLocal類用來提供線程內部的局部變量 它主要有三大特性&#xff1a; 線程安全: 在多線程并發的場景下保證線程安全傳遞數據&#xff1a;通過ThreadLocal在同一線程傳遞公共變量線程隔離&#xff1a;每個線程的變量都是獨立的&#xff0c;不會互相影響…

這次讓我們從幾個點認識一下Mysql的Innodb

MySQL 的 InnoDB 存儲引擎是 MySQL 默認和最常用的存儲引擎之一。它主要關注的是高可靠性、性能以及完整的事務支持。以下是對 InnoDB 存儲引擎的詳細介紹&#xff1a; 1. 數據庫特性 1.1 事務支持 InnoDB 是完全支持事務的存儲引擎&#xff0c;支持四種主要的事務隔離級別&…

【uniapp-ios】App端與webview端相互通信的方法以及注意事項

前言 在開發中&#xff0c;使用uniapp開發的項目開發效率是極高的&#xff0c;使用一套代碼就能夠同時在多端上線&#xff0c;像筆者之前寫過的使用Flutter端和webview端之間的相互通信方法和問題&#xff0c;這種方式本質上實際上是h5和h5之間的通信&#xff0c;網上有非常多…

ios身份證實名認證接口開發示例助力電商物流實名認證

為了更好的利用貨車資源&#xff0c;也方便企業正常的運送貨物&#xff0c;“互聯網電商”平臺可謂風起云涌。貨車司機和有發貨需求的人們可以在物流平臺注冊&#xff0c;貨車司機接單為有運送需求的用戶提供有償貨運服務。那么&#xff0c;如何讓企業放心的將貨物安心的交予貨…

物聯網實訓室建設可行性報告

一、建設物聯網實訓室的目的和意義 隨著信息技術的快速發展&#xff0c;物聯網&#xff08;IoT&#xff09;已成為推動社會進步和經濟發展的關鍵技術之一。物聯網技術的集成應用&#xff0c;不僅能夠提高生產效率&#xff0c;還能促進智慧城市、智能家居、智能農業等多個領域的…

python04——類(基礎new)

類其實也是一種封裝的思想&#xff0c;類就是把變量、方法等封裝在一起&#xff0c;然后可以通過不同的實例化對其進行調用操作。 1.類的定義 class 類名&#xff1a; 變量a def __init__ (self,參數2&#xff0c;參數2...)&#xff1a;初始化函數&#xff01;&#xff01;&…

vivado DELAY_VALUE_XPHY、DIFF_TERM

延遲_值_XPHY PORT對象上的DELAY_VALUE_XPHY屬性指定要添加的延遲量 Versal XPHY邏輯接口的輸入或輸出路徑。在的早期階段 opt_design在重新生成高級I/O向導IP時 DELAY_VALUE_XPHY值將從PORT復制到的XPHY實例上 輸入或輸出路徑。Vivado設計套件中存在DRCs&#xff0c;以確保 DE…

簡單實現聯系表單Contact Form自動發送郵件

如何實現簡單Contact Form自動郵件功能&#xff1f;怎樣簡單設置&#xff1f; 聯系表單不僅是訪客與網站所有者溝通的橋梁&#xff0c;還可以收集潛在客戶的信息&#xff0c;從而推動業務的發展。AokSend將介紹如何簡單實現一個聯系表單&#xff0c;自動發送郵件的過程&#x…

java Collections類介紹

Java 的 java.util.Collections 類提供了一組靜態方法&#xff0c;用于操作或返回集合&#xff08;如列表、集合和映射&#xff09;。Collections 類是一個實用工具類&#xff0c;旨在為集合提供便捷的算法和操作。以下是對 Collections 類及其常用方法的介紹。 常用方法總結 …

【游戲客戶端】大話slg玩法架構(一)滾動基類

【游戲客戶端】大話slg玩法架構&#xff08;一&#xff09;滾動基類 大家好&#xff0c;我是Lampard家杰~~ 今天我們兌現諾言&#xff0c;給大家分享SLG玩法的實現j架構&#xff0c;關于SLG玩法的介紹可以參考這篇上一篇文章&#xff1a;【游戲客戶端】制作率土之濱Like玩法 PS…

保險理論與實踐

《保險理論與實踐》是由中國保險學會主辦的學術集刊&#xff0c;于2016年1月正式創辦&#xff0c;致力于發表權威、嚴謹、高質量的理論研究、政策研究和實務研究成果&#xff0c;強調學術性與政策性、理論性與實踐性的有機結合。本刊由中國金融出版社公開出版&#xff0c;每月下…

postmessage()在同一域名下,傳遞消息給另一個頁面

這里是同域名下&#xff0c;getmessage.html&#xff08;發送信息&#xff09;傳遞消息給index.html&#xff08;收到信息&#xff0c;并回傳收到信息&#xff09; index.html頁面 <!DOCTYPE html> <html><head><meta http-equiv"content-type"…

機器學習統計學基礎 - 最大似然估計

最大似然估計&#xff08;Maximum Likelihood Estimation, MLE&#xff09;是一種常用的參數估計方法&#xff0c;其基本原理是通過最大化觀測數據出現的概率來尋找最優的參數估計值。具體來說&#xff0c;最大似然估計的核心思想是利用已知的樣本結果&#xff0c;反推最有可能…