找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机做格力空调遥控器求助

[复制链接]
跳转到指定楼层
楼主
ID:633855 发表于 2019-11-8 23:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前在做格力空调遥控器,但是不懂问题出在哪,刚开始写的代码,用一个简易示波器测出来的延时数据和空调遥控器差不多,但是好像没有用,后来加上了38Khz之后,用示波器再测就乱码了....代码如下,P34是我的红外发射,P13是我的按键,目前只写了开的功能,校验码也是按照示波器得到的数据写的,有一个一秒的延时,是示波器用到的,不然测不出来.....
#include <STC15F2K60S2.H>
#include <intrins.h>
bit logic=0;
       
void Delay9000us()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        i = 97;
        j = 207;
        do
        {
                while (--j);
        } while (--i);
}
   void Delay9us()                //@11.0592MHz
{
        unsigned char i;

        _nop_();
        _nop_();
        i = 22;
        while (--i);
}

void NO_Send(volatile unsigned int i) //载波不发射
{
        while(i--)
        {
                P34 = 0;
                Delay9us();
                Delay9us();
                Delay9us();
        }
}
void Send(volatile unsigned int i) //载波发射
{
        while(i--)
        {
                P34 = 1;
                Delay9us();
                P34 = 0;
                Delay9us();
                Delay9us();
        }
}

void high()
{  
   P34=0;
   NO_Send(22);
   P34=1;
   Send(59)        ;
}
void low()
{
  P34=0;
  NO_Send(22);
  P34=1;
   Send(22);
}
                                          
  char encode1 [35 ]=
  {1,0,0,  //模式
   0,      //开关
   0,0,     //风速
   0,      //扫风
   0,      //睡眠
   0,0,0,0,//温度
   0,0,0,0,0,0,0,0,//定时数据
   0,      //加湿
   1,      //灯光
   0,      //负离子
   0,      //节电
   0,     //换气
   0,0,0,1,0,1,0,0,1,0 //....

  };
  char encode2[33]={
  0,   //上下扫风
  0,0,0,  //....
  0,    //左右扫风
  0,0,0,  //....
  0,0,   //温度显示
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,  //....
  0,  //节能
  0, //...
  1,1,0,0   //校验码

  };
void starcode()
{
   P34=0;
   NO_Send(333);
   P34=1;
   Send(166)        ;          

   }
   void ConnectCode()
{
    P34=0;
    NO_Send(22);        
        P34=1;
    Send(740);           

   }




void Delay1000ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 43;
        j = 6;
        k = 203;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}


void main()
{       
        int i=0;
        P34=0;
        for(;;)
        {       
                if(P13==0)
             {
                             starcode();
                          for(i=0;i<35;i++)
                             {  
                              if (encode1[i]==1)
                                 high();
                                else
                                 low();  
             
                          }

                              ConnectCode();
                             for(i=0;i<33;i++)
                         {
                                     if(encode2[i]==1)
                                             high();
                                else
                                            low();  
                          }
                         Delay1000ms();       
                   }
                else
                        P34=0;
               
    }
}




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2019-11-9 08:41 | 只看该作者
先了解一下,格力电器遥控的协议(接收部分)。
回复

使用道具 举报

板凳
ID:617449 发表于 2019-11-9 09:48 | 只看该作者
你好!
空调控制本身就是一个难点,因为红外编码比 NEC 等遥控器的要复杂;
这样要制作的话,建议做成脉宽记录型的,比较好实现,通用型好。。

https://blog.csdn.net/cjjcjj1/article/details/102949172
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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