用到的MCU是STC15W204S,主要是体积小,蓝牙模块HC–04,然后180度舵机。手机上下载HC蓝牙助手。
#include <REG51.H>
unsigned char receive_data;
unsigned char PWM,compare;
sbit steering=P3^2;
void Uart_Init(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR &= 0xFB; //定时器2时钟为Fosc/12,即12T
T2L = 0xE8; //设定定时初值
T2H = 0xFF; //设定定时初值
AUXR |= 0x10; //启动定时器2
EA = 1;
ES = 1;
}
void Uart_Routine() interrupt 4
{
if(RI){
receive_data=SBUF;
RI=0;
SBUF=receive_data;
}
if(TI) TI=0;
}
void Timer0_Init(void) //500微秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x66; //设置定时初值
TH0 = 0xEA; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1;
}
void Timer0_Routine() interrupt 1
{
if(++PWM==40) PWM=0;
if(PWM<compare) steering=1;
else steering=0;
}
void main()
{
Uart_Init();
Timer0_Init();
steering=0;
while(1)
{
if(receive_data=='0') compare=1;
if(receive_data=='1') compare=5;
}
}