欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    智能小车程序51.doc

    • 资源ID:2390875       资源大小:75.50KB        全文页数:24页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    智能小车程序51.doc

    #include<reg51.h>#include"PWMtime1.h" /PWM头文件#include <INTRINS.H>#include"delay.h"#define uint unsigned int#define uchar unsigned char/-变量定义-/uint ruku_dengdai_jishiqi; / 入库等待计时器uint cesu_jishuqi; /测速 计数器uint fache_yanshi_jishiqi; /发车延时 计数器/光电传感器 参数定义sbit c_0 = P10; /0号 传感器管锁住赛道0 检测到黑线是 高电平 sbit c_1 = P11; /1号 传感器管锁住赛道1sbit c_2 = P12; /2号 传感器管锁住赛道2sbit c_4 = P16; /新加1 传感器管检测 出库 与停车标志线sbit c_5 = P17; /新加2 传感器管检测 入库 标志线sbit d_0 = P13; /3号 传感器管sbit d_1 = P14; /4号 传感器管sbit d_2 = P15; /5号 传感器管sbit d_3 = P20; /6号 传感器sbit stop =P21; / 停车 标志传感器sbit h_0 = P22; /会车检测传感器 1sbit h_1 = P23; /会车检测传感器 2sbit s_0 = P30; / 按键 0sbit s_1 = P31; / 按键 1sbit s_2 = P34; / 按键 2sbit s_3 = P35; / 按键 3sbit s_4 = P36; / 按键 4sbit s_5 = P37; / 按键 5sbit led0= P00; /工作指示灯 0sbit led1= P01; /工作指示灯 0sbit led2= P02; /工作指示灯 0sbit led3= P03; /工作指示灯 0sbit led4= P04; /工作指示灯 0sbit led5= P05; /工作指示灯 0sbit led6= P06; /工作指示灯 0sbit led7= P07; /工作指示灯 0/-小车现场标志位-/uchar flag_zhidao; /小车在直到 uchar flag_wandao; /小车在弯道 uchar flag_wandao_0; /左拐 标志位uchar flag_wandao_0_hz ; /左拐 回正 标志位uchar flag_wandao_hou_0; /后传感器 检测到 左拐 标志位 uchar flag_wandao_1; /右拐 标志位uchar flag_wandao_1_hz ; /右拐 回正 标志位uchar flag_wandao_hou_1; /后传感器 检测到 右拐 标志位uchar flag_jiance_qian; /前面传感器 检测uchar flag_jiance_hou; /后面传感器 检测uchar flag_ruku; /入库标志线 检测uchar flag_ruku_jin; /小车 入库 控制 标志位uchar flag_chuku; /出库标志线 检测uchar flag_chuku_chu; /小车 出库 控制 标志位uchar flag_yici;uchar flag_dengdai; /等待 地方车 通过uchar flag_fache; /发车标志位uchar flag_tingche; /停车标志位void daoche_chuanganqichuli(); /倒车传感器处理 /-倒车标志位-/uchar flag_huiche;/会车标志位uchar flag_huiche_hou;/会车 后 标志位uchar flag_daoche_jiance_qian; /会车后 检测 传感器 钱 相对于 小车的行驶方向uchar flag_daoche_jiance_hou;uchar flag_huiche_dengdai; /等待 会车 标志位uchar flag_daoche ; /倒车 标志位uchar flag_daoche_dengdai;/倒车 等待uchar flag_daoche_ruku; /倒车 入库uchar flag_daoche_zhunbei_ruku; /倒车 准备 入库uchar flag_daoche_ruku_jin; /倒车 进库控制标志位uchar flag_daoche_ruku_dengdai; /倒车 入库 等待uchar flag_daoche_chuku ;/倒车 出库 uchar flag_daoche_zhidao; /倒车 直走 标志位uchar flag_daoche_wandao; /倒车 拐弯 标志位uchar flag_daoche_wandao_0; /倒车 左拐 标志位uchar flag_daoche_wandao_1; /倒车 右拐 标志位 /uchar flag_moshi1; /选择模式1 工作标志位uchar flag_moshi2; /选择模式2 工作标志位uchar flag_moshi3; /选择模式3 工作标志位uchar flag_moshi4; /-函数定义-/void chuanganqi_chuli(); /传感器扫描void led_xianshi(); /led显示void fangan_1(); /方案 1,小车独立行走void fangan_2_shujucaiji(); /方案2 红外管采集void fangan_2_biaozhichuli(); /方案2 小车采集信息 控制处理void fangan_2(); /方案 2,小车入库行走void daoche_chuanganqichuli(); /倒车传感器处理void daoche_biaozhiwei_chuli_b();/ 传感器 标志 void fangan_3_B(); / 方案 3 ,小车 会车 控制void key_moshi(); /按键 模式选择/*/* 定时器0 初始化 */*/void time0_init()TMOD |= 0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;/TR0=1;/*/* 主程序 main */*/void main()P3=0xff;P2=0XFF;P1=0XFF;key_moshi(); /模式 选择time0_init(); /启动 定时器 0time1_init(); /定时器1初始化 PWM模块dianji_zuo(1,40); / 直走dianji_you(1,40);flag_jiance_qian = 1; /启动 前面传感器 检测黑线flag_jiance_hou = 0; /关闭 后面传感器 检测黑线while(1)if(flag_moshi1=1)fangan_1(); /方案1 小车独立行走 不入库if(flag_moshi2=1)fangan_2(); /A B 同时行走 带入库程序 采用延时12sif(flag_moshi3=1)fangan_3_B();/*/* 外部 中断 0 */*/void time0() interrupt 1/TH0=(65535-50000)/256;/TL0=(65535-50000)%256;/*/* 定时器中断0 */*/void time0() interrupt 1TH0=(65535-50000)/256;TL0=(65535-50000)%256;if(flag_fache=1)fache_yanshi_jishiqi+;if(fache_yanshi_jishiqi=40) /延时2s 发车TR0=0;/*/* 定时器中断1 */*/void time1() interrupt 3TH1=(65535-500)/256;TL1=(65535-500)%256;pwm_init();/*/* 传感器取值 判断 */*/void chuanganqi_chuli()if(flag_jiance_qian=1) /启动 前 传感器 检测if(c_4=0&& c_0=0 && c_1=1 && c_2=0 &&c_5=0)/ 0 010 0flag_zhidao=1;/直道上 标志位flag_wandao=0;/弯道 标志位都为0flag_wandao_0=0;flag_wandao_1=0;flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 0;flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子入库标志位if(c_4=0 && c_0=0 && c_1=0 && c_2=1 && c_5=0)/0 001 0flag_zhidao = 0;/弯道上flag_wandao=1;/弯道 标志位都为1flag_wandao_0=0; flag_wandao_1=1; /需要 右拐flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 0;flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子出库标志位if(c_4=0 &&c_0=1 && c_1=0 && c_2=0&& c_5=0) / 1 0 0flag_zhidao = 0;/直道上flag_wandao=1;/弯道 标志位都为1flag_wandao_0=1; /需要 左拐flag_wandao_1=0;flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 0;flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子入库标志位if(c_4=0 && c_2=1 && c_5=1)&&flag_ruku=0 ) /|(c_0=1 && c_1=1 && c_2=1)flag_ruku=1; /入库标志线/flag_zhidao = 0;/弯道上/flag_wandao=0;/弯道 标志位都为1flag_wandao_0=0; /需要 左拐flag_wandao_1=0;flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子入库标志位flag_jiance_qian = 0;flag_jiance_hou = 1;if(c_2=1|c_5=1)&&flag_chuku=1)flag_zhidao = 0;/弯道上flag_wandao=1;/弯道 标志位flag_wandao_0=1; /需要 左拐flag_wandao_1=0;flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 0;flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子入库标志位if(flag_jiance_hou = 1)if(d_0=0 && d_1=1 && d_2=0 && d_3=0) / 后 010 0 直走flag_zhidao = 1;/直到上 flag_wandao = 0;/弯道 标志位都为0flag_wandao_0=0; /0flag_wandao_1=0;flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 0;flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子入库标志位if(d_0=1 && d_1=0 && d_2=0 && d_3=0) / 后 1 0 0 0 右拐flag_zhidao = 0;/直到上 准备入库flag_wandao = 1;/弯道 标志位都为1flag_wandao_0= 0; /0flag_wandao_1= 0;flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 1; /车 右拐flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子入库标志位if(d_0=0 && d_1=0 && d_2=1 && d_3=0) / 后 1 0 0 0 左拐flag_zhidao = 0;/flag_wandao = 1;/弯道 标志位都为1flag_wandao_0=0; /0flag_wandao_1=0;flag_wandao_hou_0= 1; /车 左拐flag_wandao_hou_1= 0;/后传感器检测到拐弯标志 flag_ruku_jin = 0; /车子入库标志位flag_chuku_chu = 0; /车子入库标志位 if( d_2=1 && d_3=1) / 后 x x 1 1 控制入库 标志flag_zhidao = 1;/直到上 准备入库flag_wandao = 0;/弯道 标志位都为1flag_wandao_0= 0; /车 左拐flag_wandao_1= 0;flag_wandao_hou_0=0;/后检测 flag_wandao_hou_1=0;flag_ruku_jin = 0; /待延时后入库flag_chuku_chu= 0;flag_jiance_qian = 1; /启动 前面传感器flag_jiance_hou = 0; /关闭 后检测传感器/delay_ms(500); /延时 0.5s 等待出线 /*/* LED灯显示 现况 */*/void led_xianshi()/if(flag_zhidao=1)/if(h_0=1)P00 = 0;else P00 = 1;/if(flag_wandao_0=1) /若 后传感器 检测到 左拐 灯亮if(h_1=1)P01 = 0;else P01 = 1;if(flag_huiche=1) /若 后传感器 检测到 右拐 灯亮P02 = 0;else P02 = 1;if(flag_wandao_hou_0=1) /若 入库标志位为 灯亮P03 = 0;else P03 = 1;if(flag_wandao_hou_1=1) /若 入库 控制标志位为 灯亮P04 = 0;else P04 = 1;if(flag_ruku_jin=1) /若 入库 控制标志位为 灯亮P05 = 0;else P05 = 1;if(flag_chuku_chu=1) /若 入库 控制标志位为 灯亮P06 = 0;else P06 = 1;/if(flag_chuku=1) /若 入库 控制标志位为 灯亮/P07 = 0;/else /P07 = 1;/P01 = c_0;/P02 = c_1;/P03 = c_2;/P04 = c_5;/P05 = c_5;/if(flag_ruku_jin = 1) /若在直道上 第四个等亮/P03=0;/else/P03=1;/if(flag_chuku_chu = 1)/P04=0;/else/P04=1;/if(flag_ruku = 1)/P05=0;/else/P05=1;/*/* 方案1 小车单独行走 */*A车B车 通用 */*/void fangan_1()chuanganqi_chuli();fangan_2_biaozhichuli();/采用方案2 的标志处理led_xianshi();/*/* 方案2 红外管采集 */*/void fangan_2_shujucaiji()if(flag_jiance_qian=1)if( c_4=0 && c_0=0 && c_1=1 && c_2=0 && c_5=0 )/前0 010 0 直走flag_zhidao=1;/直道 标志位flag_wandao=0;/弯道 标志位都为0flag_wandao_0=0;/左拐 标志位flag_wandao_1=0;/右拐 标志位flag_wandao_hou_0=0; /后传感器 左拐 标志flag_wandao_hou_1=0; /后传感器 右拐 标志flag_ruku_jin = 0; /入库 出库 控制标志位flag_chuku_chu=0;if( c_4=0 && c_0=0 && c_1=0 && c_2=1 && c_5=0)/前0 001 0 右拐flag_zhidao = 0;/弯道上flag_wandao=1;/弯道 标志位都为1flag_wandao_0=0; flag_wandao_1=1; /右拐 标志位flag_wandao_hou_0=0; /后传感器 左拐 标志flag_wandao_hou_1=0; /后传感器 右拐 标志flag_ruku_jin = 0; /入库 出库 控制标志位flag_chuku_chu= 0;if(c_4=0 && c_0=1 && c_1=0 && c_2=0 && c_5=0) / 前0 100 0 左拐flag_zhidao = 0;/弯道上flag_wandao=1;/弯道 标志位都为1flag_wandao_0=1; /需要 左拐flag_wandao_1=0;flag_wandao_hou_0=0; /后传感器 左拐 标志flag_wandao_hou_1=0; /后传感器 右拐 标志flag_ruku_jin = 0; /入库 出库 控制标志位flag_chuku_chu=0;if(c_4=1 && c_0=1 && c_5=0&& flag_ruku=1)/前1 1xx 0小车出库 处理/入库 标志 1flag_zhidao = 0;/flag_wandao=0;/弯道 标志位都为0flag_wandao_0=0; /0flag_wandao_1=0;flag_wandao_hou_0=0; /后传感器 左拐 标志flag_wandao_hou_1=0; /后传感器 右拐 标志flag_ruku = 0;/入库标志为 flag_chuku= 1;/出库标志位 1flag_ruku_jin=0;flag_chuku_chu=1; /出库控制字flag_dengdai=1;/delay_ms(500); /延时0.5s 待传感器出赛道/由于 车库太小 车有可能没法抓住赛道 去掉这段/若等待 精度 不够 ,需调整/if(c_4=0 && ( c_0=1|c_1=1 ) && c_2=0&&c_5=0)&&/ (d_0=1 | d_1=1 | d_2=1) && flag_ruku=1 && flag_dengdai=0) / 入库一次/ / 0 1 0 1 | 1 | 1/flag_dengdai=1; /等待 对方车 通过,发车/准备入库if(c_4=0 && c_2=1 && c_5=1 && flag_chuku = 0)/ 前0 xx1 1出库标志 / 准备入库标志位处理 flag_zhidao = 1;/直到上 准备入库flag_wandao=0;/弯道 标志位都为0flag_wandao_0=0; /0flag_wandao_1=0;flag_wandao_hou_0=0; /后传感器 左拐 标志flag_wandao_hou_1=0; /后传感器 右拐 标志flag_ruku = 1;/入库标志为 1flag_chuku= 0;/出库标志位flag_jiance_qian = 0; /关闭 前面传感器flag_jiance_hou = 1; /启动 后检测传感器if(flag_jiance_hou = 1)/后 传感器 标号 3 4 5if(d_0=0 && d_1=1 && d_2=0 && d_3=0) / 后 010 0 直走flag_zhidao = 1;/直到上 flag_wandao = 0;/弯道 标志位都为0flag_wandao=0;/弯道 标志位都为0flag_wandao_0=0; /0flag_wandao_1=0;flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 0;if(d_0=1 && d_1=0 && d_2=0 && d_3=0) / 后 1 0 0 0 右拐flag_zhidao = 0;/直到上 准备入库flag_wandao = 1;/弯道 标志位都为1flag_wandao=0;/弯道 标志位都为0flag_wandao_0=0; /0flag_wandao_1=0;flag_wandao_hou_0= 0; /后传感器检测到拐弯标志 flag_wandao_hou_1= 1; /车 右拐if(d_0=0 && d_1=0 && d_2=1 && d_3=0) / 后 1 0 0 0 左拐flag_zhidao = 0;/flag_wandao = 1;/弯道 标志位都为1flag_wandao_0=0; /0flag_wandao_1=0;flag_wandao_hou_0= 1; /车 左拐flag_wandao_hou_1= 0;/后传感器检测到拐弯标志 if( d_2=1 && d_3=1) / 后 x x 1 1 控制入库 标志flag_zhidao = 0;/直到上 准备入库flag_wandao = 0;/弯道 标志位都为1flag_wandao_0= 0; /车 左拐flag_wandao_1= 0;flag_wandao_hou_0=0;/后检测 flag_wandao_hou_1=0;flag_ruku_jin = 1; /待延时后入库flag_chuku_chu= 0;flag_jiance_qian = 1; /启动 前面传感器flag_jiance_hou = 0; /关闭 后检测传感器/delay_ms(500); /延时 0.5s 等待出线 /*/* 方案2 采集标志位处理 */*/void fangan_2_biaozhichuli()if(flag_zhidao=1) /直到上 小车直走dianji_zuo(1,50); / 直走dianji_you(1,52);if(flag_wandao = 1) /弯道上 小车拐弯if(flag_wandao_0=1) /左拐dianji_zuo(2,80); /左拐 双差速拐弯 大拐弯dianji_you(1,80);if(flag_wandao_1=1) /右拐dianji_zuo(1,65); / 降低右电机PWMdianji_you(2,2);if(flag_wandao_hou_0=1) / 后传感器 检测到 左拐dianji_zuo(2,2); dianji_you(1,65); /右电机正转if(flag_wandao_hou_1=1) / 后传感器 检测到 右拐dianji_zuo(1,60); / 做电机正转dianji_you(2,2);/带点小制动if(flag_ruku_jin=1) /小车 进库 dianji_zuo(1,60); / 降低右电机PWMdianji_you(1,0);if(flag_dengdai=1)dianji_zuo(0,0); /左拐 降低做电机pwmdianji_you(0,0);

    注意事项

    本文(智能小车程序51.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开