智能小车设计报告

天津理工大学第二届电子设计大赛

——智能小车竞赛

设计报告
 

学院:海运学院

班级:10航海二班

队员: 


 

摘要

智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能电动车就是其中的一个体现。本次设计的简易智能电动车,采用AT89S52单片机作为小车的检测和控制核心;采用红外传感器来检测路上感应到的白色乒乓球,从而把反馈到的信号送单片机,单片机对直流电机输出高电频或低电频,来对小车的方向和速度进行控制,并使小车顺利收集乒乓球。此外,对整个控制软件进行设计和程序编制以及程序调试,并最终完成软件和硬件的融合,实现小车的预期功能。本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能性。

目录

引言· - 2 -

1.设计任务:· - 2 -

2.方案比较与选择:· - 3 -

3.程序框图· - 3 -

4.搜集线路理论分析· - 4 -

5.系统的具体设计与实现· - 5 -

6.系统程序· - 5 -

7.总结· - 7 -

引言

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。

无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为肩负未来发展重任的大学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。


为了适应机电一体化的发展在汽车智能化方向的发展要求,提出电子智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。

此项设计是在我校创新俱乐部学长提供指导和帮助的基础上,采用AT89s52单片机作为控制核心,进行的兴趣性拓展探索。

1.设计任务:

设计并制作一个智能电动小车,并能在指定范围内快速收集5个乒乓球。

1.1场地平面图

1.2基本任务:

车辆从起点出发(出发前,车体不能超出起跑范围)。参赛的智能小车上场后将进行一次寻宝旅行。小车从指定的起点出发,自动搜集场地中摆放好的的5件“宝藏”(方式不限),搜集完,则比赛结束。

1.3发挥部分:

1.发现宝藏时,小车有明显的标志信号。

2.小车能自动记下并显示已收集的宝藏数目。

3.其它。

2.方案比较与选择:

此次竞赛的小车车体的设计,我们采用了直接购买的方式。寻找装置采用红外长距离传感器和短距离传感器。收集装置的设计是此次设计的难点所在,我们总共尝试了三种方案。

第一种方案:收集装置由前后两个减速电机控制。前面的电机(不妨称之为“电机1”)控制类似挖土机前爪的半圆柱形金属框,负责把乒乓球收起。后面的电机(“电机2”)控制整个机械臂,负责在乒乓球被收起后升起机械臂。乒乓球通过焊在机械臂上的通道落至小车上的储存筐内。这个方案在实践阶段我们发现其有两个弊端:直流电机不像舵机或步进电机能够准确控制转动角度,两个电机每次卷起、落下都有一定的误差,不能回到原位置;另外,受通道的影响,长距离传感器和短距离传感器无法固定安装。

第二种方案:收集装置也由两个减速电机控制,只是第一种方案中的电机1换了位置,电机2功能和位置不变。电机1通过绳子控制机械臂前端的机械手,机械手的一张一合把乒乓球拾起,然后电机2扬起机械臂,电机1拉紧绳子,乒乓球自然落入储存筐。此方案刚被设计出即被否定。原因是制作过程太过复杂,且不易控制。

第三种方案:收集装置只由一个减速电机(即电机2)控制。机械臂前端安装金属丝制成的收集筐,省去了电机1。金属丝具有一定的弹性,只要调整好筐底相邻两根金属丝的间距,就能使乒乓球钻入且掉不出收集筐。车体上的储存筐保留,收集筐上不封盖,这样在机械臂升起后乒乓球可以落入储存筐内,以防收集筐内乒乓球过多影响收集。此方案在实践中几经调整完善,最终在比赛中被采用。

其实,方案二是方案一的改进版,方案三是方案二的精简版。

3.程序框图

智能小车设计报告  

4.搜集线路理论分析

从场地设计、乒乓球摆放位置以及小车设计来看,小车会首先探测到场地中央的3个小球,然后接近并收集,由于我们的小车收集装置约束,一次收集三个球成功的几率不大,小车一般只会收集起三个中的一个,然后把另两个撞到一边。接下来小车会逐个寻找并收集剩下的乒乓球。由于乒乓球易滚动,我们没有给小车设计固定路线,而只是靠它自己寻找目标。

5.系统的具体设计与实现

我们设计的小车采用AT89s52单片机芯片作为控制核心,两个红外线传感器探测乒乓球的大概位置与方向,两个RPR220光电开关较精准地感测小车与乒乓球的距离。收集装置采用一个直流减速电机驱动控制,车体应用两个减速电机驱动,总共三个直流电机又通过两个L298N电机驱动控制。小车每次收集到球后,都会通过电磁式蜂鸣器发出声响。

我们的电机驱动通过整体采购获得,其他的电路结构是我们自己动手焊接的,这也是我们引以为自豪的的地方。根据俱乐部提供的资料,我们组装完成了自己的小车作品。

小车的控制程序我们用Keil软件编写,并通过AVR_fighter烧写入单片机。在编写过程中,我们得到了学长的指导和帮助。

6.系统程序

我们最终编写应用的程序如下:

#include

sbit a=P0^0;

sbit b=P0^2;

sbit c=P0^4;

sbit d=P0^6;  //0,2,4,6控制车轮

sbit e=P1^4; //大炮

sbit f=P1^5; //大炮

sbit g=P1^6; //短距离传感前左

sbit h=P1^7; //短距离传感  black

sbit j=P3^0; //短距离传感前右

sbit k=P2^2;

sbit l=P2^3;  //控制机械手

sbit m=P0^7;  //蜂鸣器

int flag=1;

void delay1(int y)

{while(y--);}

void delay (int x)

{int i;

while (x--)

for(i=0;i<=115;i++);}

void search ()       //寻找       

{                   

if(e==1&&f==1)

{if(flag==1)        

{a=1;b=0;c=1;d=0;}

if(flag==2)

{a=0;b=1;c=0;d=1;}

}

if(e==1&&f==0)

{a=0;b=1;c=0;d=1;

flag=2;}

if(e==0&&f==1)

{a=1;b=0;c=1;d=0;

flag=1;}

if(e==0&&f==0)

{a=1;b=0;c=0;d=1;}

}

void black()  //遇黑线后退

{

if(h==1) //对地

{a=0;b=1;c=1;d=0;}

delay(1300);

a=0;b=0;c=0;d=0;

}

void pick()      //捡球

{a=0;b=0;c=0;d=0;

k=0;l=1;

delay(700);

k=0;l=0;

delay(100);

k=1;l=0;

delay(700);

k=0;l=0;

delay(500);

m=0;

delay(400);

m=1;

delay(10);

}

main()

{

e=1;

f=1;

j=1;

g=1;

h=1;

m=1;

while (1)

{

if(h==1)

black();

if((g==1&&j==1)&&h==0)

search();

if((g==0||j==0)&&h==0)

pick();

}}           

7.总结

我们是来自海运学院的三个学生,凭借强烈的兴趣支撑报名参加了此次智能小车比赛。我们的小车大部分是自己焊接组装的,在节约资本投入的同时体会到了亲手制作的快乐与骄傲。由此,我们给小车取名“拾趣”,参赛口号定为:与兴趣同行,其乐无穷!

为了参加这次比赛,一个月来我们投入了很多时间与精力,但是我们从中认识并初步学会了单片机的应用操作,学到了不少知识。在准备过程中我们几次遇到困难,在学长的帮助下通过一次次的构思修改顺利地完成了小车的制作与调试。

最终的比赛成绩可能不太理想,但我们从参加过程中得到了想要的东西,这也是莫大的快乐!

 

第二篇:智能小车设计报告

          智能小车设计报告

组员:......................

                 指导老师:..............

                 专业:应用电子技术

                 班级:....................班

                                                                                

.......................................学院         

               智能小车设计报告

摘要

本设计以AT89C52单片机小系统作为控制与检测的核心,用L298N为主控芯片组成的驱动模块作为直流电机驱动,用主控芯片为ST188组成的反射式红外传感器进行寻黑线 ,进而实现智能小车的循迹功能。用超声波进行测距、避障,并用一个液晶进行测距显示,红外无线遥控实现对小车的无线控制。此设计是集循迹、避障、测距、遥控于一体的智能小车 。电路简单,性能可靠,是一款智能化,自动化的电子作品。

关键词:AT89C52单片机  红外传感器ST188  无线遥控  智能化

Abstract:

  Combining with SCM AT89C52 as the controlling coretake the L298N as the dc motor driver using a pair of reflective ST188 infrared transmitting and receiving tubes to detect obstructions and black lines. Then the realization of intelligent vehicle tracking function. Ultrasonic range obstacle avoidance, And a liquid crystal display range Infrared wireless remote control to a small wireless control. This design is a set of tracking, obstacle avoidance, ranging remote control in one of the smart car. Simple circuit, reliable performance is an intelligent, automated electronic work

目录

一、各个模块选择方案………………………………4

1.1车体的选择…………………………………………………… 4

1.2控制器模块的选择方案……………………………………… 4

1.3驱动模块的选择方案 …………………………………………5

1.4 避障模块的选择方案 …………………………………………5

1.5 循迹模块的选择方案 …………………………………………6

1.6 电源模块的选择方案 …………………………………………6

1.7红外无线遥控的方案选择…………………………………… 7

1.8总体设计的方案选择……………………………………… …7

二、系统软、硬件方案设计………………………… 8

2.1 电机驱动电路的设计…………………………………………8

2.2 超声波避障电路的设计………………………………………10

2.3 红外循迹电路的设计 ………………………………………13

2.4 无线控制模块的电路设计 …………………………………16

2.5总体电路设计 ………………………………………………17

三、系统功能测试…………………………………18

3.1驱动模块的功能测试 ………………………………………18

3.2避障模块的功能测试 ………………………………………18

3.3循迹模块的功能测试 ………………………………………19

3.4红外无线控制模块的功能测试 …………………………….19

四、项目总       19       五、附录         20

一、各个模块选择方案

 1.1车体的选择

方案一:选用四轮四驱的车体。四轮四驱车速较快,但车体太大,过于笨重。四个驱动需要两个驱动电路模块,它的电路复杂,耗电量大,编写程序也相对困难。

       方案二: 选用三轮两驱的车体。三轮两驱采用两个驱动马达一

个驱动模块。前轮是一个万向轮进行转弯,调整方向,后轮进行

驱动车体。此方案电路简单,功耗小,小车灵活且费用低。

       综上所述我们选择方案二。

 1.2控制器模块的选择方案

         我们在之前学习与应用的都是由主控芯片AT89C52                                                                    组成的单片机小系统,AT89C52单片机小系统由单片机和一些             基本的外围电路所组成的的一个可以工作的单片机小系统,它 包括了单片机、电源、晶振电路和复位电路。它是一款低功耗、高性能CMOS8位单片机。它有4组8位并行I/O端口、3个16位定时器/计数器、一个全双工串行口、片内振荡器和复位电路。它功能齐全,简单易操作,且性价比高。所以我们选择此      款单片机小系统作为智能小车的主要控制器。

                              

 1.3驱动模块的选择方案

     方案一:使用L298N芯片驱动电机。L298N是一个具有高电压大电流的全桥驱动芯片,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口连接来进行控制,而且带有使能端,方便PWM调速。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,正好符合我们小车的驱动要求。此方案电路简单,性能稳定,使用比较方便。

    方案二:使用独立的逻辑器件搭建驱动模块。此方案费用低,

但相对麻烦且性能不稳定,容易在硬件上出现故障。

   综上所述,我们选择方案一。

1.4 避障模块的选择方案

        方案一:采用红外避障:红外传感器可以实现小车的避障,并且价格便宜。但是红外传感器只能通过调整硬件来改变灵敏度,并且无法量化,所以,判断障碍物效果较差,无法使小车高准确度的运行。

方案二:采用超声波避障:利用超声波传感器,根据时间差可以精确的测量前方障碍物的距离,精度高,价格合理。可以通过调整软件算法,改变小车的避障精度。并且可以控制小车与前方障碍物的距离大小来使小车做出反应,智能化高。

综合比较得:方案二更加智能化,精确度高,更加符合当前

的实际。所以采用方案二。

1.5 循迹模块的选择方案

    方案一:采用发光二极管和光敏电阻检测黑线,但这种方案易受到外界光源的干扰,有时可能检测不到黑线。这种方案性能不稳定,所以不采用。

方案二:采用反射式红外发射接收管ST188。由于采用带有交流分量的调制信号,则可大幅度减少外界的干扰;此外红外发射接收管的工作电流取决于平均电流,如果采用占空比小的调制信号,在平均电流不变的情况下,瞬时电流很大(50~100mA),则大大提高了信噪比。此种测试方案反应速度大约在 5us,反应快,符合我们设计要求。

综上所述,我们选择方案二。

1.6 电源模块的选择方案

   方案一:采用交流电经直流稳压处理后供电 :采用交流电提供直流稳压电源,电流驱动能力及电压稳定性最好,且负载对电源影响也最小。但由于需要电线对小车供电,极大影响了壁障小车行动的灵活性及地形的适应能力。而且壁障小车极易把拖在地上的电线识别为障碍物,人为增加了不必要的障碍。故我们放弃了这一方案。
     方案二: 采用干电池组进行供电 :采用四节干电池降压至5V后给单片机及其他逻辑单元供电,另取六节干电池为电机驱动供电。这样电机启动及制动时的短暂电压干扰不会影响到逻辑单元和单片机的工作。干电池用电池盒封装,体积和重量较小,使用方便。

综上所述,我们选择方案二。

1.7红外无线遥控的方案选择

     在无线控制的选择上我们的智能小车采用的是红外无线控制,红外无线控制可以再和其它同样具备红外接口的设备间进行信息交流,红外接口可以省去下载或其它信息交流所发生的费用,操作起来方便简单易懂,而且红外需要对接才能传输信息,安全性较强。综上所述我们选择了红外无线遥控(SC2272)。

1.8总体设计的方案选择

   在此智能小车设计中,我们使用的是三轮两驱的小车车体,用干电池组对系统进行供电,采用AT89C52单片机作为主控芯片,采用L298N作为电机驱动的芯片,使用ST188的反射式红外发射接收管作为循迹芯片,使用超声波进行避障,测距,然后用一个1602液晶进行测距显示。

二、系统软、硬件方案设计

 2.1 电机驱动电路的设计

1)L298N电机驱动PCB板图

    

  2)L298N电机驱动电路原理图  

3)电机驱动模块原理

①、主要芯片:L298N、光电耦合器
②、工作电压:控制信号直流4.5~5.5V;驱动电机电压5~30V
③、可驱动直流(5~30V之间电压的电机)
④、最大输出电流2A (瞬间峰值电流3A)
⑤、最大输出功率25W
⑥、特点:1、具有信号指示
     2、转速可调
     3、抗干扰能力强

          4、具有续流保护
      5、可单独控制两台直流电机
     6、可单独控制一台步进电机

          7、PWM脉宽平滑调速(可使用PWM信号对直流电机调速)
      8、可实现正反转
     9、采用光电隔离

⑦、L298N逻辑功能表:

2.2 超声波避障电路的设计

1)超声波介绍:

1、典型工作用电压:5V。

2、超小静态工作电流:小于2mA。       

3、感应角度:不大于15 度。

4、探测距离:2cm-400cm

5、高精度:可达0.3cm。

6、盲区(2cm)超近。

7、完全谦容GH-311 防盗模块。

8、带金属USB 外壳,坚固耐用。

2)接口定义:

Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd

本产品使用方法:控制口发一个10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。

3)超声波时序图

  

 

4)超声波避障模块工作原理:

①采用 IO 触发测距,给至少10us 的高电平信号;

②模块自动发送8 个40khz 的方波,自动检测是否有信号返回;

③有信号返回,通过IO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间;

④超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2; 

5)超声波模块程序流程图:

    

2.3 红外循迹电路的设计

 1)ST188传感器介绍

                 

一、特点
1.采用高发射功率红外光电二极管和高灵敏度光电晶体管组成。  
2.检测距离可调整范围大,4-13mm可用。
3.采用非接触检测方式。

 二、应用范围
     1.IC卡电度表脉冲数据采样。
   2.集中抄表系统数据采集。
   3.传真机纸张检测。
   4.与本公司的方向判别电路ST288A结合使用可判别被测物的运

      动方向及正反转速测量、行程测量等。 

 三、极限参数(Ta=25℃)

2)循迹模块工作原理

我们采用的是ST188作为红外检测传感器。

这里的循迹是指小车在白色地板上循黑线行走,由于黑线和白色地板对光线的反射系数不同,可以根据接收到得反射光的强弱来判断“道路”。通常采用的方法是红外探测法。

在黑线检测的测试中。若检测到白色区域,发射管发射的红外线没有反射到接收管,测量接收管的电压大约为4.8V,若检测到黑色区域,接收管接收到发射管发射的红外线,电阻发生变化所分得的电压也随之变化,测得接收管的电压大约为0.5V。

3)ST188循迹模块的电路原理图

4)循迹工作原理简化图:

   

5)循迹流程图:

  

2.4 无线控制模块的电路设计

   1) 接收板主要参数:

       ①工作频率:315M

②工作电压:DC5V

③工作电流:≤3mA(5.0VDC)

④编码芯片:SC2272

⑤遥控距离:20~50米以上(开阔地)

   2)接收模块的七个引脚(D3、D2、D1、D0、GND、VT、VCC)说明:

       ①VCC为DC5V的供电端,GND为接地端。

②VT端为解码有效输出端,只要发射器的数据码有输出,VT都能同步输出高电平。

③D3、D2、D1、D0是2272解码芯片的四位数据输出端,有信号时能输出5V左右的高电平,驱动电流约2mA,与发射器的四位数据码输出一一对应。

 2.5总体电路设计

  1)智能小车系统结构图

智能小车控制系统由稳压电源模块、主控芯片模块、电机驱动模块和传感器模块、无线控制模块等部分组成,控制系统结构图如下:

2)智能小车实体图

    

三、系统功能测试

3.1驱动模块的功能测试

    在调试驱动模块的过程中,我们首先要搞清楚驱动模块的工作原理和跟51单片机的连线。在书写程序的过程中我们要明确的知道驱动模块的主要芯片L298N的逻辑功能表。驱动模块在通电以后车轮能够正常转动则证明驱动模块的功能测试已成功。

3.2避障模块的功能测试

    避障功能使用的是HC-SR04超声波模块,HC-SR04超声波模块包括超声波发射器、接收器与控制电路。我们将两个超声波电路分别安放在智能小车车头两边,输入程序进行测试调整,开始由于车速太快,小车反应不够灵敏,不能够实现避障功能,通过不断的程序修改及电流电压的控制,智能小车最终能够正常实现避障功能。

3.3循迹模块的功能测试

    循迹功能的实现我们以前采用的是以ST188为主要芯片的循迹模块,经过我们三个星期的辛苦调试,发现ST188芯片出现了问题,我们替换了循迹模块采用了TCRT5000的循迹模块,经过重新的编程调试,最终实现了小车的循迹功能。 

 3.4红外无线控制模块的功能测试

    红外无线控制我们采用主要芯片是SC2262,在红外无线控制模块中我们花费的精力相对较少,因为在购买此模块的时候,买的就已经是半成品了,按照我们查找的资料把线连接好即可,再把程序输入到单片机中,小车就能通过无线控制来进行行走的方向(向前、向后、向左、向右)。

四、项目总结

      此次项目的完成是我们四个人团结努力的结果及指导老师赵老师的辛苦指导。完成此次项目的过程中我们小组也遇到了很多困难,但是面对困难的时候,我们小组选择的不是逃避而是积极的面对去克服困难,然而遇到困难选择一个好的开始必然会带来好的结果在经历了十五个周的学习和制作,终于完成了智能小车的驱动、避障、循迹、无线控制四大功能。

       在我们为此次项目的成功感到高兴的同时,我们小组也适时的总结了通过此次项目的学习得到的经验和教训。通过此次项目的学习提高了我们自主学习的能力、动手操作的能力和团结合作的能力。遇到问题时我们小组也会产生分歧,通过此次的学习我们了解到在一个团队合作的过程中沟通是解决分歧的最好办法。一个团队制作一个项目的时候是需要每个成员的团结、配合和努力。

      通过我们小组在十五个周的辛苦学习制作后,虽然我们没有达到我们小组刚开始期望的目标,但是通过我们的努力还是完成了最主要的功能实现(驱动、避障、循迹、无线控制),我们小组为此次项目的成功感到自豪高兴,最主要的还是要感谢我们的指导老师赵老师的辛苦指导。

五、附录

  5.1参考的书籍:

    ①单片机应用技术项目教程(C语言版)  郭志勇著

    ②模拟电子技术基础    周良权、傅恩锡、李世馨著

    ③电子线路CAD实用教程(第三版) 潘永雄、沙河著

    ④C程序设计(第四版) 谭浩强著

5.2电机驱动模块程序

#include

sbit in1=P1^0; //电机驱动输出控制管脚配置

sbit in2=P1^1;

sbit in3=P1^2;

sbit in4=P1^3;

unsigned char i,j,k;

void delay(k)   //定义延时函数delay(k)

{

               for(i=k;i>0;i--)

                    for(j=0;j<255;j++);

}

void main()

{

         while(1)

        {

               delay (30);

              in1=1,in2=0,in3=1,in4=0; //控制小车前进动作

              delay(30);

              in1=0,in2=1,in3=0,in4=1; //控制小车后退动作      

              delay(30);

              in1=1,in2=0;   //控制小车右转

              delay(30);

              in3=1,in4=0;  //控制小车左转

        }

      }

5.3超声波避障模块的程序

//-----------超声波模块1-------------------------------

void SRF06_1(void)

{

         unsigned int j=4000;

         TH0=0x00;                                                                      

         TL0=0x00;

         TR0=0;

         TRIG1=1;

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

          _nop_();    //大于10us

          TRIG1=0;   //启动模块

          while(ECHO1==0&&j!=0)j--; //等待发射

          TR0=1;

          while(ECHO1==1&&TH0<=150);

          TR0=0;

          Distance1=((TH0*256+TL0)*36.89)/2000;//单位cm

}

//-------超声波模块2hhGGGGGG                                                                                                                                                                                                                               void SRF06_2(void)

{

           unsigned int j=4000;

           TH0=0x00;                                                                    

           TL0=0x00;

           TR0=0;

           TRIG2=1;

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

           _nop_();   //大于10us

           TRIG2=0    //启动模块

           while(ECHO2==0&&j!=0)j--;      //等待发射

           TR0=1;

           while(ECHO2==1&&TH0<=150);

           TR0=0;

           Distance2=((TH0*256+TL0)*36.89)/2000;//单位cm                            

}

5.4循迹模块程序

     #include

     #define uint unsigned int

     #define uchar unsigned char

     sbit P10=P1^0;

     sbit P11=P1^1;

     sbit P12=P1^2;

     sbit P13=P1^3;

     sbit P14=P2^0;//寻迹左

     sbit P16=P2^1;//寻迹中

     sbit P17=P2^3;//寻迹右

     void fun1()

    {

       P10=1;

       P11=0;

       P12=1;

       P13=0;

     }//前

    void fun2()

    {

       P10=1;

       P11=0;

       P12=1;

       P13=1;

    }//右

    void fun3()

   {

       P10=1;

       P11=1;

       P12=1;

       P13=0;

   }//左

   void fun4()

  {

       P10=1;

       P11=1;

       P12=1;

       P13=1;

   }//停

   void main()

   {

      while(1)

       {

          if(   (P14==0&&P16==0&&P17==0)||(P14==1&&P16==0&&P17==1)  )

          fun1();  

          else          if(   (P14==1&&P16==0&&P17==0)||(P14==1&&P16==0&&P17==0)||(P14==1&&P16==1&&P17==0)  )

        fun2();

        else if(   (P14==0&&P16==1&&P17==1)||(P14==0&&P16==1&&P17==1)||(P14==0&&P16==0&&P17==1) )

        fun3();

    //  else if(   (P14==1&&P16==1&&P17==1) )

        //fun4();                                                                        `

    /*  else   fun1(); */

    }

  }

5.5红外无线遥控模块程序

#include

sbit k0=P2^4;

sbit k1=P2^5;

sbit k2=P2^6;

sbit k3=P2^7;

sbit q0=P1^0;

sbit q1=P1^1;

sbit q2=P1^2;

sbit q3=P1^3;

unsigned char i,j,k;

void delay(k)

{

    for(i=k;i>0;i--)

        for(j=0;j<200;j++);

}

void run ()

{

  q0=1,q1=0,q2=1,q3=0;

}

void stop()

{

 q0=0,q1=0,q2=0,q3=0;

}

void left ()

{

  q0=0,q1=0,q2=1,q3=0;

}

void right ()

{

  q0=1,q1=0,q2=0,q3=0;

}

main()

{

    if(k0==1&&k1==0&&k2==0&&k3==0)

         {delay(100);

         if(k0==1&&k1==0&&k2==0&&k3==0)

       {   

          run();       

         }

     }

    else if(k0==0&&k1==1&&k2==0&&k3==0)

         {delay(100);

          if(k0==0&&k1==1&&k2==0&&k3==0)

       {

         stop();                   

       }

         }

    else if(k0==0&&k1==0&&k2==1&&k3==0)

         {delay(100);

          if(k0==0&&k1==0&&k2==1&&k3==0)               

       {

         right();         

       }

         }

    else if(k0==0&&k1==0&&k2==0&&k3==1)

         {delay(100);

          if(k0==0&&k1==0&&k2==0&&k3==1)

       {

         left();               

       }   

         }

}

  

                                               

相关推荐