关于遥控器的程序问题。
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吧
看不明白了、、、、、、、、、、
小编威武,强烈支持……
支持什么?支持上面这个调不通的程序?