简易智能小车_源程序[行业文书].doc

上传人:rrsccc 文档编号:8971264 上传时间:2021-01-27 格式:DOC 页数:13 大小:64.50KB
返回 下载 相关 举报
简易智能小车_源程序[行业文书].doc_第1页
第1页 / 共13页
简易智能小车_源程序[行业文书].doc_第2页
第2页 / 共13页
简易智能小车_源程序[行业文书].doc_第3页
第3页 / 共13页
简易智能小车_源程序[行业文书].doc_第4页
第4页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《简易智能小车_源程序[行业文书].doc》由会员分享,可在线阅读,更多相关《简易智能小车_源程序[行业文书].doc(13页珍藏版)》请在三一文库上搜索。

1、简易智能小车2003年全国大学生电子设计竞赛, c51源程序 系统的单片机程序#include reg52.h#define det_Dist 2.55 /单个脉冲对应的小车行走距离,其值为车轮周长/4#define RD 9 /小车对角轴长度#define PI 3.1415926#define ANG_90 90#define ANG_90_T 102#define ANG_180 189/*=全局变量定义区=*/sbit P10=P10; /控制继电器的开闭sbit P11=P11; /控制金属接近开关sbit P12=P12; /控制颜色传感器的开闭sbit P07=P07; /控制声

2、光信号的开启sbit P26=P26; /接收颜色传感器的信号,白为0,黑为1sbit P24=P24; /左 sbit P25=P25; /右 接收左右光传感器的信号,有光为0unsigned char mType=0; /设置运动的方式,0 向前 1 向左 2 向后 3 向右unsigned char Direction=0; /小车的即时朝向 0 朝上 1 朝左 2 朝下 3 朝右unsigned sX=50; unsigned char sY=0; /小车的相对右下角的坐标 CM(sX,sY)unsigned char StartTask=0; /获得铁片后开始执行返回卸货任务,Sta

3、rtTask置一unsigned char Inter_EX0=0; / 完成一个完整的任务期间只能有一次外部中断 / Inter_EX0记录外部中断0的中断状态 / 0 动作最近的前一次未中断过, / 1 动作最近的前一次中断过unsigned char cntIorn=0; /铁片数unsigned char bkAim=2; /回程目的地,0为A仓库,1为B仓库,2为停车场, /(在MAIN中接受铁片颜色判断传感器的信号来赋值)unsigned char Light_Flag=0;/进入光引导区的标志(1)unsigned int cntTime_5Min=0;/时间周期数,用于 T0

4、精确定时unsigned int cntTime_Plues=0; /霍尔开关产生的脉冲数/*=全局变量定义区=*/*-*/*-通用延迟程序-*/*-*/void delay(unsigned int time) / time*0.5ms延时unsigned int i,j;for(j=0;jtime;j+) for(i=0;i=4520) Display(5); P2=(P2&240)|15); EA=0; /停车程序 P07=1;delay(4000);PCON=0X00;while(1); /*外部中断0中断程序: */*发现铁片,发出声光信号并将铁片吸起,发光二极管和蜂鸣器*/*并联在

5、一起(设接在P07). 0为A仓库,1为B仓库,2为停车场*/void fndIorn(void) interrupt 0 unsigned char i;P10=1; P2=(P2&240)|15); /停车P07=1;delay(1000);/刹车制动 0.5msP07=0;Inter_EX0=1;cntIorn+;Display(cntIorn);for(i=0;i40;i+) P2=P2&249; delay(2); P2=(P2&240)|15); delay(2); P2=P2&249;delay(100);P2=(P2&240)|15); /停车IornColor(); /判断铁

6、片黑白,设置bkAimfor(i=0;i95;i+) P2=P2&249; delay(3); P2=(P2&240)|15); delay(2); P2=(P2&240)|15); /停车delay(4000); /把铁片吸起来 EX0=0;/*外部中断1中断程序: */*对霍尔开关的脉冲记数,对小车的位置进行记录,以便对小车进行定位*/void stpMove(void) interrupt 2 cntTime_Plues-; if(Direction=0) /向上 if(mType=0) sY+=det_Dist; else if(mType=2) sY-=det_Dist; else if(Direction=1) /向左 if(mType=0) sX+=det_Dist; else if(mType=2) sX-=det_Dist; else if(Direction=2) /向下 if(mType=0) sY-=det_Dist; else if(mType=2) sY+=det_Dist; else if(Direction=3) /向右 if(mType=0) sX-=det_Dist; else if(mType=2) sX+=det_Dist; 13专业相关+

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1