移动机器人设计与制作设计(一)——智能循迹小车内容摘要:

/舵机控制函数 { left=b。 right=d。 c=a。 TH0=(a/256)。 TL0=(a%256)。 ET0=1。 //定时器 T0 中断允许 TR0=1。 //定时器 T0 启 PT0=0。 //定时器 T0 低优级 智能循迹小车 7 } void go_forward(void) //前进函数 { servo(1,1)。 Delay()。 ET0=0。 TR0=0。 } void go_left(void) //左转函数 { servo(0,1)。 Delay()。 ET0=0。 TR0=0。 } void go_right(void) //右转函数 { servo(1,0)。 Delay()。 ET0=0。 TR0=0。 } void stop(void) //停止函数 { servo(0,0)。 Delay()。 ET0=0。 TR0=0。 } void turn_head(uint l,uint r) //转向函数,参数为( 1, 0),左转;为( 0, 1),右转 { uint aa=360。 while(aa) { 智能循迹小车 8 servo(r,l)。 Delay()。 ET0=0。 TR0=0。 display(ge,shi,bai)。 if (middle_s==0) { break。 } } } void main(void) //主函数 { uint i=0。 p1_1=0。 //工作状态显示 IN1=1。 IN2=1。 IN3=1。 EA=1。 ET1=1。 TR1=1。 PT1=1。 TMOD=0x11。 //定时器工作方式为 1 //IE = 0x81。 //允许总中断中断 ,使能 INT0 外部中断 //TCON = 0x01。 //触发方式为脉冲负边沿触发 while(1) { display(ge,shi,bai)。 //调用显示函数,各判断中也或有调用以保持显示的连续性 if (eye==0) //检测到障碍物,转向 turn_head(1,0)。 else if (left_s==0amp。 amp。 middle_s==0amp。 amp。 right_s==0) //遇到障碍物回来后检测到节点,转向 { i=6。 while (i) { go_forward()。 智能循迹小车 9 } turn_head(0,1)。 } /* else if (LEFT_S1==1amp。 amp。 RIGHT_S1==0) //前进途中遇到转向节点,转向 { turn_head(0,1)。 } */ else if ((middle_s==0)||(IN1==1amp。 amp。 IN2==0amp。 amp。 IN3==1)) //前进 go_forward()。 else if ((left_s==0amp。 amp。 right_s==1)||(IN1==0amp。 amp。 IN2==1amp。 amp。 IN3==1)) //左转 go_left()。 else if ((left_s==1amp。 amp。 right_s==0)||(IN1==1amp。 amp。 IN2==1amp。 amp。 IN3==0)) //右转 go_right()。 else if((left_s==1amp。 amp。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。