61 基于单片机的小车雷达避障及阈值可调

所有仿真详情导航:

PROTEUS专栏说明-CSDN博客

目录

一、主要功能

二、硬件资源

三、主程序编程

四、资源下载


一、主要功能

基于51单片机,采用超声波传感器检测距离,通过LCD1602显示屏显示,三个按键,第一个按键是切换模式,切换到阈值设置,两个按键负责阈值增减,初始阈值设置为20,如果低于20,则蜂鸣器报警,继电器断开,电机停止转动,高于阈值,则停止报警,继电器吸合,电机转动。

具体动态效果看B站演示视频(高清需要跳转到B站看)

基于单片机的小车雷达避障及阈值可调

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、主程序编程

cpp 复制代码
#include <REGX52.H>
#include <intrins.h>
#include <stdio.h>
#include "Delay.h"
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned  int
typedef unsigned char u8;
typedef unsigned int  u16;
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;


sbit Tr=P3^0;//触发信号
sbit Ec=P3^1;//回响信号
sbit beep=P2^7;
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit motor = P1^3;
uchar Recv_Buffer[4];
uint Voltage[]={'0','0','0','0'};
bit bdata IIC_ERROR;
  
unsigned int distance;
static unsigned char num;

unsigned int Read_value(void);//读值函数
unsigned int jlyz=20;
static int moshi = 0;

void Delay10us(void);//10us延时函数
void cslsz(void);

void Time0_Init()          //定时器初始化
{
    TMOD = 0x01;
    TH0 = 0x00;
    TL0 = 0x00;
    TR0 = 0;//先关闭定时器0
}

void Time0_Int() interrupt 1 //中断程序
{
   TH0  = 0xfe;             //重新赋值
   TL0  = 0x33;
}

unsigned int Read_value()
{
	uint result;
	Tr=1;//触发引脚发出11us的触发信号(至少10us)
	Delay10us();
	Tr=0;
	while(!Ec);//度过回响信号的低电平
	TR0=1;//开启定时器0
	while(Ec);//度过回响信号高电平
	TR0=0;//关闭定时器0
	result=((TH0*256+TL0)*0.034)/2;		// 距离cm=(时间us * 速度cm/us)/2
	return result + 2;	//+2修正补偿	
}

void main()					  //主函数
{	
	Tr=0;//出发引脚首先拉低
	LCD_Init();         //显示屏初始化
	Time0_Init();	   //定时初始化
	LCD_ShowString(1,1,"-----kaiji-----");
	Delay(1000);
	LCD_Init();
	LCD_ShowString(1,1,"yuzhi:");
	LCD_ShowString(2,1,"distance:");
	while(1)
	{
		Delay(200);
			cslsz();//按键判断
		  distance = Read_value();//读值
		distance = distance-1;
	    LCD_ShowNum(2,10,distance,3);
		  LCD_ShowNum(1,7,jlyz,3);
		if(moshi == 0) //判断
		{
			if(distance < jlyz)
			{
				beep = 1;
				motor = 1;
				
			}
			else
			{
				beep = 0;
				motor = 0;
			}
		}
	}
}

void cslsz()
{
	
	if(!key1)
	{
		moshi++;
		if(moshi>1)moshi=0;
		while(!key1);
	}
	if(!key2)
	{
		if(moshi==1)
		jlyz++;
		while(!key2);
	}
	if(!key3)
	{
		if(moshi==1)
		jlyz--;
		while(!key3);
	}
}



void Delay10us()
{
	TL0=0xF5;
	TH0=0xFF;
	TR0=1;
	while (TF0==0);
	TR0=0;
	TF0=0;
}

四、资源下载

全部资料(源程序、仿真文件、安装包、演示视频):

链接: https://pan.baidu.com/s/1Tiy7k1Fqj31cTDXlXew8AQ?pwd=vhh9 提取码: vhh9

--来自百度网盘超级会员v4的分享

相关推荐
小智学长 | 嵌入式32 分钟前
单片机-STM32部分:13-1、编码器
单片机·嵌入式硬件
暗碳1 小时前
WF24 wifi/蓝牙模块串口与手机蓝牙通信
嵌入式硬件
#金毛3 小时前
一、HAL库的设计理念详解:从架构到实践
stm32·嵌入式硬件·架构
alive9033 小时前
STM32移植LVGL8.3 (保姆级图文教程)
stm32·单片机·嵌入式硬件·stm32f407·lvgl8.3·lvgl移植
Camellia03115 小时前
嵌入式学习--江协51单片机day6
嵌入式硬件·学习·51单片机
外星猪猪5 小时前
嵌入式调试新宠!J-Scope:免费+实时数据可视化,让MCU调试效率飙升!
单片机·嵌入式硬件·信息可视化
霖005 小时前
PCIe数据采集系统
数据结构·经验分享·单片机·嵌入式硬件·fpga开发·信号处理
Camellia03116 小时前
嵌入式学习--江科大51单片机day7
单片机·嵌入式硬件·学习·51单片机
Shaun_青璇7 小时前
智能门禁项目
单片机·嵌入式硬件
漠落7 小时前
STM32 SD卡拔插后FatFs挂载失败可能原因
stm32·单片机·嵌入式硬件