【【超声波避障小车代码】】
超声波避障小车代码
#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(Time Delay Integration)是一种特殊的图像采集技术,常用于线阵CCD(Charge-Coupled Device)相机。TDI技术可以在保持高分辨率的同时增强图像的信噪比(Signal-to-Noise Ratio, SNR)࿰…...
RHCE——一、安装部署及例行性工作
RHCE 一、网络服务1、准备工作2、RHEL9操作系统的安装部署3、配置并优化RHEL9操作系统4、网络配置5、修改网络连接 二、例行性工作1、单一执行的例行性工作2、循环执行的例行性工作 三、书写定时任务的注意事项四、系统级别的计划任务五、实验1、实验一:编写脚本tes…...
服务器数据库中了360后缀勒索病毒怎么办?360后缀勒索病毒的加密形式
随着信息技术的发展,企业的计算机服务器数据库变得越来越重要。然而,在数字时代,网络上的威胁也日益增多。近期,我们收到很多企业的求助,企业的计算机服务器遭到了360后缀勒索病毒的攻击,导致服务器内的所有…...
期权就是股指期货吗,哪个好做一点?
近年来,场内ETF期权产品不断扩大,越来越多的投资者有投资期权的想法。当我们看到期权时,我们会不知不觉地想到期货,虽然期货与期权只有一个字的区别,但实际上有很大的不同,那么期权就是股指期货吗ÿ…...
week32
本周目标: Belady现象的解释 操作系统 计组IO/MM chapter 刷力扣 ubuntu磁盘/网络/命令行进阶*1 tarball之类的使用 Question 大数据系统实验要学吗? 据说课讲得不好这是一门类似数据库的课程——大数据之hadoop / hive / hbase 的区别是什么&a…...
【数据库】P1 数据库基本常识
数据库基本常识 数据库 ≠ 数据库管理系统表(Table)SQL是什么 数据库 ≠ 数据库管理系统 数据库是保存有组织的数据的容器,数据库称为 DB(DataBase);数据库管理系统是创建和操纵数据库的软件,数…...
c语言——计算两个数的乘积
//计算两个数的乘积 #include<stdio.h> #include<stdlib.h> int main() {double firstNumber,secondNumber,product;printf("两个浮点数:");scanf("%lf,%lf",&firstNumber,&secondNumber);productfirstNumber*secondNumber…...
单机模型并行最佳实践
单机模型并行最佳实践 模型并行在分布式训练技术中被广泛使用。 先前的帖子已经解释了如何使用 DataParallel 在多个 GPU 上训练神经网络; 此功能将相同的模型复制到所有 GPU,其中每个 GPU 消耗输入数据的不同分区。 尽管它可以极大地加快训练过程&…...
编程练习(3)
一.选择题 第一题: 函数传参的两个变量都是传的地址,而数组名c本身就是地址,int型变量b需要使用&符号,因此答案为A 第二题: 本题考察const修饰指针变量,答案为A,B,C,D 第三题: 注意int 型变…...
PyTorch学习笔记(十三)——现有网络模型的使用及修改
以分类模型的VGG为例 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) 设置为 False 的情况,相当于网络模型中的参数都是初始化的、默认的设置为 True 时,网络模型中的参数在数据集上是训练好…...
Python爬虫的scrapy的学习(学习于b站尚硅谷)
目录 一、scrapy 1. scrapy的安装 (1)什么是scrapy (2)scrapy的安装 2. scrapy的基本使用 (1)scrap的使用步骤 (2)代码的演示 3. scrapy之58同城项目结构和基本方法&…...
“深入解析JVM:揭秘Java虚拟机的工作原理“
标题:深入解析JVM:揭秘Java虚拟机的工作原理 摘要:本文将深入解析Java虚拟机(JVM)的工作原理,探讨其内部结构和运行机制。我们将介绍JVM的组成部分、类加载过程、内存管理、垃圾回收、即时编译等关键概念&…...
【数据结构与算法】十大经典排序算法-归并排序
🌟个人博客:www.hellocode.top 🏰Java知识导航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ⚡如有问题,欢迎指正&#…...
基于深度学习创建-表情符号--附源码
表情符号深度学习概述 如今,我们使用多种表情符号或头像来表达我们的心情或感受。它们充当人类的非语言线索。它们成为情感识别、在线聊天、品牌情感、产品评论等的关键部分。针对表情符号驱动的故事讲述的数据科学研究不断增加。 从图像中检测人类情绪非常流行,这可能是由…...
.netcore grpc的proto文件字段详解
一、.proto文件字段概述 grpc的接口传输参数都是根据.proto文件约定的字段格式进行传输的grpc提供了多种类型字段;主要包括标量值类型(基础类型)、日期时间、可为null类型、字节、列表、字典、Any类型(任意类型)、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、决策树的偏置 四、基于实例的学习…...
单片机模块化编程文件创建流程
一、在工程文件夹下创建一个新的文件夹,命名为“ModulesCodesFiles”,译为“模块化代码文件”,用于存放所有模块化代码文件。 二、在“ModulesCodesFiles”文件夹下为每个模块创建一个新的文件夹,命名为模块的名称,例…...
docker image
docker image 1. 由来 docker image是Docker容器管理工具中的一个命令,用于管理和操作Docker镜像。 2. 常见五种示例命令和说明 以下是docker image的常见示例命令及其说明: 示例一:列出所有镜像 docker image ls描述:使用d…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...
Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...
