毕竟世界太现实只能这么帮你
#ifndef _IR_
#define _IR_
char t0,t1,t2
uchar IR
void DelayIR()
{
uint i=130
while(i--)
}
void init_port2(void)
{
P2DIR&=~BIT0
P2SEL&=~BIT0
P2IES|=BIT0
P2IE|=BIT0
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT2_ISR(void)
{
char CounterIR
P2IES&=~BIT0
if(P2IFG&BIT0)
{
P2IFG&=~BIT0
}
CounterIR=0
while(!(P2IN&BIT0))
{
DelayIR()
CounterIR++
}
if(CounterIR>85)
{
if(CounterIR<95)
{
t1++
for(char k=0k<17k++)
{
CounterIR=0
while((P2IN&BIT0)&&(CounterIR<50))
{
DelayIR()
CounterIR++
}
CounterIR=0
while((!(P2IN&BIT0))&&(CounterIR<10))
{
DelayIR()
CounterIR++
}
}
for(char j=0j<8j++)
{
CounterIR=0
while((P2IN&BIT0)&&(CounterIR<25))
{
DelayIR()
CounterIR++
}
IR<<=1
if(CounterIR>11)
IR|=BIT0
CounterIR=0
while((!(P2IN&BIT0))&&(CounterIR<10))
{
DelayIR()
CounterIR++
}
}
if((IR!=0xff)&&(IR!=0x00))
{
if(!(flag&dataflag))
{
if(IR==0x22)
{
flag|=runflag
}
else
{
Tar[0]=Tar[1]
Tar[1]=Tar[2]
Tar[2]=Tar[3]
Tar[3]=Tar[4]
switch (IR)
{
//case 0x22 : flag|=runflagbreak
case 0x68 : Tar[4]=0flag|=dataflagbreak
case 0x30 : Tar[4]=1flag|=dataflagbreak
case 0x18 : Tar[4]=2flag|=dataflagt2++break
case 0x7a : Tar[4]=3flag|=dataflagbreak
case 0x10 : Tar[4]=4flag|=dataflagbreak
case 0x38 : Tar[4]=5flag|=dataflagbreak
case 0x5a : Tar[4]=6flag|=dataflagbreak
case 0x42 : Tar[4]=7flag|=dataflagbreak
case 0x4a : Tar[4]=8flag|=dataflagbreak
case 0x52 : Tar[4]=9flag|=dataflagbreak
default : break
}
}
}
}
IR=0
}
}
for(int m=0m<250m++)
DelayIR()
P2IES|=BIT0
}
#endif
请采纳。
红外线发御态尺射器是一种遥控设备,具有遥控功能,通过红外线发射管向外发射光线,从而达到闭中控制信号的作用,广泛应用于电子、工业和通信等红外线传输技术等领域。
所需材料:红外二极管、镇高耳机线。
制作红外线发射器步骤如下:
1、剥掉3、5毫米耳机接口的外皮,清理焊点;
2、将红外线二级管接到耳机口的左右声道,用热溶胶固定空隙,并用热缩管套住;
3、插入手机耳机孔;
4、打开手机里的遥控软件,即可发射红外线。
跟你说说方法吧1,用单片机的某一个你要用作红外发射的端口(假设P0.0)产生一个38K的载波,即用定时器做一个13us的定时,每进一次定时器改变一次P0.0端口的状态。
2,接收端口设为外部中断,中断一开就开始接收数据
3,自己定义一个红外发射的协议,我是这么定义的
/**红外发射协议:先发头码,再发16位地址高8位,再发低8位,再发8位数据,在发8位数据反码,在发结束码
***头码 :0.5ms高0.25ms低
***地址及数据段指蔽腊:2ms高0.5ms低代表1, 0.5ms高2ms低代表0
***结束码:大约3.3ms低
***/
具体这个协议唯滑你只要你不是做成标准的模式就可以自己定义
4,接收的话你就可以根据每一次进入中断的时间判断当前接收的是0还是1
5,需要注意的地方时发射出去的数据和接收到的数据时相反的,即你发0xf0接收到的就是0x0f
这并庆些希望对你有帮助
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)