关于遥控器的程序问题。

2019-07-15 09:35发布

比如说我现在已经知道遥控器的按键码值,红灯为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()函数放在主函数大循环下面。但是  我这样写他灯不亮。这个程序是和解码一起的。解码部分现在是没问题 我也没写出来。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
修罗君
1楼-- · 2019-07-16 02:24
 精彩回答 2  元偷偷看……
人中狼
2楼-- · 2019-07-16 06:14
图片是红外编码的数据格式,红外编码是4个字节数据,这里取第3个字节的数据码作为按键值就可以了,在驱动灯的控制方式要看你的意图了,在你的程序里 R=~R;,这种方式产生的效果,是按下同一个键,该灯会交替点亮和关闭。所以灯的控制方式要看你打算如何操作。
红外数据格式.jpg
修罗君
3楼-- · 2019-07-16 08:42
人中狼 发表于 2017-9-26 12:11
图片是红外编码的数据格式,红外编码是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;
     }
}
   我就是这样写的。他上电就是亮了绿灯 红灯那个按键就没反应了。
修罗君
4楼-- · 2019-07-16 11:02
人中狼 发表于 2017-9-26 14:34
不明白你的意思,按你后面的程序,应该是持续按红灯键或绿灯键单一个键的时候,对应的灯会交替点亮和熄灭。但是按下红灯键点亮红灯后,再按绿灯键,就会绿灯亮,红灯一定是会灭的。同样按下绿灯键点亮绿灯后,再按红灯键,就会红灯亮,绿灯灭,是要这个效果吗。
建议这个函数在对所有的灯操作结束后,把RGB的值清零。 ...

对对对。就是要这个效果。。。但是编译后下载到板子上就是不行。。。。
人中狼
5楼-- · 2019-07-16 12:01
建议这个函数在对所有的灯操作结束后,把RGB的值清零。
暂时看这段程序似乎没什么错误
修罗君
6楼-- · 2019-07-16 17:06
 精彩回答 2  元偷偷看……

一周热门 更多>