基于51单片机智能小车循迹功能的实现

这篇具有很好参考价值的文章主要介绍了基于51单片机智能小车循迹功能的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于51单片机智能小车循迹功能的实现

一、思路(仅供参考)

本实验采用两路红外循迹模块单黑线循迹的方法。当红外循迹模块未检测到黑线,则前进;若一边检测到黑线,则实现转弯;若两边均检测到黑线,则停止。利用两路红外循迹模块接收到的信号控制电机的运动,实现小车的前进,转弯等运动。

二、部分硬件模块介绍

1、L298n电机驱动模块

基于51单片机智能小车循迹功能的实现

2、两路红外循迹模块

背面
基于51单片机智能小车循迹功能的实现
正面
--------------------(黄色的旋钮是用来调节灵敏度的)-----------------------------
基于51单片机智能小车循迹功能的实现

三、实现

1、代码

(1)、函数部分

#include <reg52.h>
#include "header.h"


void Left_forward()//左轮前转
{
	Left_1=0;
 	Left_2=1;

}
void Left_back()//左轮后转
{
	Left_1=1;
 	Left_2=0;
}
void Left_stop()左轮停止(刹车)
{
	Left_1=1;
	Left_2=1;
}


void Right_forward()//右轮前转
{
	Right_1=1;
	Right_2=0;

}
void Right_back()//右轮后转
{
	Right_1=0;
	Right_2=1;
}
void Right_stop()//右轮停止
{
	Right_1=1;
	Right_2=1;
}


void Forward_run()//前进
{
	Left_forward();
	Right_forward();
}

void Back_run()//后退
{
	Left_back();
	Right_back();
}

void Left_run()//边前进边左转
{
 
	Left_stop();
    Right_forward();
}

void Right_run()//边前进边右转
{
	Left_forward();
	Right_stop();
}
void Stop_run()//停止(刹车)
{
	Left_stop();
	Right_stop();
}
void Stop_Left_run()//原地左转
{
	Left_back();
	Right_forward();
}
void Stop_Right_run()//原地右转
{
	Left_forward();
	Right_back();
}
void PWM_left_motor()//左轮pwm调速
{
	if(Left_motor_var<Left_cycle)
	{
 		if(Left_motor_var<=Left_H)
			ENA=1;
		else
			ENA=0;
	}
	else
	{
		Left_motor_var=0;
	}
}

void PWM_right_motor()//右轮pwm调速
{
	if(Right_motor_var<Right_cycle)
	{
 		if(Right_motor_var<=Right_H)
			ENB=1;
		else
			ENB=0;
	}
	else//(Right_moto_var>=Right_cycle)
	{
		Right_motor_var=0;
	}
}



void Init_timer0()
{
	TMOD=0x01;			//定时器0方式1
	TH0=(65536-100)/256; //100微秒
	TL0=(65536-100)%256;
	EA=1;
	ET0=1;
	TR0=1;
}

void Follow_Function()//循迹函数
{
	if(Left_reaction==0&&Right_reaction==0)//左右均为检测到黑线(有信号返回)
		Forward_run();
	else
	{
	if(Left_reaction==1&&Right_reaction==1)//左右无信号返回,均检测到黑线
		Stop_run();
	if(Left_reaction==0&&Right_reaction==1)	//右边检测到黑线,右转
		Stop_Right_run();	
	if(Left_reaction==1&&Right_reaction==0)//左转
		 Stop_Left_run();
		 }
}

(2)、头文件

#ifndef __header_H
#define __header_H
#include<intrins.h>
typedef unsigned int uint;
/*L298n电机驱动模块*/
sbit Left_1=P1^2;
sbit Left_2=P1^3;
sbit Right_1=P1^4;
sbit Right_2=P1^5;
sbit ENA=P1^0;
sbit ENB=P1^1;
/*红外循迹模块R0、L0*/
sbit Left_reaction=P3^6;
sbit Right_reaction=P3^7;

extern uint Left_motor_var;//用于左电机周期计数
extern uint Left_H;		//左电机高电平,用于计算占空比
extern uint Right_motor_var;
extern uint Right_H;
extern uint Left_cycle;//左电机周期
extern uint Right_cycle;
void Left_forward();
void Left_back();
void Left_stop();
void Right_forward();
void Right_back();
void Right_stop();
void Forward_run();
void Back_run();
void Left_run();
void Right_run();
void Stop_run();
void Stop_Left_run();
void Stop_Right_run();
void PWM_left_motor();
void PWM_right_motor();
void Init_timer0();
void Follow_Function();
void Delay_1ms(uint k);
#endif

(3)、主函数

#include <reg52.h>
#include "header.h"

uint Left_motor_var=0;
uint Left_H=100;
uint Right_motor_var=0;
uint Right_H=100;
uint Left_cycle=100;
uint Right_cycle=100;

void main()
{
	Init_timer0();
	while(1)
	{
		Follow_Function();
	}
}
void timer_t0()interrupt 1
{
	TH0=(65536-100)/256;
	TL0=(65536-100)%256;
	Left_motor_var++;
	Right_motor_var++;
	PWM_left_motor();
	PWM_right_motor();
}

2、运行视频(…注意:该视频有声音!!!建议先关声音…)

…注意:该视频有声音!!!…
…注意:该视频有声音!!!…
…注意:该视频有声音!!!…
(建议调小音量再观看)
视频若无法正常播放,可前往主页查看视频资源

基于51单片机智能小车循迹功能的实现

51循迹小车运行视频

四、总结

第一次做小车,感觉只要搞懂各个模块的实现的原理,做起来就轻松了很多。
文章比较简洁,不足之处,还望指出。
文章来源地址https://www.toymoban.com/news/detail-402955.html

到了这里,关于基于51单片机智能小车循迹功能的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机最小系统循迹小车(带源码)

    51单片机循迹小车是初学者最容易的一个项目,做好一辆小车就相当于入门单片机了。在做项目之前要学习单片机的相关的知识,不要急于求成。 红外寻迹小车_哔哩哔哩_bilibili ,这是我做的小车基本框架,没有思路的同学可以参考一下。 首先仔细想想小车需要什么? 轮子,

    2023年04月12日
    浏览(44)
  • 35、基于51单片机自动灭火避障智能小车 消防灭火小车系统设计

    智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车就是其中的一个体现,本次设计的多功能智能灭火避障小车, 以 STC89C 52单片机作为微控制器,设计出一种 可以寻

    2024年02月03日
    浏览(55)
  • 【毕业设计】基于超声波智能跟随小车 - 单片机 物联网 stm32 c51

    自动跟随小车系统由两部分组成:跟随小车和移动目标携带装置。 工作原理:跟随小车系统通过无线通信模块发送寻找信号,同时超声波接收器开始计时,如果移动目标接收到无线寻找信号,则立即发送超声波信号。这样小车的三角超声波接收器陆续收到超声波信号,CPU通过

    2023年04月08日
    浏览(69)
  • 基于单片机的智能循迹避障小车STC89C52红外对管L298N驱动PWM波控制速度

    wx供重浩:创享日记 对话框发送:单片机小车 免费获取完整无水印报告等 利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。 1.1智能

    2023年04月22日
    浏览(53)
  • 【51单片机实例教程】智能小车(一)让你的小车跑起来

    文章目录 前言 一、硬件 1.小车底盘 2.51单片机最小系统板 3.L298N双路电机驱动板

    2024年02月11日
    浏览(57)
  • 51单片机-PWM调速(直流电机,智能小车的电机调速)

    这次来对PWM做一个总结 最近学习时,发现PWM控制在很多地方都会用到,比如使用PWM来控制电机的速度,使用PWM来生成想要的波形。 那么到底什么是PWM呢? PWM即 脉冲宽度调制 ,在具有惯性的系统中,可以通过对 一系列脉冲的宽度进行调制 ,来等效的获得所需要的模拟参量。

    2024年02月02日
    浏览(52)
  • “无限交互,全新驾驶体验!智能语音小车,与您共同开创未来出行。”#51单片机最终项目《智能语音小车》【中】

      本篇博文介绍的是用51单片机的最终项目《智能语音小车》【中】,包含循迹小车基本原理和方案,根据循迹原理实现循迹功能代码编写,解决冲出赛道不转弯问题,优化转弯平滑。加入电机调速,跟随小车,摇头测距小车01_舵机和超声波封装,摇头测距小车02_实现疯狂

    2024年02月21日
    浏览(59)
  • 基于单片机的智能小车设计

    随着科技的发展,智能机器人在日常生活中的应用越来越广泛。智能小车作为智能机器人的一种,具有便携性和多功能的特点,在教育、娱乐和工业等领域得到了广泛关注和应用。智能小车可以通过远程控制实现各种动作,如前进、后退、转弯等,并且可以通过搭载传感器实

    2024年02月06日
    浏览(58)
  • 基于单片机的智能灭火小车设计

    欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式   当今社会,火灾在现实生活中普遍存在,被称为自然界三大灾害之一。当火灾发后,灭火工作坏境恶劣时,人工不能完成一些灭火任务,此时便可

    2024年02月06日
    浏览(51)
  • 基于51单片机的智能教室系统

    功能: 1.通过LCD实时温度、光照强度、人数以及手自动模式 2.温度过高且有人的情况下打开空调 3.光强过弱的时候且有人的情况下打开照明灯 4.通过两个运放电路模拟进人出人 5.通过按键调整手自动模式,手动模式可以手动打开照明灯和空调 哔哩哔哩视频演示链接跳转,请直

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包