智能小车上的蓝牙和避障程序

来源:本站
导读:目前正在解读《智能小车上的蓝牙和避障程序》的相关信息,《智能小车上的蓝牙和避障程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《智能小车上的蓝牙和避障程序》的详细说明。
简介:这里给大家介绍了一个智能小车上的蓝牙和避障程序。

#include<AT89x52.H>    #include <intrins.h>   #define Left_moto_go      {P1_0=1,P1_1=0,P1_2=1,P1_3=0;}    //左边两个电机向前走#define Left_moto_back    {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //左边两个电机向后转#define Left_moto_Stop    {P1_0=0,P1_1=0,P1_2=0,P1_3=0;}    //左边两个电机停转                     #define Right_moto_go     {P1_4=1,P1_5=0,P1_6=1,P1_7=0;}//右边两个电机向前走#define Right_moto_back   {P1_4=0,P1_5=1,P1_6=0,P1_7=1;}//右边两个电机向前走#define Right_moto_Stop   {P1_4=0,P1_5=0,P1_6=0,P1_7=0;}//右边两个电机停转      #define Sevro_moto_pwm    P2_7 //接舵机信号端输入PWM信号调节速度#define left     'C'    #define right    'D'#define up       'A'    #define down     'B'#define stop     'F'#define Car      '1'   //手机软件1号键unsigned char disbuff[4]  ={ 0,0,0,0,};    unsigned char posit=0; unsigned int  time=0;    //时间变量unsigned int  timer1=0;    //时间变量    unsigned int  timer=0;//延时基准变量 bit  flag_REC=0; //串行接收标去位bit  flag    =0;  bit  flag_bz =0;unsigned char  i=0;unsigned char  dat=0;    unsigned char  buff[5]=0;       //接收缓冲字节   /************************************************************************///延时函数   void delay(unsigned int k){         unsigned int x,y; for(x=0;x<k;x++)    for(y=0;y<2000;y++);}/************************************************************************///前速前进     void  run(void){ Left_moto_go ;   //左电机往前走 Right_moto_go ;  //右电机往前走}//前速后退     void  backrun(void){     Left_moto_back ;   //左电机往前走 Right_moto_back ;  //右电机往前走}//左转     void  leftrun(void){     Left_moto_back ;   //左电机往前走 Right_moto_go ;    //右电机往前走}//右转     void  rightrun(void){     Left_moto_go ;   //左电机往前走 Right_moto_back ;  //右电机往前走}//STOP     void  stoprun(void){  Left_moto_Stop ;   //左电机往前走 Right_moto_Stop ;  //右电机往前走}//字符串发送函数  void send_str( )                   // 传送字串    {    unsigned char i = 0;    while(str[i] != '')   {SBUF = str[i];while(!TI);// 等特数据传送TI = 0;// 清除数据传送标志i++;// 下一个字符   }    }  void send_str1( )                   // 传送字串    {    unsigned char i = 0;    while(str1[i] != '')   {SBUF = str1[i];while(!TI);// 等特数据传送TI = 0;// 清除数据传送标志i++;// 下一个字符   }    }  void send_str2( )                   // 传送字串    {    unsigned char i = 0;    while(str2[i] != '')   {SBUF = str2[i];while(!TI);// 等特数据传送TI = 0;// 清除数据传送标志i++;// 下一个字符   }    }      void send_str3()                   // 传送字串    {    unsigned char i = 0;    while(str3[i] != '')   {SBUF = str3[i];while(!TI);// 等特数据传送TI = 0;// 清除数据传送标志i++;// 下一个字符   }    }      void send_str4()                   // 传送字串    {    unsigned char i = 0;    while(str4[i] != '')   {SBUF = str4[i];while(!TI);// 等特数据传送TI = 0;// 清除数据传送标志i++;// 下一个字符   }/************************************************************************/void sint() interrupt 4  //中断接收3个字节{      if(RI)                 //是否接收中断    {       RI=0;       dat=SBUF;       if(dat=='O'&&(i==0)) //接收数据第一帧         {            buff[i]=dat;            flag=1;        //开始接收数据         }       else      if(flag==1)     {      i++;      buff[i]=dat;      if(i>=2)      {i=0;flag=0;flag_REC=1 ;}  // 停止接收     } }}/*********************************************************************/ void main(void){TMOD=0x11;      TH1=(65536-100)/256;  //100US定时TL1=(65536-100)%256;TH0=0;TL0=0;     T2CON=0x34;T2MOD=0x00;RCAP2H=0xFF;RCAP2L=0xDC;    SCON=0x50;      PCON=0x00;     PS=1;    TR1=1;ET1=1;ES=1;     EA=1;  while(1)/*无限循环*/{  while(flag_bz)       /*无限循环*/   {        if(timer>=1000)  //100MS检测启动检测一次     {       timer=0;   StartModule(); //启动检测           Conut();  //计算距离           if(S<20)  //距离小于20CM   {   stoprun();  //小车停止   COMM();   //方向函数   }   else   if(S>30)  //距离大于,30CM往前走   run();     } if(flag_REC==1){  push_val_left=13;  //舵机归中  stoprun();  break;}  }  if(flag_REC==1)    //   {flag_REC=0;if(buff[0]=='O'&&buff[1]=='N')//第一个字节为O,第二个字节为N,第三个字节为控制码switch(buff[2])     {      case up :    // 前进  send_str( );  flag_bz=0;  run();  break;      case down:// 后退  send_str1( );  flag_bz=0;  backrun();  break;      case left:// 左转  send_str2( );  flag_bz=0;  leftrun();  break;      case right:// 右转  send_str3( );  flag_bz=0;  rightrun();  break;      case stop:// 停止  send_str4( );  flag_bz=0;  stoprun();  break;  case Car ://   flag_bz=1;  break;     }        }}}   

提醒:《智能小车上的蓝牙和避障程序》最后刷新时间 2024-03-14 01:02:26,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《智能小车上的蓝牙和避障程序》该内容的真实性请自行鉴别。