云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 智能小车循迹、避障、红外遥控C语言代码

智能小车循迹、避障、红外遥控C语言代码

  • 62 次阅读
  • 3 次下载
  • 2025/6/3 2:21:03

.

} }

void IR_IN(void) interrupt 2 {

unsigned char j,k,N=0; EX1 = 0; IRdelay(5); if (TRIG==1) { EX1 =1; return; }

//确认IR信号出现

while (!TRIG) //等IR变为高电平,跳过9ms的前导低电平信号。 {IRdelay(1);}

for (j=0;j<4;j++) //收集四组数据 {

for (k=0;k<8;k++) //每组数据有8位 {

while (TRIG) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 {IRdelay(1);}

while (!TRIG) //等 IR 变为高电平 {IRdelay(1);}

while (TRIG) //计算IR高电平时长 {

IRdelay(1);

N++; if(N>=30) {EX1=1; return;} //0.14ms计数过长自动离开。

} //高电平计数完毕 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0” if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1” N=0; }//end for k

}//end for j

if(IRCOM[2]!=~IRCOM[3]) //判断数据码与数据反码是否正确 真确返回 { EX1=1; return; }

EX1 = 1;

'.

.

}

void time1_suspend1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断0 4 串口中断 {

TH1=0Xec; //装入初值定时一次为0.0005s 2000hz TL1=0x78; time_2++; //控制PWM 脉冲计数 if(state_total!=3) //判断进入按键是否按下 进入状态1 避障 或者 { state_2=1; //退出按键判断 }

/* if(time_2>100) { time_2=0; } else if(time_2<=SPEED) { PWM_g; //频率为2000hz的占空比为高电平的方波 } else { PWM_l; //为低电平 } */ }

void IRdelay(unsigned char x) //x*0.14MS用于红外遥控 {

unsigned char i; while(x--) {

for (i = 0; i<13; i++) {} } }

void Delay10ms(void) //用于按键检测误差 {

unsigned char a,b,c; for(c=1;c>0;c--)

for(b=38;b>0;b--)

for(a=130;a>0;a--); }

void delay(uint dat) //延时函数用于初始化 {

uint i;

for(i=dat;i>0;i--)

'.

0 循迹 .

{ _nop_(); } }

void delay_100ms(uint ms) //延时函数用于超声波 {

uint i,j;

for(i=ms;i>0;i--) for(j=200;j>0;j--) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } }

//小车前进 void run(void) {

PWM=0X56; }

//小车后退

void back(void) {

PWM=0XA9; TR1=1; time_2=0;

while(time_2<=100); //延时0.2s TR1=0; }

//小车停止

void stop(void) {

PWM=0X00; }

//小车左转180 void left_180() {

//PWM=0X59; //左两轮反转,右两轮正转 PWM=0X50; //右两轮正转 TR1=1; time_2=0;

while(time_2<=150); //延时0.2s

'.

.

time_2=0;

while(time_2<=150); //延时0.2s }

//小车左转 90 void left_90(void) {

PWM=0X59; //左两轮反转,右两轮正转 //PWM=0X50; //右两轮正转 TR0=1; time_1=0;

while(time_1<=20); //延时0.2s TR0=0; }

//小车左转 120 void left_120(void) {

PWM=0X59; //左两轮反转,右两轮正转 // PWM=0X50; //右两轮正转 TR0=1; time_1=0;

while(time_1<=60); //延时0.4s TR0=0; }

//小车右转 90

void right_90(void) {

PWM=0XA6; //左两轮正转 右两轮反转 //PWM=0X06; //左两轮正转 TR0=1; time_1=0;

while(time_1<=20); //延时0.2s TR0=0; }

//小车右转 120

void right_120(void) {

PWM=0XA6; //左两轮正转 右两轮反转 // PWM=0X06; //左两轮正转 TR0=1; time_1=0;

while(time_1<=60); //延时0.4s TR0=0;

'.

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

. } } void IR_IN(void) interrupt 2 { unsigned char j,k,N=0; EX1 = 0; IRdelay(5); if (TRIG==1) { EX1 =1; return; } //确认IR信号出现 while (!TRIG) //等IR变为高电平,跳过9ms的前导低电平信号。 {IRdelay(1);} for (j=0;j<4;j++) //收集四组数据 { for (k=0;k<8;k++) //每组数据有8位 { <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com