欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1884|回復: 8
打印 上一主題 下一主題
收起左側

51單片機做紅外遙控器,信號發射不出去啊

[復制鏈接]
跳轉到指定樓層
樓主
ID:1101850 發表于 2023-11-30 11:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//模擬格力空調遙控器

//邏輯0   低550us+高550us(或600+600)
//邏輯1   低550us+高1660us(或600+1600)

//9000+4500引導碼,
//第一數組數據  0011 1110 , 0111 0000,  0000 0000,0000 1010,
//010  ,低600us+20ms連接碼
//第二數組數據  1000 1000, 0000 0010, 0000 0000, 0000 1001
//空閑 低490us+高40ms
//9000+4500引導碼,
//第三數組數據  0011 1010, 0111 0000 , 0000 0000, 0000 1110
//010, 低490us+高20ms連接碼
//第四數組數據  0000 0000 , 0000 0000, 0000 1011, 0000 100


#include <reg52.h>
sbit sendon =P3^0;       //按鍵
sbit send=P2^1;                    //發射口

void delay_10us(int us)  //10us延時函數//
{
    while(us--);
}                                                

void delay0()                            //邏輯0高低電平脈寬
{
    send=0;
    delay_10us(64);
    send=1;
    delay_10us(55);
}

void delay1()                        //邏輯1高低電平脈寬
{
    send=0;
    delay_10us(64);
    send=1;
    delay_10us(168);
}



char arr_time1[]={0x3e,0x70,0x00,0x0a};        //第一組發送的數據
char arr_time2[]={0x88,0x02,0x00,0x09};        //第二組發送的數據
char arr_time3[]={0x3a,0x70,0x00,0x0e};        //第三組發送的數據
char arr_time4[]={0x00,0x00,0x0b,0x08};        //第四組發送的數據

int main()
{
    while(1)
    {
    send=1;                                    //初始高電平
    if (sendon==0)                    //判斷按鍵按下
    {
        int a,b;
        char s1,s2,s3,s4 ;
        delay_10us(2000);            //判斷按鍵按下
        if (sendon==0)                //判斷按鍵按下
        {
            send=0;                            //9ms低電平引導碼
            delay_10us(900);
            send=1;
            delay_10us(450);        //4.5ms高電平引導碼
            for(a=0;a<4;a++)        //循環第一個數組的四個數據
            {
                s1=arr_time1[a];    //將第一個數組賦值到S1
                for (b=0;b<8;b++)    //將每個數據的8位循環
                {
                    if (s1&0x80)        //數據&0x80后進行判斷
                    {
                        delay1();
                    }
                    else
                    {
                        delay0();
                    }
                    s1 <<= 1;                //左移一位再循環判斷
                }
            }
            delay0();                        //010+高20000us連接碼
            delay1();                        //010+高20000us連接碼
            delay0();                        //010+高20000us連接碼
            send=0;                            //010+高20000us連接碼
            delay_10us(60);            //010+高20000us連接碼
            send=1;                            //010+高20000us連接碼
            delay_10us(2000);   //010+高20000us連接碼
            a=0;
            b=0;
            //s1
            
            for(a=0;a<4;a++)        //第二個數組發送
            {
                s2=arr_time2[a];
                for (b=0;b<8;b++)
                {
                    if (s2&0x80)
                    {
                        delay1();
                    }
                    else
                    {
                        delay0();
                    }
                    s2 <<= 1;
                }
            }
            send=0;                            //40ms空閑
            delay_10us(49);            //40ms空閑
            send=1;                            //40ms空閑
            delay_10us(4000);   //40ms空閑
            //s2
            
            a=0;
            b=0;
            send=0;                            //空閑之后再次引導碼
            delay_10us(900);        //9ms低電平引導碼
            send=1;
            delay_10us(450);        //4.5ms高電平引導碼
            for(a=0;a<4;a++)        //第三數組發送
            {
                s3=arr_time3[a];
                for (b=0;b<8;b++)
                {
                    if (s3&0x80)
                    {
                        delay1();
                    }
                    else
                    {
                        delay0();
                    }
                    s3 <<= 1;
                }
            }
            delay0();                        //010+高20000us連接碼
            delay1();                        //
            delay0();                        //
            send=0;
            delay_10us(49);
            send=1;
            delay_10us(2000);   
            a=0;
            b=0;
                                                    //s3
            
            for(a=0;a<3;a++)        //第四數組發送,第四數組在for循環中只有三個數據
            {
                s4=arr_time4[a];
                for (b=0;b<8;b++)
                {
                    if (s4&0x80)
                    {
                        delay1();
                    }
                    else
                    {
                        delay0();
                    }
                    s4 <<= 1;
                }
            }
            delay0();                        //第四個數據發送 數據為000100            
            delay0();
            delay0();
            delay0();
            delay1();
            delay0();
            delay0();
                                                    //s4
            while(!sendon);            //按鍵松開
    }
        
}   
}
}


用示波器檢測輸出口有信號,但是用紅外線接收頭接收不到。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:220661 發表于 2023-11-30 13:37 | 只看該作者
38K載波怎么產生的?
回復

使用道具 舉報

板凳
ID:104825 發表于 2023-11-30 14:23 來自觸屏版 | 只看該作者
你這是直接發送數據當然不行了,紅外遙控是需要38K載頻的,要么你在程序里做,要么你在電路里做。
回復

使用道具 舉報

地板
ID:277550 發表于 2023-11-30 16:19 | 只看該作者
軟件延時,不是很可靠。

先檢測發送的脈沖波形,是否正確
回復

使用道具 舉報

5#
ID:1101850 發表于 2023-12-1 10:25 | 只看該作者
s1gm 發表于 2023-11-30 14:23
你這是直接發送數據當然不行了,紅外遙控是需要38K載頻的,要么你在程序里做,要么你在電路里做。

38k載波咋做啊,搜了一頓沒看懂
回復

使用道具 舉報

6#
ID:1080331 發表于 2023-12-1 11:03 | 只看該作者
根據你提供的代碼,你在發送紅外信號之前已經正確地設置了引導碼和邏輯0、邏輯1的時序。然而,有幾個可能的原因會導致紅外接收器無法接收到信號:  發送功率不足:請確保你的紅外發射器輸出的紅外功率足夠強,以便能夠被紅外接收器接收到。你可以嘗試將發射器與接收器之間的距離縮短,并確保沒有任何物體阻擋紅外信號的傳輸。  發射頻率不匹配:不同品牌和型號的空調使用不同的紅外發射頻率。請檢查你使用的紅外發射器和空調遙控器的發射頻率是否一致。如果不一致,可能需要更換相應頻率的紅外發射器。  紅外接收器故障:如果你確定發送端的代碼和硬件設置都正確無誤,但仍然無法接收到紅外信號,那么可能是紅外接收器本身存在問題。你可以嘗試更換一個不同的紅外接收器來進行測試。
回復

使用道具 舉報

7#
ID:230500 發表于 2023-12-1 11:23 | 只看該作者
要有38K的載波信號 才能正確發送和接收; 可以用定時器模擬, 或者外部555產生載波再硬件合成
回復

使用道具 舉報

8#
無效樓層,該帖已經被刪除
9#
ID:1034262 發表于 2023-12-1 15:18 | 只看該作者
紅外收發都是簡單應用,基本初學者都要過的基本要求。
樓主先產生38K的載波,示波器看看輸出了沒有?然后加程序用數據調制輸出。
回復

使用道具 舉報

10#
ID:195496 發表于 2023-12-2 08:10 | 只看該作者
用示波器查看一下載波信號
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表