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

標題: 51單片機做紅外遙控器,信號發(fā)射不出去啊 [打印本頁]

作者: hys123h    時間: 2023-11-30 11:00
標題: 51單片機做紅外遙控器,信號發(fā)射不出去啊
//模擬格力空調遙控器

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

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


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

void delay_10us(int us)  //10us延時函數(shù)//
{
    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};        //第一組發(fā)送的數(shù)據(jù)
char arr_time2[]={0x88,0x02,0x00,0x09};        //第二組發(fā)送的數(shù)據(jù)
char arr_time3[]={0x3a,0x70,0x00,0x0e};        //第三組發(fā)送的數(shù)據(jù)
char arr_time4[]={0x00,0x00,0x0b,0x08};        //第四組發(fā)送的數(shù)據(jù)

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++)        //循環(huán)第一個數(shù)組的四個數(shù)據(jù)
            {
                s1=arr_time1[a];    //將第一個數(shù)組賦值到S1
                for (b=0;b<8;b++)    //將每個數(shù)據(jù)的8位循環(huán)
                {
                    if (s1&0x80)        //數(shù)據(jù)&0x80后進行判斷
                    {
                        delay1();
                    }
                    else
                    {
                        delay0();
                    }
                    s1 <<= 1;                //左移一位再循環(huán)判斷
                }
            }
            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++)        //第二個數(shù)組發(fā)送
            {
                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++)        //第三數(shù)組發(fā)送
            {
                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++)        //第四數(shù)組發(fā)送,第四數(shù)組在for循環(huán)中只有三個數(shù)據(jù)
            {
                s4=arr_time4[a];
                for (b=0;b<8;b++)
                {
                    if (s4&0x80)
                    {
                        delay1();
                    }
                    else
                    {
                        delay0();
                    }
                    s4 <<= 1;
                }
            }
            delay0();                        //第四個數(shù)據(jù)發(fā)送 數(shù)據(jù)為000100            
            delay0();
            delay0();
            delay0();
            delay1();
            delay0();
            delay0();
                                                    //s4
            while(!sendon);            //按鍵松開
    }
        
}   
}
}


用示波器檢測輸出口有信號,但是用紅外線接收頭接收不到。

作者: gongnn    時間: 2023-11-30 13:37
38K載波怎么產(chǎn)生的?
作者: s1gm    時間: 2023-11-30 14:23
你這是直接發(fā)送數(shù)據(jù)當然不行了,紅外遙控是需要38K載頻的,要么你在程序里做,要么你在電路里做。
作者: devcang    時間: 2023-11-30 16:19
軟件延時,不是很可靠。

先檢測發(fā)送的脈沖波形,是否正確
作者: hys123h    時間: 2023-12-1 10:25
s1gm 發(fā)表于 2023-11-30 14:23
你這是直接發(fā)送數(shù)據(jù)當然不行了,紅外遙控是需要38K載頻的,要么你在程序里做,要么你在電路里做。

38k載波咋做啊,搜了一頓沒看懂
作者: 597329015    時間: 2023-12-1 11:03
根據(jù)你提供的代碼,你在發(fā)送紅外信號之前已經(jīng)正確地設置了引導碼和邏輯0、邏輯1的時序。然而,有幾個可能的原因會導致紅外接收器無法接收到信號:  發(fā)送功率不足:請確保你的紅外發(fā)射器輸出的紅外功率足夠強,以便能夠被紅外接收器接收到。你可以嘗試將發(fā)射器與接收器之間的距離縮短,并確保沒有任何物體阻擋紅外信號的傳輸。  發(fā)射頻率不匹配:不同品牌和型號的空調使用不同的紅外發(fā)射頻率。請檢查你使用的紅外發(fā)射器和空調遙控器的發(fā)射頻率是否一致。如果不一致,可能需要更換相應頻率的紅外發(fā)射器。  紅外接收器故障:如果你確定發(fā)送端的代碼和硬件設置都正確無誤,但仍然無法接收到紅外信號,那么可能是紅外接收器本身存在問題。你可以嘗試更換一個不同的紅外接收器來進行測試。
作者: a399288395    時間: 2023-12-1 11:23
要有38K的載波信號 才能正確發(fā)送和接收; 可以用定時器模擬, 或者外部555產(chǎn)生載波再硬件合成
作者: coody_sz    時間: 2023-12-1 15:18
紅外收發(fā)都是簡單應用,基本初學者都要過的基本要求。
樓主先產(chǎn)生38K的載波,示波器看看輸出了沒有?然后加程序用數(shù)據(jù)調制輸出。
作者: 大漠落日    時間: 2023-12-2 08:10
用示波器查看一下載波信號




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1