基于STC89C52单片机的智能循迹小车设计(3)

时间:2025-07-11

第7卷第31期(2011年11月)ComputerKnowledgeandTechnology电脑知识与技术{delay(10);while(1){switch(sensor_inp()){case0x02:forward();break;case0x04:turn_left();break;case0x01:turn_right();break;default:break;}}}程序开始,进入主函数。调用延迟函数delay(),用以使系统达到稳定状态。在KEIL软件下进行断点运行,测得这里的de lay(10)在11.0592MHz的晶振下可以延迟100ms。之后进入while循环,条件始终为真,表示小车将一直运行while函数中的语句,直至外界迫使小车停下。在switch分支语句中,case0x02将使程序跳转至forward();,其中0x02即为二进制的00000010,这表示三个传感器中,只有中间的传感器输出的是高电平,左右两个传感器都输出低电平,故小车沿直线行走。case0x04将使程序跳转至turn_left();,其中0x04即为二进制的00000100,这表示三个传感器中,只有左边的传感器输出的是高电平,中间和右边的传感器输出的均为低电平,故小车左拐。case0x01将使程序跳转至turn_right();,其中0x01即为二进制的00000001,这表示三个传感器中,只有右边的传感器输出的是高电平,左边和中间的传感器均输出低电平,故小车右拐。

3.2小车前进子程序模块

voidforward(){IN1=1;IN2=0;IN3=1;IN4=0;EN1=1;EN2=1;}该程序中,L293D芯片的两个使能端EN1和EN2一直保持高电平。IN1=1,IN2=0说明右边电机向前转动;IN3=1,IN4=0说明左边电机也向前转动。故两个电机同时向前转动,从而驱动小车向前行进。

3.3小车左转子程序模块

voidturn_right(){IN1=1;IN2=0;IN3=0;IN4=0;EN1=1;EN2=1;}该程序中,使能端EN1和EN2仍然保持高电平。IN1=0,IN2=0,表明右边电机向前转动;而IN3=0,IN4=0,说明左边电机不动。左轮不转右轮转,这样就实现了小车向左转

3.4小车右转子程序模块

voidturn_left(){IN1=0;IN2=0;IN3=1;IN4=0;EN1=1;EN2=1;}该程序中,使能端EN1和EN2仍然保持高电平。IN1=0,IN2=0表明右边电机停止不转动;IN3=1,IN4=0说明左边电机向前转动。右轮不转左轮转,这样就实现了小车右转。

3.5延时子程序模块

voiddelay(intn){unsignedchari,j,k;for(i=n;i>0;i--)for(j=50;j>0;j--)for(k=100;k>0;k--);}该延时子程序主要是让系统初始化到最佳状态。经由KEIL软件的断点测试,在晶振频率为11.0592MHz时,当n=10时,可延时100ms。(下转第7758页)本栏目责任编辑:唐一东人工智能及识别技术7753

基于STC89C52单片机的智能循迹小车设计(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219