欧美极品高清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