请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
查看: 120|回复: 3

请教下,用遥控控制led亮灭程序应该怎么写?

[复制链接]

9

主题

18

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2020-7-28 14:30:04 | 显示全部楼层 |阅读模式
请教下,用遥控控制led亮灭程序应该怎么写?
回复

使用道具 举报

22

主题

257

帖子

1637

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1637
发表于 7 天前 | 显示全部楼层
很简单,首先确定好红外遥控程序能正常工作,然后只需要将单片机解码的编码值与你按下的红外按键的键值对比下即可。可以看下红外遥控实验教程,里面有数码管显示红外键值

点评

请看x.co/2299(网址) 看海外真实报道,肺炎的惊天内幕正在浮现...... git.io/gbbbb (网址)  发表于 6 天前
回复 支持 反对

使用道具 举报

9

主题

18

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 7 天前 | 显示全部楼层
我现在已经知道在哪里进行修改控制led了但是有遇到一个问题。我想通过0x45这一个按键来控制一个led的亮灭在主程序里怎么取反?还是通过其他办法来实现?
#include"reg52.h"
#include"intrins.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 Time;
u8 IrValue[6];

sbit IRIN=P3^2;
sbit LED=P2^0;
bit flag=0;

void delay(u16 i)
{
  while(i--);
}

void IrInit()
{
  IT0=1;
  EX0=1;
  EA=1;

  IRIN=1;                 //下降沿有效先把数据线拉高等待被拉低
}

void main()
{
  IrInit();
  while(1)
  {
     {
           flag=~flag;
         }

    if(flag==0)
         {
      if(IrValue[2]==0x45)
          {
            LED=0;
          }
          else
          {
            LED=1;
          }
         }
    }
}

void ReadIr() interrupt 0
{
  u8 k,j;
  u16 err;
  Time=0;
  delay(700);
  if(IRIN==0)                                          //正常情况下9ms就应该结束四点平,如果9ms没有结束在10ms强制退出
   {                                                          //两个作用一是等待9ms二是强制退出
    err=1000;
    while((IRIN==0)&&(err>0))
    {
      delay(1);
          err--;
    }                                                          //正常情况下4.5ms就应该结束四点平,如果4.5ms没有结束在10ms强制退出
   if(IRIN==1)                                          //两个作用一是等待5ms二是强制退出
   {
    err=500;
    while((IRIN==1)&&(err>0))
    {
      delay(1);
          err--;
    }
  for(k=0;k<4;k++)
  {
    for(j=0;j<8;j++)
        {
           err=60;
           while((IRIN==0)&&(err>0))
     {
       delay(1);
           err--;
     }
           err=500;
           while((IRIN==1)&&(err>0))
     {
       delay(10);
           Time++;
           err--;
           if(Time>30)
           {
             return;                          //通讯失败
           }
     }
          IrValue[k]>>=1;
          if(Time>=8)
          {
            
            IrValue[k]|=0x80;
          }
          Time=0;
          
        }
  }
}
     if(IrValue[2]!=~IrValue[3])
          {
            return;                                 //解码不对
          }
   }
}
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2020-8-5 04:37 , Processed in 0.093751 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表