小车可以实现循迹(可以过直角,弯路,前进后退等情况以及PWNM调速等)

如想了解接线的请私聊作者

由于小车的情况比较复杂要考虑的东西很多,有时候接线不合适都跑不起来

如果遇到问题请私聊作者

话不多说直接上代码吧:

//以下为代码段
#include"reg51.h"
#include "intrins.h"
typedef  unsigned int  u16;
typedef  unsigned char u8;sbit HIN1=P1^4;//  P1.0Êä³öpwm
sbit HIN2=P3^0;//  P1.1Êä³öpwm
sbit HIN3=P1^6;//  P1.2Êä³öpwm
sbit HIN4=P1^7;//  P1.3Êä³öpwmsbit QIN1=P1^0;//  P1.4Êä³öpwm
sbit QIN2=P1^1;//  P1.5Êä³öpwm
sbit QIN3=P1^2;//  P1.6Êä³öpwm
sbit QIN4=P1^3;//  P1.7Êä³öpwmsbit IRIN=P3^2;  // ºìÍâ¿ÚΪ3.2 ÖжÏ0sbit k1=P2^0;    //Ñ°¼£Ä£¿ék1λ
sbit k2=P2^1;    //Ñ°¼£Ä£¿ék2λ
sbit k3=P2^2;    //Ñ°¼£Ä£¿ék3λ
sbit k4=P2^4;    //Ñ°¼£Ä£¿ék4λ
sbit k5=P2^5;    //Ñ°¼£Ä£¿ék5λu8 time,i;
u16 count,count2,count3,count4;  //pwmÕ¼¿Õ±È£¨ËٶȴóС£©
//u8 z=0, x=0;/********»ù±¾ÑÓʱº¯Êý*******/
void delay(int u)
{while(u--);
}void minrun()
{count=30;count2=30;count3=0;count4=0;
}void run()
{count=35;count2=35;count3=0;count4=0;
}void right()
{count=0;//ÓÒתcount2=40;//zouÕý´«count3=60;//you·´count4=0;}void Lefet()
{count=30;count2=0;count3=0;count4=50;
}void back()
{count=0;count2=0;count3=50;count4=50;
}void stop()
{count=0;count2=0;count3=0;count4=0;}void Lefet1()
{count=60;count2=0;count3=0;count4=40;
}void lefet_1()
{count=60;//count2=0;count3=0;count4=40;}void right_1()
{count=0;count2=60;count3=40;count4=0;}void lefet_2()
{count=65;count2=0;count3=0;count4=40;
}
void right_2()
{count=0;count2=40;count3=60;count4=0;} void xunji()
{u8 m;if(k1==1&&k2==1&&k4==1&&k4==1&&k5==1)//ûÓмì²âµ½ºÚÏß{m=0;}if(k1==1&&k2==1&&k3==0&&k4==1&&k5==1)//Öмä¼ì²âµ½ºÚÏß{m=1;}if(k1==1&&k2==0&&k3==1&&k4==1&&k5==1)//΢µ÷  ×ó{m=2;}if(k1==1&&k2==1&&k3==1&&k4==0&&k5==1)//΢µ÷  ÓÒ{m=3;}if(k1==0&&k2==1&&k3==1&&k4==1&&k5==1)//{m=4;}if(k1==1&&k2==1&&k3==1&&k4==1&&k5==0)//´ó·ùÓÒת{m=5;}if(k1==0&&k3==0&&k4==1&&k5==1)//Ö±½Ç  ×ó{m=6;}if(k1==1&&k2==1&&k3==0&&k5==0)//Ö±½Ç  ÓÒ{m=7;}/*if(k1==0&&k2==0&&k3==1&&k4==1&&k5==1){m=8;}if(k1==1&&k2==1&&k3==1&&k4==0&&k5==0){m=9;}if(k1==1&&k2==1&&k3==1&&k4==1&&k5==0){m=10;}*/switch(m){//case (0):lefet_2();break;case (1):run();break;case (2):Lefet();delay(200);break;//΢µ÷  case (3):right();delay(200);break;//΢µ÷//case (4):Lefet1();delay(900);break;//´ó·ù×óת//case (5):right();delay(900);break;//´ó·ù¶ÈÓÒתcase (6):lefet_1();delay(900);break;//Ö±½Ç  ×óתcase (7):right_1();delay(900);break;//Ö±½Ç  ÓÒת//case (8):lefet_2();delay(200);break;//case (9):right_2();delay(200);break;//case (10):right_2();delay(900);break;//default :run();delay(500);stop();break;}
}/*******************
* ¹¦ÄÜ£º´ò¿ªÐèÒªÓõ½µÄÖжÏ
* Óõ½µÄÖжϣº¶¨Ê±Æ÷0¡¢1 ¹¤×÷·½Ê½1 16λ¶¨Ê±Æ÷ģʽ
* ÍⲿÖÕ¶Ë0
*********************/
void timer()
{TMOD=0x11;//¶¨Ê±Æ÷0¹¤×÷·½Ê½1TH0=0xff;//(65536-10)/256;//¸³³õÖµ¶¨Ê±TL0=0xf7;//(65536-10)%256;//0.01msTH1=0;TL1=0;EA=1;//¿ª×ÜÖжÏET0=1;//¿ª¶¨Ê±Æ÷0ÖжÏET1=1;TR0=1;//Æô¶¯¶¨Ê±Æ÷0 IT0=1;EX0=1;IRIN=1;
}/*******Ö÷º¯Êý********/
void main()
{       timer();   //µ÷ÓÃÖжϴò¿ªº¯Êýwhile(1){  xunji();//back();//run();//Lefet();//right();// delay(3000);        //xunji();}
}/****¶¨Ê±Æ÷0Òç³öÀûÓÃpwmµ÷4¸öµç»úµÄËÙ¶È***/
void tim0() interrupt 1
{//TR0=0;//¸³³õֵʱ£¬¹Ø±Õ¶¨Ê±Æ÷TH0=0xff;//(65536-10)/256;//¸³³õÖµ¶¨Ê±TL0=0xf7;//(65536-10)%256;//0.01ms£¬ÒòΪһ¸öÖÜÆÚ1us//TR0=1;//´ò¿ª¶¨Ê±Æ÷i++;if(i>=100)  //1khzi=0;if(i<=count)   //Õ¼¿Õ±È%30,¿É¸Ä{QIN2=0; HIN4=0;}  else{QIN2=1;   HIN4=1;}if(i<=count2)   //Õ¼¿Õ±È%30,¿É¸Ä{QIN4=0; HIN2=0; }  else { QIN4=1;HIN2=1;}if(i<=count3)   //Õ¼¿Õ±È%30,¿É¸Ä{   QIN1=0; HIN3=0;}  else {QIN1=1;   HIN3=1;}if(i<=count4)   //Õ¼¿Õ±È%30,¿É¸Ä{QIN3=0; HIN1=0; }  else { QIN3=1;HIN1=1;} }

注释出现乱码了,然后下面我在以文本的形式编一下:

#include"reg51.h"
#include "intrins.h"
typedef  unsigned int  u16;
typedef  unsigned char u8;

sbit HIN1=P1^4;//  P1.0Êä³öpwm
sbit HIN2=P3^0;//  P1.1Êä³öpwm
sbit HIN3=P1^6;//  P1.2Êä³öpwm
sbit HIN4=P1^7;//  P1.3Êä³öpwm

sbit QIN1=P1^0;//  P1.4Êä³öpwm
sbit QIN2=P1^1;//  P1.5Êä³öpwm
sbit QIN3=P1^2;//  P1.6Êä³öpwm
sbit QIN4=P1^3;//  P1.7Êä³öpwm

sbit IRIN=P3^2;  // ºìÍâ¿ÚΪ3.2 ÖжÏ0

sbit k1=P2^0;    //Ñ°¼£Ä£¿ék1λ
sbit k2=P2^1;    //Ñ°¼£Ä£¿ék2λ
sbit k3=P2^2;    //Ñ°¼£Ä£¿ék3λ
sbit k4=P2^4;    //Ñ°¼£Ä£¿ék4λ
sbit k5=P2^5;    //Ñ°¼£Ä£¿ék5λ

u8 time,i;
u16 count,count2,count3,count4;  //pwmÕ¼¿Õ±È£¨ËٶȴóС£©
//u8 z=0, x=0;

/********»ù±¾ÑÓʱº¯Êý*******/
void delay(int u)
{
   while(u--);
}

void minrun()
{
        count=30;
      count2=30;
      count3=0;
      count4=0;
}

void run()
{
  count=35;
    count2=35;
  count3=0;
  count4=0;
}

void right()
{
   count=0;//ÓÒת
     count2=40;//zouÕý´«
     count3=60;//you·´
     count4=0;

}

void Lefet()
{
   count=30;
     count2=0;
     count3=0;
     count4=50;
}

void back()
{
  count=0;
  count2=0;
    count3=50;
    count4=50;
}

void stop()
{
  count=0;
    count2=0;
    count3=0;
    count4=0;

}

void Lefet1()
{
   count=60;
     count2=0;
     count3=0;
     count4=40;
}

void lefet_1()
{
   count=60;//
     count2=0;
     count3=0;
    count4=40;
    
}

void right_1()
{
    count=0;
      count2=60;
      count3=40;
      count4=0;

}

void lefet_2()
{
    count=65;
      count2=0;
      count3=0;
      count4=40;
}
void right_2()
{
    count=0;
      count2=40;
      count3=60;
      count4=0;

}

void xunji()
{
    u8 m;
    if(k1==1&&k2==1&&k4==1&&k4==1&&k5==1)//ûÓмì²âµ½ºÚÏß
    {m=0;}
    
    if(k1==1&&k2==1&&k3==0&&k4==1&&k5==1)//Öмä¼ì²âµ½ºÚÏß
    {m=1;}
    
    if(k1==1&&k2==0&&k3==1&&k4==1&&k5==1)//΢µ÷  ×ó
    {m=2;}
    if(k1==1&&k2==1&&k3==1&&k4==0&&k5==1)//΢µ÷  ÓÒ
    {m=3;}
    
    if(k1==0&&k2==1&&k3==1&&k4==1&&k5==1)//
    {m=4;}
    if(k1==1&&k2==1&&k3==1&&k4==1&&k5==0)//´ó·ùÓÒת
    {m=5;}
    
    if(k1==0&&k3==0&&k4==1&&k5==1)//Ö±½Ç  ×ó
    {m=6;}
    if(k1==1&&k2==1&&k3==0&&k5==0)//Ö±½Ç  ÓÒ
    {m=7;}
    
    
    
    /*
    if(k1==0&&k2==0&&k3==1&&k4==1&&k5==1)
    {m=8;}
    if(k1==1&&k2==1&&k3==1&&k4==0&&k5==0)
    {m=9;}
    if(k1==1&&k2==1&&k3==1&&k4==1&&k5==0)
    {m=10;}
    */
    
    
    
    
  switch(m)
    {
        //case (0):lefet_2();break;
        case (1):run();break;
        case (2):Lefet();delay(200);break;//΢µ÷  
        case (3):right();delay(200);break;//΢µ÷
        
        //case (4):Lefet1();delay(900);break;//´ó·ù×óת
        //case (5):right();delay(900);break;//´ó·ù¶ÈÓÒת
        
        case (6):lefet_1();delay(900);break;//Ö±½Ç  ×óת
        case (7):right_1();delay(900);break;//Ö±½Ç  ÓÒת
        
        //case (8):lefet_2();delay(200);break;
        //case (9):right_2();delay(200);break;
        //case (10):right_2();delay(900);break;
        
        
        //default :run();delay(500);stop();break;
    }    
}

/*******************
* ¹¦ÄÜ£º´ò¿ªÐèÒªÓõ½µÄÖжÏ
* Óõ½µÄÖжϣº¶¨Ê±Æ÷0¡¢1 ¹¤×÷·½Ê½1 16λ¶¨Ê±Æ÷ģʽ
* ÍⲿÖÕ¶Ë0
*********************/
void timer()
{
     TMOD=0x11;//¶¨Ê±Æ÷0¹¤×÷·½Ê½1
    TH0=0xff;//(65536-10)/256;//¸³³õÖµ¶¨Ê±
    TL0=0xf7;//(65536-10)%256;//0.01ms
    TH1=0;
    TL1=0;
    EA=1;//¿ª×ÜÖжÏ
    ET0=1;//¿ª¶¨Ê±Æ÷0ÖжÏ
    ET1=1;
    TR0=1;//Æô¶¯¶¨Ê±Æ÷0 
    IT0=1;
  EX0=1;
  IRIN=1;
}

/*******Ö÷º¯Êý********/
void main()
{        
     timer();   //µ÷ÓÃÖжϴò¿ªº¯Êý

while(1)
    {  
        
        xunji();
        
        
        
        //back();
    //run();
         //Lefet();
        //right();
   // delay(3000);        
        //xunji();
    }
}

/****¶¨Ê±Æ÷0Òç³öÀûÓÃpwmµ÷4¸öµç»úµÄËÙ¶È***/
void tim0() interrupt 1
{
    //TR0=0;//¸³³õֵʱ£¬¹Ø±Õ¶¨Ê±Æ÷
    TH0=0xff;//(65536-10)/256;//¸³³õÖµ¶¨Ê±
    TL0=0xf7;//(65536-10)%256;//0.01ms£¬ÒòΪһ¸öÖÜÆÚ1us
    //TR0=1;//´ò¿ª¶¨Ê±Æ÷
    i++;
    if(i>=100)  //1khz
        i=0;
         
    if(i<=count)   //Õ¼¿Õ±È%30,¿É¸Ä
    {
        QIN2=0; 
        HIN4=0;
    }  
    else
    {
        QIN2=1;   
        HIN4=1;
    }

if(i<=count2)   //Õ¼¿Õ±È%30,¿É¸Ä
    {
        QIN4=0; 
        HIN2=0; 
    }  
      else 
    { 
        QIN4=1;
        HIN2=1;
    }

if(i<=count3)   //Õ¼¿Õ±È%30,¿É¸Ä
    {    
            QIN1=0; 
        HIN3=0;
    }  
    else 
    {
        QIN1=1;   
        HIN3=1;
    }
    
    if(i<=count4)   //Õ¼¿Õ±È%30,¿É¸Ä
    {
        QIN3=0; 
        HIN1=0; 
    }  
    else 
    { 
        QIN3=1;
        HIN1=1;
    } 
    
}

有问题请私聊博主哦

51单片机智能小车寻循迹代码相关推荐

  1. 51单片机智能小车——寻迹

    材料: (1)51单片机开发板 (2)l298n电机驱动模块1个 (3)四个电机 (4)寻迹红外2个 一.组装 (1)L298N电机驱动模块与开发板接线如下图: 寻迹红外接线: 说明: 红外一OUT接 ...

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

    基于51单片机智能小车循迹功能的实现 目录 基于51单片机智能小车循迹功能的实现 一.思路(仅供参考) 二.部分硬件模块介绍 1.L298n电机驱动模块 2.两路红外循迹模块 三.实现 1.代码 2. ...

  3. 51单片机智能小车(舵机云台超声波避障+循迹+蓝牙+红外跟随)

    **51单片机智能小车(舵机云台超声波避障+循迹+蓝牙+红外跟随+遥控+TFT液晶显示屏) 本人由于使用的液晶显示屏,程序大于8K,所以更换为STC12C5A60S2芯片,与51芯片兼容. 功能比较多 ...

  4. 单面机51小车程序_车辆工程学院举行“51单片机智能小车”电子设计成果答辩展示...

    用理论指导实践,以实践检验理论.6月28日,车辆工程学院在汽车科技馆二楼举行了"51单片机智能小车"电子设计成果展示,旨在加强学生学以致用能力,提升学生实践创新水平.2017级教改 ...

  5. 智能小车红外循迹原理

    循迹电路 循迹电路由收发一体的红外收发管P1,P2:电位器R18,R29:发光二极管D6,D7和芯片LM324等组成.一共有两路,对应的红外电位器用于调节灵敏度.LM234用于信号的比较,并产生比较结 ...

  6. 51单片机智能小车循迹完整程序_电气与信息工程学院双创协会开展循迹小车培训...

    为培养青年学子创新意识和创新能力,激发勇于创新的主动性和积极性,营造良好科技创新氛围,10月29日至30日,电气与信息工程学院双创协会于一教609.三教102和三教202开展循迹小车培训,该培训由电子 ...

  7. 51单片机-蓝牙遥控红外循迹小车-代码+硬件连接

    2021/04/28-更新工具的连接 ----------------------------------------- 前几天弄了个基于51芯片的蓝牙红外小车,因为是新手也没有人教,网上的资料也不够 ...

  8. 循迹智能小车 循黑线 智能小车 红外循迹传感器 单片机

    循迹智能小车 循黑线 文章目录 循迹智能小车 循黑线 硬件菜单 硬件使用 硬件组装 程序设计前的理解 程序代码 个人原创博客: 点我浏览 硬件菜单 单片机型号:STC16F40K128 4路红外循迹模 ...

  9. 以51单片机为基础的自动循迹小车

    51单片机自动循迹小车 #include<reg52.h>sbit IN1=P1^2; //左电机正转 sbit IN2=P1^3; //左电机反转 sbit IN3=P1^6; //右电 ...

  10. 智行小车(基于51单片机)——避障+循迹+停

    讲道理,这辆小车是我们参加校赛所制作的,在这次的小车制作过程之中存在的很多的不足和时间的浪费情况. 队员的选择和分工也都存在着一定的问题(这应该是我最头疼的问题) 但是总得来说还算是取得了一个不错的结 ...

最新文章

  1. 第十五届全国大学生智能汽车竞赛华北赛区比赛
  2. log4j 源码解析_Log4j配置详解
  3. HDU 2112 HDU Today (dijkstar + map)
  4. Android清单AndroidManifest详细说明
  5. Kafka主题中的分区数越多吞吐量就越高?BULLSHIT!!!
  6. QEBA:基于类边界查询访问的黑盒攻击
  7. shell [] [[]]的区别(转)
  8. 阿里巴巴Java开发手册终极版v1.3.0
  9. CodeBlocks常用快捷键
  10. Android SurfaceView动画(二)
  11. Kinect开发教程八:OpenNI2显示深度、彩色及融合图像
  12. 数学一年级应用题_小学一年级数学应用题100道
  13. python 两个nc文件 风场,ECMWF 不同step 的 NC 文件如何合并
  14. CS61A 2021Spring Lab: Cats
  15. 国产GP232RL 串口芯片完美兼容FT232RL 引脚开发资料
  16. steam邮箱登录教程
  17. Android学习之下拉列表
  18. RK3229 android9.0 按刷机按键进入loader
  19. 目前互联网比较赚钱的项目
  20. 唐宇迪学习笔记3:Python数据可视化库——Matplotlib

热门文章

  1. PDFObject无法加载远程url和不支持IE浏览器解决方案
  2. DH 算法思想 SSH解决内容篡改问题
  3. win10蓝牙无法连接
  4. 什么是ARP协议,如何查看ARP表项、如何配置静态ARP?
  5. 【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析
  6. 4场直播丨Oracle、openGauss、易鲸捷EsgynDB
  7. 怎么可以同时上内外网,不用切换网络
  8. 爆炸性环境电气设计选型
  9. 漂亮好听的蓝牙小音箱,真是郊游好玩伴,Sanag M11体验
  10. CAD图纸格式转换怎么操作?如何转换常见图纸格式?