找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2230|回复: 0
收起左侧

四路红外线避障实验源码

[复制链接]
ID:253493 发表于 2018-3-18 10:59 | 显示全部楼层 |阅读模式
四路红外线避障实验单片机源程序如下:
  1. #include <REGX51.H>
  2. #include <INTRINS.H>
  3. //  演示如何控制智能车底盘前进 后退 左右转动和停止
  4. //接线说明
  5. //51 单片机的P1口和智能车底板的J1口对应关系
  6. //P10 -> EN12
  7. //P11 -> EN34
  8. //P12 -> IN1
  9. //P13 -> IN2
  10. //P14 -> IN3
  11. //P15 -> IN4

  12. //P34 -> SHCP
  13. //P35 -> STCP
  14. //P36 -> OE
  15. //P37 -> DAT

  16. //51 单片机的P3 、P2口和智能车底板的J2口对应关系
  17. //P30 -> OUT1
  18. //P31 -> OUT2
  19. //P32 -> OUT3
  20. //P25 -> OUT4

  21. sbit SHCP =  P3^4;
  22. sbit STCP =  P3^5;
  23. sbit OE   =  P3^6;
  24. sbit DAT  =  P3^7;


  25. sbit EN12 =  P1^0;
  26. sbit EN34 =  P1^1;
  27. sbit IN1 =  P1^2;
  28. sbit IN2 =  P1^3;
  29. sbit IN3 =  P1^4;
  30. sbit IN4 =  P1^5;

  31. sbit OUT1 = P3^0;
  32. sbit OUT2 = P3^1;
  33. sbit OUT3 = P3^2;
  34. sbit OUT4 = P2^5;


  35. void Delay(int n)
  36. {
  37.         int i;
  38.         for(;n > 0;n--)
  39.                 for(i=0;i<0xffff;i++)
  40.                         ;
  41. }


  42. void front(void)
  43. {
  44.    EN12 = 1;
  45.    EN34 = 1;
  46.    IN1 = 0;
  47.    IN2 = 1;
  48.    IN3 = 0;
  49.    IN4 = 1;
  50. }

  51. void back(void)
  52. {
  53.    EN12 = 1;
  54.    EN34 = 1;
  55.    IN1 = 1;
  56.    IN2 = 0;
  57.    IN3 = 1;
  58.    IN4 = 0;
  59. }


  60. void left(void)
  61. {
  62.         EN12 = 1;
  63.            EN34 = 1;
  64.            IN1 = 1;
  65.            IN2 = 0;
  66.            IN3 = 0;
  67.            IN4 = 1;
  68. }

  69. void right(void)
  70. {
  71.         EN12 = 1;
  72.            EN34 = 1;
  73.            IN1 = 0;
  74.            IN2 = 1;
  75.            IN3 = 1;
  76.            IN4 = 0;
  77. }


  78. void stop(void)
  79. {
  80.   EN12 = 0;
  81.   EN34 = 0;       
  82. }




  83. void adjust_speed(char num)
  84. {
  85.         char dat,i;
  86.         dat = num;
  87.         OE = 0;
  88.         SHCP = 0;
  89.         STCP = 0;
  90.         for(i =0;i<8;i++)
  91.         {
  92.                  if(dat & 0x80)
  93.                  {
  94.                         DAT =1;
  95.                  }
  96.                  else
  97.                  {
  98.                          DAT = 0;
  99.                 }
  100.                 _nop_();
  101.                 _nop_();
  102.                 SHCP =         1;
  103.                 _nop_();
  104.                 _nop_();
  105.                 SHCP =         0;
  106.                 dat <<=1;
  107.         }

  108.         STCP = 1;
  109.           OE = 0;
  110. }



  111. void main(void)
  112. {
  113.         adjust_speed(150);
  114.         while(1)
  115.         {
  116.                 if(OUT4)
  117.                 {
  118.                         right();
  119.                         Delay(1);
  120.                 }
  121.        
  122.                 if(OUT3)
  123.                 {
  124.                         left();
  125.                         Delay(1);
  126.                 }
  127.        
  128.                 if(OUT2)
  129.                 {
  130.                         right();
  131.                         Delay(1);
  132.                 }
  133.        
  134.                 if(OUT1)
  135.                 {
  136.                         left();
  137.                         Delay(1);
  138.                 }
  139.        
  140.                
  141.                
  142.                 if((OUT4 == 0) &&(OUT3 == 0) && (OUT2 == 0) &&(OUT1 == 0))
  143.                 {
  144.                         front();
  145.                 }
  146.         }
  147.        
  148. }
复制代码

所有资料51hei提供下载:
四路红外线避障实验.rar (28.41 KB, 下载次数: 8)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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