【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.mzph.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;反推最有可能…