超声波智能小车_第1页
超声波智能小车_第2页
超声波智能小车_第3页
超声波智能小车_第4页
超声波智能小车_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit Signal=P17;sbit RX=P24;sbit TX=P25;sbit lcden=P31;sbit lcdrs=P30;unsigned int time=0;/用于存放定时器时间值unsigned int S=0;/用于存放距离的值bit flag =0; unsigned char disbuff="0000"unsigned char code t

2、able1="! Out of range"void motor_r_z(void);/右边电动机正转void motor_l_z(void);/左边电动机正转void motor_r_f(void);/右边电动机反转void motor_l_f(void);/左边电动机反转void back(uchar,uchar); /小车后退void go(uchar,uchar);/小车前进void stop(void);/小车停止void left(void);/小车左转void right(void);/小车右转sbit PWM1=P15;sbit PWM2=P14;sbit

3、PWM3=P11;sbit PWM4=P12;sbit EN1=P10;sbit EN2=P13;sbit start_k=P32;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;j>0;j-)for(i=20;i>0;i-);void ini(void)/T0初始化/TMOD=0x01; /T0工作在方式1TH1=0xff; /装入T0初值TL1=0xf6;TR1=

4、1;/开T0中断ET1=1;/T0允许中断EA=1;/t_0=0;/P2=0;void start(void) uchar a; aa: while(start_k); for(a=0;a<50;a+) delay_1ms(1); while(start_k) goto aa; go(0x30,0x30);void go(uchar left_motor,uchar right_motor)/直行Value=right_motor;motor_r_z();Value=left_motor;motor_l_z();void back(uchar left_motor,uchar right

5、_motor)/后退Value=right_motor;motor_r_f();Value=left_motor;motor_l_f();void motor_r_z(void)/右边电动机正转 motor_r=0x64+Value; EN1=1;void motor_l_z(void)/左边电动机正转 motor_l=0x64-Value; EN2=1;void motor_r_f(void)/右边电动机反转 motor_r=0x64-Value; EN1=1;void motor_l_f(void)/左边电动机反转 motor_l=0x64+Value; EN2=1;void stop(v

6、oid)EN2=0;EN1=0;void time0(void) interrupt 3 TR1=0;TH1=0xff;TL1=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:TR1=1; void Delay4

7、00Ms(void)unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-);void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)lcdrs=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)lcdrs=1;P2=date;delay(5);lc

8、den=1;delay(5);lcden=0;void init()lcden=0; write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);void Timer_Count(void)uint i; TR0=1; /开启计数 while(RX);/当RX为1计数并等待 TR0=0;/关闭计数 time=TH0*256+TL0; TH0=0; TL0=0; S=time*1.7; S=S/10; if(S>=200)|flag=1) /超出测量范围 go(0x35,0x35);Signal=0; flag=0; /*

9、write_com(0x80+0x00);i = 0;while(table1i!='0') write_data(table1i); i+; */ else back(0x35,0x35); Signal=1; /* disbuff3=S%10+'0' disbuff2=S/10%10+'0' disbuff1=S/100%10+'0' disbuff0=S/1000%10+'0' write_com(0x80+0x45); i = 0; while(disbuffi!='0') write_da

10、ta(disbuffi); i+; */ /计算 void zd0() interrupt 1 /T0中断用来计数器溢出,超过测距范围 flag=1; /中断溢出标志RX=0; /*/ void StartModule() /启动模块 TX=1; /启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; voi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论