寻迹小车控制程序.doc_第1页
寻迹小车控制程序.doc_第2页
寻迹小车控制程序.doc_第3页
寻迹小车控制程序.doc_第4页
寻迹小车控制程序.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/名 称:寻迹小车控制程序/功 能:控制小车绕黑线行驶/头文件包含#includereg51.h/定义存放P1口状态的全局变量unsigned char P1_State=0xff;/定义存放红外遥控状态的全局变量 unsigned char IrDA_State=0xff;/1.电机控制端口分配/ 左 轮 运转状态 右 轮 运转状态/ P2.0 P2.1 P2.2 P2.3/ 01 正转0 1正转/ 10 反转1 0 反转/ 11 停止1 1 停止/ 0 0 非允许状态0 0 非允许状态/左轮控制端口sbitLeft_Motor_Goahead = P20; /该端口为低电平时,小车左轮正转(前进)sbitLeft_Motor_Back = P21; /该端口为低电平时,小车左轮反转(后退)/右轮控制端口sbitRight_Motor_Goahead = P22;/该端口为低电平时,小车右轮反转(后退)sbitRight_Motor_Back = P23;/该端口为低电平时,小车右轮反转(前进) /2.小车运行状态控制子程序/2.1 前进子程序/功 能:左轮正转、右轮正转,从而控制小车前进/入口参数:无/出口参数:无/调用示例:Car_Goahead();voidCar_Goahead()Left_Motor_Goahead = 0; /左轮正转Left_Motor_Back = 1;Right_Motor_Goahead = 0;/右轮正转Right_Motor_Back = 1;/2.2 后退子程序/功 能:左轮反转、右轮反转,从而控制小车后退/入口参数:无/出口参数:无/调用示例:Car_Back();voidCar_Back()Left_Motor_Goahead = 1;/左轮反转Left_Motor_Back = 0;Right_Motor_Goahead = 1; /右轮反转Right_Motor_Back = 0;/2.3 左转弯子程序/功 能:左轮停转,右轮正转,从而控制小车左转弯/入口参数:无/出口参数:无/调用示例:Car_Turn_Left();voidCar_Turn_Left()Left_Motor_Goahead = 1;/左轮停转Left_Motor_Back = 1;Right_Motor_Goahead = 0; /右轮正转Right_Motor_Back = 1;/2.4 右转弯子程序/功 能:左轮正转,右轮停转,从而控制小车右转弯/入口参数:无/出口参数:无/调用示例:Car_Turn_Right();voidCar_Turn_Right()Left_Motor_Goahead = 0; /左轮正转Left_Motor_Back = 1;Right_Motor_Goahead = 1;/右轮停转Right_Motor_Back = 1;/2.5 停车子程序/功 能:左轮停转,右轮停转,控制小车停车/入口参数:无/出口参数:无/调用示例:Car_Stop();voidCar_Stop()Left_Motor_Goahead = 1; /左轮停转Left_Motor_Back = 1;Right_Motor_Goahead = 1;/右轮停转Right_Motor_Back = 1;/3.延时子程序/3.1 延时50ms子程序/功 能:延时50ms/入口参数:无/出口参数:无/调用示例:delay_50ms();voiddelay_50ms()TMOD=0x01;/T0,方式1,12MHz晶振TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(!TF0);TF0=0;TR0=0;/3.2 延时1s子程序/功 能:延时1s/入口参数:无/出口参数:无/调用示例:delay_1s();voiddelay_1s()unsigned char Count1;for(Count1=0;Count120;Count1+)delay_50ms();/3.3 延时5s子程序/功 能:延时5s/入口参数:无/出口参数:无/调用示例:delay_5s();voiddelay_5s()unsigned char Count2;for(Count2=0;Count2100;Count2+)delay_50ms();/3.4 延时10s子程序/功 能:延时10s/入口参数:无/出口参数:无/调用示例:delay_10s();voiddelay_10s()unsigned char Count3;for(Count3=0;Count3200;Count3+)delay_50ms();/4.传感器信号采集与处理子程序/4.1 3路传感器信号采集与处理子程序/功 能:根据连接传感器电路的I/O口的8种状态,调用/ 小车控制子程序,实现小车运行状态的调整,/ 由于3路传感器不能有效识别“左T”、“右T”标志物,/ 因此,若想识别“T”字标志物,需在比赛时申请传感器板,/ 并调用5路传感器信号采集与处理子程序。/端口分配:P1.0-左边的传感器/ P1.1-中间的传感器/P1.2-右边的传感器/入口参数:无/出口参数:无/调用示例:Sensor_3_Car_State_Adjustment();voidSensor_3_Car_State_Adjustment(void)P1_State=P1_State&0x07; /获取P1.0、P1.1、P1.2的状态switch(P1_State)case 0x00:Car_Back(); /P1.0|P1.1|P1.2为000组合,说明小车冲出跑道,下一步需后退delay_50ms();break;case 0x01:Car_Turn_Right();/P1.0|P1.1|P1.2为100组合,说明小车左偏,下一步需右转弯delay_50ms();break;case 0x02: Car_Goahead(); /P1.0|P1.1|P1.2为010组合,说明小车正常寻迹,下一步继续前进delay_50ms();break;case 0x04: Car_Turn_Left(); /P1.0|P1.1|P1.2为001组合,说明小车左偏,下一步需左转弯delay_50ms();break;case 0x07:Car_Stop(); /P1.0|P1.1|P1.2为111组合,说明小车遇到“十”字标志物,下一步需先停10s,再继续前进delay_10s();Car_Goahead();delay_50ms();break;default:break;/P1.0|P1.1|P1.2为其它电平组合,默认不做任何处理/4.2 5路传感器信号采集与处理子程序/功 能:根据连接传感器电路的I/O口的32种状态,调用/ 小车控制子程序,实现小车运行状态的调整,/ 5路传感器能识别“左T”、“右T”标志物。/端口分配:P1.0-左边的传感器2/ P1.1-左边的传感器1/P1.2-最中间的传感器/ P1.3-右边的传感器1/ P1.4-右边的传感器2/入口参数:无/出口参数:无/调用示例:Sensor_5_Car_State_Adjustment();voidSensor_5_Car_State_Adjustment(void)P1_State=P1_State&0x1f;/获取P1.0、P1.1、P1.2、P1.3、P1.4的状态switch(P1_State)case 0x00:Car_Back(); /P1.0|P1.1|P1.2|P1.3|P1.4为00000组合,说明小车冲出跑道,下一步需后退delay_50ms();break;case 0x04: Car_Goahead(); /P1.0|P1.1|P1.2|P1.3|P1.4为00100组合,说明小车正常寻迹,下一步继续前进delay_50ms();break;case 0x08:Car_Turn_Right();/P1.0|P1.1|P1.2|P1.3|P1.4为00010组合,说明小车左偏,下一步右转弯delay_50ms();break;case 0x07:/P1.0|P1.1|P1.2|P1.3|P1.4为11100组合,说明小车遇到“左T”标志物,下一步应停车5s,然后继续前进case 0x1c:/P1.0|P1.1|P1.2|P1.3|P1.4为00111组合,说明小车遇到“右T”标志物,下一步应停车5s,然后继续前进Car_Stop();delay_5s();Car_Goahead();delay_50ms();break;case 0x01: /P1.0|P1.1|P1.2|P1.3|P1.4为10000组合,说明小车右偏,下一步应左转弯case 0x02: /P1.0|P1.1|P1.2|P1.3|P1.4为01000组合,说明小车右偏,下一步应左转弯Car_Turn_Left();delay_50ms();break;case 0x0e:/P1.0|P1.1|P1.2|P1.3|P1.4为01110组合,说明小车遇到“十”字标志物,下一步应停车10s,然后继续前进case 0x0f:/P1.0|P1.1|P1.2|P1.3|P1.4为11110组合,说明小车遇到“十”字标志物,下一步应停车10s,然后继续前进case 0x1e:/P1.0|P1.1|P1.2|P1.3|P1.4为01111组合,说明小车遇到“十”字标志物,下一步应停车10s,然后继续前进case 0x1f:/P1.0|P1.1|P1.2|P1.3|P1.4为11111组合,说明小车遇到“十”字标志物,下一步应停车10s,然后继续前进Car_Stop();delay_10s();Car_Goahead();delay_50ms();break;default:break;/P1.0|P1.1|P1.2|P1.3|P1.4为其它电平组合时,默认不处理/4.主程序/为便于扩展遥控等功能,建议基于P1_State和IrDA_State设置状态机,不在/Sensor_3_Car_State_Adjustment()及Sensor_5_Car_State_Adjustment()/中扫描P1口的状态voidmain(void)/若要使用遥控功能,请在此处设置有关寄存器/设置P1口为输入状态P1=0xff; /循环检测P1_State和IrDA_State,然后调用小车控制子程序,进行状态调整while(1)switch(IrDA_State)case0xff:/读取P1口的状态P1_State=P1;/若用3路传感器板,请调用Sensor_3_Car_State_Adjustment();Sensor_3_Car_State_Adjustment();/若用5路传感器板,请调用Sensor_5_Car_State

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论