找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机避障小车代码

[复制链接]
跳转到指定楼层
楼主
ID:466394 发表于 2019-1-11 12:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一种可调速避障小车源程序

单片机源程序如下:
  1. #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
  2. #include<intrins.h>                //因为要用到左右移函数,所以加入这个头文件
  3. #include "Timer.h"

  4. typedef unsigned int u16;          //对数据类型进行声明定义
  5. typedef unsigned char u8;


  6. sbit leftmoto1 = P1^7;       
  7. sbit leftmoto2 = P1^6;       
  8. sbit rightmoto1=P1^5;       
  9. sbit rightmoto2=P1^4;
  10.        
  11. sbit L1 = P1^3;       
  12. sbit L2 = P1^2;       
  13. sbit R1=P1^0;       
  14. sbit R2=P1^1;

  15. //#define Leftmotogo {left-moto1= 0 ;left-moto2= 1 ; };
  16. //#define Leftmotoback {left-moto1= 1 ;left-moto2= 0 ; };
  17. //#define Leftmotostop {left-moto1= 1 ;left-moto2= 1 ; };
  18. //#define Rightmotogo {right-moto1= 0 ;right-moto2= 1 ;};
  19. //#define Rightmotoback {right-moto1= 1 ;right-moto2= 0 ; };
  20. //#define Rightmotostop {right-moto1= 1 ;right-moto2= 1 ; };

  21. void run()
  22. {
  23.         leftmoto1= 1 ;
  24.         leftmoto2= 0 ;
  25.         rightmoto1= 1 ;
  26.         rightmoto2= 0 ;            //正转
  27. }

  28. void left()
  29. {
  30.         leftmoto1= 0 ;
  31.         leftmoto2= 1 ;          //左轮反转
  32.         rightmoto1= 1 ;
  33.         rightmoto2= 0 ;          //右轮正转
  34. }
  35. void right()
  36. {
  37.         leftmoto1= 1 ;
  38.         leftmoto2= 0 ;           //左轮正转
  39.         rightmoto1= 0 ;
  40.         rightmoto2= 1 ;          //右轮反转
  41. }
  42. void stop()
  43. {
  44.         leftmoto1= 1 ;
  45.         leftmoto2= 1 ;
  46.         rightmoto1= 1 ;
  47.         rightmoto2= 1 ;
  48. }

  49. void back()
  50. {
  51.         leftmoto1= 0 ;
  52.         leftmoto2= 1 ;
  53.         rightmoto1= 0 ;
  54.         rightmoto2= 1 ;
  55. }

  56. void delay_ms(u16 x)
  57. {        while(x--);
  58. //    unsigned int i,j;
  59. //        for(i = x;i > 0;i--)
  60. //        {
  61. //        for(j = 10 ;j > 0;j--);
  62. //        }       
  63. }

  64. void main()
  65. {
  66.    ENA = 1 ;
  67.    ENB = 1 ;
  68.    while(1)
  69.    {
  70.   
  71.           InitTimer0();
  72.         while(1)
  73.         {
  74.         if(L1&&L2&&R1&&R2)        run();
  75.         if((!L1)&&(!L2)&&R1&&R2)  //right();
  76.         {
  77.         stop();
  78.         //delay_ms( 1 );
  79.         right();
  80.         }
  81.         if(L1&&(!L2)&&R1&&R2)  
  82.         {
  83.         stop();
  84.         //delay_ms( 1 );
  85.         right();
  86.         }
  87.         if((!L1)&&L2&&R1&&R2)  
  88.         {
  89.         stop();
  90.         //0delay_ms( 10 );
  91.         right();         
  92.         }
  93.         if((!L1)&&(!L2)&&(!R1)&&R2)  
  94.         {
  95.         stop();
  96.         //delay_ms( 1 );
  97.         right();         
  98.         }
  99.         if(L1&&L2&&R1&&(!R2))
  100.         {
  101.         stop();
  102.         //delay_ms( 1 );
  103.         left();         
  104.         }
  105.         if(L1&&L2&&(!R1)&&R2)
  106.         {
  107.         stop();  
  108.         left();
  109.         }
  110.         if(L1&&L2&&(!R2)&&(!R2))
  111.         {
  112.         stop();  
  113.         left();
  114.         }
  115.         if(L1&&(!L2)&&(!R1)&&(!R2))  
  116.         {
  117.         stop();  
  118.         left();
  119.         }
  120.         if((!L1)&&(!L2)&&(!R1)&&(!R2))  
  121.         {
  122.         stop();  
  123.         back();
  124.         }
  125.                
  126.         }                         
  127. }
  128. }
复制代码

所有资料51hei提供下载:
小车.zip (28.5 KB, 下载次数: 8)



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

使用道具 举报

沙发
ID:1 发表于 2019-1-11 15:30 | 只看该作者
需要补全原理图即可获得100黑币+
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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