一。模块介绍
蓝牙模块
蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块远程控制模块等。
RXD: 接收端
TXD: 发送端
实物图及参数

舵机
原理
舵机的控制一般需要一个20MS左右的时基脉冲,该脉冲的高电平部分一般为0.5MS-2.5MS范围内的角度控制脉冲部分,总间隔为2Ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5MS--------o度;
1.0MS-------45度;
1.5MS-------90度;
2.0MS-------135度;
2.5MS-------180度;
占空比控制舵机角度:

实物图及参数

二。开发工具
编程软件:KEIL5
串口软件:XCOM V2.0
烧录软件:stc-isp-15xx-v6.86C
手机APP:SPP蓝牙串口(安卓手机)
三。程序代码
部分代码如下,完整代码在下面会提供百度网盘下载。
对应视频讲解说明在B站有分享。
在main.c文件中
/*
B站:Tuyue沐尘
本程序采用stc8a8k64s4a12为主控
舵机接线-----信号线接P37
蓝牙模块 TX---接单片机P30
RX---接单片机P31
*/
#include “all.h”
int main()
{
sart_Init(9600);
Timer0Init();
printf(“这是一个串口程序rn”);
while(1)
{
steering_control();
switch(rdata) //串口控制,写需要的效果
{
case ‘1’:P00=0;break; //舵机控制
case ‘2’:P00=1;break;
case ‘3’:P01=0;break; //灯控制
case ‘4’:P01=1;break;
}
if(usart_flag)
{
usart_flag=0;
usart_send_str(buffer); //字符串回显
if((strcmp((char*)buffer,“led_on”))==0)
{
memset(buffer,0,sizeof(buffer)); //c语言数组清零
P01=0;
}
}
}
}
在usart.c文件中
#include “usart.h”
#define sysclk 24000000
bit busy;
int r_ret=0;
int usart_flag=0;
char buffer[32];
char rdata;
void usart_Init(int BRT)
{
SCON = 0x50;
//关闭定时器0,模式选择16位自动重载
TMOD = 0x00;
//定时器1,1分频,选择定时器1为波特率发生器
AUXR = 0x40;
//波特率
TL1 = (65536-sysclk/BRT/4);
TH1 = (65536-sysclk/BRT/4)》》8;
//禁止T1中断
ET1 = 0;
//开启定时器1
TR1 = 1;
//开启串口1中断
ES = 1;
//使能总中断
EA = 1;
busy = 0;
}
void usart_send(char dat) //字符
{
while(busy);
busy = 1;
SBUF = dat;
}
void usart_send_str(char *p) //字符串
{
while(*p)
{
usart_send(*p++);
}
}
char putchar(char c) //printf
{
usart_send(c);
return c;
}
void usart_Isr() interrupt 4
{
if(TI==1)
{
TI=0;
busy=0;
}
if(RI==1)
{
RI=0;
rdata=SBUF;
// usart_send(rdata); //回显
if(rdata!=‘r’ && rdata!=‘n’) //看是否换行or回车,再进行存放数组
{
buffer[r_ret++]=rdata; //buffer[0]=rdata;
}
if(rdata==‘n’)
{
buffer[r_ret]=0;
usart_flag=1;
r_ret=0;
}
}
}
四。串口调试和手机APP控制
电脑端

手机端

一。模块介绍
蓝牙模块
蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块远程控制模块等。
RXD: 接收端
TXD: 发送端
实物图及参数

舵机
原理
舵机的控制一般需要一个20MS左右的时基脉冲,该脉冲的高电平部分一般为0.5MS-2.5MS范围内的角度控制脉冲部分,总间隔为2Ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5MS--------o度;
1.0MS-------45度;
1.5MS-------90度;
2.0MS-------135度;
2.5MS-------180度;
占空比控制舵机角度:

实物图及参数

二。开发工具
编程软件:KEIL5
串口软件:XCOM V2.0
烧录软件:stc-isp-15xx-v6.86C
手机APP:SPP蓝牙串口(安卓手机)
三。程序代码
部分代码如下,完整代码在下面会提供百度网盘下载。
对应视频讲解说明在B站有分享。
在main.c文件中
/*
B站:Tuyue沐尘
本程序采用stc8a8k64s4a12为主控
舵机接线-----信号线接P37
蓝牙模块 TX---接单片机P30
RX---接单片机P31
*/
#include “all.h”
int main()
{
sart_Init(9600);
Timer0Init();
printf(“这是一个串口程序rn”);
while(1)
{
steering_control();
switch(rdata) //串口控制,写需要的效果
{
case ‘1’:P00=0;break; //舵机控制
case ‘2’:P00=1;break;
case ‘3’:P01=0;break; //灯控制
case ‘4’:P01=1;break;
}
if(usart_flag)
{
usart_flag=0;
usart_send_str(buffer); //字符串回显
if((strcmp((char*)buffer,“led_on”))==0)
{
memset(buffer,0,sizeof(buffer)); //c语言数组清零
P01=0;
}
}
}
}
在usart.c文件中
#include “usart.h”
#define sysclk 24000000
bit busy;
int r_ret=0;
int usart_flag=0;
char buffer[32];
char rdata;
void usart_Init(int BRT)
{
SCON = 0x50;
//关闭定时器0,模式选择16位自动重载
TMOD = 0x00;
//定时器1,1分频,选择定时器1为波特率发生器
AUXR = 0x40;
//波特率
TL1 = (65536-sysclk/BRT/4);
TH1 = (65536-sysclk/BRT/4)》》8;
//禁止T1中断
ET1 = 0;
//开启定时器1
TR1 = 1;
//开启串口1中断
ES = 1;
//使能总中断
EA = 1;
busy = 0;
}
void usart_send(char dat) //字符
{
while(busy);
busy = 1;
SBUF = dat;
}
void usart_send_str(char *p) //字符串
{
while(*p)
{
usart_send(*p++);
}
}
char putchar(char c) //printf
{
usart_send(c);
return c;
}
void usart_Isr() interrupt 4
{
if(TI==1)
{
TI=0;
busy=0;
}
if(RI==1)
{
RI=0;
rdata=SBUF;
// usart_send(rdata); //回显
if(rdata!=‘r’ && rdata!=‘n’) //看是否换行or回车,再进行存放数组
{
buffer[r_ret++]=rdata; //buffer[0]=rdata;
}
if(rdata==‘n’)
{
buffer[r_ret]=0;
usart_flag=1;
r_ret=0;
}
}
}
四。串口调试和手机APP控制
电脑端

手机端

举报