找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1424|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机寻迹小车源码 二驱,两个传感器

[复制链接]
跳转到指定楼层
楼主
ID:354876 发表于 2018-6-20 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
二驱,两个传感器
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int


  4. sbit left1=P2^0;
  5. sbit left2=P2^1;
  6. sbit right1=P2^2;
  7. sbit right2=P2^3;   

  8.       
  9. sbit left_red=P2^4; //白线位置

  10. sbit right_red=P2^5; //白线位置
  11. void delay(uint z)
  12. {
  13. uchar i;
  14. while(z--)
  15. {for(i=0;i<121;i++);}
  16. }



  17. void straight() //走直线函数
  18. {

  19. left1=1;
  20. left2=0;
  21. right1=1;
  22. right2=0;
  23. }
  24. void turn_left() //左转弯函数
  25. {

  26. left1=1;
  27. left2=1;
  28. right1=1;
  29. right2=0;
  30. }
  31. void turn_right() //右转弯函数
  32. {

  33. left1=1;
  34. left2=0;
  35. right1=1;
  36. right2=1;
  37. }
  38. void turn_back() //后退(反转)函数
  39. {
  40. left1=0;
  41. left2=1;
  42. right1=0;
  43. right2=1;

  44. }
  45. void infrared() //循迹
  46. {
  47. uchar flag;
  48. if((left_red==1)&(right_red==1))
  49.    {flag=0;}
  50.    else
  51. if((left_red==0)&(right_red==1))
  52.    {flag=1;}
  53.    else
  54. if((left_red==1)&(right_red==0))
  55.    {flag=2;}
  56.    else
  57. if((left_red==0)&(right_red==0))
  58.    {flag=3;}
  59. switch (flag)
  60.    {
  61.     case 0: straight();
  62.      break;
  63.     case 1: turn_left();
  64.      break;
  65.     case 2: turn_right();
  66.      break;
  67.     case 3: turn_back();
  68.      break;


  69.     default:
  70.      break;
  71.    }

  72. }
  73. void main(void)
  74. {

  75. delay(1);
  76. while(1)
  77. {
  78.    infrared();
  79. // straight();
  80. }

  81. }
复制代码


新建文本文档.rar

589 Bytes, 下载次数: 9, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表