标题: 智能小车黑线循迹实验程序 [打印本页]

作者: AAAAAA666666    时间: 2017-8-24 08:21
标题: 智能小车黑线循迹实验程序
关于小车沿黑线循迹的程序!!!!!

单片机源程序如下:
  1. #include <reg52.h>                                    //包含52系统头文件                         
  2. #include "zncar.h"                                     //包含能小车头文件                  

  3. unsigned char pwmval_left   = 0;              //变量定义                  
  4. unsigned char pwmval_right  = 0;

  5. unsigned char pwmval_left_init  = 5;          //左电机占空比调节 ,调节值在0到20之间             此值越大,电机的转速越快
  6. unsigned char pwmval_right_init = 5;          //右电机占空比调节 ,调节值在0到20之间          

  7. bit right_pwm = 1;                                    //右电机PWM开关,为1时打开   
  8. bit left_pwm  = 1;                                            //左电机PWM开关,为1时打开

  9. void delay(int In,int Out)                    //定义延时函数            
  10. {
  11. int i,j;
  12. for( i = 0;i < In;i++ )
  13. {
  14.   for( j = 0;j < Out;j++ )
  15.   {;}
  16. }
  17. }
  18. /**************************************************前进  左转   右转******************************************************************************/
  19. void forward(void)                                   //智能小车前进
  20. {
  21. IN1 = 0;
  22. IN2 = 1;                          //左车轮的正转                 

  23. IN3 = 0;
  24. IN4 = 1;                          //右车轮的正转                  
  25. }

  26. void left_turn(void)                       //智能小车左转   
  27. {
  28. IN1 = 0;
  29. IN2 = 0;                          //左车轮停转  

  30. IN3 = 0;
  31. IN4 = 1;                          //右车轮正转            
  32. }                                                                    

  33. void right_turn(void)                   //智能小车右转
  34. {  
  35. IN1 = 0;
  36. IN2 = 1;                          //左车论的正转          

  37. IN3 = 0;
  38. IN4 = 0;                          //右车轮停转  
  39. }

  40. /****************************左电机控制函数********************************************/                                                         
  41. void left_moto(void)
  42. {  
  43. if(left_pwm)
  44. {
  45.   if(pwmval_left <= pwmval_left_init)
  46.   {
  47.    EN1 = 1;
  48.   }
  49.   else
  50.   {
  51.    EN1 = 0;
  52.   }
  53.   if(pwmval_left >= 20)
  54.   {
  55.    pwmval_left = 0;
  56.   }
  57. }
  58. else   
  59. {
  60.   EN1 = 0;                     
  61. }
  62. }

  63. /***************************右电机控制函数***************************************/
  64. void right_moto(void)
  65. {
  66. if(right_pwm)
  67. {
  68.   if(pwmval_right <= pwmval_right_init)                  
  69.   {
  70.    EN2 = 1;                                                           
  71.   }
  72.   else if(pwmval_right > pwmval_right_init)
  73.   {
  74.    EN2 = 0;
  75.   }
  76.   if(pwmval_right >= 20)
  77.   {
  78.    pwmval_right = 0;
  79.   }
  80. }
  81. else   
  82. {
  83.   EN2 = 0;                                                      
  84. }
  85. }
  86.            
  87. /**************单片机定时器0的中断处理函数***************/
  88. void timer0()interrupt 1 using 2
  89. {
  90. TH0 = 0xfc;                                      //1Ms定时          
  91. TL0 = 0x66;

  92. pwmval_left  = pwmval_left  + 1;
  93. pwmval_right = pwmval_right + 1;

  94. left_moto();
  95. right_moto();
  96. }       



  97. void keyscan(void)                         //按键扫描函数            
  98. {
  99. loop:if(SWITCH_S7 == 0)                                  //判断是否有按下信号          
  100.           {
  101.            delay(5,10);                                    //延时10ms          
  102.            if(SWITCH_S7 == 0)                                 //再次判断是否按下            
  103.            {
  104.             BEEP_IO = 0;                       //蜂鸣器响                 
  105.                 while(SWITCH_S7 == 0);                   //判断是否松开按键                  
  106.             BEEP_IO = 1;                       //蜂鸣器停止  
  107.            }
  108.            else
  109.            {
  110.                 goto loop;                        //跳转到loop重新检测          
  111.            }
  112.           }
  113.           else
  114.           {
  115.            goto loop;                        //跳转到loop重新检测            
  116.           }
  117. }
  118. /******将定时器0设置成每隔1MS申请一次中断*********/
  119. void timer_init()
  120. {
  121. TMOD=0x01;
  122. TH0= 0xfc;                                  //1ms定时   
  123. TL0= 0x66;
  124. TR0= 1;
  125. ET0= 1;
  126. EA = 1;                                                     //开总中断       
  127. }

  128. //主函数   
  129. void main(void)
  130. {       
  131. P1 = 0x00;                                     //关电机       
  132. keyscan();                                            //按键启动检测            
  133. delay(100,1000);                               //1s后启动          

  134. timer_init();        //调用定时器0的初始化函数

  135. while(1)                                            //无限循环            
  136. {  
  137.   //有信号为0  没有信号为1          
  138. ……………………

  139. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
7、智能小车黑线循迹实验.rar (31.03 KB, 下载次数: 151)



作者: Rude    时间: 2017-11-21 13:22
这个有电路图吗???大佬

作者: 大椿面    时间: 2018-1-27 15:15
谢谢啊
作者: 2393294748    时间: 2018-4-24 15:33
看了有很大的帮助,谢谢
作者: 6767jj    时间: 2018-11-8 15:44
这个是什么意思啊

自动循迹小车程序.doc

24 KB, 下载次数: 14, 下载积分: 黑币 -5


作者: a1622460239    时间: 2018-11-23 15:16
解决了我的疑惑
作者: asongl    时间: 2018-11-26 16:16
对我很有帮助‘’
作者: 郭文玲呀    时间: 2019-4-5 13:07
用的什么传感器啊
作者: 我是你爸爸丶    时间: 2019-4-5 14:08
郭文玲呀 发表于 2019-4-5 13:07
用的什么传感器啊

红外传感器
作者: whynot6    时间: 2019-7-1 16:51
用什么软件编程呀
作者: whynot6    时间: 2019-7-2 14:16
51小车能用这个程序吗
作者: hanjiangxue123    时间: 2019-7-23 12:50
用啥软件编程的
作者: 小毛孩子    时间: 2019-7-26 14:12
看了有很大帮助,谢谢
作者: 1802020261    时间: 2019-8-2 16:22
有帮助
作者: 余泽文    时间: 2019-9-27 23:36
貌似不对啊,我咋编译不了?
作者: 3139991932    时间: 2019-10-15 20:33
谢谢啊
作者: YOYOYIIII    时间: 2019-10-25 13:48
hanjiangxue123 发表于 2019-7-23 12:50
用啥软件编程的

ARM的KEIL

作者: YOYOYIIII    时间: 2019-10-25 13:49
有问:楼主的电机是用的无刷电机?没有使用电机驱动模块?
作者: jizhifei    时间: 2019-12-15 11:40
借用一下 大佬
作者: 欢欢asd    时间: 2020-6-25 23:02
感谢分享!!
作者: helloworld.    时间: 2020-7-6 16:12
你好,有个问题请教一下,小车是怎么判断黑色的 ?





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1