1、 循迹原理(以上图为例):当小车在行驶的过程中踩到黑带时,红外对管发射的光大部分被黑带吸收,导致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、扑火图要智能小车实现
2、灭火,首先要有对火源进行检测的功能,通常使用光敏晶体管组成的传感器光电接收传感器实现上述功能。光电接收传感器由光敏晶体管和光电模块组成。光敏晶体管负责接收外界光信号,处理电路将光敏晶体管的信号进行转换,送到单片机的端口上4,、无线遥控图 原理、PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。 编码芯片PT2262
3、发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路
4、完成幅度键控(ASK调制)相当于调制度为100的调幅。 PT2262/2272特点:CMOS工艺制造,低功耗,外部元器件少,RC振荡电阻,工作电压范围宽:2.615v ,数据最多可达6位,地址码最多可达531441种。应用范围:车辆防盗系统、家庭防盗系统、遥控玩具、其他电器遥控。三、程序/*主函数部分*/#include #includedefine.h /包含定义的IO口红外遥控.h /红外遥控函数循迹.h /循迹函数扑火.h /扑火函数wireless.h /无线函数void main() timeinit(); /定时器初始化 while(1) irinit(); /红外解码初始 qie
5、huan(); /红外切换函数 if(functionflag=0) P1=out4; /一开始就停止,然后由遥控控制相关动作 else if(functionflag=1) trace(); /自动循迹 else if(functionflag=2) telecontrol(); /红外遥控 else if(functionflag=3) attackfire(); /灭火 else if(functionflag=4) wireless(); /无线遥控 /*define.h*/#define uchar unsigned char #define uint unsigned int/*车
6、子运转定义*/#define out1 0xf9 /前进#define out2 0xf5 /右转#define out3 0xfa /左转#define out4 0xff /停止#define out5 0xf6 /倒退/*红外对管检测黑带定义*/sbit p0_0=P00;sbit p0_1=P01;sbit p0_2=P02;sbit p0_3=P03;sbit p0_4=P04;/*灭火定义*/sbit llight=P27;sbit rlight=P26;sbit fan=P25;sbit alarm=P07;/*无线定义*/sbit wireless_A=P22;sbit wir
7、eless_B=P20;sbit wireless_C=P23;sbit wireless_D=P21;/*解码定义*/uchar startflag,irtime,bitnum,irdata33,irreceiveok,ircode4,decodeok,disp8;uchar functionflag; /功能切换标志uchar fireflag; /灭火延时uchar wireflag; /无线切换标志void delay1ms(uint z) /定义1ms uchar x; uint y; for(x=110;x0;x-) for(y=z;yy-);/*红外切换函数*/void qieh
8、uan() if(ircode2=0x4f) functionflag=1; else if(ircode2=0x57) functionflag=2; else if(ircode2=0x5b) functionflag=3; else if(ircode2=0x4b) functionflag=4;/*红外遥控.h*/void timeinit() /定时器0和外部中断0初始化 TMOD=0X02; TH0=0X00; TL0=0X00; EA=1; ET0=1; TR0=1; EX0=1; IT0=1; /定义为负跳变沿触发void decode() /红外解码 uchar i,j,k,
9、value; k=1; for(j=0;j4;j+) for(i=0;i1; if(irdatak6) value=value|0x80; k+; ircodej=value; value=0; decodeok=1; void irinit() /红外初始化 if(irreceiveok) irreceiveok=0; decode(); if(decodeok) decodeok=0;void telecontrol() /红外控制函数 if(ircode2=0x03) /启动 P1=out1; if(ircode2=0x1a) /右转 P1=0xfd; if(ircode2=0x0e)
10、/左转 P1=0xfb; if(ircode2=0x07) /停止 P1=out4; if(ircode2=0x02) /后退 P1=out5;void timer0() interrupt 1 using 0 irtime+;void extre0() interrupt 0 using 0 /由中断检测红外每个码占用的时间 if(startflag) if(irtime33) bitnum=0; irdatabitnum=irtime; bitnum+; irtime=0; if(bitnum=33) irreceiveok=1; else startflag=1;/*循迹.h*/void
11、 trace() /循迹 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|p
12、0_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*/void attackfire() if(rlight&llight) if(rlight=0)&(llight=1) alarm=0; /左转 delay1ms(50); delay1ms(100); if(rlight=1)&(llight=0) /右转 if
13、(!(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*/void wireless() if(wireflag=1) /前进 if(wireflag=2) tright(); /右转 if(wireflag=3) tleft(); /左转 if(wireflag=4) /停止
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1