一,焊接51最小系统
![1be1a691bd6896120c918c40e3dfeda3.png](https://i-blog.csdnimg.cn/blog_migrate/b5853449b08dc7ab897b358ab274ca1c.jpeg)
一辆小车的基本功能就是让它能动起来,能通过手机蓝牙进行遥控,所以就需要用到L298N电机驱动模块,和HC-06蓝牙模块。下面就简单介绍一下这两个模块。
![17409ccc8bc492173982e948f392b136.png](https://i-blog.csdnimg.cn/blog_migrate/670ee5311bf0c20861a305c85a078e81.jpeg)
三,制作电机驱动模块
电机驱动模块弄好后,离它能动就只有一步之遥了,我们需要用到HC-06蓝牙模块对小车进行控制
![7a771379e0c1fbdcd3f3203531bc1563.png](https://i-blog.csdnimg.cn/blog_migrate/7fad66525feba82882148000fb1c0f78.jpeg)
四,源代码/**************************************************************************** 简单寻迹程序:接法 EN1 EN2 PWM输入端,本程序不输入PWM,直接使插上跳线帽,使能输出,这样就能全速运行 无线摇控模块与单片机连接 无线模块GND +5取自于单片机板的5V输出 P0_7 与无线模块D0相连 P0_6 与无线模块D1相连 P0_5 与无线模块D2相连 P0_4 与无线模块D3相连 P1_0 P1_1 接IN1 IN2 当 P1_0=1,P1_1=0; 时左上电机正转左上电机接驱动板子输出端(蓝色端子OUT1 OUT2) P1_0 P1_1 接IN1 IN2 当 P1_0=0,P1_1=1; 时左上电机反转 P1_0 P1_1 接IN1 IN2 当 P1_0=0,P1_1=0; 时左上电机停转 P1_2 P1_3 接IN3 IN4 当 P1_2=1,P1_3=0; 时左下电机正转左下电机接驱动板子输出端(蓝色端子OUT3 OUT4) P1_2 P1_3 接IN3 IN4 当 P1_2=0,P1_3=1; 时左下电机反转 P1_2 P1_3 接IN3 IN4 当 P1_2=0,P1_3=0; 时左下电机停转 P1_4 P1_5 接IN5 IN6 当 P1_4=1,P1_5=0; 时右上电机正转右上电机接驱动板子输出端(蓝色端子OUT5 OUT6) P1_4 P1_5 接IN5 IN6 当 P1_4=0,P1_5=1; 时右上电机反转 P1_4 P1_5 接IN5 IN6 当 P1_4=0,P1_5=0; 时右上电机停转 P1_6 P1_7 接IN7 IN8 当 P1_6=1,P1_7=0; 时右下电机正转右下电机接驱动板子输出端(蓝色端子OUT7 OUT8) P1_6 P1_7 接IN7 IN8 当 P1_6=0,P1_7=1; 时右下电机反转 P1_6 P1_7 接IN7 IN8 当 P1_6=0,P1_7=0; 时右下电机停转 P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1 P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2 P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3 P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4 四路寻迹传感器有信号(白线)为0 没有信号(黑线)为1 四路寻迹传感器电源+5V GND 取自于单片机板靠近液晶调节对比度的电源输出接口 关于单片机电源:本店驱动模块内带LDO稳压芯片,当电池输入6V时时候可以输出稳定的5V 分别在针脚标+5 与GND 。这个输出电源可以作为单片机系统的供电电源。****************************************************************************/#include #define Left_1_led P3_4 //P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1#define Left_2_led P3_5 //P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2 #define Right_1_led P3_6 //P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3#define Right_2_led P3_7 //P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4#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 left 'C' #define right 'D'#define up 'A' #define down 'B'#define stop 'F'char code str[] = "收到指令,向前!";char code str1[] = "收到指令,向后!";char code str2[] = "收到指令,向左!";char code str3[] = "收到指令,向右!";char code str4[] = "收到指令,停止!";bit flag_REC=0; bit flag =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=2) {i=0;flag=0;flag_REC=1 ;} // 停止接收 } }}/*********************************************************************/ /*--主函数--*/void main(void){TMOD=0x20; TH1=0xFd; //11.0592M晶振,9600波特率 TL1=0xFd; SCON=0x50; PCON=0x00; TR1=1;ES=1; EA=1; while(1)/*无限循环*/{ if(flag_REC==1) // {flag_REC=0;if(buff[0]=='O'&&buff[1]=='N')//第一个字节为O,第二个字节为N,第三个字节为控制码switch(buff[2]) { case up : // 前进 send_str( ); run(); break; case down:// 后退 send_str1( ); backrun(); break; case left:// 左转 send_str2( ); leftrun(); break; case right:// 右转 send_str3( ); rightrun(); break; case stop:// 停止 send_str4( ); stoprun(); break; } }}}
手机操作
![b859e80eb691370766c1f05d4679b20c.png](https://i-blog.csdnimg.cn/blog_migrate/1b7f76159a70258c915c2df87b5911a5.jpeg)