找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新人求助 51单片机红外控制小灯亮灭,怎么改这个程序

[复制链接]
楼主
ID:164602 发表于 2018-10-23 08:44 | 显示全部楼层
你的程序不对啊,按遥控器后,根本不能接收到有效的键码。
我有一个程序,可以做到红外遥控,你只要遥控灯,我就只放了这个功能。
/*
红外遥控示例程序
*/
#include<reg51.h>
#include<intrins.h>

#define LED P2//LED灯

sbit HWX=P3^2;//红外接收管在I/O口

unsigned char HWXSJ[4];
bit JSCG=1;

void Config();

void delay(void)//延时35.5us
{               
        unsigned char i=10;
        while(i--);
}

void Delay10ms(unsigned char c)
{
    unsigned char a,b;
    for(;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void main()
{
        Config();       
        LED=0xff;//初始化关灯
        while(1)
        {
                if (JSCG==1)
                {
                        JSCG=0;
                        if (HWXSJ[2]==0x45)//遥控器上电源开关键
                        {
                                LED=~LED;
                        }
                }       
        }
}                                                                         

void Config()
{
        IT0=1;
        EX0=1;
        EA=1;
        TMOD=0X10;
        HWX=1;
}

void ReadIr() interrupt 0
{
        unsigned char i,ia;
        TL1=0;
        TH1=0;
        TR1=1;
        while(!HWX)
        {
                if (TH1>40)
                {
                        TR1=0;
                        TL1=0;
                        TH1=0;
                        return;
                }
        }
        TR1=0;
        if(TH1<25)
        {
                return;
        }
        TH1=0;
        TL1=0;
        TR1=1;
        while(HWX)
        {
                delay();
                if(TH1>25)
                {
                        TR1=0;
                        TL1=0;
                        TH1=0;
                        return;
                }               
        }
        TR1=0;
        if(TH1<15)
        {
                return;
        }
        for(i=0;i<4;i++)
        {
                for(ia=0;ia<8;ia++)
                {                               
                        TL1=0;
                        TH1=0;
                        TR1=1;
                        while(!HWX)
                        {
                                if(TH1>5)
                                {
                                        TR1=0;
                                        TL1=0;
                                        TH1=0;
                                        return;
                                }
                        }
                        TR1=0;
                        TH1=0;
                        TL1=0;
                        TR1=1;
                        while(HWX)
                        {
                                delay();
                                if(TH1>10)
                                {
                                        TR1=0;
                                        TL1=0;
                                        TH1=0;
                                        return;
                                }               
                        }
                        TR1=0;
                        HWXSJ[i]>>=1;
                        if(TH1>4)
                        {
                                HWXSJ[i]|=0x80;
                        }
                }
        }
        if ((HWXSJ[0]==~HWXSJ[1])&&(HWXSJ[2]==~HWXSJ[3]))
        {
                JSCG=1;
        }
        else
        {
                JSCG=0;
        }
}


评分

参与人数 2黑币 +108 收起 理由
admin + 100 回帖助人的奖励!
xiou + 8 很给力!

查看全部评分

回复

使用道具 举报

沙发
ID:164602 发表于 2018-10-23 08:46 | 显示全部楼层
补充电路图:

1.jpg (11.74 KB, 下载次数: 44)

1.jpg

1.jpg (21.5 KB, 下载次数: 60)

1.jpg

评分

参与人数 1黑币 +8 收起 理由
xiou + 8 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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