智能车刚入门,前段时间制作了一个51寻迹小车,就是网上那种寻迹是用四个红外传感器,驱动是L298N,主板是自己焊接的51最小系统加了一个7805将电池的7.2v稳压成5v(虽然我直接用的电池电压),原题图网上满天飞我就不放了,废话少说,直接上代码:

#include<reg52.h>sbit Left_led=P1^0;      //最左边的传感器
sbit Left_mid_led=P1^1;    //左边中间的传感器
sbit Right_mid_led=P1^2;//右边中间的传感器
sbit Right_led=P1^3;  //最右边的传感器
sbit yf=P3^1;
sbit yz=P3^2;
sbit zz=P2^5;
sbit zf=P2^6;
/*yf=1;yz=0;右轮往后
yf=0;yz=1;右轮往前
zf=1;zz=0;左轮往后
zf=0;zz=1;左轮往前
*/sbit ENA=P1^6;//
sbit ENB=P1^7;unsigned char pwm_value_left = 0;
unsigned char pwm_value_right = 0;
unsigned char push_value_left = 0;
unsigned char push_value_right = 0;void delay_ms(unsigned int ms)// 延时子程序
{    unsigned int a,b; for(a=ms;a>0;a--)for(b=110;b>0;b--);
}void init()
{EA = 1;TMOD |= 0x01;TH0 =(65536 - 100) / 256;TL0 = (65536 - 100)% 256; ET0 = 1;TR0 = 1;
}
void pwm_left()//利用pwm控制左电机速度{if(push_value_left!=0){if(pwm_value_left<push_value_left)ENB=1; elseENB=0;if(pwm_value_left>50)pwm_value_left=0;}
}void pwm_right()//利用pwm控制右电机速度{if(pwm_value_right!=0){if(pwm_value_right<push_value_right)ENA=1;elseENA=0;if(pwm_value_right>50)pwm_value_right=0;}
}
void timer0() interrupt 1 using 2{TH0 =(65536 - 100) / 256;TL0 = (65536 - 100)% 256;  pwm_value_left++;pwm_value_right++;pwm_left();pwm_right();
}
void turn_right1()
{ push_value_left = 40;push_value_right = 0;zf=0;zz=1;yf=0;yz=0;
}void turn_right2()
{push_value_left = 45;push_value_right= 0;zz=1;zf=0;yf=0;yz=0;
}void turn_left1()
{push_value_left= 0;push_value_right= 40;zf=0;yz=1;yf=0;zz=0;
}void turn_left2()
{push_value_left = 0;push_value_right= 45;zf=0;yz=1;yf=0;zz=0;
}void qianjin()
{   push_value_left = 50;push_value_right = 45;//两个电机转速不一样,下方会讲yf=0;yz=1;    zz=1;zf=0;}void xunji()
{if((Left_led == 0)&&(Left_mid_led==1)&&(Right_mid_led== 0)&&(Right_led == 0)){turn_left1(); delay_ms(10);if((Left_led== 0)&&(Left_mid_led  == 0)&&(Right_mid_led  == 0)&&(Right_led   == 0)) return;   }if((Left_led == 0)&&(Left_mid_led == 0)&&(Right_mid_led == 1)&&(Right_led  == 0)){turn_right1();delay_ms(10);if((Left_led== 0)&&(Left_mid_led  == 0)&&(Right_mid_led  == 0)&&(Right_led   == 0)) return;}if((Left_led == 0)&&(Left_mid_led== 0)&&(Right_mid_led == 0)&&(Right_led == 1)){turn_right2();delay_ms(10);if((Left_led== 0)&&(Left_mid_led  == 0)&&(Right_mid_led  == 0)&&(Right_led   == 0)) return;}if((Left_led== 1)&&(Left_mid_led == 0)&&(Right_mid_led == 0)&&(Right_led  == 0)){turn_left2();delay_ms(10);if((Left_led== 0)&&(Left_mid_led  == 0)&&(Right_mid_led  == 0)&&(Right_led   == 0)) return;}
}
void main()
{init();while(1){qianjin();xunji();}}

代码注释写的不多,说一下思路吧:
1.电机控速:利用定时器以及中断控制两个电机pwm脉宽信号中的占空比达到控制电机两端电压以达到控速的效果(不懂的同学b站大学学习一下51单片机pwm那一块就好了,正所谓b站魂,b站人,b站都是人上人,哈哈哈哈)。
2.寻迹:这一块就是判断传感器的四种情况,控制电机的速度,为了让他更精确,你可以在判断过后再判断是否走了直线,如果是,就直接返回。
再说一下制作过程中遇到的问题吧:
1.主板硬件焊接问题就不多说了(最好别用一面锡的洞洞板,实测有效),最主要的是四路红外传感器的位置摆放,还真就是位置定好事半功倍,中间两路的传感器不宜过近(如果你寻迹够精确当我没说),因为如果太近一般情况下他会疯狂检测传感器 ,出现小车“蹦迪摇头”现象。
2.我的电机直线时转速居然不一样!!!!不知道有没有童鞋跟我一样,也算个提示吧。
emmmm,大概就这么多吧,第一次写博客,大佬勿喷,各位老爷,点点关注一起学习吧!!!

基于51单片机的寻迹小车相关推荐

  1. 基于51单片机的电动智能小车(完整论文)

    基于51单片机的电动智能小车(完整论文): 摘 要 80C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评.这里介绍的是如何用80C51单片机来实现长春工业大学的毕业设计,该设计 ...

  2. 51单片机小车的立项书_毕业论文:基于51单片机智能避障小车的设计报告(范文1)...

    <毕业论文:基于51单片机智能避障小车的设计报告.doc>由会员分享,可免费在线阅读全文,更多与<毕业论文:基于51单片机智能避障小车的设计报告>相关文档资源请在帮帮文库(ww ...

  3. 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]

    /***************************************************************/ /*[基于51单片机的无线遥控小车设计] 作者王*茹 */ /*** ...

  4. 基于51单片机的无线遥控小车

    基于51单片机的无线遥控小车 材料:STC89C51(1个).nrf2401(2个).L298N(2个).小车底盘.18650(4个).按键若干.蜂鸣器 功能:前进.后退.左转.右转.鸣笛. 程序请移 ...

  5. 基于51单片机制作的蓝牙小车

    基于51单片机制作的蓝牙小车 这是本人(小菜鸡一枚)于大一寒假所做的小玩意,以展现我这几月所学,这也是我发的第一篇博客,准确来说这可能是我搞51单片机的巅峰所做了,因为部长说以后要学stm32开发板了 ...

  6. 基于单片机的寻迹小车——硬件介绍

    前言 对于电子类专业的学生,当了解了一点单片机的知识后应该就会像博主一样迫不及待地想自己动手做一件小东西玩.这篇文章就来给大家介绍一下关于入门小玩意--循迹小车的硬件介绍. 注:本文介绍的硬件均为模块 ...

  7. 基于AT89C52芯片的寻迹小车论文

    单片机的应用与开发 智能循迹避障小车 摘 要:利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的转向,从而实现自动循迹避障的功能. 关键词:智能小车  STC89C52 ...

  8. c语言智能小车项目的感想,基于51单片机的遥控智能小车实作心得

    两年前学习51单片机时,买了51hei单片机开发板.现在正在学习基于STM32嵌入式系统的FAT32,UGUI和UCOSII操作系统.几乎很少去看51单片机开发板了.某天,宝贝突然说要我给她买一个遥控 ...

  9. 基于51单片机和L298N的小车制作(一)

    到目前为止, 总算把51单片机过了一遍, 本来暑假就要完成的任务一直拖到了现在.  51学完, 就想着先做点东西, 就从小车开始. 玩小车最重要的是什么? 电机.这个就不用多解释了. 从今天早上开始到 ...

最新文章

  1. mfc程序转化为qt_工控编程,Qt 学习之路
  2. 计算机显卡敀主要性能参数,显卡性能看什么参数(新手必备的显卡性能知识全解)...
  3. [转]NS2添加多接口
  4. SAP CRM Fiori应用冗余round trip的原因分析
  5. python200行代码小游戏_200 行python 代码实现 2048 游戏
  6. python修改文件linux编码格式,使用python的chardet库获得文件编码并修改编码
  7. MapX从数据库读取数据形成新图层【转载】
  8. 帧中继的基本配置(Basic FrameRealy)
  9. 服务器调用税务数字系统失败,终于等到你!网上报税常见问题解决方案大集锦!!!...
  10. 关于magic-api的使用入门
  11. java设置excel自动调整行高_Java设置Excel自适应行高、列宽
  12. busboy文件上传遇到的坑,已解决
  13. 由浅入深了解统计机器翻译模型
  14. 傅里叶滤波去噪学习笔记
  15. layui的layer弹出层内置方法
  16. oracle中锁机制,Oracle锁的基本机制
  17. c#文件名去掉后缀_C# 怎么去掉文件名后缀
  18. 将html文件设置成桌面壁纸(含有时间罗盘源码免费文件)
  19. 镜面反射与Phong模型
  20. 埃斯顿机器人 王杰高_产教融合进行时——南京埃斯顿集团王杰高博士一行来我校开展合作交流...

热门文章

  1. Java入门123:一个老鸟的Java学习心得(二维码版)
  2. CF 183(div2)
  3. JoyStick游戏杆编程实践
  4. 《设计模式》之 3 装饰者模式
  5. 为什么新疆人吃的羊肉膻味那么重?
  6. CentOS6.5X86_64系统定制文档详细版
  7. 如何查看电脑WIFI密码
  8. 超好用的导航首页(最新)
  9. [机缘参悟-35]:鬼谷子-飞箝篇-远程连接、远程控制与远程测试之术
  10. linux 系统swap设置,Linux 系统swap 设置