单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 569|回复: 4
打印 上一主题 下一主题
收起左侧

付费20元曲参考红外重复码程序

[复制链接]
跳转到指定楼层
楼主
xieqiang520 发表于 2018-10-16 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
付费20元曲参考红外重复码程序,写了好多天都没办法判断红外重复码怎么判断,怎么检测按键一直被按下
如:led指示灯 按下按键器灯亮  松开按键灯灭的程序参考, 付费20元 QQ:592179228  诚信。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

无效楼层,该帖已经被删除
板凳
 楼主| xieqiang520 发表于 2018-10-17 10:18 | 只看该作者
小猫猫爱吃鱼 发表于 2018-10-17 09:16
你好!关于红外的程序 20 元,有些少了;
如果愿意加价,可以加我 QQ 帮你完成。。。

你需要多少能完成
回复

使用道具 举报

地板
hange_v 发表于 2018-10-17 11:04 | 只看该作者
红外接收模块
  红外接收器,三个引脚VCC,GND,SDA.
  红外线:波长介于微波与可见光之间的电磁波,波长在760nm至1mm之间.
NEC协议:先发送9ms的AGC(自动增益控制)的高脉冲,再发送4.5ms的起始低电平,发送4个字节的地址码、地址反码、命令码、命令反码(从低位到高位);如果一直按着那个键就不停的以110ms为周期重复发送REPEAT信号(9ms高电平,2.5ms低电平,一直高);逻辑1的是由560us的高电平和1.69ms的低电平组成的脉冲表示,逻辑0的是由560us的高电平和565us的低电平组成的脉冲表示.接收到的信号正好与发送的相反;注意过滤REPEAT信号.
  编程方法:接收下降沿进入外部中断,I/O是否还为0,是,等9ms低,在等4.5ms高(若高只有2.25ms则是REPEAT信号);接收4组数据,先接首560ns低,之后接受高并判断;检测原码反码是否一致.显示16进制的.
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar signal[4];
uchar code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71,0x76};
sbit DA=P2^2; sbit DB=P2^3; sbit DC=P2^4; sbit CUT=P3^2;
void delayms(uchar x)
{
        uchar i;
        while(x--)
        {
                for(i=0;i<13;i++)
                { }
    }
}
void init()
{
        EA=1;
        EX0=1;
        CUT=1;
        IT0=1;
}
void rupt0() interrupt 0
{
        uchar i,j;
        uint count;
        delayms(7);       
        if(CUT==0)
        {
      count=0;
          while((CUT==0)&&(count<100))
                {
                        count++;delayms(1);
                }
                count=0;
                while((CUT==1)&&(count<50))
                {
                        count++;delayms(1);
                }
                if(count<16)
                {
                        EX0=1; return;
                }
                else
                {
                        for(i=0;i<4;i++)
                        {
                                for(j=0;j<8;j++)
                                {
                                        count=0;
                                        while((CUT==0)&&(count<6))
                                        {
                                                delayms(1);count++;
                                        }
                                        count=0;
                                        while((CUT==1)&&(count<50))
                                        {
                                                delayms(1);count++;
                                        }
                                        signal[i]>>=1;
                                        if(count>8)
                                        {
                                                signal[i]=(signal[i]|0x80);
                                        }
                                }       
                        }       
                        if(signal[2]=~signal[3])
                        {
                                EX0=1; return;
                        }
                        else
                        {
                                signal[2]=16; EX0=1; return;
            }
                }
        }
}
void disp(num)
{
        uchar a,i,j=50;
        for(i=0;i<3;i++)
        {
                switch(i)
                {
                        case 0:DA=0;DB=0;DC=0;a=num/16;    break;
                        case 1:DA=1;DB=0;DC=0;a=num&0x0f;  break;
                        case 2:DA=0;DB=1;DC=0;a=16;        break;
        }  
                P0=table[a];
                while(j--);
                P0=0x00;
    }
}
void main()
{
        init();
        while(1)
        {
                disp(signal[2]);
    }
}
回复

使用道具 举报

5#
taotie 发表于 2018-10-17 14:04 | 只看该作者
就是两个循环等待。第一个循环按下按键条件满足就退出循环,执行灯亮;第二个循环松开按键条件满足就退出循环,执行灯灭。
回复

使用道具 举报

6#
jiajuntao 发表于 2018-10-26 19:34 | 只看该作者
如有需求,加我qq:527368006  详谈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

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