微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于遥控器的程序问题。

关于遥控器的程序问题。

时间:10-02 整理:3721RD 点击:
比如说我现在已经知道遥控器的按键码值,红灯为09    绿灯为08程序如下;#include<reg52.h>
sbit IR=P3^3;
sbit R=P0^4;    //红灯
sbit G=P0^5;   //绿灯
sbit BB=P0^6;  //蓝灯
unsigned int RGB;  如果这个地方我把RBG=0X09的话 这个红灯就可以正常工作求大神指点。或者有遥控器方面的                                                                                                                            程序可以借我参考下、
void led()
{
        if(RGB==0X09)
        {
                R=~R;
                G=1;
                BB=1;
        }
}
主函数我就没写了。我是把led()函数放在主函数大循环下面。但是  我这样写他灯不亮。这个程序是和解码一起的。解码部分现在是没问题 我也没写出来。

不明白你的意思,按你后面的程序,应该是持续按红灯键或绿灯键单一个键的时候,对应的灯会交替点亮和熄灭。但是按下红灯键点亮红灯后,再按绿灯键,就会绿灯亮,红灯一定是会灭的。同样按下绿灯键点亮绿灯后,再按红灯键,就会红灯亮,绿灯灭,是要这个效果吗。
建议这个函数在对所有的灯操作结束后,把RGB的值清零。

没有电路说明LED如何接线,变量定义不清,unsigned int RGB;不知道做什么用,缺少主程序结构,不确定是否主程序结构导致的问题。

终于等到你。红绿蓝灯正极接的电源 负极接到IO口,unsigned RGB 我用这个来定义接收遥控器的码值 不知道 这样是否正确。主要是我不知道怎么去判断遥控器的按键值。

图片是红外编码的数据格式,红外编码是4个字节数据,这里取第3个字节的数据码作为按键值就可以了,在驱动灯的控制方式要看你的意图了,在你的程序里 R=~R;,这种方式产生的效果,是按下同一个键,该灯会交替点亮和关闭。所以灯的控制方式要看你打算如何操作。


嗯。我现在确实是让他交替亮。但是我现在也能控制一个灯。如果 我在按照同样的方法写另外一个按键的  程序就会出错。
void led()
{
  if(RGB==0x09)
    {
       R=~R;
       G=1;
       BB=1;
     }
    if(RGB==0X08)  //绿灯的按键值为08
     {
       G=~G;
       R=1;
       BB=1;
     }
}
   我就是这样写的。他上电就是亮了绿灯 红灯那个按键就没反应了。

对对对。就是要这个效果。但是编译后下载到板子上就是不行。

建议这个函数在对所有的灯操作结束后,把RGB的值清零。
暂时看这段程序似乎没什么错误

你说会不会是上面unsigned int RGB 这个地方定义错了?用这个变量来判断遥控器是按了哪个按键?这个地方需要对RGB赋按键值吗?

RGB的值应该是接收到红外遥控之后,得到的红外编码,再把其中的数据码部分赋值给RGB才对,不然如何用遥控器来控制。

奇了怪。反正就是不行。我上面如果 赋按键值的话就可以让它取反。不赋按键值就没反应。

这得看你的整个程序,RGB应该是全局变量,在主函数里,接收到红外按键后,把键值给RGB,然后再调用led控制,有可能是其他部分出错。

整个程序就是你昨天叫我改的那个呀。就是改return (TH0*256+TH0);--
改成return (TH0*256+TL0);

狼哥。你QQ多少 ?我想一直骚扰你。

那要对RGB进行赋值才行,红外接收下来的是4字节数组,要把值赋给RGB才行,另外,把RGB改成unsigned char吧

看不明白了、、、、、、、、、、

小编威武,强烈支持……

支持什么?支持上面这个调不通的程序?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top