智能小车程序51.doc

上传人:文库蛋蛋多 文档编号:2390875 上传时间:2023-02-17 格式:DOC 页数:24 大小:75.50KB
返回 下载 相关 举报
智能小车程序51.doc_第1页
第1页 / 共24页
智能小车程序51.doc_第2页
第2页 / 共24页
智能小车程序51.doc_第3页
第3页 / 共24页
智能小车程序51.doc_第4页
第4页 / 共24页
智能小车程序51.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《智能小车程序51.doc》由会员分享,可在线阅读,更多相关《智能小车程序51.doc(24页珍藏版)》请在三一办公上搜索。

1、#include#includePWMtime1.h /PWM头文件#include #includedelay.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号 传感器管锁住赛道1sbi

2、t 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

3、 = 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/-小车现场

4、标志位-/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; /前面传感器 检测u

5、char 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(); /倒车传感器处理 /-倒车标志位-/uc

6、har 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; /倒车

7、准备 入库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 工作标志位uc

8、har 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_ch

9、uanganqichuli(); /倒车传感器处理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

10、(); /模式 选择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

11、_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=

12、(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_

13、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; /车子出

14、库标志位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=

15、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; /需要

16、 左拐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=

17、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_

18、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 &

19、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 等待出线 /*

20、/* 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) /若 入库 控制标志位

21、为 灯亮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/P0

22、3=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 &

23、 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;/弯道上fla

24、g_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; /需要 左拐fla

25、g_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_

26、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) / 入库

27、一次/ / 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_

28、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; /后传感器检测到拐弯标

29、志 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_zhid

30、ao = 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_

31、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

32、=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);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号