基于51单片机的四路红外传感器的循迹小车

基于51单片机的四路红外传感器的循迹小车

(班门弄斧,请各位大神批评指正,烦请提出宝贵意见。)

循迹小车

  1. 材料:①:51单片机小车具体结构及相关部件清单见该文章
    ②:红外四路循迹模块(图片来源与网络,侵删)四路循迹模块
    (功能简述:四对红外发射和接收管,工作时成对用,当发射管发出红外光,照射在白纸上,接收管收到红外信号,输出端输出低电平,照射到黑纸上,光被吸收,接收管收不到红外信号,输出端输出高电平,所以可以用来找追寻黑线)
  2. 步骤:①把红外四路循迹模块的输出端接到P1.0~P1.3;
    ②把带有上拉电阻的单片机的四路IO口分别接到电机驱动上(我是选P0)
    ③给单片机、电机驱动、红外循迹模块接电源线;
    ④下载程序到单片机。
    ⑤开机运行,测试。
  3. 代码:
    应该注意的一点是:
    **给电机驱动的四路IO口最好要带上拉电阻,不然可能驱动不了。**我就在这卡了好久。
#include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器
#define time_0 800
typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;


sbit output_date1=P0^7;
sbit output_date2=P0^6;
sbit output_date3=P0^5;
sbit output_date4=P0^4;

#define GO_STAIGHT  {output_date1=1,output_date2=0,output_date3=1,output_date4=0;}	        //前进
#define GO_BACK     {output_date1=0,output_date2=1,output_date3=0,output_date4=1;}			//后退
#define TURN_RIGHT	{output_date1=1,output_date2=0,output_date3=0,output_date4=1;}		    //右转
#define TURN_LEFT   {output_date1=0,output_date2=1,output_date3=1,output_date4=0;}		    //左转
#define STOP_CAR    {output_date1=0,output_date2=0,output_date3=0,output_date4=0;}			//停车

#define Left_1_led        P1^0	   //四路寻迹模块接口第一路
#define Left_2_led        P1^1	   //四路寻迹模块接口第二路
#define Right_1_led       P1^2	   //四路寻迹模块接口第三路
#define Right_2_led       P1^3	   //四路寻迹模块接口第四路


void delay(u16 n);



void delay(u16 n)   //1ms   (误差 -0.651041666667us)
{
   u16 i ;
    unsigned char a,b;
	for(i=1;i<=n;i++)
	{
    for(b=102;b>0;b--)
        for(a=3;a>0;a--);
	}
}

void main()
{

	while(1)
	{		 
			  switch(P1&0x0f)
				{
					case 0x00:						// 全部没有压线,前进
						GO_STAIGHT;
						break;
					case 0x01:						// 右压线,左转
						TURN_LEFT;
						delay(10);
						break;
					case 0x02:						// 右压线,左转
					   TURN_LEFT;
					   delay(5);
						break;
					case 0x04:						// 左压线,右转
					TURN_RIGHT;
						delay(5);					//转向延时
						break;
					case 0x08:						// 左压线,右转
					TURN_RIGHT;					
						delay(10);					//转向延时
						break;
					case 0x0f:
						 STOP_CAR;
						 break;
					default:
					break;
	
	             }
    
		
		}	
		
		
}



有其他疑问可以移步公众号“电子玩家营地”
在这里插入图片描述

相关推荐
循迹小车,随着电力电子器件的发展,PWM电压型逆变器在交流变频调速、UPS、电能质量控制器、轻型直流输电换流器等电力电子装置中得到了越来越广泛的应用。PWM电压型逆变器直流侧所需的理想无脉动直流电压源通常通过整流加上大直流电容滤波获得。大直流滤波电容的使用,给装置带来占用空间大、成本高及严重影响电能质量方面的问题。因此,研究如何减小甚至去除逆变器直流侧电容,以及解决因其产生的低次谐波和相关问题,具有十分重要的理论意义和实用价值。本文在综述了国内外在PWM电压型逆变器及各种抑制谐波PWM技术的基础上,对目前工程中应用最广泛的SPWM电压型逆变器的主电路及谐波消除调制技术和相关问题进行了深入研究。50年代末晶闸管标志着电力电子半导体期间的开端。电力电子器件经历了40多年的发展历程[1-2],特别是近30多年内更是得到了迅猛的发展[3,4]。以Th(SCR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。
©️2020 CSDN 皮肤主题: 数字50 设计师:CSDN官方博客 返回首页