📄 红外线程序.txt
字号:
红外芯片:
波长:940nm 适用于遥控器,例如家用电器的遥控器;
波长:808nm 适用于医疗器具,空间光通信,红外照明,固体激光器的泵浦源
波长:830nm 适用于高速路的自动刷卡系统 (夜视系统最好,可以看到管芯上有一点红光,效果比850nm要好)
波长:840nm 适用于摄像机 彩色变倍红外防水
波长:850nm 适用于摄像头(视频拍摄) 数码摄影,监控,楼寓对讲,防盗报警,红外防水
波长:870nm 适用于商场,十字路口的摄像头
LED芯片 13715210953:曾小姐红、黄、蓝、绿、紫色、1W、3W大功率、红外发
4 软件编程
基于AVR单片机的捕获中断来实现红外编码的软件程序流程如图4所示。下面是其
C语言程序代码:
C程序代码:
*pragma interrupt_handler IceInt:6 //中断程序说明
void ICEInit(void) //T/C1初始化
{
TIMSK=0X20; //使能捕获中断
TCCR1A=0X00; //T/C1时钟与系统相同,本文使用系统AVR内部自带1MHz振荡源.T/C1时钟周期为1μs
TCCR1B=0X81; //使能噪音抑制,下降沿触发中断
}
void IceInt(void)
{
static nint oldFall;
uint temp,newFall;
newFall=ICR1;
temp=newFall-oldFall; //计算脉冲加间隔的时间
oldFall=newFall;
if(temp>1024 && temp<1225) // "0"信号
{
temp=0;
}
else if(temp>2145 && temp<2345) //“1”信号
{
temp=1;
}
else if(temp>13400 && temp<13600) //header信号
{
bitcnt=0;
data0=0;
data1=0'
return; //返回,等待下次开始接收
}
else ///干扰信号
{
return;
}
bitcnt++;
if(bitcnt<16) //开始接收前16位
{
data0=data0|(uint)temp;
data0=data0<<1;
}
else if(bitcnt==16)
{
data0=data0|(uint)temp;
}
else if(bitcnt<32) //开始接收后16位
{
data1=data1|(uint)temp;
data1=data1<<1;
}
else if(bitcnt==32) //接收完最后一位
}
data1=data1|(uint)temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -