蓝牙串口通信遥控小车

上传人:积*** 文档编号:122726177 上传时间:2022-07-21 格式:DOCX 页数:23 大小:2.19MB
收藏 版权申诉 举报 下载
蓝牙串口通信遥控小车_第1页
第1页 / 共23页
蓝牙串口通信遥控小车_第2页
第2页 / 共23页
蓝牙串口通信遥控小车_第3页
第3页 / 共23页
资源描述:

《蓝牙串口通信遥控小车》由会员分享,可在线阅读,更多相关《蓝牙串口通信遥控小车(23页珍藏版)》请在装配图网上搜索。

1、蓝牙串口通信遥控小车目录1系统方案论证及方案选择 2 本系统软硬件设计 2.1单元硬件电路设计 2.2 软件部分设计参照文献附录1 原器件清单附录2电路原理图及印制板图附录3程序1. 系统方案论证及方案选择1 总体设计方案题目规定设计一种蓝牙串口遥控小车,通过对电机转速的控制,调节速度的大小,变化小车角度,并能实现转弯和旋转。设计重要由主控单片机STC12C5A60S2驱动直流电机,使车轮工作,带动小车的转动。 2.基本工作原理3.STC89C52RC有定期器T0 T1 T2,在自动控制领域常常把T1作为串口通信了T0作PWM调速用因此有必要把T2定期器拿出来作定期器作为声音频谱程序。下面简介

2、T2的用法STC89C52RC有定期器T2 void main (void) /* T2定期器赋预装载值,溢出16次就是1秒。 */ RCAP2H=(65536-5000)/256; RCAP2L= (65536-5000)%256; ET2=1; / 容许T2定期器中断 EA=1; / 打开总中断 TR2=1; / 启动T2定期器 while(1); / 死循环,等待T2定期器的溢出中断 void Timer2_Server(void) interrupt 5 static uint Timer2_Server_Count; / 定义静态变量,用来计数T2定期器的溢出次数(进入本函数的次数)

3、 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反转显示。 void Timer2_Server(void) interrupt 5 static uint Timer2_Server_Count; / 定义静态变量,用来计数T2定期器的溢出次数(进入本函数的次数) TF2=0; / T2定期器发生

4、溢出中断时,需要顾客自己清除溢出标记,而51的其她定期器是自动清除的 Timer2_Server_Count+; if(Timer2_Server_Count=16) / T2定期器的预装载值为0x0BDC,溢出16次就是1秒钟。 Timer2_Server_Count=0; P1_7=P1_7; / LED11反转显示。 二. 本系统软硬件设计系统重要由单片机产生PWM信号,通过电机驱动轮胎的旋转,对其的转速进行控制,使车子行驶迈进。根据题目规定,我们的设计分硬件、软件两部分。2.1 单元硬件电路设计 2.1.1 51单片机最小系统的制作方案设计2.1.2 小车51系统 +驱动(马达)+电池

5、的接线2.1.3 蓝牙与单片机和马达的接线附录1重要元器件清单序号名称规格数量1锂电池+配套充电器18650 7.4V 2200mAh锂电池+锂电充电器12L298N直流电机驱动板 带5V 3A输出L298N驱动芯片双H桥直流电机驱动芯片驱动部分峰值电流2A,带5V 3A输出13ZK-1小车底盘1个5mm加厚底盘+2个直流减速电机+2个优质橡胶轮胎+万向轮+电机导线+螺丝螺母+铜柱+码盘等1451蓝牙串口模块蓝牙串口模块带电源转换电路支持5V供电152.54mm杜邦线40P彩色杜邦线 双头1P对1P 长20CM 一排40根16瓷片电容22P 插件27单排针40P 1根18轻触开关6*6*619

6、电解电容10uf 35V110电阻470欧 5色环直插111电阻10K 5色环直插112电路板PCB覆铜板板或者5x7万用版113超声波测距模块HC-SR04114超声波测距模块支架支架需要配套的螺丝螺母115晶振11.0592M11640P IC座插件DIP40117单片机学习板1附录2 电路原理图及印制电路板图1.2.3. 4.5. 超声波串口模块附录3程序1. 主程序#include#define uchar unsigned char #define uint unsigned intuint ma,mb,mc,PWM=6000;sbit out1 = P12 ; /motoA1sbi

7、t out2 = P13 ; /motoA2sbit out3 = P14 ; /motoB1sbit out4 = P15 ; /motoB2bit PWMIO;void delay(uint t) /延时程序1 uchar j; while(t-)for(j=1;j0;j-); void init() TMOD=0x21;/设立定期器1为工作方式2 设立定期器0为工作方式1TH1=0xfd;TL1=0xfd;TH0=(65536-0)/256; /20ms定期器T0中断一次TL0=(65536-0)%256;SCON=0x50;TR1=1;EA=1;ES=1;ET0=1;TR0=1;voi

8、d you ()/右急弯 out1=1; out2=0; out3=0; out4=1; delay(100);void zuo() /左急弯 out1=0;/右轮正转 out2=1; out3=1; /左轮反转 out4=0; delay(100);void qian() /迈进 out1=0; out2=1; out3=0; out4=1; delay(100);void hou() /后退 out1=1; out2=0; out3=1; out4=0; delay(200);void leftup() /左前 out1=0;/右轮正转 out2=1; out3=0;/左轮PWMIO输出调

9、慢 out4=PWMIO;void rightup() /右前 out1=0;/右轮PWMIO输出调慢 out2=PWMIO; out3=0;/左轮正转 out4=1;void leftdown() /左后 out1=1;/右轮后退 out2=0; out3=PWMIO; out4=0;void rightdown() /右后 out1=PWMIO; out2=0; out3=1;/左轮后退 out4=0; void ting() /停止 out2=0; out4=0; out3=0; out1=0;void main() init(); while(1) if(RI) RI=0; ma=SB

10、UF; switch(ma) case a:qian();break; /前 case b:hou();break; /后退 case c:zuo();break; /左急弯 case d:you();break; /右急弯 case e:leftup();break; /左前 case f:rightup();break; /右前 case g:leftdown();break; /左后 case h:rightdown();break; /右后 case s:ting();break; /停 void TT0() interrupt 1 TH0=(65536-(0-PWM)/256; /2

11、0ms定期器T0中断一次,进行PWM切换实现5ms高电平15ms低电平的PWM脉冲 TL0=(65536-(0-PWM)%256; PWM=0-PWM; PWMIO=PWMIO; void ser() interrupt 4 2. 子程序#include#define uchar unsigned char #define uint unsigned intuint ma,mb,mc,PWM=6000;sbit out1 = P12 ; /motoA1sbit out2 = P13 ; /motoA2sbit out3 = P14 ; /motoB1sbit out4 = P15 ; /mot

12、oB2bit PWMIO;PWMA3=10,30,50;PWMB3=10,30,50;void delay(uint t) /延时程序1 uchar j; while(t-)for(j=1;j0;j-); void init() TMOD=0x21;/设立定期器1为工作方式2 设立定期器0为工作方式1TH1=0xfd;TL1=0xfd;TH0=(65536-0)/256; /20ms定期器T0中断一次TL0=(65536-0)%256;SCON=0x50;TR1=1;EA=1;ES=1;ET0=1;TR0=1;void you ()/右急弯 out1=1; out2=0; out3=0; ou

13、t4=1; delay(100);void zuo() /左急弯 out1=0;/右轮正转 out2=1; out3=1; /左轮反转 out4=0; delay(100);void qian() /迈进 out1=0; out2=PWMIO1; out3=0; out4=PWMIO2; delay(100);void hou() /后退 out1=1; out2=0; out3=1; out4=0; delay(200);void leftup() /左前PWM1=PWMA1; PWM2=PWMA0; out1=0;/右轮正转 out2=PWMIO1; out3=0;/左轮PWMIO输出调慢

14、 out4=PWMIO2;void rightup() /右前 out1=0;/右轮PWMIO输出调慢 out2=PWMIO; out3=0;/左轮正转 out4=1;void leftdown() /左后 out1=1;/右轮后退 out2=0; out3=PWMIO; out4=0;void rightdown() /右后 out1=PWMIO; out2=0; out3=1;/左轮后退 out4=0; void ting() /停止 out2=0; out4=0; out3=0; out1=0;void 3dang() /右后 i+; PWM1=PWMAi; PMW2=PWMBi;if(

15、i=3)i=0;void main() init(); while(1) if(RI) RI=0; ma=SBUF; switch(ma) /*下面程序需要自行此外修改,添加前 后退左转圈右转圈左前弯PWM右前弯PWM左自旋右自旋PWM换档位双闪灯+鸣笛播放音乐显示运营时间显示光强超声波测距并避障等功能*/ case a:qian();break; /前 case b:hou();break; /后退 case c:zuo();break; /左急弯 case d:you();break; /右急弯 case e:leftup();break; /左前 case f:rightup();bre

16、ak; /右前 case g:leftdown();break; /左后 case h:rightdown();break; /右后 case s:ting();break; /停 case x:3dang();break; /停 void TT0() interrupt 1TH0=(65536-400)/256;TL0=(65536-400)%256;t+;if(t=PWM1) PWMIO1=1;if(t=PWM2) PWMIO2=1;if(t=50) t=0;PWMIO1=0;PWMIO2=0void ser() interrupt 4 3. 串口通信的初始化4. 运用PWMIO的变化变化转弯幅度5. PWMADJ()函数实现PWM值的加void PWMADD() PWM+=1; if(PWM=4)PWM=1; case a:qian();break; /前 case b:hou();break; /后退 case c:zuo();break; /左转圈 case d:you();break; /右转圈 case g:leftdown();break; /左自旋 case h:rightdown();break; /右自旋 2ledbeep(); /双闪灯黄灯+鸣笛 music(); /播放音乐 bizhang(); /超声波测距并避障6. 主函数串口接受程序

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!