智能小车比赛电气S095Word文件下载.docx

上传人:b****4 文档编号:17973063 上传时间:2022-12-12 格式:DOCX 页数:15 大小:173.54KB
下载 相关 举报
智能小车比赛电气S095Word文件下载.docx_第1页
第1页 / 共15页
智能小车比赛电气S095Word文件下载.docx_第2页
第2页 / 共15页
智能小车比赛电气S095Word文件下载.docx_第3页
第3页 / 共15页
智能小车比赛电气S095Word文件下载.docx_第4页
第4页 / 共15页
智能小车比赛电气S095Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

智能小车比赛电气S095Word文件下载.docx

《智能小车比赛电气S095Word文件下载.docx》由会员分享,可在线阅读,更多相关《智能小车比赛电气S095Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

智能小车比赛电气S095Word文件下载.docx

循迹原理(以上图为例):

当小车在行驶的过程中踩到黑带时,红外对管发射的光大部分被黑带吸收,导致LM339的端口4的电压高于端口5的基准电压,IN1脚输出低电平,IN1接单片机P0口,当检测到IN1对应的IO口为低时,使接至P1口的电机进行相应的运转。

2、红外遥控电路图

原理:

红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作;

采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;

以脉宽为0.565ms、

隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如下所示。

 

3、扑火图

要智能小车实现灭火,首先要有对火源进行检测的功能,通常使用光敏晶体管组成的传感器——光电接收传感器实现上述功能。

光电接收传感器由光敏晶体管和光电模块组成。

光敏晶体管负责接收外界光信号,处理电路将光敏晶体管的信号进行转换,送到单片机的端口上

4,、无线遥控图

⏹原理、PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。

⏹编码芯片PT2262发出的编码信号由:

地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。

当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。

PT2262/2272特点:

CMOS工艺制造,低功耗,外部元器件少,RC振荡电阻,工作电压范围宽:

2.6~15v,数据最多可达6位,地址码最多可达531441种。

应用范围:

车辆防盗系统、家庭防盗系统、遥控玩具、其他电器遥控。

三、程序

/****************************主函数部分***********************************/

#include<

reg52.h>

#include"

define.h"

//包含定义的IO口

红外遥控.h"

//红外遥控函数

循迹.h"

//循迹函数

扑火.h"

//扑火函数

wireless.h"

//无线函数

voidmain()

{

timeinit();

//定时器初始化

while

(1)

{

irinit();

//红外解码初始

qiehuan();

//红外切换函数

if(functionflag==0)

P1=out4;

//一开始就停止,然后由遥控控制相关动作

elseif(functionflag==1)

trace();

//自动循迹

elseif(functionflag==2)

telecontrol();

//红外遥控

elseif(functionflag==3)

attackfire();

//灭火

elseif(functionflag==4)

wireless();

//无线遥控

}

}

/**************************define.h***********************/

#defineucharunsignedchar

#defineuintunsignedint

/*****车子运转定义********/

#defineout10xf9//前进

#defineout20xf5//右转

#defineout30xfa//左转

#defineout40xff//停止

#defineout50xf6//倒退

/***红外对管检测黑带定义***/

sbitp0_0=P0^0;

sbitp0_1=P0^1;

sbitp0_2=P0^2;

sbitp0_3=P0^3;

sbitp0_4=P0^4;

/*******灭火定义**********/

sbitllight=P2^7;

sbitrlight=P2^6;

sbitfan=P2^5;

sbitalarm=P0^7;

/*********无线定义**********/

sbitwireless_A=P2^2;

sbitwireless_B=P2^0;

sbitwireless_C=P2^3;

sbitwireless_D=P2^1;

/********解码定义***********/

ucharstartflag,irtime,bitnum,irdata[33],irreceiveok,ircode[4],decodeok,disp[8];

ucharfunctionflag;

//功能切换标志

ucharfireflag;

//灭火延时

ucharwireflag;

//无线切换标志

voiddelay1ms(uintz)//定义1ms

ucharx;

uinty;

for(x=110;

x>

0;

x--)

for(y=z;

y>

y--);

/*******红外切换函数*******/

voidqiehuan()

if(ircode[2]==0x4f)

{

functionflag=1;

}

elseif(ircode[2]==0x57)

functionflag=2;

elseif(ircode[2]==0x5b)

functionflag=3;

elseif(ircode[2]==0x4b)

functionflag=4;

/******************************红外遥控.h*************************/

voidtimeinit()//定时器0和外部中断0初始化

TMOD=0X02;

TH0=0X00;

TL0=0X00;

EA=1;

ET0=1;

TR0=1;

EX0=1;

IT0=1;

//定义为负跳变沿触发

voiddecode()//红外解码

uchari,j,k,value;

k=1;

for(j=0;

j<

4;

j++)

for(i=0;

i<

8;

i++)

{

value=value>

>

1;

if(irdata[k]>

6)

{

value=value|0x80;

}

k++;

}

ircode[j]=value;

value=0;

decodeok=1;

}

voidirinit()//红外初始化

if(irreceiveok)

irreceiveok=0;

decode();

if(decodeok)

decodeok=0;

voidtelecontrol()//红外控制函数

if(ircode[2]==0x03)//启动

{

P1=out1;

if(ircode[2]==0x1a)//右转

P1=0xfd;

if(ircode[2]==0x0e)//左转

P1=0xfb;

if(ircode[2]==0x07)//停止

P1=out4;

if(ircode[2]==0x02)//后退

P1=out5;

voidtimer0()interrupt1using0

irtime++;

voidextre0()interrupt0using0//由中断检测红外每个码占用的时间

if(startflag)

if(irtime>

33)

bitnum=0;

irdata[bitnum]=irtime;

bitnum++;

irtime=0;

if(bitnum==33)

{

irreceiveok=1;

else

startflag=1;

/*****************************循迹.h****************************/

voidtrace()//循迹

if((p0_2==0)&

&

(p0_0&

p0_1&

p0_3&

p0_4))//前进

if((((p0_2||p0_1)==0)&

p0_4))||(((p0_0||p0_1||p0_2)==0)&

(p0_3&

p0_4))||(((p0_0||p0_1||p0_2||p0_3)==0)&

(p0_4))||(((p0_0||p0_1)==0)&

(p0_2&

p0_4))||(((p0_0||p0_2)==0)&

(p0_1&

p0_4))||((p0_0==0)&

p0_2&

p0_4))||((p0_1==0)&

p0_4)))

P1=out2;

//右转

if((((p0_2||p0_3)==0)&

p0_4))||(((p0_2||p0_3||p0_4)==0)&

p0_1))||(((p0_1||p0_2||p0_3||p0_4)==0)&

(p0_0))||(((p0_3||p0_4)==0)&

p0_2))||(((p0_2||p0_4)==0)&

p0_3))||((p0_4==0)&

p0_3))||((p0_3==0)&

{

P1=out3;

//左转

if((!

(p0_0||p0_1||p0_2||p0_3||p0_4))||(p0_0&

p0_4))

delay1ms(30);

//停止

/***********************扑火.h*****************************/

voidattackfire()

if(rlight&

llight)

if((rlight==0)&

(llight==1))

alarm=0;

//左转

delay1ms(50);

delay1ms(100);

}

if((rlight==1)&

(llight==0))

//右转

if(!

(rlight||llight))

delay1ms(5);

while(!

P1=out4;

fan=0;

alarm=0;

delay1ms(2000);

fan=1;

//扑灭火之后延时一会,风扇停止转动

alarm=1;

if(fan==1)

fireflag=8;

while(fireflag--)

tright();

//扑灭火之后向右转动一段时间继续前进

}

/*************************无线.h****************************/

voidwireless()

if(wireflag==1)

//前进

if(wireflag==2)

tright();

//右转

if(wireflag==3)

tleft();

//左转

if(wireflag==4)

//停止

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1