红外避障传感器原理图策划Word格式.docx

上传人:b****5 文档编号:16519555 上传时间:2022-11-24 格式:DOCX 页数:9 大小:45.42KB
下载 相关 举报
红外避障传感器原理图策划Word格式.docx_第1页
第1页 / 共9页
红外避障传感器原理图策划Word格式.docx_第2页
第2页 / 共9页
红外避障传感器原理图策划Word格式.docx_第3页
第3页 / 共9页
红外避障传感器原理图策划Word格式.docx_第4页
第4页 / 共9页
红外避障传感器原理图策划Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

红外避障传感器原理图策划Word格式.docx

《红外避障传感器原理图策划Word格式.docx》由会员分享,可在线阅读,更多相关《红外避障传感器原理图策划Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

红外避障传感器原理图策划Word格式.docx

455是晶振,它产生38k的方波,HEF4024BT是7位二进制计数器,38k的方波作为计数器HEF4024BT的时钟输入。

HEF4024BT的O2与O3接与非门加一个非门去控制HEF4024BT的复位端。

也就是说当HEF4024BT计数到第四位与第三位同时为1时,HEF4024BT就会被清零。

同时当HEF4024BT的O3为1时,HEF4011BT的O4为低电平,触发红外发光二极管发送信号。

当HEF4024BT的O3为0时,HEF4011BT的O4为高电平,关闭发光二极管,这段时间为4个方波周期。

也就实现了38k载波调制的红外。

接收头是红外线一体化接收头是集红外接收、放大、滤波和比较器输出的模块。

当收到信号时,OUT端输出低电平,LEDR被点亮,指示收到信号,前方有障碍物。

没有收到信号,OUT端输出反之。

五、实验源程序:

#defineucharunsignedchar

#defineuintunsignedint

#defineMOTOR_CP0//P0口作为电机的控制口。

#defineSIGNALP1//P2口的低两位为循迹传感器输入口。

#defineSHELVES25//速度总档数。

#defineBACK0xA5//后退

#defineFORWARD0xC6//前进

sbitPWM_R=P0^7;

//右电机PWM输入口

sbitPWM_L=P0^2;

//左电机PWM输入口

voidtimer_init(void);

//定时器初始化函数。

voidleft(void);

//右转弯函数。

voidleft(void);

//左转弯函数。

voidforward(void);

//前进函数。

ucharpercent_l=0;

//左轮占空比ucharpercent_r=0;

//右轮占空比uintrun_time=0;

//车轮运行一步的时间

/*************************************************************

*******

说明:

入口参数:

返回值:

设计:

tongwei日期:

2009.09.15

修改:

日期:

**************************************************************

*********/

{

TMOD=0x02;

//定时器0工作在方式2,定时值自动重载,启动仅

受TR0的控制。

TH0=256-200;

//定时周期为200us*SHELVES

EA=1;

//开总中断。

ET0=1;

//开定时器0中断。

TR0=1;

//启动定时器0。

}

通过控制左右轮不同的占空比,实现左右转。

//timer_init();

//初始化定时器0。

MOTOR_C=FORWARD;

//方向向前

percent_r=0;

//右轮速度慢。

percent_l=4;

//左轮速度快。

percent_r=4;

//右轮速度快。

percent_l=2;

//左轮速度慢。

percent_r=3;

//右轮同速度。

percent_l=3;

//左轮同速度。

{

MOTOR_C=BACK;

功能:

停车

**************************************************************

voidstop(void)

//右轮零速度。

percent_l=0;

//左轮零速度。

}

函数名:

ucharcheck_sig()

检测信号,并返回信号代码。

ucharcheck_sig(void)

uchartemp=0;

temp=SIGNAL&

0x01;

//信号输入口就只有低两位,得到信号码。

returntemp;

avoid()

实现避障功能。

对采集的信号进行分析,转换为对电机的控制。

voidavoid(void)

ucharsig=0;

//存储采集的信号

timer_init();

//初始化定时器0

while

(1)

run_time=0;

//清计时器,重新开始。

sig=check_sig();

//存储信号码

switch(sig)

case1:

//没有检测到障碍物。

forward();

break;

case0:

//检测到障碍物,首先小车倒退一段距离,让后左转弯,最后继续前进。

back();

while(run_time<

350);

//决定后退的时间。

left();

180);

//决定左转弯角度。

default:

3);

//运行一步,时间为3*5ms

timer_zero()

定时器0中断服务函数

voidtimer_zero(void)interrupt1{

staticuchartemp=0;

//中断次数计数,

EA=0;

//关总中断,屏蔽其他中断。

if(temp<

SHELVES)//高电平保持时间。

percent_l)

PWM_L=1;

//左电机高电平

else

PWM_L=0;

//左电机低电平

percent_r)

PWM_R=1;

//右电机高电平

PWM_R=0;

//右电机低电平

temp++;

//实现计数

else//一个PWM周期结束,计数清零。

temp=0;

run_time++;

main()

voidmain(void)

avoid();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1