久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3646|回復: 8
收起左側

C51單片機發射紅外信號控制空調,開不了機,大神幫我看一下程序哪里出錯了?

[復制鏈接]
ID:514901 發表于 2019-4-18 16:58 | 顯示全部樓層 |閱讀模式
10黑幣
論壇新人,求大神幫我解決
首先,我要控制的是我宿舍的空調,美的的,型號如下:
IMG_20190415_223009.jpg

然后聽說美的空調紅外協議是R05d,然后就根據協議寫了一個程序

以下是我程序的具體內容:
1,端口和延時函數
端口延時.png
2,中斷程序,產生38khz脈沖
中段.png
3,引導碼程序
引導碼程序.png
引導.png
4,分隔符程序
間隔符.png
分隔.png
5,數據發送程序(發送char型數據和它的反碼)
void senddata_data(char x)
{
    char irdata,i;
    irdata=x;
    for(i=0;i<8;i++)
    {
        endcount=14;
        flag=1;
        count=0;
        do{}while(count<endcount);
        if(irdata-(irdata/2)*2)
        {
            endcount=42;
        }
        else
        {
            endcount=14;
        }
        flag=0;
        count=0;
        do{}while(count<endcount);
        irdata=irdata>>1;
    }
    irdata=~x;
    for(i=0;i<8;i++)
    {
        endcount=14;
        flag=1;
        count=0;
        do{}while(count<endcount);
        if(irdata-(irdata/2)*2)
        {
            endcount=42;
        }
        else
        {
            endcount=14;
        }
        flag=0;
        count=0;
        do{}while(count<endcount);
        irdata=irdata>>1;
    }
}
開機.png
6,終止程序
結束符.png
終止.png
7,以下是主函數,發送開機編碼
主函數.png
8,附帶程序源碼
#include <reg52.h>
sbit   P3_4 = P2^1;   //???????
sbit   key=P2^0;   //?????
static bit OP;    //????????0??1
static unsigned int count;    //???????
static unsigned int endcount;  //??????????????
static unsigned char flag;    //?????????
void delay()
{
    int i,j;
    for(i = 0; i < 400; i++){
        for(j = 0; j < 200; j++){
        }
    }
}
void sendbegin();
void senddata_data(char x);
void sendend();
void sendS();
void main(void)
{
count = 0;
    flag = 0;
    OP = 0;
    P3_4 = 0;
    EA = 1; //????CPU?ж?
    TMOD = 0x11; //?趨???0??1?16λ??1
    ET0 = 1; //?????0?ж?????
    TH0 = 0xFF;
    TL0 = 0xE8; //?趨??0?38K ????????26us?ж????  
    TR0 = 1;//???????
    do{
    if(key==0)
    {
     while(key==0);
        delay();
        sendbegin();
  senddata_data(0xb2);
  senddata_data(0x9f);
  senddata_data(0x00);
  sendS();
  sendbegin();
  senddata_data(0xb2);
  senddata_data(0x9f);
  senddata_data(0x00);
  sendend();
  }
    }while(1);
}

void timeint(void) interrupt 1
{
    TH0=0xFF;
    TL0=0xE8;
    count++;
    if (flag==1)
    {
        OP=~OP;
    }
    else
    {
        OP = 0;
    }
    P3_4 = OP;
}

void sendbegin()
{
    endcount=114;
    flag=1;
    count=0;
    do{}while(count<endcount);
    endcount=114;
    flag=0;
    count=0;
    do{}while(count<endcount);
}
void sendS()
{
    endcount=12;
    flag=1;
    count=0;
    do{}while(count<endcount);
    endcount=135;
    flag=0;
    count=0;
    do{}while(count<endcount);
}
void senddata_data(char x)
{
    char irdata,i;
    irdata=x;
    for(i=0;i<8;i++)
    {
        endcount=14;
        flag=1;
        count=0;
        do{}while(count<endcount);
        if(irdata-(irdata/2)*2)
        {
            endcount=42;
        }
        else
        {
            endcount=14;
        }
        flag=0;
        count=0;
        do{}while(count<endcount);
        irdata=irdata>>1;
    }
    irdata=~x;
    for(i=0;i<8;i++)
    {
        endcount=14;
        flag=1;
        count=0;
        do{}while(count<endcount);
        if(irdata-(irdata/2)*2)
        {
            endcount=42;
        }
        else
        {
            endcount=14;
        }
        flag=0;
        count=0;
        do{}while(count<endcount);
        irdata=irdata>>1;
    }
}
void sendend()
{
    endcount=10;
    flag=1;
    count=0;
    do{}while(count<endcount);
    flag=0;
}



數據0,1.png
端口延時.png
回復

使用道具 舉報

ID:514901 發表于 2019-4-18 17:01 | 顯示全部樓層
暖一下
回復

使用道具 舉報

ID:514901 發表于 2019-4-18 17:36 | 顯示全部樓層
美的空調的編碼規則...
美的R05d電控功能說明書.doc (629.89 KB, 下載次數: 17)
回復

使用道具 舉報

ID:401564 發表于 2019-4-18 19:04 | 顯示全部樓層
我手頭上有兩個美的的遙控器,編碼的協議都不一樣的,不通用的,你就別想這個了
如果你一定要搞,你首先要確定的是你的程序對不對,你得找到一個相同協議的接收器件來驗證一下你的程序對不,再去遙控美的
程序不對,你按半天都沒有用
等到你驗證了你程序是對,按一下不行,就別再搞了,沒有必要了
回復

使用道具 舉報

ID:497670 發表于 2019-4-18 20:15 | 顯示全部樓層
你好!1、你的單片機程序支離破碎,沒有完整的工程文件
2、空調的紅外控制本來就比較難的
3、我做過美的、奧的斯空調控制(家中只有這兩個牌子空調)
4、具體技術問題,歡迎繼續討論
回復

使用道具 舉報

ID:514901 發表于 2019-4-19 09:42 | 顯示全部樓層
Y_G_G 發表于 2019-4-18 19:04
我手頭上有兩個美的的遙控器,編碼的協議都不一樣的,不通用的,你就別想這個了
如果你一定要搞,你首先要確定 ...

我的編碼應該是對的,因為我換成nec協議,然后用第二個單片機寫了一個接收程序,發送數據和接受數據對得上,可能是我的空調編碼不行吧,搞了兩個多星期了,學習型紅外遙控也沒搞成,哎……
回復

使用道具 舉報

ID:160500 發表于 2019-4-19 10:17 | 顯示全部樓層
你沒有搞明白空調的具體編碼,光是知道紅外協議是不行的。就像說話,你說的是中文,聽的人卻只懂外文,就算聽到了也是不明白什么意思。
回復

使用道具 舉報

ID:497670 發表于 2019-4-19 17:09 | 顯示全部樓層
你好!建議你做成學習型遙控器,通用型強一些
回復

使用道具 舉報

ID:507641 發表于 2019-4-23 20:37 | 顯示全部樓層
觸碼方與 NEC6222不一樣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩综合精品 | 午夜免费视频 | 日本色高清 | 久久精品久久久 | 国产精品视频免费观看 | 中文字幕精品一区二区三区精品 | 日韩三区在线 | 九九热免费在线观看 | 日本成年免费网站 | 成人在线视频观看 | 一区二区精品 | 亚洲精品一区二区三区中文字幕 | 国产精品嫩草影院精东 | 国产精品18hdxxxⅹ在线 | 呦呦在线视频 | 日韩一级| 天天干天天想 | 好好的日在线视频 | 中文字幕 亚洲一区 | 亚洲一区国产 | 91视频电影 | 亚洲精品国产成人 | 欧美日韩中文字幕 | 天天综合网91 | 日本天堂视频 | 99这里只有精品视频 | 久久久久久久久久久国产 | 成人一级视频在线观看 | 亚洲综合字幕 | 91私密视频 | www.色综合| 欧美久久久网站 | 久久久久久久综合色一本 | 古装三级在线播放 | 看av在线| 中文在线播放 | 亚洲成人自拍网 | 亚洲一区二区久久久 | 国产欧美一区二区精品忘忧草 | 午夜在线免费观看视频 | 久久久综合色 |