|
/*
本程序藍(lán)牙模塊接在了串口1,在下載程序時(shí)需要拔掉藍(lán)牙模塊的RXD和TXD線,下載完成后,在接上。
*/
制作出來(lái)的實(shí)物圖如下:
正面.jpg
背面.jpg
藍(lán)牙模塊.jpg
單片機(jī)源程序如下:
#include "InitFun.h"
u16 flag = 0; // 左轉(zhuǎn)/右轉(zhuǎn)標(biāo)志
u8 t = 0;
u8 PWM_T = 0; // 通過(guò)改變PWM_T的值實(shí)現(xiàn)直流電機(jī)轉(zhuǎn)速的改變
u8 ch = '#'; // 用于接收指令
void main()
{
PortInit(); // 端口初始化
UartInit(); // 串口1初始化
IniTime0(); // 定時(shí)器0初始化
P1=0xff;
PWM_T=30; // PWM_T劃分為30個(gè)等級(jí)
while(1)
{
if(ch == '1') // 藍(lán)牙串口助手app給單片機(jī)發(fā)指令1,減速
{
up = 0;
down = 1;
}
if(ch == '2') // 指令2,加速
{
down = 0;
up = 1;
}
if(ch == '3') // 指令3,左轉(zhuǎn)彎
{
flag = 1;
}
if(ch == '4') // 指令4,右轉(zhuǎn)彎
{
flag = 2;
}
if(!up)
{
if(PWM_T<250)
{
PWM_T++;
}
delay_1ms(10);
}
if(!down)
{
if(PWM_T>0)
{
PWM_T--;
}
delay_1ms(10);
}
}
}
void usart() interrupt 4 // 串口中斷函數(shù)
{
if(RI) // 接收助手發(fā)來(lái)的指令
{
RI = 0;
ch = SBUF;
}
if(ch != '#') // 將接收到的指令在串口上顯示
{
SBUF = ch;
while(!TI);
TI = 0;
}
}
void timer0() interrupt 1 // 定時(shí)器0中斷函數(shù)
{
t++;
if(t==250)
{
t=0;
P1=0x00;
}
if(PWM_T==t)
{
P1=0xff;
if(flag == 1)
{
flag = 0;
P1 = P1&0xbf;
delay_1ms(4500);
ch = '2';
}
if(flag == 2)
{
flag = 0;
P1 = P1&0xdf;
delay_1ms(4500);
ch = '2';
}
}
}
全部資料51hei下載地址:
基于藍(lán)牙的遙控小車.rar
(53.96 KB, 下載次數(shù): 13)
2019-5-16 11:25 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|