手机蓝牙遥控智能小车docx.docx

上传人:b****8 文档编号:12857917 上传时间:2023-06-08 格式:DOCX 页数:17 大小:98.06KB
下载 相关 举报
手机蓝牙遥控智能小车docx.docx_第1页
第1页 / 共17页
手机蓝牙遥控智能小车docx.docx_第2页
第2页 / 共17页
手机蓝牙遥控智能小车docx.docx_第3页
第3页 / 共17页
手机蓝牙遥控智能小车docx.docx_第4页
第4页 / 共17页
手机蓝牙遥控智能小车docx.docx_第5页
第5页 / 共17页
手机蓝牙遥控智能小车docx.docx_第6页
第6页 / 共17页
手机蓝牙遥控智能小车docx.docx_第7页
第7页 / 共17页
手机蓝牙遥控智能小车docx.docx_第8页
第8页 / 共17页
手机蓝牙遥控智能小车docx.docx_第9页
第9页 / 共17页
手机蓝牙遥控智能小车docx.docx_第10页
第10页 / 共17页
手机蓝牙遥控智能小车docx.docx_第11页
第11页 / 共17页
手机蓝牙遥控智能小车docx.docx_第12页
第12页 / 共17页
手机蓝牙遥控智能小车docx.docx_第13页
第13页 / 共17页
手机蓝牙遥控智能小车docx.docx_第14页
第14页 / 共17页
手机蓝牙遥控智能小车docx.docx_第15页
第15页 / 共17页
手机蓝牙遥控智能小车docx.docx_第16页
第16页 / 共17页
手机蓝牙遥控智能小车docx.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

手机蓝牙遥控智能小车docx.docx

《手机蓝牙遥控智能小车docx.docx》由会员分享,可在线阅读,更多相关《手机蓝牙遥控智能小车docx.docx(17页珍藏版)》请在冰点文库上搜索。

手机蓝牙遥控智能小车docx.docx

手机蓝牙遥控智能小车docx

模块化手机蓝牙遥

控、超声波避障及人体

检测智能小车

实用发明协会:

徐鹏王鹏

一、小车说明

1小车采用传统51单片机控制,能实现手机蓝牙遥控、超声波避障及人体检测功能,各种状态能在LCD1602液晶屏上直观的显示出来。

2小车地盘采用四个直流电机驱动,装有蓝牙模块一个、超声波模块一个、单片机系统板一块、STC89C52RC单片机一块

电池一块、LCD1602液晶屏一块、L9110电机驱动模块两块、稳压模块一块、人体红外传感器模块两块及装饰LED。

二、模块说明

1蓝牙模块:

核心模块使用HC-06从模块,接口电平3.3V,可以直接连接各种单片机,配对以后当全双工串口使用,仅支持8位数据位、1位停止位、无奇偶校验的通信格式,自身的TXD直接连接到单片机RXD,RXD接单片机TXD。

2超声波模块:

使用电压5V,静态电流小于2mA,电平输出高5V低0V,感应角度不大于15度,探测距离2cm-450cm。

3STC89C52RC:

STC89C52RC是STC公司生产的一种低功耗、高性能CM0S8位微控制器,具有以下标准功能:

8k字节

Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。

另外STC89X52可降至OHz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35MHz,6T/12T可选。

4L9110电机驱动模块:

模块供电电压2.5-12V,电机工作电压2.5V-12V之间,最大工作电流0.8A,可以同时驱动2个直流电机,或者1个4线2相式步进电机。

通过单片机给逻辑电压从而控制直流电机的正反转。

5LM2596S稳压模块:

输入直流电压3V至40V,输出直流电压1.5V至35V电压连续可调,高效率最大输出电流为3A。

使用SANY(固态电容,高Q值大功率电感。

6单片机系统板:

全部引出PO、P1、P2及P3接口,P0带上拉电阻,有5V电源接口,12MHz晶振,有RXDTXDGN取口方便STC单片机的串口下载,有ATMEHSP下载端口,方便AT89S系列单片机下载,单片机紧锁座方便更换单片机。

7人体红外传感器模块:

HC-SR50热释电红外传感器是一种能

检测人或动物发射的红外线而输出电信号的传感器,工作电压

5v-20v之间,它由陶瓷氧化物或压电晶体元件组成在元件两个表面做成电极,在传感器监测范围内温度有AT的变化时,热释

电效应会在两个电极上会产生电荷AQ,即在两电极之间产生一

微弱的电压AVo

三、功能说明

1超声波避障:

利用单片机从控制口发一个10US以上的高电

平,就可以在接收口等待高电平输出,一有输出就可以开定时器

计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离,如果距离小于设定的值小车采取转弯避障。

2蓝牙遥控:

手机连接小车,通过上位机发送命令控制小车。

四、操作说明

1接通电源,打开单片机系统板开关,程序初始化开始。

2打开手机蓝牙,打开遥控软件界面如图1-1,等待和小车连

接成功(蓝牙红色指示灯不再闪烁)。

3等待LCD1602界面显示selectafunction字样,第一次按键

小车开启手机蓝牙遥控功能,按下操作界面(图1-1)对

后退

应按键小车即执行相应动作。

第一次按键小车开启超声波

避障功能此时小车自动前进,并遇到障碍物自动躲开,在执行避

障过程中按键二二小车停止避障停在原地,再一次按键一上一小车继续执行避障功能。

图1-1

五、注意事项

1电池正负极严禁接反。

2严禁乱改动线路。

3严禁卡死轮胎以免烧毁电机。

4严禁小车从高处掉下。

5两个功能之间切换需要复位单片机。

6小车严禁沾到水。

7手机软件在附带U盘中。

附源程序一份:

#include

 

#defineucharunsignedchar

#defineuintunsignedint#defineGPIOP2

uchara,bai,shi,ge,int0,int1;uinttime,dist;

sbitLCDE=P3八5;

sbitRW=P3A6;

sbitRS=P3A7;

sbitFLMA=P0A0;

sbitFLMB=P0A1;

sbitFRMA=P0A2;

sbitFRMB=P0A3;

sbitBLMA=P0A4;

sbitBLMB=P0A5;

sbitBRMA=P0A6;

sbitBRMB=P0A7;

sbittrig=P1A0;

sbitecho=P1A1;

ucharcodeavoucharcodedis[ucharcodefowucharcodebacucharcodetul[]="Turnleftucharcodetur[]="Turnrightucharcodesto[]="Stopvoiddelay_20us()

{

uchara;

for(a=0;a<20;a++);}

voidforward()

{

FLMA=1;

FLMB=0;

//液晶数据输入口

//液晶使能端

//写入数据与命令选择端

//读写选择端

//电机逻辑电压接口

//触发控制信号输入//回响信号输出

//14欢迎

//13体验

//16初始化

//16徐鹏制作

//15选择功能//16蓝牙控制//16避障//6距离//14前进//14后退//14左转//14右转//14停止

//延时20us

//前进

FRMA=1;

FRMB=0;

BLMA=1;

BLMB=0;

BRMA=1;

BRMB=0;}voidback(){

FLMA=0;

FLMB=1;

FRMA=0;

FRMB=1;

BLMA=0;

BLMB=1;

BRMA=0;

BRMB=1;

}

voidturnleft(){

FLMA=0;

FLMB=1;

FRMA=1;

FRMB=0;

BLMA=0;

BLMB=1;

BRMA=1;

BRMB=0;}voidturnright(){

FLMA=1;

FLMB=0;

FRMA=0;

FRMB=1;

BLMA=1;

BLMB=0;

BRMA=0;

BRMB=1;}voidstop(){

FLMA=0;

FLMB=0;

FRMA=0;

FRMB=0;

BLMA=0;

BLMB=0;

//后退

//左转

//右转

//停止

 

//串口中断函数

//上位机为16进制

//定时器0中断函数

//外部中断0函数

//外部中断1函数

//超声波检测函数

//计算时间

//计算距离

//延时1ms函数

BRMA=0;

BRMB=0;

voidcl()interrupt4

{

RI=0;

a=SBUF;

}

voidtimer0(void)interrupt1

{

TH0=0;

TL0=0;

}

voidinit_wai0()interrupt0

{

int0=1;

}

voidinit_wai1()interrupt2

{

int1=1;

}

voidcheck()

{

trig=1;delay_20us();

trig=0;

while(echo==0);

TR0=1;

ET0=1;while(echo==1);

TR0=0;

ET0=0;

time=TH0*256+TL0;

TH0=0;

TL0=0;

TF0=0;

dist=(time*1.7)/100;

}

voidDelay1ms(unsignedinta)

unsignedinti,j;

//LCD写入命令函数

//LCD写入数据函数

//LCD初始化函数

for(i=a;i>0;i--)for(j=110;j>0;j--);

}

voidLCDCom(unsignedcharcom)

{

RW=0;

RS=0;

GPIO=com;

Delay1ms(10);

LCDE=1;

Delay1ms(10);

LCDE=0;

}

voidLCDwriteDate(unsignedchardat){

RS=1;

RW=0;

GPIO=dat;

Delay1ms(10);

LCDE=1;

Delay1ms(10);

LCDE=0;

}

voidLCDInit()

{

LCDCom(0x38);

LCDCom(0x0c);

LCDCom(0x06);

LCDCom(0x01);

EX1=1;//开外部中断1

EA=1;//开中断

ES=1;//允许串口中断

PT0=1;//定时器0中断优先级最高

LCDInit();

LCDCom(0x80);

for(i=0;i<14;i++)

{

LCDwriteDate(wel[i]);

}

LCDCom(0x80+0x40);

for(i=0;i<13;i++)

{

LCDwriteDate(exp[i]);

}

Delay1ms(2000);

LCDCom(0x01);

LCDCom(0x80);

for(i=0;i<16;i++)

{

LCDwriteDate(ini[i]);

}

LCDCom(0x80+0x40);

for(i=0;i<16;i++)

{

LCDwriteDate(xup[i]);

}

Delay1ms(2000);

LCDCom(0x80);

for(i=0;i<15;i++)

{

LCDwriteDate(sel[i]);

}

while

(1)

{

if(a==0x0e)

{

LCDCom(0x80);

for(i=0;i<16;i++)

{

LCDwriteDate(bul[i]);

}

while

(1)

{

switch(a)

{

case0x0e:

{forward();

Delay1ms(70);

LCDCom(0x80+0x40);for(i=0;i<14;i++)

{

LCDwriteDate(fow[i]);

}break;//前

case0x0c:

{back();

Delay1ms(70);

LCDCom(0x80+0x40);for(i=0;i<14;i++)

{

LCDwriteDate(bac[i]);

}

}break;//后

case0x0b:

{turnleft();

Delay1ms(70);

LCDCom(0x80+0x40);for(i=0;i<14;i++)

{

LCDwriteDate(tul[i]);

}

}break;//左

case0x09:

{turnright();

Delay1ms(70);

LCDCom(0x80+0x40);for(i=0;i<14;i++)

{

LCDwriteDate(tur[i]);

}

}break;//右

case0x04:

{stop();

Delay1ms(70);

LCDCom(0x80+0x40);for(i=0;i<14;i++)

{

LCDwriteDate(sto[i]);

}}break;//停

default:

break;

}if((int0==1)||(int1==1)||((int0==1)&&(int1==0))||((int0==0)&&(int1==1)))

{

int0=0;

int1=0;

LCDCom(0x80+0x40+0x0E);

LCDwriteDate('N');

LCDCom(0x80+0x40+0x0F);

LCDwriteDate('P');

}

elseif((int0==0)&&(int1==0))

{

LCDCom(0x80+0x40+0x0E);

LCDwriteDate('H');

LCDCom(0x80+0x40+0x0F);

LCDwriteDate('P');

}

}

}

elseif(a==0x0c)

{

LCDCom(0x80);

for(i=0;i<16;i++)

{

LCDwriteDate(avo[i]);

}

LCDCom(0x80+0x40);for(i=0;i<6;i++)

{

LCDwriteDate(dis[i]);

}

while

(1)

{

check();

if(dist<=40)

stop();

Delay1ms(400);back();

Delay1ms(600);turnright();

Delay1ms(400);forward();

}

if(a==0x04)

{

stop();

}

else{forward();}bai=dist/100;shi=dist%100/10;ge=dist%10;

LCDCom(0x80+0x46);LCDwriteDate('0'+bai);Delay1ms(10);

LCDCom(0x80+0x47);

LCDwriteDate('0'+shi);

LCDCom(0x80+0x48);

LCDwriteDate('0'+ge);Delay1ms(10);

LCDCom(0x80+0x49);

LCDwriteDate('c');

LCDCom(0x80+0x4A);

Delay1ms(10);

LCDwriteDate('m');

LCDCom(0x80+0x4B);

LCDwriteDate('');

Delay1ms(10);

LCDCom(0x80+0x4C);

LCDwriteDate('');Delay1ms(10);

LCDCom(0x80+0x4D);

LCDwriteDate('');

Delay1ms(10);

if((int0==1)||(int1==1)||((int0==1)&&(int1==0))||((int0==0)&&(int1==1)))

{

int0=0;

int1=0;

LCDCom(0x80+0x4E);

LCDwriteDate('N');

LCDCom(0x80+0x4F);

LCDwriteDate('P');

}elseif((int0==0)&&(int1==0))

LCDCom(0x80+0x40+0x0E);LCDwriteDate('H');

LCDCom(0x80+0x40+0x0F);

}

}

}

}

LCDwriteDate('P');

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2