单片机 红外接收实验 接收脉冲问题
最近买了一个板子,做到红外接收实验部分了,但遇见了一个问题:用红外遥控器点亮LED灯的时候,无论是否按下遥控器,灯都会亮,只是亮的不明显,而且是属于那种一闪一闪的微亮状态...
最近买了一个板子,做到红外接收实验部分了,但遇见了一个问题:用红外遥控器点亮LED灯的时候,无论是否按下遥控器,灯都会亮,只是亮的不明显,而且是属于那种一闪一闪的微亮状态,而按下键之后亮的比较厉害罢了,请问这是为什么呀?
然后我在跳过这个阶段,做一个用遥控器控制电子钟的实验的时候,也出现了类似的问题,本来我设定的是按一个键就加一分或者一秒,或者启动/关闭中断,但是现在我只要按一个键,板子就不停的对我按的那个键连续解码,比如,加一分钟,它就不停的加,或者关闭/开启中断,也是不停的关闭和开启,这是为什么呀?
这里附上我的点LED灯的代码,请各位指导。
sbit LED=P1^0;// 用sbit 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号
sbit IR_IN=P3^2;
void main (void)
{
while (1) //主循环
{
LED=IR_IN;//主循环中添加其他需要一直工作的程序
}
} 展开
然后我在跳过这个阶段,做一个用遥控器控制电子钟的实验的时候,也出现了类似的问题,本来我设定的是按一个键就加一分或者一秒,或者启动/关闭中断,但是现在我只要按一个键,板子就不停的对我按的那个键连续解码,比如,加一分钟,它就不停的加,或者关闭/开启中断,也是不停的关闭和开启,这是为什么呀?
这里附上我的点LED灯的代码,请各位指导。
sbit LED=P1^0;// 用sbit 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号
sbit IR_IN=P3^2;
void main (void)
{
while (1) //主循环
{
LED=IR_IN;//主循环中添加其他需要一直工作的程序
}
} 展开
2个回答
展开全部
不知你用什么单片机,发光二极管是怎样接的,若发光二极管正极接IO口,
在黙认状态下是输入,这时空载实际上是高电平 但属于弱上拉,所以驱动能力很小,真正带负载工作时,要配置为推挽输出,发光管就很亮了,或把发光管正极接电源,负极接IO口,低电平驱动就好了
甚至按键按下后数字连续变化,在程序里加按键抬起检测和延时就可以了,若你确实想按下按键不松手而数字连续变化可不要按键抬起检测,但延时要长一些,否则变化太快,你控制不了
if (s2==0)
{
Delay1ms(60);
if (s2==0)
{
while(s2==0); //等待按键抬起
a++;
}
}
在黙认状态下是输入,这时空载实际上是高电平 但属于弱上拉,所以驱动能力很小,真正带负载工作时,要配置为推挽输出,发光管就很亮了,或把发光管正极接电源,负极接IO口,低电平驱动就好了
甚至按键按下后数字连续变化,在程序里加按键抬起检测和延时就可以了,若你确实想按下按键不松手而数字连续变化可不要按键抬起检测,但延时要长一些,否则变化太快,你控制不了
if (s2==0)
{
Delay1ms(60);
if (s2==0)
{
while(s2==0); //等待按键抬起
a++;
}
}
追问
不是,我是想用红外遥控器上的按键来控制,如果只是矩阵键盘,我的已经实现了,而且不会出现闪烁现象
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
遥控接收头接收的红外光不止红外遥控器可以发出红外光,其它电器也会发出红外光,例如日光灯等。
只要波长接近红外接收头的感应范围,红外接收头都会输出,所以接的LED 就会微弱的亮。
遥控器发出的红外光和接收头接收的光的波长相同或异常接近,所以,按遥控器,那个LED会更亮。
只要波长接近红外接收头的感应范围,红外接收头都会输出,所以接的LED 就会微弱的亮。
遥控器发出的红外光和接收头接收的光的波长相同或异常接近,所以,按遥控器,那个LED会更亮。
更多追问追答
追问
那电脑屏幕的光是不是也会发出这种红外光呀,我这里除了日光灯,主要还有我的电脑屏幕和还有外面的阳光。
那我应该如何解除干扰呢,我的红外接收头是PIC3388型号,我看有说加红外滤光片的,这个不是一个镜片吗,不能套住这个接收头,如何阻隔呢,或者还有别的解决办法吗
追答
选那种金属壳封装的 接收头,会好一点
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询