写个程序小车可以自己跑了,但没法遥控啊,得给它安个通讯设备。目前比较方便的就是蓝牙了,有了蓝牙后,就可以与手机、电脑来进行通讯,很是方便。
采用这个,主要是因为简单,只要4个引脚,电源正负极,以及串口的输入输出口即可,所以看好了单片机的串口引脚:
这里关于串口程序编写就不多说了,网上资料很多,就直接上程序了:
void send_char(unsigned char* str);
1. 定时器2作为波特率发生器是16位自动重装,而定时器1作为波特率发生器是8位自动重装,
定时器2使用RCAP2H去重装TH2,用RCAP2L去重装TL2;定时器1是使用TH2去重装TL2。
波特率=振荡期频率/[32×(0xFFFF-<RCAP2H,RCAP2H>)],
<RCAP2H,RCAP2H>指RCAP2H作为高8位、RCAP2L作为低8位构成的16位无符号整数。
TMOD |= 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
IE |= 0x90 ; //Enable Serial Interrupt
void serial () interrupt 4 //using 3
if (ch=='!' || index>19) //ch==' ' ||
void send_char(unsigned char * str)
while(*str != ' ') //' '是数组结束标志
ReceiveCommand() 这个函数需要在外定义,然后蓝牙处理程序中会自动在收到命令后调用,并把这个函数的返回字符串,再回发回去。同时接收字符串,以 结束。
OK,这里我们需要在main.c文件中定义一下该函数,并写入测试程序:
unsigned char * ReceiveCommand(unsigned char * cmd)
这个测试程序比较容易,就是将收到的命令,显示在小车的LCD屏上,然后返回OK字符串。
首先,现在小车是一个蓝牙设备了,所以在电脑上添加该蓝牙设备,并输入默认密码
然后在电脑的设备管理中,就可以看到这个蓝牙设备了,并作为串口使用着,记下这个COM口号。
选择对应的COM口,在发送里输入Hello Car 然后点手动发送,在小车LCD屏上就看到字符了,同时在串口调试器上面的接收输入框中,看到OK。说明程序就通了。
如果没看到,就要查查了,多数原因是,蓝牙的接收输入与单片机的接反了。
如果没有反,也可以将输入输出短路,然后再测,应该是收到内容与发送内容一样。
好了,在调通通讯后,就要写一下控制程序了,即把ReceiveCommand函数中的内容换掉即可。
这里为了方便,我们采用这样的格式:CAR:L+100R-020! 这一句中就可以直接控制小车的两个轮子了,速度、方向。
unsigned char * ReceiveCommand(unsigned char * cmd)
if (cmd[0]=='C' && cmd[1] =='A' && cmd[2] =='R')