蓝牙串口通信遥控小车Word格式文档下载.docx
《蓝牙串口通信遥控小车Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《蓝牙串口通信遥控小车Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
•TR2=1;
//启动T2定时器
•while
(1);
//死循环,等待T2定时器的溢出中断
•}
•voidTimer2_Server(void)interrupt5
•staticuintTimer2_Server_Count;
•//定义静态变量,用来计数T2定时器的溢出次数(进入本函数的次数)
•TF2=0;
•//T2定时器发生溢出中断时,需要用户自己清除溢出标记,而51的其他定时器是自动清除的
•Timer2_Server_Count++;
•if(Timer2_Server_Count==16)//T2定时器的预装载值为0x0BDC,溢出16次就是1秒钟。
•{
•Timer2_Server_Count=0;
•P1_7=~P1_7;
//LED11反转显示。
•}
2.本系统软硬件设计
系统主要由单片机产生PWM信号,通过电机驱动轮胎的旋转,对其的转速进行控制,使车子行驶前进。
根据题目要求,我们的设计分硬件、软件两部分。
2.1单元硬件电路设计
2.1.151单片机最小系统的制作方案设计
2.1.2小车51系统+驱动(马达)+电池的接线
2.1.3蓝牙和单片机和马达的接线
附录1主要元器件清单
序号
名称
规格
数量
1
锂电池+配套充电器
186507.4V2200mAh锂电池+锂电充电器
2
L298N直流电机驱动板带5V3A输出
L298N驱动芯片双H桥直流电机驱动芯片
驱动部分峰值电流2A,带5V3A输出
3
ZK-1小车底盘
1个5mm加厚底盘+2个直流减速电机+2个优质橡胶轮胎+万向轮+电机导线+螺丝螺母+铜柱+码盘等
4
51蓝牙串口模块
蓝牙串口模块带电源转换电路支持5V供电
5
2.54mm杜邦线
40P彩色杜邦线双头1P对1P长20CM一排40根
6
瓷片电容
22P插件
7
单排针
40P1根
8
轻触开关
6*6*6
9
电解电容
10uf35V
10
电阻
470欧5色环直插
11
10K5色环直插
12
电路板
PCB覆铜板板或者5x7万用版
13
超声波测距模块
HC-SR04
14
超声波测距模块支架
支架需要配套的螺丝螺母
15
晶振
11.0592M
16
40PIC座
插件DIP40
17
单片机学习板
附录2电路原理图及印制电路板图
1.
2.
3.
4.
5.超声波串口模块
1.主程序
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
uintma,mb,mc,PWM=6000;
sbitout1=P1^2;
//motoA1
sbitout2=P1^3;
//motoA2
sbitout3=P1^4;
//motoB1
sbitout4=P1^5;
//motoB2
bitPWMIO;
voiddelay(uintt)//延时程序1
{
ucharj;
while(t--)
{for(j=1;
j>
0;
j--);
}
}
voidinit()
{
TMOD=0x21;
//设置定时器1为工作方式2设置定时器0为工作方式1
TH1=0xfd;
TL1=0xfd;
TH0=(65536-20000)/256;
//20ms定时器T0中断一次
TL0=(65536-20000)%256;
SCON=0x50;
TR1=1;
EA=1;
ES=1;
ET0=1;
TR0=1;
voidyou()//右急弯
out1=1;
out2=0;
out3=0;
out4=1;
delay(100);
voidzuo()//左急弯
out1=0;
//右轮正转
out2=1;
out3=1;
//左轮反转
out4=0;
voidqian()//前进
out3=0;
voidhou()//后退
delay(200);
voidleftup()//左前
out2=1;
//左轮PWMIO输出调慢
out4=PWMIO;
voidrightup()//右前
//右轮PWMIO输出调慢
out2=PWMIO;
//左轮正转
voidleftdown()//左后
//右轮后退
out2=0;
out3=PWMIO;
;
voidrightdown()//右后
out1=PWMIO;
//左轮后退
voidting()//停止
out4=0;
voidmain()
init();
while
(1)
{
if(RI)
RI=0;
ma=SBUF;
}
switch(ma)
case'
a'
:
qian();
break;
//前
b'
hou();
//后退
c'
zuo();
//左急弯
d'
you();
//右急弯
e'
leftup();
//左前
f'
rightup();
//右前
g'
leftdown();
//左后
h'
rightdown();
//右后
s'
ting();
//停
voidTT0()interrupt1
TH0=(65536-(20000-PWM))/256;
//20ms定时器T0中断一次,进行PWM切换实现5ms高电平15ms低电平的PWM脉冲
TL0=(65536-(20000-PWM))%256;
PWM=20000-PWM;
PWMIO=~PWMIO;
voidser()interrupt4
2.子程序
PWMA[3]={10,30,50};
PWMB[3]={10,30,50};
out2=PWMIO1;
out4=PWMIO2;
{PWM1=PWMA[1];
PWM2=PWMA[0];
out2=PWMIO;
void3dang()//右后
i++;
PWM1=PWMA[i];
PMW2=PWMB[i];
if(i==3)
{i=0;
{/*下面程序需要自行另外修改,添加前\后退\左转圈\右转圈\左前弯PWM\右前弯PWM\左自旋\右自旋\PWM换档位\双闪灯+鸣笛\播放音乐\显示运行时间\显示光强\超声波测距并避障等功能*/
x'
3dang();
TH0=(65536-400)/256;
TL0=(65536-400)%256;
t++;
if(t>
=PWM1){PWMIO1=1;
=PWM2){PWMIO2=1;
if(t==50){t=0;
PWMIO1=0;
PWMIO2=0}
3.串口通信的初始化
4.利用PWMIO的变化改变转弯幅度
5.PWMADJ()函数实现PWM值的加
voidPWMADD()
PWM+=1;
if(PWM==4){PWM=1};
•case'
•case‘b’:
•case‘c’:
//左转圈
•case‘d’:
//右转圈
•case‘g’:
//左自旋
•case‘h’:
//右自旋
•2ledbeep();
//双闪灯黄灯+鸣笛
•music();
//播放音乐
•bizhang();
//超声波测距并避障
6.主函数串口接收程序