⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wifi+̤

📁 WIFI无线小车
💻
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V9.01   WTCAR                                                                 07/02/2012 16:12:39 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE WTCAR
OBJECT MODULE PLACED IN WTcar.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE WTcar.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //Wifi 智能小车  第二版
   2          //小车增加调速功能
   3          //Wonder Technology
   4          //单片机采用22.1184M晶振
   5          //加入控制摄像头的直流驱动
   6          //加入红外避障传感器
   7          
   8          #include <STC12C5A.h>   //包含STC12C5A系列单片机的头文件
   9          #include"1602.h"
  10          #include"eeprom.h"
  11          
  12          sbit LED1=P3^0;         //定义两只LED到P3^0,P3^1
  13          sbit LED2=P3^1;
  14          
  15          sbit Light_cam=P3^2;
  16          sbit Light_B=P2^3;      //控制车身的LED
  17          
  18          sbit beed=P2^7;
  19          sbit KEY1=P3^6;
  20          sbit KEY2=P3^7;
  21          
  22          
  23          //电机控制端
  24          sbit EN1=P2^0;
  25          sbit IN1=P2^1;
  26          sbit IN2=P2^2;
  27          
  28          sbit EN2=P2^4;
  29          sbit IN3=P2^5;
  30          sbit IN4=P2^6;
  31          
  32          // 驱动其它设备,如激光,
  33          sbit EN1_S=P1^0;
  34          sbit IN1_S=P1^1;
  35          sbit IN2_S=P1^2;
  36          sbit EN2_S=P1^3;
  37          sbit IN3_S=P1^4;
  38          sbit IN4_S=P1^5;
  39          
  40          //红外避障传感器
  41          sbit IROA_R=P3^3;
  42          sbit IROA_M=P3^4;
  43          sbit IROA_L=P3^5;
  44          
  45          
  46          
  47          
  48          #define sensor_IROA P3  //跟上面定义一样,取P3^3-P3^5
  49          
  50          //PWM  控制云台
  51          sbit SPWM1=P1^6;                //控制摄像头左右活动
  52          sbit SPWM2=P1^7;                //控制摄像头上下活动
  53          
  54          unsigned long PWM_cnt=0;//
  55          
C51 COMPILER V9.01   WTCAR                                                                 07/02/2012 16:12:39 PAGE 2   

  56          unsigned int PWM_G1=33; //初始化中心值
  57          unsigned int PWM_G2=33; //
  58          
  59          int speed_R=0;   //定义两个电机的速度,有正负之分,为正是,正转。(范围-100~100)
  60          int speed_L=0;
  61          
  62          int pre_RS=0;
  63          int pre_LS=0;
  64          
  65          int set_RS=0;
  66          int set_LS=0;
  67          
  68          int speed_A=0;
  69          unsigned int cnt_s=0;   //用于计数PWM的点空比0=100;
  70          
  71          unsigned long cnt_b=0;
  72          unsigned long cnt_beed=0;       //用于控制蜂鸣器
  73          unsigned int flag_beed=1;
  74          unsigned int B_counter=0;
  75          
  76          unsigned char R_date[3]={0};
  77          unsigned char RBuff_date[4]={0};
  78          
  79          unsigned char pattern=0;        //0:stop 1:start
  80          
  81          unsigned long cnt_ser=0;        //用于舵机直流电机控制
  82          unsigned char flag_ser=0;
  83          
  84          unsigned char flag_phone=0;     //用于手机控制标记
  85          unsigned char check_phone=0;
  86          unsigned char flag_PC=0;
  87          
  88          
  89          
  90          void delay(unsigned long t)       //软件延时带参数t
  91          {
  92   1              unsigned int j,k;
  93   1              for(t;t>0;t--)
  94   1              for(j=20;j>0;j--)
  95   1              for(k=100;k>0;k--);
  96   1      }
  97          
  98          
  99          unsigned char sen_inp_IROA()
 100          {
 101   1              unsigned IROA_date;
 102   1              IROA_date=sensor_IROA;
 103   1              IROA_date=~IROA_date;
 104   1              IROA_date &=0x38;
 105   1              IROA_date>>=3;
 106   1              return(IROA_date);
 107   1      }
 108          
 109          void beed_ctrl(unsigned long time , unsigned int num)
 110          {
 111   1              beed=0;
 112   1              cnt_beed=2*time;                
 113   1              B_counter=2*num;
 114   1              beed=1;
 115   1              cnt_b=0;
 116   1      }
 117          
C51 COMPILER V9.01   WTCAR                                                                 07/02/2012 16:12:39 PAGE 3   

 118          
 119          void display_1602(unsigned int addr,unsigned char temp)
 120          {
 121   1              unsigned int i,w[2];
 122   1              w[0]=temp/16;
 123   1              w[1]=temp%16;
 124   1      
 125   1              for(i=0;i<2;i++)
 126   1              {
 127   2                      switch(w[i])
 128   2                      {
 129   3                              case 0: print(addr+i,"0"); break;
 130   3                              case 1: print(addr+i,"1"); break;
 131   3                              case 2: print(addr+i,"2"); break;
 132   3                              case 3: print(addr+i,"3"); break;
 133   3      
 134   3                              case 4: print(addr+i,"4"); break;
 135   3                              case 5: print(addr+i,"5"); break;
 136   3                              case 6: print(addr+i,"6"); break;
 137   3                              case 7: print(addr+i,"7"); break;
 138   3      
 139   3                              case 8: print(addr+i,"8"); break;
 140   3                              case 9: print(addr+i,"9"); break;
 141   3                              case 10: print(addr+i,"A"); break;
 142   3                              case 11: print(addr+i,"B"); break;
 143   3      
 144   3                              case 12: print(addr+i,"C"); break;
 145   3                              case 13: print(addr+i,"D"); break;
 146   3                              case 14: print(addr+i,"E"); break;
 147   3                              case 15: print(addr+i,"F"); break;
 148   3                              default: break;
 149   3                      }
 150   2              }
 151   1      }
 152          
 153          void display_1602_10(unsigned int addr,unsigned char temp)
 154          {
 155   1              unsigned int i,w[3];
 156   1              w[0]=temp/100;
 157   1              w[1]=temp/10%10;
 158   1              w[2]=temp%10;
 159   1      
 160   1              for(i=0;i<3;i++)
 161   1              {
 162   2                print2(addr+i,w[i]);          
 163   2              }
 164   1      }
 165          
 166          /****************采用直流电机控制摄像头上下活动***********/
 167          void ser_up()
 168          {
 169   1              EN1_S=1;
 170   1              IN1_S=0;
 171   1              IN2_S=1;
 172   1              flag_ser=1;
 173   1      }
 174          
 175          void ser_down()
 176          {
 177   1              EN1_S=1;
 178   1              IN1_S=1;
 179   1              IN2_S=0;
C51 COMPILER V9.01   WTCAR                                                                 07/02/2012 16:12:39 PAGE 4   

 180   1              flag_ser=1;
 181   1      }
 182          
 183          /****************采用舵机控制摄像头上下左右活动***********/
 184          void cam_left()
 185          {
 186   1              PWM_G1++;
 187   1              if(PWM_G1>53)
 188   1              {
 189   2                      PWM_G1=53;
 190   2              }       
 191   1      }
 192          
 193          void cam_right()
 194          {
 195   1              PWM_G1--;
 196   1              if(PWM_G1<13)
 197   1              {
 198   2                      PWM_G1=13;
 199   2              }       
 200   1      }
 201          
 202          void cam_up()
 203          {
 204   1              PWM_G2--;
 205   1              if(PWM_G2<13)
 206   1              {
 207   2                      PWM_G2=13;
 208   2              }
 209   1              
 210   1      }
 211          
 212          void cam_down()
 213          {
 214   1              PWM_G2++;
 215   1              if(PWM_G2>53)
 216   1              {
 217   2                      PWM_G2=53;
 218   2              }       
 219   1      }
 220          
 221          void cam_mid()
 222          {
 223   1              PWM_G1=Byte_Read(0x00);;
 224   1              PWM_G2=Byte_Read(0x01);;
 225   1      }
 226          
 227          /*************采用L293驱动前车灯**************/
 228          void LED_F_on()
 229          {
 230   1              EN2_S=1;
 231   1              IN4_S=1;
 232   1      }
 233          void LED_F_off()
 234          {
 235   1              EN2_S=1;
 236   1              IN4_S=0;
 237   1      }
 238          /*************采用L293驱动激光灯**************/
 239          void Laser_on()
 240          {
 241   1              EN2_S=1;
C51 COMPILER V9.01   WTCAR                                                                 07/02/2012 16:12:39 PAGE 5   

 242   1              IN3_S=1;
 243   1      }
 244          void Laser_off()
 245          {
 246   1              EN2_S=1;
 247   1              IN3_S=0;
 248   1      }
 249          
 250          /*************采用继电器驱动水泵**************/
 251          
 252          
 253          /*************init To************/
 254          void init_T0(void)
 255          {
 256   1              TMOD|=0x01;     //定时器工作在模式1
 257   1              TH0=0xff;       //定时初值TH0=0xff  TL0=0x49 定时100uS
 258   1              TL0=0x49;       
 259   1              TR0=1;
 260   1              ET0=1;
 261   1      }
 262          
 263          
 264          /************TO interrupt********/
 265          void timer0(void) interrupt 1
 266          {
 267   1              TH0=0xff;
 268   1              TL0=0x49;
 269   1      
 270   1              cnt_s++;        //PWM占空比计数 0-100

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -