智能小车搭建(3)–红外传感器

今天一早早早起来就开始把玩了。

先分别了解了STC12C5A60S2和其他几个芯片。

我之前玩的是传统的80C51芯片,于是,一上来在没看芯片资料前,就写了个很简单的程序:控制发光二极管的闪烁。

但,结果不是我预想的结果。

我预想是每个1s闪烁一次,但实际是1s闪烁了好几次,

在向卖家请教和查看芯片手册后,发现这款芯片比传统的芯片速度更快,

于是修改程序,终于是按照我的意愿进行控制。

学单片机也没有好长时间,但是现在的一个体会时,基本的电路图能看懂,并且能根据电路图进行编写代码

每个红外传感器搭配了一个指示灯和一个灵敏电阻:
逆时针旋转灵敏电阻 —> 灯亮     —-   无障碍
顺时针旋转灵敏电阻 —> 灯灭     —-   有障碍

今天熟悉了一个重要的芯片是RPR220红外线传感器和IM324D放大器。

这两个芯片的花了蛮多时间,请假了物联班的同学,才搞清楚了些,

电路图我就不贴了,把代码贴上了,以做备记:

#include "STC12C5A60S2.h"
#include <intrins.h>

/**
	红外传感器
**/
sbit p20 = P2^0; // 正极发射 0
sbit p23 = P2^3;// 	正极接收
sbit p24 = P2^4;
sbit p21 = P2^1;

sbit led0 = P0 ^ 0;
sbit led1 = P0 ^ 1;

void delay10ms(void)   //误差 -0.000000000001us
{
    unsigned char a,b,c;
    for(c=199;c>0;c--)
        for(b=120;b>0;b--)
            for(a=1;a>0;a--);
}
void delay500ms(void)   //误差 -0.000000000028us
{
    unsigned char a,b,c;
    for(c=71;c>0;c--)
        for(b=168;b>0;b--)
            for(a=250;a>0;a--);
}

/**
  	有障碍物 管脚为1  指示灯灭		RPR220D红外传感器输出1
	无障碍物 管脚为0  指示灯亮		RPR220D红外传感器输出0
*/

void main()
{

	while(1)
	{
		if(p23 == 0) {
			led0 = ~led0;
			led1 = 1;
			delay500ms();
		}
		else {
			led1 = 0;
		}
	}	
}

发表评论