【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.rhkb.cn/news/372101.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧生活新篇章,Vatee万腾平台领航前行

在21世纪的科技浪潮中,智慧生活已不再是一个遥远的梦想,而是正逐步成为我们日常生活的现实。从智能家居的温馨便捷,到智慧城市的高效运转,科技的每一次进步都在为我们的生活增添新的色彩。而在这场智慧生活的变革中,Va…

LabVIEW的JKI State Machine

JKI State Machine是一种广泛使用的LabVIEW架构,由JKI公司开发。这种状态机架构在LabVIEW中提供了灵活、可扩展和高效的编程模式,适用于各种复杂的应用场景。JKI State Machine通过状态的定义和切换,实现了程序逻辑的清晰组织和管理&#xff…

AI实践与学习7_AI解场景Agent应用预研demo

前言 学习大模型Agent相关知识,使用llama_index实现python版的Agent demo,根据AI解题场景知识密集型任务特点,需要实现一个偏RAG的Agent WorkFlow,辅助AI解题。 使用Java结合Langchain4j支持的RAG流程一些优化点以及自定义图结构…

go语言day11 错误 defer(),panic(),recover()

错误: 创建错误 1)fmt包下提供的方法 fmt.Errorf(" 格式化字符串信息 " , 空接口类型对象 ) 2)errors包下提供的方法 errors.New(" 字符串信息 ") 创建自定义错误 需要实现error接口,而error接口…

go 为什么是抢占式调度

GMP 模型 gmp模型是 golang 中用于调度管理 goroutine 的调度器。 调度器的发展史 在 Go 语言中,Goroutine 早期是没有设计成抢占式的,早期 Goroutine 只有读写、主动让出、锁等操作时才会触发调度切换。 这样有一个严重的问题,就是垃圾回…

【实习问题记录】Nodeclub本地部署

问题描述 在按照官方网站给出的教程一步一步操作以后发现出现以下报错: 问题分析 显示连接不上mongodb,分析报错可能是因为版本不匹配导致的,查看安装的mongodb版本发现是7.0.4,与目标版本不匹配,同时查看mongodb官…

如何选择AI数字人直播saas系统源码部署服务商?技巧分享!

随着人工智能时代的来临,AI数字人直播逐渐成为众多企业降本增效的主要模式之一。根据官方资料,由京东云言犀数字人提出的“闲时直播”场景,成本不足真人的1/10,交易转化率却能提升30%。这对于许多资金不足或想要在短视频直播板块减…

Go-Zero 框架使用 MongoDB,数据采集入库如此简单

目录 引言 环境准备 如何使用 main入口代码实现 实现采集网络接口 总结 其他资源 引言 Go-Zero 是一个高性能、可扩展的微服务框架,专为 Go 语言设计。它提供了丰富的功能,如 RPC、RESTful API 支持、服务发现、熔断器、限流器等,使开…

HSG金属表面缺陷检测

HSG金属表面缺陷检测 1. 项目背景1.1 项目简述1.2 项目目标 2. 解决方案3. 数据集3.1 收集各种缺陷的图片3.2 利用有限图片创造更多可能3.3 分割图像3.4 打标签 4. 部分代码4.1 数据集划分4.2图像分割4.3 训练模型4.4 预测 5. 预测结果 1. 项目背景 1.1 项目简述 iPad HSG 的…

【NLP学习路线的总结】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 目录 0. 👉前言1. 👉前置知识👉基础数学知识👉编程语言👉…

LabVIEW干涉仪测向系统

开发了一套基于LabVIEW的软件系统,结合硬件设备,构建一个干涉仪测向实验教学平台。该平台应用于信号处理课程,帮助学生将理论知识与实际应用相结合,深化对信号处理核心概念的理解和应用。 项目背景: 当前信号处理教学…

初识c++(命名空间,缺省参数,函数重载)

一、命名空间 1、namespace的意义 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全 局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名 冲突…

路径规划 | 基于蜣螂优化算法的栅格地图机器人路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 路径规划 | 基于蜣螂优化算法的栅格地图机器人路径规划(Matlab) 1.利用蜣螂算法DBO优化栅格地图机器人路径规划,效果如图所示,包括迭代曲线图、栅格地图等等&#xff5e…

【智能算法改进】多策略改进的蜣螂优化算法

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】蜣螂优化算法(DBO)原理及实现 2.改进点 混沌反向学习初始化 采用 Pwlcm 分段混沌映射,由于 Pwlcm 在其定义区间上具有均匀的密度函数,在特定的…

PyCharm中如何将某个文件设置为默认运行文件

之前在使用JetBrain公司的另一款软件IDEA的时候,如果在选中static main函数后按键altenter可以默认以后运行Main类的main函数。最近在使用PyCharm学习Python,既然同为一家公司的产品而且二者的风格如此之像,所以我怀疑PyCharm中肯定也有类似的…

day01:项目概述,环境搭建

文章目录 软件开发整体介绍软件开发流程角色分工软件环境 外卖平台项目介绍项目介绍定位功能架构 产品原型技术选型 开发环境搭建整体结构:前后端分离开发前后端混合开发缺点前后端分离开发 前端环境搭建Nginx 后端环境搭建熟悉项目结构使用Git进行版本控制数据库环…

【Mathematical14.0最新进阶教学】-1-基础计算拓展

我在真正使用Mathematica后,才发觉这个软件的神奇,但是又有对于不知道如何使用这个神奇软件,因此我将我学习《The Student’s Introduction to Mathematica and the Wolfram Language (Bruce F. Torrence, Eve A. Torrence) 》的一些心得进行…

【AI大模型】驱动的未来:穿戴设备如何革新血液、皮肤检测与营养健康管理

文章目录 1. 引言2. 现状与挑战3. AI大模型与穿戴设备概述4. 数据采集与预处理4.1 数据集成与增强4.2 数据清洗与异常检测 5. 模型架构与训练5.1 高级模型架构5.2 模型训练与调优 6. 个性化营养建议系统6.1 营养建议生成优化6.2 用户反馈与系统优化 7. 关键血液成分与健康状况评…

Appium Inspector介绍和使用

一、什么是Appium Inspector 官方介绍:Overview - Appium Inspector 检查器的主要目的是提供应用程序页面源代码的检查功能。它主要用于测试自动化开发,但也可用于应用程序开发 - 或者如果只是想查看应用程序的页面源代码! 从本质上讲&…

谈大语言模型动态思维流程编排

尽管大语言模型已经呈现出了强大的威力,但是如何让它完美地完成一个大的问题,仍然是一个巨大的挑战。 需要精心地给予大模型许多的提示(Prompt)。对于一个复杂的应用场景,编写一套完整的,准确无误的提示&am…