超声波壁障C语言程序.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
超声波壁障C语言程序

//将此程序下载到U2,按下U2P32启动,按下U2P33停止 //将另外超声波测距程序下载到U1,并且把两机通讯的拨码开关的第1为打到ON的状态 //程序注释请参考机器人巡黑线程序的注释。 #include at89x51.h #define uchar unsigned char #define uint unsigned int void motor_r_z(void);//右边电动机正转 void motor_l_z(void);//左边电动机正转 void motor_r_f(void);//右边电动机反转 void motor_l_f(void);//左边电动机反转 void back(void); //小车后退 void go(uchar,uchar);//小车前进 void stop(void);//小车停止 void left(void);//小车左转 void right(void);//小车右转 sbit PWM1=P2^5; sbit PWM2=P2^4; sbit PWM3=P2^1; sbit PWM4=P2^2; sbit EN1=P2^0; sbit EN2=P2^3; sbit left_k=P0^7; sbit right_k=P0^6; sbit chaoshengbo=P0^2; sbit start_k=P3^2; sbit stop_k=P3^3; sbit sound=P2^7; uchar data t_0; uchar data motor_r; uchar data motor_l; uchar data Value; uchar data mid; //**延时子程序**/// void delay_1ms(uint n) { uint i,j; for(j=n;j0;j--) for(i=20;i0;i--); } void ini(void) { ////T0初始化/// TMOD=0x01; //T0工作在方式1 TH0=0xff; //装入T0初值 TL0=0xf6; TR0=1;//开T0中断 ET0=1;//T0允许中断 EA=1; ////////////////////// t_0=0; ///////////////////// P2=0; sound=1; } void Sound(void) { ///蜂鸣器响/// sound=0; delay_1ms(30); sound=1; } void start(void) { uchar a; aa: while(start_k); for(a=0;a50;a++) { delay_1ms(1); while(start_k) goto aa; } Sound(); go(0x30,0x30); } void go(uchar left_motor,uchar right_motor)//直行 { Value=right_motor; motor_r_z(); Value=left_motor; motor_l_z(); } void motor_r_z(void)//右边电动机正转 { ACC=0x64+Value; motor_r=ACC; EN1=1; } void motor_l_z(void)//左边电动机正转 { ACC=0x64-Value; motor_l=ACC; EN2=1; } void stop(void) { EN2=0; EN1=0; } void time0(void) interrupt 1 using 2 { TR0=0; TH0=0xff; TL0=0xf6; ++t_0; ACC=t_0; CY=0; ACC-=motor_r; if(CY==1) { PWM1=1; PWM2=0; goto PWM_2; } PWM1=0; PWM2=1; PWM_2: ACC=t_0; CY=0; ACC-=motor_l; if(CY==1) { PWM3=1; PWM4=0; goto HIGHT; } PWM3=0; PWM4=1; HIGHT: ACC=t_0; if(ACC!=0xc9) goto EXIT; ACC=0; t_0=ACC; EXIT: TR0=1; } void main(void) { uchar a; ini(); start(); ////判断左传感器状态//// while(1) { aa: while(left_k) goto bb; P1_0=0; Sound(); while(!left

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档