标题:
关于红外遥控模拟发射程序没反应的问题
[打印本页]
作者:
wcf101
时间:
2021-5-31 22:52
标题:
关于红外遥控模拟发射程序没反应的问题
大佬们帮看一下为什么我做的小遥控运行没反应,是不是哪里接错了还是程序写错了
发射
#include<reg51.h>
sbit IR=P2^0;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
unsigned int a,b,c,d,e,f,g;
unsigned char Adress_Code=0xff;
void Delay8_77us() //延时8.77us
{
unsigned char i;
while(--i);
}
void IR_1r()
{
IR=1;
Delay8_77us();
IR=0;
for(a=0;a<2;a++)
Delay8_77us();
}
void Send_0()
{
for(b=0;b<21;b++)
IR_1r();
for(c=0;c<64;c++)
Delay8_77us();
}
void Send_1()
{
for(c=0;c<21;c++)
IR_1r();
for(d=0;d<192;d++)
Delay8_77us();
}
void Send_YDM() //引导码 9ms 4.5ms
{
for(f=0;f<342;f++)
IR_1r();
for(g=0;g<513;g++)
Delay8_77us();
}
void Send_IR(unsigned char x) //按位发送
{
for(e=0;e<8;e++)
{
if(x&0x01)Send_1();
else Send_0();
x>>=1;
}
}
void go()
{
if(k1==0)
{
Send_YDM();
Send_IR(Adress_Code);
Send_IR(~Adress_Code);
Send_IR(0x08);
Send_IR(~0x08);
Send_0();
}
}
void down()
{
if(k2==0)
{
Send_YDM();
Send_IR(Adress_Code);
Send_IR(~Adress_Code);
Send_IR(0x02);
Send_IR(~0x02);
Send_0();
}
}
void left()
{
if(k3==0)
{
Send_YDM();
Send_IR(Adress_Code);
Send_IR(~Adress_Code);
Send_IR(0x04);
Send_IR(~0x04);
Send_0();
}
}
void right()
{
if(k4==0)
{
Send_YDM();
Send_IR(Adress_Code);
Send_IR(~Adress_Code);
Send_IR(0x06);
Send_IR(~0x06);
Send_0();
}
}
void main()
{
IR=0;
while(1)
{
go();
down();
left();
right();
IR=0;
}
}
复制代码
接收
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint LowTime,HighTime,num;
uchar N[4];
sbit IR=P3^2;
sbit k1=P3^4;
sbit k2=P3^5;
sbit k3=P3^6;
sbit k4=P3^7;
void IRjudge() interrupt 0
{
TMOD=0x01;
EX0=0;
TL0=0;
TH0=0;
TR0=1;
while(IR==0);
TR0=0;
LowTime=TH0*256+TL0;
if((LowTime>8500)&&(LowTime<9500)!=1)
{
EX0=1;
return;
}
TL0=0;
TH0=0;
TR0=1;
while(IR);
HighTime=TH0*256+TL0;
if((HighTime>4000)&&(HighTime<5000))
{
uchar i,j;
uchar x=0;
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
x>>=1;
TH0=0;
TL0=0;
TR0=1;
while(IR);
TR0=0;
LowTime=TH0*256+TL0;
TH0=0;
TL0=0;
TR0=1;
while(IR);
TR0=0;
HighTime=TH0*256+TL0;
if((LowTime<360)||(LowTime>650))
return;
if((HighTime>500)&&(HighTime<650))
x=x&0x7f;
if((HighTime>1500)&&(HighTime<1800))
x=x|0x80;
}
N[i]=x;
x=0;
}
if((N[0]=~N[1])&&(N[2]=~N[3]))
{
switch(N[4])
{
case 0x02:num=0;break;
case 0x04:num=1;break;
case 0x06:num=2;break;
case 0x08:num=3;break;
}
}
}
EX0=1;
}
void go()
{
if(num==3)
{
k1=1;
k2=0;
k3=1;
k4=0;
}
}
void left()
{
if(num==1)
{
k1=0;
k2=1;
k3=1;
k4=0;
}
}
void right()
{
if(num==2)
{
k1=1;
k2=0;
k3=0;
k4=1;
}
}
void back()
{
if(num==3)
{
k1=0;
k2=1;
k3=0;
k4=1;
}
}
void main()
{
IT0=1;
EX0=1;
EA=1;
while(1)
{
go();
left();
right();
back();
}
}
复制代码
FVN0]AOGAD5LN_[}35NH0X9.png
(47.01 KB, 下载次数: 53)
下载附件
2021-5-31 22:50 上传
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1