/*
本程序藍牙模塊接在了串口1,在下載程序時需要拔掉藍牙模塊的RXD和TXD線,下載完成后,在接上。
*/
制作出來的實物圖如下:
正面.jpg (2.88 MB, 下載次數: 81)
下載附件
正面.jpg
2019-5-16 11:38 上傳
背面.jpg (2.39 MB, 下載次數: 91)
下載附件
背面.jpg
2019-5-16 11:39 上傳
藍牙模塊.jpg (2.34 MB, 下載次數: 101)
下載附件
藍牙模塊.jpg
2019-5-16 11:39 上傳
單片機源程序如下:
#include "InitFun.h"
u16 flag = 0; // 左轉/右轉標志
u8 t = 0;
u8 PWM_T = 0; // 通過改變PWM_T的值實現直流電機轉速的改變
u8 ch = '#'; // 用于接收指令
void main()
{
PortInit(); // 端口初始化
UartInit(); // 串口1初始化
IniTime0(); // 定時器0初始化
P1=0xff;
PWM_T=30; // PWM_T劃分為30個等級
while(1)
{
if(ch == '1') // 藍牙串口助手app給單片機發指令1,減速
{
up = 0;
down = 1;
}
if(ch == '2') // 指令2,加速
{
down = 0;
up = 1;
}
if(ch == '3') // 指令3,左轉彎
{
flag = 1;
}
if(ch == '4') // 指令4,右轉彎
{
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 // 串口中斷函數
{
if(RI) // 接收助手發來的指令
{
RI = 0;
ch = SBUF;
}
if(ch != '#') // 將接收到的指令在串口上顯示
{
SBUF = ch;
while(!TI);
TI = 0;
}
}
void timer0() interrupt 1 // 定時器0中斷函數
{
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下載地址:
基于藍牙的遙控小車.rar
(53.96 KB, 下載次數: 13)
2019-5-16 11:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|