找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于用51单片机完成寻迹小车的一些程序问题

[复制链接]
跳转到指定楼层
楼主
ID:295220 发表于 2018-5-25 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   这是我根据论坛内一位大神的程序序修改得到的一个程序,但是我有三个问题,如上所示。当我去掉这个for循环后,L298N直接就带不起来直流电机了,在这里我想问一下各位大佬这个for循环和这两个delay函数的作用是什么?

单片机源程序如下:
  1. #include <reg51.h>
  2. sbit IN1=P0^0;               
  3. sbit IN2=P0^1;
  4. sbit IN3=P0^2;
  5. sbit IN4=P0^3;
  6. sbit L_PWM=P0^4;           
  7. sbit R_PWM=P0^5;           
  8. sbit hongwai_l=P1^0;
  9. sbit hongwai_r=P1^1;
  10. #define L_go      IN1=1;IN2=0
  11. #define L_back    IN1=0;IN2=1
  12. #define L_stop    IN1=0;IN2=0        
  13. #define R_go      IN3=1;IN4=0
  14. #define R_back    IN3=0;IN4=1
  15. #define R_stop    IN3=0;IN4=0
  16. #define car_go               L_go;R_go;               
  17. #define car_back             L_back;R_back        
  18. #define car_left             R_go;L_stop               
  19. #define car_right            L_go;R_stop              
  20. #define car_stop             L_stop;R_stop        
  21. #define car_left_360         R_go;L_back               
  22. #define car_right_360        L_go;R_back               
  23. unsigned char l_tt=0;        
  24. unsigned char l_Lpwm=3;        
  25. unsigned char l_Rpwm=3;      
  26. void timer0()interrupt 1   using 2
  27. {
  28.         TH0=0XFC;        
  29.         TL0=0X17;
  30.         l_tt++;
  31.         if(l_tt>9)l_tt=0;        
  32.         
  33.         if(l_tt<=l_Lpwm){
  34.                  L_PWM=1;
  35.         }
  36.         else{
  37.                 L_PWM=0;
  38.         }
  39.         if(l_tt<=l_Rpwm){
  40.                 R_PWM=1;
  41.         }
  42.         else{
  43.                 R_PWM=0;
  44.         }
  45. }        

  46. void Delay(unsigned int t)
  47. {
  48.         unsigned int c;
  49.         while(t--){
  50.                 c=10000;
  51.                 while(c--);
  52.         }
  53. }
  54. void time1init()
  55. {
  56.        EA=1;                                                
  57.         TMOD|=0X11;                        
  58.         TH0= 0XFC;               
  59.         TL0= 0X14;
  60.         TR0= 1;
  61.         ET0= 1;        
  62. }
  63. void main(void)
  64. {
  65.         unsigned char i;
  66.          
  67.       if(hongwai_r==0&&hongwai_l==0)
  68.             {
  69.             while(1)
  70.       {      
  71.           l_Lpwm=3;
  72.                 l_Rpwm=3;                 
  73.                 car_go;                        
  74.                 for(i=0;i<10;i++)   //问题一:这里的这个for循环的作用是什么??
  75.        {
  76.                         l_Lpwm++;            
  77.                         Delay(20000);              //问题二:这里的这个Delay函数的作用是什么??
  78.               }               
  79.                 Delay(5);                           //问题三:这里的这个Delay函数的作用是什么??
  80.       }
  81.        }
复制代码



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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