循迹避障小车程序

上传人:第*** 文档编号:38885320 上传时间:2018-05-09 格式:DOCX 页数:5 大小:15.53KB
返回 下载 相关 举报
循迹避障小车程序_第1页
第1页 / 共5页
循迹避障小车程序_第2页
第2页 / 共5页
循迹避障小车程序_第3页
第3页 / 共5页
循迹避障小车程序_第4页
第4页 / 共5页
循迹避障小车程序_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《循迹避障小车程序》由会员分享,可在线阅读,更多相关《循迹避障小车程序(5页珍藏版)》请在金锄头文库上搜索。

1、/*循迹避障小车程序*/ /*dragon*/ #include#define uchar unsigned char #define uint unsigned intuchar count0 = 0;/低电平的占空比 uchar count1 = 0;/高电平的占空比uchar count = 0; /0.1ms 次数标识 uchar jd,time; /角度标识 uchar yz = 0; /遇障标志uint distance,t;sbit Trig=P30; /控制端 超声波 sbit Echo=P32; /接收端sbit pwm = P11; /舵机控制信号sbit rclf = P

2、36; /循迹红外 sbit rcrt = P37; sbit jz = P35;sbit PWM1=P14;/PWM 通道 1,反转脉冲 sbit PWM2=P13;/PWM 通道 2,正转脉冲 sbit PWM3=P16;/PWM 通道 3,反转脉冲 sbit PWM4=P15;/PWM 通道 4,正转脉冲/*延时 1ms*/ void delay(uint x) uchar i,j; for(i=0;i= 100)count1 = 0;/*红外探测部分*/void ir_ch(void) if(jz = 1)jd = 14;count0 = 80 ;if(rclf = 1 jd = 13

3、;if(rcrt = 1 jd = 15; if(rcrt = 1 jd = 15; if(rclf = 1 jd= 13; /* 超声波*/*延时 1us*/ void delay_us(uchar m ) while(m-); void ceju(void) Trig=1; /发射置高 delay_us(15); /延时 10us Trig=0; /发射置低 /while(Echo=0); /等待接收端准备接收 TR0=1; /启动定时器 0 /while(Echo=1); /等待接收端接收 delay(3); / 等待处理数据 void panduan(void) uint n;if(d

4、istance245)yz = 1;for(n=0;n7000;n+) jd = 13;Motor_run(); elseif(yz = 1)jd = 15;yz = 0;else ir_ch(); /*定时器 1 舵机*/void timer0init(void) / 1 初始化TMOD = 0X19; /定时器 1 工作 1 定时器 1 工作 1TH1 = 0Xff; /高第八位清零 TL1 = 0Xa0; TH0=0; TL0=0; EA = 1; /打开全局中断允许位(中断允许寄存器 IE) TR1 = 1; /寄存器 TCON,置一启动定时器 0 ET1 = 1; /允许定时器 1

5、中断 ET0 = 1; /允许定时器 1 中断IT0=1;/下降沿触发 EX0=1;/外部中断 0 允许中断 /*主函数*/ void main(void) timer0init(); /定时器 1 初始化Trig=0; jd = 14; count = 0;delay(10);while(1) ceju(); panduan(); Motor_run(); /*外部中断超声波*/void int0() interrupt 0 TR0=0; /关定时器t=TH0*256+TL0;distance=t*0.173;/取 346m/s TH0=0; TL0=0; void Time_Int() interrupt 3 TH1 = 0xff;TL1 = 0xa0;if(count jd) pwm = 1; elsepwm = 0;count += 1;count = count%200;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号