找回密码
 立即注册

QQ登录

只需一步,快速开始

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

程序烧进小车,小车电机不转,驱动连电机那块无电压,感觉连线没错,求大佬看看程....

[复制链接]
跳转到指定楼层
楼主
ID:442241 发表于 2019-11-24 15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序烧进小车,小车电机不转,驱动连电机那块无电压,感觉连线没错,求大佬看看程序哪错了
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit IN1 = P2^0;
  6. sbit IN2 = P2^1;
  7. sbit ENA = P3^6;
  8. sbit IN3 = P2^2;
  9. sbit IN4 = P2^3;
  10. sbit ENB = P3^7;

  11. sbit left1 = P0^0;
  12. sbit left2 = P0^1;
  13. sbit left3 = P0^2;
  14. sbit left4 = P0^3;
  15. sbit left5= P0^4;
  16. sbit might = P0^5;
  17. sbit right5 = P0^6;
  18. sbit right4 = P0^7;
  19. sbit right3 = P1^7;
  20. sbit right2= P1^6;
  21. sbit right1 = P1^5;
  22. unsigned char zkb1 = 0;//you
  23. unsigned char zkb2 = 0;
  24. unsigned char t = 0;


  25. void delay(uint z)   
  26. {
  27.         uint x,y;
  28.         for(x=z;x>0;x--)
  29.         for(y=110;y>0;y--);       
  30. }

  31. void init()
  32. {
  33.         EA = 1;
  34.         TMOD |= 0x01;
  35.         TH0 =(65536 - 100) / 256;
  36.         TL0 = (65536 - 100)% 256;       
  37.         ET0 = 1;
  38. }

  39. void timer0() interrupt 1
  40. {

  41.         TH0 = (65536 - 100) / 256;
  42.         TL0 = (65536 - 100) % 256;
  43.                
  44.         if(t < zkb1)
  45.         {
  46.                 ENA = 1;
  47.         }
  48.         else
  49.         {
  50.                 ENA = 0;
  51.         }
  52.         if(t < zkb2)
  53.         {

  54.                 ENB =1;
  55.         }
  56.         else
  57.         {
  58.                 ENB = 0;
  59.         }
  60.         t++;
  61.         if(t >= 50)
  62.         {
  63.                 t = 0;
  64.         }
  65. }

  66. void turn_left1()
  67. {
  68.   
  69.         zkb1 = 5;
  70.         zkb2 = 26;


  71. }

  72. void turn_left2()
  73. {
  74.   
  75.         zkb1 = 16;
  76.         zkb2 =30;


  77. }

  78. void turn_left3()
  79. {
  80.         zkb1 = 22;
  81.         zkb2 = 32;


  82. }

  83. void turn_left4()
  84. {
  85.         zkb1 = 32;
  86.         zkb2 = 38;

  87. }
  88. void turn_left5()
  89. {
  90.         zkb1 = 37;
  91.         zkb2 = 40;

  92. }
  93. void turn_might()
  94. {
  95.         zkb1 = 40;
  96.         zkb2 = 40;

  97. }
  98. void turn_right5()
  99. {
  100.         zkb1 = 40;
  101.         zkb2 = 37;

  102. }
  103. void turn_right4()
  104. {
  105.         zkb1 = 38;
  106.         zkb2 = 32;
  107. }

  108. void turn_right3()
  109. {
  110.         zkb1 = 32;
  111.         zkb2 = 22;

  112. }

  113. void turn_right2()
  114. {
  115.         zkb1 = 30;
  116.         zkb2 = 16;

  117. }
  118. void turn_right1()
  119. {
  120.         zkb1 = 26;
  121.         zkb2 = 5;
  122. }
  123.                        




  124. void xunji()
  125. {  
  126.         unsigned char flag;
  127.         if((left1 == 1)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  128.         {
  129.                 flag = 0;
  130.         }
  131.         if((left1 == 0)&&(left2 == 1)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  132.         {
  133.                 flag = 1;
  134.         }       
  135.         if((left1 == 0)&&(left2 == 0)&&(left3 == 1)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  136.         {
  137.                 flag = 2;
  138.         }       
  139.         if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4==1)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  140.         {
  141.                 flag = 3;
  142.         }
  143.         if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 1)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  144.         {
  145.                 flag =4;
  146.         }
  147.         if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 1)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  148.         {
  149.                 flag = 5;
  150.         }       
  151.         if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 1)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  152.         {
  153.                 flag = 6;
  154.         }       
  155.         if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 1)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
  156.         {
  157.                 flag = 7;
  158.         }
  159.                 if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 1)&&(right2 == 0)&&(right1 == 0))
  160.         {
  161.                 flag = 8;
  162.         }
  163.         if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 1)&&(right1 == 0))
  164.         {
  165.                 flag = 9;
  166.         }       
  167.         if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 1)&&(right1 == 1))
  168.         {
  169.                 flag = 10;
  170.         }       
  171.        


  172.        
  173.        
  174.         switch(flag)
  175.         {
  176.                 case 0:turn_left1();break;
  177.                
  178.                 case 1:turn_left2();break;
  179.                
  180.                 case 2:turn_left3();break;
  181.                
  182.                 case 3:turn_left4();break;
  183.                
  184.                 case 4:turn_left5();break;
  185.                
  186.                 case 5:turn_might();break;
  187.                                
  188.                 case 6:turn_right5();break;
  189.                
  190.                 case 7:turn_right4();break;
  191.                                
  192.                 case 8:turn_right3();break;
  193.                
  194.                 case 9:turn_right2();break;
  195.                
  196.     default:turn_right1();break;
  197.                                 }
  198. }


  199. void main()
  200. {
  201.         unsigned int i = 0;
  202.         init();
  203.         IN1 = 0;
  204.         IN2 = 1;
  205.   IN3 = 1;
  206.   IN4 = 0;
  207.        
  208.   
  209.         while(1)
  210.         {
  211.                         TR0 = 1;                                 //Æô¶¯¶¨Ê±Æ÷
  212.                         xunji();
  213.           if((left2 == 1)&&(left1 == 1)&&(right1 == 1)&&(right2 == 1))
  214.           {
  215.             i++;

  216.                 }
  217.              if(i==2900)
  218.              {
  219.               TR0 = 0;                                 //Æô¶¯¶¨Ê±Æ÷
  220.               IN1 = 0;
  221.               IN2 = 0;
  222.         IN3 = 0;
  223.         IN4 = 0;
  224.              while(1)
  225.              {
  226.                    _nop_();                       
  227.              }
  228.      }
  229.   }
  230. }
复制代码


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

使用道具 举报

沙发
ID:584814 发表于 2019-11-24 21:07 | 只看该作者
网上找个能驱动电机的程度烧进去试试究竟是不是软件错,如果是就从简到繁地DEBUG。
回复

使用道具 举报

板凳
ID:644988 发表于 2019-11-25 16:59 | 只看该作者
先IO口直接输出驱动电机,看硬件是否正常先。如果不事先确认硬件正常只看软件会很痛苦!! 我也试过“感觉连线没错”非要改程序,结果白忙了一天。请先确认硬件正常。
回复

使用道具 举报

地板
ID:606366 发表于 2019-11-26 10:58 | 只看该作者
硬件是软件的基础,最好先确定一下硬件是否正常
回复

使用道具 举报

5#
ID:649862 发表于 2019-11-26 13:46 | 只看该作者
先用万能表测一下每个位置,看看硬件连线是否有问题,没问题的的话,串口调试看看软件是否有问题
回复

使用道具 举报

6#
ID:638447 发表于 2019-11-26 17:17 | 只看该作者
你先测试一下硬件的问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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