代码很简单,就一个蓝牙控制和电机控制,四驱车(实测过,可以直接用)
电机用的是L298N
蓝牙用的是JDY-31
主函数
#include <REGX52.H>
#include "car.h"
#include "Delay.h"
unsigned char receiveData; //½ÓÊÕµ½µÄÊý¾Ý´æ·Å±äÁ¿
void receive(unsigned char m) //Ö´Ðк¯Êý
{
switch(m)
{
case '2': //Ç°½ø
car_go ();
break;
case '4': //ÏòÇ°×óת
car_leftgo ();
break;
case '6': //ÏòÇ°ÓÒת
car_rightgo ();
break;
case '8': //ºóÍË
car_back ();
break;
case '5': //Í£Ö¹
car_stop ();
break;
case '7': //ÔµØ×ó¹Õ
car_leftstop ();
break;
case '9': //ÔµØÓÒ¹Õ
car_rightstop ();
break;
}
}
void Uart_Init() //9600bps@11.0592MHz
{
PCON=0x00; //¹Ø±¶Æµ
SCON = 0x50; //8λÊý¾Ý,¿É±ä²¨ÌØÂÊ
TMOD = 0x20; //ÉèÖö¨Ê±Æ÷ģʽ
TL1 = 0xFd; //ÉèÖö¨Ê±³õʼֵ
TH1 = 0xFd; //ÉèÖö¨Ê±³õʼֵ
ET1 = 0; //½ûÖ¹¶¨Ê±Æ÷1ÖжÏ
TR1 = 1; //¶¨Ê±Æ÷1¿ªÊ¼¼Æʱ
EA=1; //×ÜÖжÏ
ES=1; //´ò¿ª´®¿ÚÖжÏ
}
void Uart_Routine() interrupt 4 //ÖжϺ¯Êý
{
car_stop ();
RI = 0; //Çå³ý½ÓÊÕÖжϱê־λ
receiveData=SBUF; //³öÈ¥½ÓÊÕµ½µÄÊý¾Ý
receive(receiveData);
}
void main ()
{
Timer0_Init();
Uart_Init();
while (1){
} //Ö´Ðк¯Êý
}
控制小车的代码.c
/************С³µÒƶ¯·½Ïò*************/
/* ÏòÇ°Ö±ÐС¾Ëĵç»úÕýת¡¿ */
/* ÏòºóÖ±ÐС¾Ëĵç»ú·´×ª¡¿ */
/* ÏòÇ°×ó¹Õ¡¾ÓÒµç»úÕýת£¬×óµç»úÍ£Ö¹¡¿*/
/* ÏòÇ°ÓÒ¹Õ¡¾ÓÒµç»úÍ£Ö¹£¬×óµç»úÕýת¡¿*/
/* Ïòºó×ó¹Õ¡¾ÓÒµç»ú·´×ª£¬×óµç»úÍ£Ö¹¡¿*/
/* ÏòºóÓÒ¹Õ¡¾ÓÒµç»úÍ£Ö¹£¬×óµç»ú·´×ª¡¿*/
/* Í£ Ö¹¡¾Ëĵç»úÍ£Ö¹¡¿ */
/************С³µÒƶ¯·½Ïò*************/
#include <REGX52.H>
#include "motor.h"
sbit EN1A = P0^7;//×óÇ°
sbit EN1B = P0^2;//ÓÒÇ°
sbit EN2A = P3^7;//×óºó
sbit EN2B = P3^2;//ÓÒºó
unsigned char counter1,speed; //¼ÆÊýÖµºÍ±È½ÏÖµ£¬ÓÃÓÚÊä³öPWM
void Timer0_Init() //100΢Ãë@11.0592MHz
{
TMOD = 0x11; //ÉèÖö¨Ê±Æ÷ģʽ
TL0 = 0xA4; //ÉèÖö¨Ê±³õʼֵ
TH0 = 0xFF; //ÉèÖö¨Ê±³õʼֵ
TF0 = 0; //Çå³ýTF0±êÖ¾
TR0 = 1; //¶¨Ê±Æ÷0¿ªÊ¼¼Æʱ
ET0 = 1; //¶¨Ê±Æ÷0µÄÖжËÔÊÐí¿ª¹Ø
EA = 1; //¶¨Ê±Æ÷×Ü¿ª¹Ø
PT0 = 1; //ÉèÖö¨Ê±Æ÷Ϊ¸ßµÍ¿ØÖÆÓÅÏȼ¶£¬1Ϊ¸ßÓÅÏȼ¶£¬0ΪµÍÓÅÏȼ¶
}
void Timer0_Routine() interrupt 1 //ÖжϺ¯Êý
{
TL0 = 0xA4; //ÉèÖö¨Ê±³õʼֵ
TH0 = 0xFF; //ÉèÖö¨Ê±³õʼֵ
counter1++;
if (counter1 >= 100)
{
counter1 = 0;
}
if (counter1 < speed)
{
EN1A = 1;
EN1B = 1;
EN2A = 1;
EN2B = 1;
}
else
{
EN1A = 0;
EN1B = 0;
EN2A = 0;
EN2B = 0;
}
}
void car_go () //С³µÏòÇ°Ö±ÐÐ
{
speed = 10;
LF_motor_go ();
RF_motor_go ();
LR_motor_go ();
RR_motor_go ();
}
void car_back () //С³µÏòºóÖ±ÐÐ
{
speed = 10;
LF_motor_back ();
RF_motor_back ();
LR_motor_back ();
RR_motor_back ();
}
void car_stop () //С³µÍ£Ö¹
{
speed = 0;
RR_motor_stop ();
LR_motor_stop ();
RF_motor_stop ();
LF_motor_stop ();
}
void car_leftgo () //С³µÏòÇ°×ó¹Õ
{
speed = 15;
RF_motor_go ();
RR_motor_go ();
LF_motor_stop ();
LR_motor_stop ();
}
void car_rightgo () //С³µÏòÇ°ÓÒ¹Õ
{
speed = 15;
LF_motor_go ();
LR_motor_go ();
RF_motor_stop ();
RR_motor_stop ();
}
void car_leftback () //С³µÏòºó×ó¹Õ
{
speed = 15;
RR_motor_back ();
RF_motor_back ();
LF_motor_stop ();
LR_motor_stop ();
}
void car_rightback () //С³µÏòºóÓÒ¹Õ
{
speed = 15;
LF_motor_back ();
LR_motor_back ();
RF_motor_stop ();
RR_motor_stop ();
}
void car_rightstop () //С³µÔµØÓÒ¹Õ
{
speed = 15;
LF_motor_go ();
LR_motor_go ();
RF_motor_back ();
RR_motor_back ();
}
void car_leftstop () //С³µÔµØ×ó¹Õ
{
speed = 15;
LF_motor_back ();
LR_motor_back ();
RF_motor_go ();
RR_motor_go ();
}
控制小车的代码.h
#ifndef __CAR_H_
#define __CAR_H_
void car_go (); //С³µÏòÇ°Ö±ÐÐ
void car_back (); //С³µÏòºóÖ±ÐÐ
void car_stop (); //С³µÍ£Ö¹
void car_leftgo (); //С³µÏòÇ°×ó¹Õ
void car_rightgo (); //С³µÏòÇ°ÓÒ¹Õ
void car_leftback (); //С³µÏòºó×ó¹Õ
void car_rightback (); //С³µÏòºóÓÒ¹Õ
void car_leftstop (); //С³µÔµØ×ó¹Õ
void car_rightstop (); //С³µÔµØÓÒ¹Õ
#endif
控制电机的代码.c
#include <REGX52.H>
//붨Òå
sbit IN11 = P0^5;//×óÇ°
sbit IN12 = P0^6;
sbit IN13 = P0^3;//ÓÒÇ°
sbit IN14 = P0^4;
sbit IN21 = P3^5;//×óºó
sbit IN22 = P3^6;
sbit IN23 = P3^3;//ÓÒºó
sbit IN24 = P3^4;
void LF_motor_go () //×óÇ°µç»úÕýת
{IN11 = 0;IN12 = 1;}
void LF_motor_back () //×óÇ°µç»ú·´×ª
{IN11 = 1;IN12 = 0;}
void LF_motor_stop () //×óÇ°µç»úÍ£Ö¹
{IN11 = 1;IN12 = 1;}
void RF_motor_go () //ÓÒÇ°µç»úÕýת
{IN13 = 0;IN14 = 1;}
void RF_motor_back () //ÓÒÇ°µç»ú·´×ª
{IN13 = 1;IN14 = 0;}
void RF_motor_stop () //ÓÒÇ°µç»úÍ£Ö¹
{IN13 = 1;IN14 = 1;}
void LR_motor_go () //×óºóµç»úÕýת
{IN21 = 1;IN22 = 0;}
void LR_motor_back () //×óºóµç»ú·´×ª
{IN21 = 0;IN22 = 1;}
void LR_motor_stop () //×óºóµç»úÍ£Ö¹
{IN21 = 1;IN22 = 1;}
void RR_motor_go () //ÓÒºóµç»úÕýת
{IN23 = 1;IN24 = 0;}
void RR_motor_back () //ÓÒºóµç»ú·´×ª
{IN23 = 0;IN24 = 1;}
void RR_motor_stop () //ÓÒºóµç»úÍ£Ö¹
{IN23 = 1;IN24 = 1;}
控制电机的代码.h
#ifndef __MOTOR_H_
#define __MOTOR_H_
void LF_motor_go (); //×óÇ°µç»úÕýת
void LF_motor_back (); //×óÇ°µç»ú·´×ª
void RF_motor_go (); //ÓÒÇ°µç»úÕýת
void RF_motor_back (); //ÓÒÇ°µç»ú·´×ª
void LR_motor_go (); //×óºóµç»úÕýת
void LR_motor_back (); //×óºóµç»ú·´×ª
void RR_motor_go (); //ÓÒºóµç»úÕýת
void RR_motor_back (); //ÓÒºóµç»ú·´×ª
void LF_motor_stop (); //×óÇ°µç»úÍ£Ö¹
void RF_motor_stop (); //ÓÒÇ°µç»úÍ£Ö¹
void LR_motor_stop (); //×óºóµç»úÍ£Ö¹
void RR_motor_stop (); //ÓÒºóµç»úÍ£Ö¹
#endif