当前位置: 首页 > news >正文

【【超声波避障小车代码】】

超声波避障小车代码

#include <reg51.h> 								//通用51头文件
#include <intrins.h>							//使用了_nop()_函数#define uchar unsigned char				//用 uchar 表示 unsigned char 类型
#define uint	unsigned int				//用 uint  表示 unsigned int  类型sbit ENA	= P0^6;
sbit IN1	=	P3^2;
sbit IN2	= P3^3;
sbit IN3	=	P3^4;
sbit IN4 	= P3^5;
sbit ENB	= P2^0;				sbit Echo = P1^1;									//超声波模块 Echo 接单片机P0.6
sbit Trig = P1^2;									//超声波模块 Trig 接单片机P0.7sbit DJ		= P1^0;void turnleft();
void turnright();
void straight();
void stop();
void count();
void run();
void hcsr04();
void delayms(uint ms);uint stime = 0;									  //测距数据,距离所用时间变量
uint timer = 0;								   	//定时器1,计时变量
uint timercar = 0;
uint S = 0;												//距离
uchar flag =0;										//定时器0溢出标志
uchar s_bai,s_shi,s_ge;						//距离数据,百位,十位,个位
uchar PWMA,PWMB;
uint counter;
uchar i,j;
uchar jiaodu;void  main()
{  TMOD|=0x11;		   			//定时器0定时器1,工作方式1TH0=0;TL0=0;          TH1=0xFE;		   				//500us定时TL1=0x33;ET0=1;            		//定时器0中断使能ET1=1;			   				//定时器1中断使能TR1=1;			   				//定时器1开始计时EA=1;			   					//开启总中断jiaodu = 3;while(1){hcsr04();						count();					 //计算距离run();}
}void delayms(uint ms)
{uint msi,msj;for(msi = 0;msi < ms;msi++)for(msj = 0;msj < 112;msj++);
}void run()
{if(jiaodu ==3 && S >= 15){straight();hcsr04();count();}else if(jiaodu ==3 && S < 15){stop();jiaodu = 2;delayms(200);hcsr04();count();}if(jiaodu == 2 && S >=15){turnright();delayms(500);jiaodu =3;delayms(200);hcsr04();count();}else if(jiaodu == 2 && S < 15){jiaodu = 4;delayms(200);hcsr04();count();}if(jiaodu == 4 && S >=15){turnleft();delayms(500);jiaodu =3;delayms(200);hcsr04();count();}else if(jiaodu == 4 && S <15){jiaodu =3;delayms(200);hcsr04();count();}
}
void straight()	//PWM 15
{IN1 = 1;IN2 = 0;PWMA = 25;IN3 = 1;IN4 = 0;PWMB = 25;
}
void turnleft() //PWM 60
{IN1 = 0;IN2 = 1;PWMA = 25;IN3 = 1;IN4 = 0;PWMB = 25;
}
void turnright()	//PWM 60
{IN1 = 1;IN2 = 0;PWMA = 25;IN3 = 0;IN4 = 1;PWMB = 25;
}
void stop()	//PWM 0
{IN1 = 0;IN2 = 0;PWMA = 0;IN3 = 0;IN4 = 0;PWMB = 0;
}
void hcsr04()
{Trig=1;			              _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 						//大于10us的触发信号Trig=0;while(!Echo);				//当Echo为零时等待TR0=1;			    			//开启计数while(Echo);					//当Echo为1时,计时并等待TR0=0;								//关闭计时
}
void count(void)
{stime=TH0*256+TL0;			//计数器每加一次,1usTH0=0;TL0=0;									//清零定时器0计数S=(stime*1.8)/100;      //换算距离,单位CM
}
void Tmr0_isr() interrupt 1  //T0中断用来计数器溢出,超过测距范围
{flag=1;							 			 //中断溢出标志
}void Tmr1_isr() interrupt 3 //T1中断用来扫描数码管和计500ms测距
{TH1=0xFE;							//500us中断TL1=0x33;i++;j++;counter++;//中断次数,即:多少个0.5msif(counter <= jiaodu) DJ = 1;//高电平占空比由变量jiaodu控制,jiaodu=1时高电平0.5ms,jiaodu=5时高电平2.5msif(counter > jiaodu && counter <= 40) DJ = 0;//低电平占空比,jiaodu=1时低电平19.5ms,jiaodu=5时低电平17.5msif(counter > 40) counter = 0;//脉宽20msif(i < PWMA){ENA = 1;}else {ENA = 0;if(i >= 100){i = 0;}}if(j < PWMB){ENB = 1;}else {ENB = 0;if(j >= 100){j = 0;}}
}          

相关文章:

【【超声波避障小车代码】】

超声波避障小车代码 #include <reg51.h> //通用51头文件 #include <intrins.h> //使用了_nop()_函数#define uchar unsigned char //用 uchar 表示 unsigned char 类型 #define uint unsigned int //用 uint 表示 unsigned int 类型sbit EN…...

TDI(Time Delay Integration)

TDI&#xff08;Time Delay Integration&#xff09;是一种特殊的图像采集技术&#xff0c;常用于线阵CCD&#xff08;Charge-Coupled Device&#xff09;相机。TDI技术可以在保持高分辨率的同时增强图像的信噪比&#xff08;Signal-to-Noise Ratio, SNR&#xff09;&#xff0…...

RHCE——一、安装部署及例行性工作

RHCE 一、网络服务1、准备工作2、RHEL9操作系统的安装部署3、配置并优化RHEL9操作系统4、网络配置5、修改网络连接 二、例行性工作1、单一执行的例行性工作2、循环执行的例行性工作 三、书写定时任务的注意事项四、系统级别的计划任务五、实验1、实验一&#xff1a;编写脚本tes…...

服务器数据库中了360后缀勒索病毒怎么办?360后缀勒索病毒的加密形式

随着信息技术的发展&#xff0c;企业的计算机服务器数据库变得越来越重要。然而&#xff0c;在数字时代&#xff0c;网络上的威胁也日益增多。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的计算机服务器遭到了360后缀勒索病毒的攻击&#xff0c;导致服务器内的所有…...

期权就是股指期货吗,哪个好做一点?

近年来&#xff0c;场内ETF期权产品不断扩大&#xff0c;越来越多的投资者有投资期权的想法。当我们看到期权时&#xff0c;我们会不知不觉地想到期货&#xff0c;虽然期货与期权只有一个字的区别&#xff0c;但实际上有很大的不同&#xff0c;那么期权就是股指期货吗&#xff…...

week32

本周目标&#xff1a; Belady现象的解释 操作系统 计组IO/MM chapter 刷力扣 ubuntu磁盘/网络/命令行进阶*1 tarball之类的使用 Question 大数据系统实验要学吗&#xff1f; 据说课讲得不好这是一门类似数据库的课程——大数据之hadoop / hive / hbase 的区别是什么&a…...

【数据库】P1 数据库基本常识

数据库基本常识 数据库 ≠ 数据库管理系统表&#xff08;Table&#xff09;SQL是什么 数据库 ≠ 数据库管理系统 数据库是保存有组织的数据的容器&#xff0c;数据库称为 DB&#xff08;DataBase&#xff09;&#xff1b;数据库管理系统是创建和操纵数据库的软件&#xff0c;数…...

c语言——计算两个数的乘积

//计算两个数的乘积 #include<stdio.h> #include<stdlib.h> int main() {double firstNumber,secondNumber,product;printf("两个浮点数&#xff1a;");scanf("%lf,%lf",&firstNumber,&secondNumber);productfirstNumber*secondNumber…...

单机模型并行最佳实践

单机模型并行最佳实践 模型并行在分布式训练技术中被广泛使用。 先前的帖子已经解释了如何使用 DataParallel 在多个 GPU 上训练神经网络&#xff1b; 此功能将相同的模型复制到所有 GPU&#xff0c;其中每个 GPU 消耗输入数据的不同分区。 尽管它可以极大地加快训练过程&…...

编程练习(3)

一.选择题 第一题&#xff1a; 函数传参的两个变量都是传的地址&#xff0c;而数组名c本身就是地址&#xff0c;int型变量b需要使用&符号&#xff0c;因此答案为A 第二题&#xff1a; 本题考察const修饰指针变量&#xff0c;答案为A,B,C,D 第三题&#xff1a; 注意int 型变…...

PyTorch学习笔记(十三)——现有网络模型的使用及修改

以分类模型的VGG为例 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) 设置为 False 的情况&#xff0c;相当于网络模型中的参数都是初始化的、默认的设置为 True 时&#xff0c;网络模型中的参数在数据集上是训练好…...

Python爬虫的scrapy的学习(学习于b站尚硅谷)

目录 一、scrapy  1. scrapy的安装  &#xff08;1&#xff09;什么是scrapy  &#xff08;2&#xff09;scrapy的安装 2. scrapy的基本使用  &#xff08;1&#xff09;scrap的使用步骤  &#xff08;2&#xff09;代码的演示 3. scrapy之58同城项目结构和基本方法&…...

“深入解析JVM:揭秘Java虚拟机的工作原理“

标题&#xff1a;深入解析JVM&#xff1a;揭秘Java虚拟机的工作原理 摘要&#xff1a;本文将深入解析Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;探讨其内部结构和运行机制。我们将介绍JVM的组成部分、类加载过程、内存管理、垃圾回收、即时编译等关键概念&…...

【数据结构与算法】十大经典排序算法-归并排序

&#x1f31f;个人博客&#xff1a;www.hellocode.top &#x1f3f0;Java知识导航&#xff1a;Java-Navigate &#x1f525;CSDN&#xff1a;HelloCode. &#x1f31e;知乎&#xff1a;HelloCode &#x1f334;掘金&#xff1a;HelloCode ⚡如有问题&#xff0c;欢迎指正&#…...

基于深度学习创建-表情符号--附源码

表情符号深度学习概述 如今,我们使用多种表情符号或头像来表达我们的心情或感受。它们充当人类的非语言线索。它们成为情感识别、在线聊天、品牌情感、产品评论等的关键部分。针对表情符号驱动的故事讲述的数据科学研究不断增加。 从图像中检测人类情绪非常流行,这可能是由…...

.netcore grpc的proto文件字段详解

一、.proto文件字段概述 grpc的接口传输参数都是根据.proto文件约定的字段格式进行传输的grpc提供了多种类型字段&#xff1b;主要包括标量值类型&#xff08;基础类型&#xff09;、日期时间、可为null类型、字节、列表、字典、Any类型&#xff08;任意类型&#xff09;、One…...

带你了解建堆的时间复杂度

目录 用向上调整建堆的时间复杂度 1.向上调整建堆的时间复杂度O(N*logN) 2.数学论证 3.相关代码 用向下调整建堆的时间复杂度 1.建堆的时间复杂度为O(N) 2.数学论证 3.相关代码 完结撒花✿✿ヽ(▽)ノ✿✿ 博主建议:面试的时候可能会被面试官问到建堆时间复杂度的证明过…...

人工智能原理(6)

目录 一、机器学习概述 1、学习和机器学习 2、学习系统 3、机器学习发展简史 4、机器学习分类 二、归纳学习 1、归纳学习的基本概念 2、变型空间学习 3、归纳偏置 三、决策树 1、决策树组成 2、决策树的构造算法CLS 3、ID3 4、决策树的偏置 四、基于实例的学习…...

单片机模块化编程文件创建流程

一、在工程文件夹下创建一个新的文件夹&#xff0c;命名为“ModulesCodesFiles”&#xff0c;译为“模块化代码文件”&#xff0c;用于存放所有模块化代码文件。 二、在“ModulesCodesFiles”文件夹下为每个模块创建一个新的文件夹&#xff0c;命名为模块的名称&#xff0c;例…...

docker image

docker image 1. 由来 docker image是Docker容器管理工具中的一个命令&#xff0c;用于管理和操作Docker镜像。 2. 常见五种示例命令和说明 以下是docker image的常见示例命令及其说明&#xff1a; 示例一&#xff1a;列出所有镜像 docker image ls描述&#xff1a;使用d…...

Transit Map:5分钟创建专业级公共交通动态地图的终极指南

Transit Map&#xff1a;5分钟创建专业级公共交通动态地图的终极指南 【免费下载链接】transit-map The server and client used in transit map simulations like swisstrains.ch 项目地址: https://gitcode.com/gh_mirrors/tr/transit-map 想象一下&#xff0c;您需要…...

TensorRT量化实战:动态范围计算中的熵校准与直方图优化

1. TensorRT量化中的动态范围计算基础 在模型部署的工程实践中&#xff0c;量化技术是提升推理效率的关键手段。TensorRT作为业界领先的推理优化框架&#xff0c;其INT8量化功能可以将模型体积压缩至原来的1/4&#xff0c;同时保持较高的推理精度。但量化过程中最关键的挑战就是…...

RK3568开发板Android 11系统移植实战:从内核驱动到HAL适配

1. 项目概述与学习路径规划拿到一块像迅为iTOP-RK3568这样的开发板&#xff0c;想把最新的Android 11系统跑起来&#xff0c;这个想法听起来挺酷&#xff0c;但很多朋友一看到“系统移植”四个字就有点发怵&#xff0c;感觉这是大神才能玩转的领域。其实&#xff0c;只要你熟悉…...

dnSpyEx终极指南:5个技巧快速掌握.NET程序调试与编辑

dnSpyEx终极指南&#xff1a;5个技巧快速掌握.NET程序调试与编辑 【免费下载链接】dnSpy Unofficial revival of the well known .NET debugger and assembly editor, dnSpy 项目地址: https://gitcode.com/gh_mirrors/dns/dnSpy 还在为调试没有源代码的.NET程序而烦恼&…...

基于大语言模型的抖音智能评论机器人:从原理到部署实践

1. 项目概述&#xff1a;当抖音遇上AI&#xff0c;一个自动回复机器人的诞生最近在刷抖音的时候&#xff0c;我经常看到一些账号的评论区里&#xff0c;作者回复得特别快&#xff0c;而且内容还挺有意思&#xff0c;有时候甚至能接上一些很刁钻的梗。一开始我还以为是真人24小时…...

从分辨率、码率到蓝光:解码高清视频的三大核心要素

1. 分辨率&#xff1a;高清世界的基石 第一次接触高清视频时&#xff0c;我被商家宣传的"4K超清"搞得一头雾水。直到自己开始做视频剪辑才明白&#xff0c;分辨率就像织布的经纬线——它决定了画面能有多细腻。举个生活中的例子&#xff0c;1080P分辨率相当于用19201…...

别再手动改路由了!用Ant Design Vue的Menu组件动态生成“顶一左多”级导航菜单

基于Ant Design Vue的声明式导航菜单架构设计 在复杂后台管理系统开发中&#xff0c;导航菜单的动态生成与权限控制一直是架构设计的难点。传统方案往往需要在多个组件中硬编码菜单结构&#xff0c;导致维护成本高、权限同步困难。本文将介绍如何利用Ant Design Vue的Menu组件与…...

3步搞定!MoviePilot智能批量重命名让你的媒体库整齐划一

3步搞定&#xff01;MoviePilot智能批量重命名让你的媒体库整齐划一 【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mo/MoviePilot 还在为杂乱的媒体文件名头疼吗&#xff1f;"The.Matrix.1999.1080p.BluRay.x264…...

无感定位技术白皮书——传统ReID跨镜跟踪局限重重,无短板碾压式突破

前言在智慧安防、智慧园区、工业物联网等数字化转型核心场景中&#xff0c;跨摄像头目标追踪与精准定位是支撑场景智能化升级的关键底座。长期以来&#xff0c;ReID&#xff08;行人重识别&#xff09;技术因无需额外硬件部署、可依托目标外观特征实现跨镜身份关联&#xff0c;…...

突破性模组管理革命:RimSort如何解决RimWorld玩家的三大核心痛点

突破性模组管理革命&#xff1a;RimSort如何解决RimWorld玩家的三大核心痛点 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, comm…...