找回密码
 立即注册

QQ登录

只需一步,快速开始

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

智能小车黑线循迹实验程序

  [复制链接]
跳转到指定楼层
楼主
ID:229064 发表于 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)


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

使用道具 举报

沙发
ID:246031 发表于 2017-11-21 13:22 | 只看该作者
这个有电路图吗???大佬
回复

使用道具 举报

板凳
ID:254856 发表于 2018-1-27 15:15 | 只看该作者
谢谢啊
回复

使用道具 举报

地板
ID:299036 发表于 2018-4-24 15:33 来自手机 | 只看该作者
看了有很大的帮助,谢谢
回复

使用道具 举报

5#
ID:423048 发表于 2018-11-8 15:44 | 只看该作者
这个是什么意思啊

自动循迹小车程序.doc

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

回复

使用道具 举报

6#
ID:400569 发表于 2018-11-23 15:16 来自手机 | 只看该作者
解决了我的疑惑
回复

使用道具 举报

7#
ID:401857 发表于 2018-11-26 16:16 | 只看该作者
对我很有帮助‘’
回复

使用道具 举报

8#
ID:473311 发表于 2019-4-5 13:07 | 只看该作者
用的什么传感器啊
回复

使用道具 举报

9#
ID:467843 发表于 2019-4-5 14:08 | 只看该作者
郭文玲呀 发表于 2019-4-5 13:07
用的什么传感器啊

红外传感器
回复

使用道具 举报

10#
ID:575799 发表于 2019-7-1 16:51 | 只看该作者
用什么软件编程呀
回复

使用道具 举报

11#
ID:575799 发表于 2019-7-2 14:16 | 只看该作者
51小车能用这个程序吗
回复

使用道具 举报

12#
ID:588628 发表于 2019-7-23 12:50 | 只看该作者
用啥软件编程的
回复

使用道具 举报

13#
ID:587564 发表于 2019-7-26 14:12 | 只看该作者
看了有很大帮助,谢谢
回复

使用道具 举报

14#
ID:590918 发表于 2019-8-2 16:22 | 只看该作者
有帮助
回复

使用道具 举报

15#
ID:617434 发表于 2019-9-27 23:36 | 只看该作者
貌似不对啊,我咋编译不了?
回复

使用道具 举报

16#
ID:624645 发表于 2019-10-15 20:33 | 只看该作者
谢谢啊
回复

使用道具 举报

17#
ID:629701 发表于 2019-10-25 13:48 | 只看该作者

ARM的KEIL
回复

使用道具 举报

18#
ID:629701 发表于 2019-10-25 13:49 | 只看该作者
有问:楼主的电机是用的无刷电机?没有使用电机驱动模块?
回复

使用道具 举报

19#
ID:664199 发表于 2019-12-15 11:40 | 只看该作者
借用一下 大佬
回复

使用道具 举报

20#
ID:789860 发表于 2020-6-25 23:02 | 只看该作者
感谢分享!!
回复

使用道具 举报

21#
ID:259955 发表于 2020-7-6 16:12 | 只看该作者
你好,有个问题请教一下,小车是怎么判断黑色的 ?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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