#include #include int RECV_PIN = 11; //红外线接收器OUTPUT端接在pin 11 IRrecv irrecv(RECV_PIN); // 定义IRrecv 对象来接收红外线信号 int Buzzer=9; void setup() { Serialbegin(9600); pinMode(Buzzer,OUTPUT); irrecvenableIRIn(); //启动红外解码 delay(1000); } void loop() {tone(Buzzer,500);}
1红外线接收头的接收头简介
红外线接收头(又称红外线接收模组,IRM)是集成红外线接收PD二极管、
放大、滤波和比较器输出等的IC模块。我们不再制作接收放大电路,这样红外接收头简化了电路。
常用的一种红外接收头的外形,均有三只引脚,即电源正VDD、电源负(GND)和数据输出(Out)。接收头的引脚排列因型号不同而不尽相同,因接收头的外形不同而引脚的区别。
红外接收头的主要参数如下:
工作电压:27~45V 工作电流:17~27mA 接收频率:379kHz 峰值波长:940nm 静态输出:高电平
输出低电平:≤04V 输出高电平:接近工作电压
2红外接收头原理
接收电路的红外接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。红外接收二极管一般有圆形和方形两种。由于红外发光二极管的发射功率较小,红外接收二极管收到的信号较弱,所以接收端就要增加高增益放大电路。然而现在不论是业余制作或正式的产品,大都采用成品的一体化接收头,红外线一体化接收头是集红外接收、放大、滤波和比较器输出等的模块,性能稳定、可靠。所以,有了一体化接收头,人们不再制作接收放大电路,这样红外接收电路不仅简单而且可靠性大大提高。
红外接收头包含两个芯片,一个是PD(即红外接收管),一个是IC。其中PD接收来自发射管的光信号(该信号已被调制),将光信号转换为电信号,即光电转换,常用于光接收器中。PD芯片属于典型的PIN结构光电二极管。由PD接收转换而来的电信号通过IC进行放大,自动增益控制,滤波,解调,波形整形,比较器输出交由后面的电路进行识别还原。以上就是红外接收头的接收过程。
3红外接收头有哪些
光敏管和调解IC封装集成在一起,成为一体化红外接收头。
内部电路包括红外光敏二极管,放大器,限副器,带通滤波器,积分电路,比较器等。红外光敏二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。
它的主要功能包括放大,选频,解调几大部分,要求输入信号需是已经被调制的信号。经过它的接收放大和解调会在输出端直接输出原始的信号。
从而使电路达到最简化!灵敏度和抗干扰性都非常好,可以说是一个接收红外信号的理想装置。
4红外线接收头三个引脚怎么用
1、红外接收头一般有三只引线脚,分别为接地、电源和信号输出。不同型号的红外接收头,其引脚排列也不相同。笔者用电阻法判别红外接收头的引脚简单、快速。
2、用指针式万用表(数字表不适用)电阻挡R1k(或R100),先测量确定接地脚,一般接地脚与屏蔽外壳是相通的,余下的两只脚假设为a和b。
3、然后用黑表笔搭接地脚,用红表笔去测a或b脚的阻值,读数分别约为6kΩ和8kΩ(有的接收头相差在1kΩ左右);调换表笔,红表笔接地,黑表笔测a和b脚,读数分别约为20kΩ和40kΩ。
4、两次测量阻值相对应都小的a脚即为电源脚,阻值大的b脚即为信号输出脚。不过用不同的万用表和测不同型号的接收头,所测得的电阻都各不相同。
5、但总的结论是:电源脚对地的电阻值不管正反向都要比信号脚对地的电阻值小。
红外接收头管脚的判别方法:
1、先准备一个5V电源,因为三端红外接收头的正常工作电压均为5V(也可以用两节电池组成3V电源代替)。将要测量的三端红外接收头的任意一脚分别接电源正极,万用表黑表笔接电源负极,红表笔分别接红外接收头的另外两脚,测其静态电流(万用表置电流挡)。
2、若测量电流达几十mA,则为管脚接错,应立即断开以免损坏。只有测量结果为3mA以下(各种型号接收头静态电流有差异)时,才为接收头电源端的正确接法,该两脚即为电源正负极引脚。
3、将接收头正负极接入电源上,万用表黑表笔接电源负极,红表笔接另一未接入电源的一脚,测量其电压若与电源电压相近,即该脚为输出脚。
4、再取一个任何型号的红外遥控器对准接收头,使遥控器发射一次信号,若输出脚电压波动下降,说明该脚已输出接收的数据信号,证明三脚排列判别正确,并且该接收头完好无损,能正常工作。
5红外接收头的原理是什么
红外信号收发系统的典型电路如图1所示,红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。
内部电路包括红外监测二极管,放大器,限幅器,带通滤波器,积分电路,比较器等。红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。交流
信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出
高低电平,还原出发射端的信号波形。注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。根据发射端调制
载波的不同应选用相应解调频率的接收头。红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的VCC
(电压)PIN脚与GND(地线)pin脚须加上滤
波电容,经专家测试试验一般在47uf 陶瓷电容(注意:电容加到100uf或20UF电容会导致接收头接收距离拉短)。另针对VCC(电压)PIN脚与Vout(输出)之间串入一个10K欧姆的上拉电阻,电压不稳定的时候进行上拉作用。红外发射器可从遥控器厂家定制,也可以自己用单片机的PWM产生,家庭遥控推荐使用红外发射管(L5IR4-45)的可产生3791KHz的PWM, PWM占空比设置为1/3, 通过简单的定时中断开关PWM, 即可产生 发射波形。
我们知道,人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为062~076μm;紫光的波长范围为038~046μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。红外线遥控就是利用波长为076~15μm之间的近红外线来传送控制信号的。
6红外线接收头接收到红外线如何表现
接收原理:红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。
内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。
交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。
所以应该没有开路和断路之分吧,只有高低电平。
你是要搞解码,还是编码呢,如果是发送因该是编码
#include<reg52h>
#include<INTRINSH>
//定义硬件接口
#define KEY P1
#define Key_State_0 0
#define Key_State_1 1
#define Key_State_2 2
#define unlock 1
#define lock 0
sbit IR_OUT = P2^0;
unsigned char time_1ms_flag,display_flag,IR_data,IR_data_R;
bit key_debounce_flag,key_debounce,timer2_c_flag;
unsigned char key_state,key_debounce_C,key_num,key_num_temp,key_temp,key_R,key_attion;
void delay1s(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_();
}
void T2_INT(void)
{
RCAP2H=(0xFFFF-1000)/256;
RCAP2L=(0xFFFF-1000)%256;//12MHz晶振下定时1ms,自动重装
TH2=RCAP2H;
TL2=RCAP2L; //定时器2赋初值
//T2CON=0; //配置定时器2控制寄存器,这里其实不用配置,T2CON上电默认就是0,这里赋值只是为了演示这个寄存器的配置
//T2MOD=0; //配置定时器2工作模式寄存器,这里其实不用配置,T2MOD上电默认就是0,这里赋值只是为了演示这个寄存器的配置
//IE=0xA0; //1010 0000开总中断,开外定时器2中断,可按位 *** 作:EA=1; ET2=1;
ET2=1;
TR2=1; //启动定时器2
EA = 1;
}
void delay4ms500us(void) //误差 0us
{
unsigned char a,b,c;
for(c=3;c>0;c--)
for(b=136;b>0;b--)
for(a=4;a>0;a--);
}
void delay560us(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=2;b>0;b--)
for(a=137;a>0;a--);
}
void delay1ms690us(void) //误差 0us
{
unsigned char a,b;
for(b=241;b>0;b--)
for(a=2;a>0;a--);
}
void IR_CODE(void)
{
unsigned char j;
IR_data_R=~IR_data;
IR_OUT=1;
delay4ms500us();
delay4ms500us();
IR_OUT=0;
delay4ms500us();
for(j=0;j<16;j++)
{
IR_OUT=1;
delay560us();
IR_OUT=0;
delay560us();
}
for(j=0;j<8;j++)
{
if(IR_data&0x01)
{
IR_OUT=1;
delay560us();
IR_OUT=0;
delay1ms690us();
}
else
{
IR_OUT=1;
delay560us();
IR_OUT=0;
delay560us();
}
IR_data>>=1;
}
for(j=0;j<8;j++)
{
if(IR_data_R&0x01)
{
IR_OUT=1;
delay560us();
IR_OUT=0;
delay1ms690us();
}
else
{
IR_OUT=1;
delay560us();
IR_OUT=0;
delay560us();
}
IR_data_R>>=1;
}
}
void play_attion(void)
{
if(key_attion==16)
{
key_attion=0;
IR_data=0x0f;
IR_CODE();
}
if(key_attion==15)
{
key_attion=0;
IR_data=0x0e;
IR_CODE();
}
if(key_attion==14)
{
key_attion=0;
IR_data=0x0d;
IR_CODE();
}
if(key_attion==13)
{
key_attion=0;
IR_data=0x0c;
IR_CODE();
}
if(key_attion==12)
{
key_attion=0;
IR_data=0x0b;
IR_CODE();
}
if(key_attion==11)
{
key_attion=0;
IR_data=0;
IR_CODE();
}
if(key_attion==10)
{
key_attion=0;
IR_data=0x09;
IR_CODE();
}
if(key_attion==9)
{
key_attion=0;
IR_data=0x08;
IR_CODE();
}
if(key_attion==8)
{
key_attion=0;
IR_data=0x07;
IR_CODE();
}
if(key_attion==7)
{
key_attion=0;
IR_data=0x06;
IR_CODE();
}
if(key_attion==6)
{
key_attion=0;
IR_data=0x05;
IR_CODE();
}
if(key_attion==5)
{
key_attion=0;
IR_data=0x04;
IR_CODE();
}
if(key_attion==4)
{
key_attion=0;
IR_data=0x03;
IR_CODE();
}
if(key_attion==3)
{
key_attion=0;
IR_data=0x02;
IR_CODE();
}
if(key_attion==2)
{
key_attion=0;
IR_data=0x01;
IR_CODE();
}
if(key_attion==1)
{
key_attion=0;
IR_data=0x00;
IR_CODE();
}
}
void main (void)
{
delay1s();
P1=0x0F;
T2_INT();
IR_OUT =0;
while(1)
{
play_attion();
}
}
void timer2() interrupt 5
{
//!!!注意!!! 定时器2必须由软件对溢出标志位清零,硬件不能清零,这里与定时器0和定时器1不同!!!
TF2=0;
switch(key_state)
{
case Key_State_0:
if(KEY!=0x0F)
{
key_state = Key_State_1;
key_debounce_flag = unlock;
KEY=0x7F;
key_temp=KEY;
if(key_temp==0x7E){key_num_temp=4;}
if(key_temp==0x7D){key_num_temp=8;}
if(key_temp==0x7B){key_num_temp=12;}
if(key_temp==0x77){key_num_temp=16;}
KEY=0xBF;
key_temp=KEY;
if(key_temp==0xBE){key_num_temp=3;}
if(key_temp==0xBD){key_num_temp=7;}
if(key_temp==0xBB){key_num_temp=11;}
if(key_temp==0xB7){key_num_temp=15;}
KEY=0xDF;
key_temp=KEY;
if(key_temp==0xDE){key_num_temp=2;}
if(key_temp==0xDD){key_num_temp=6;}
if(key_temp==0xDB){key_num_temp=10;}
if(key_temp==0xD7){key_num_temp=14;}
KEY=0xEF;
key_temp=KEY;
if(key_temp==0xEE){key_num_temp=1;}
if(key_temp==0xED){key_num_temp=5;}
if(key_temp==0xEB){key_num_temp=9;}
if(key_temp==0xE7){key_num_temp=13;}
KEY=0x0F;
}
break;
case Key_State_1:
if(key_debounce==1)
{
key_debounce = 0;
KEY=0x7F;
key_temp=KEY;
if(key_temp==0x7E){key_num=4;}
if(key_temp==0x7D){key_num=8;}
if(key_temp==0x7B){key_num=12;}
if(key_temp==0x77){key_num=16;}
KEY=0xBF;
key_temp=KEY;
if(key_temp==0xBE){key_num=3;}
if(key_temp==0xBD){key_num=7;}
if(key_temp==0xBB){key_num=11;}
if(key_temp==0xB7){key_num=15;}
KEY=0xDF;
key_temp=KEY;
if(key_temp==0xDE){key_num=2;}
if(key_temp==0xDD){key_num=6;}
if(key_temp==0xDB){key_num=10;}
if(key_temp==0xD7){key_num=14;}
KEY=0xEF;
key_temp=KEY;
if(key_temp==0xEE){key_num=1;}
if(key_temp==0xED){key_num=5;}
if(key_temp==0xEB){key_num=9;}
if(key_temp==0xE7){key_num=13;}
KEY=0x0F;
if(key_num_temp==key_num)
{
key_state = Key_State_2;
key_R=key_num;
key_num=0;
key_num_temp=0;
}
else
{
key_state = Key_State_0;
}
}
break;
case Key_State_2:
{
if(KEY==0x0F)
{
key_state = Key_State_0;
key_attion=key_R;
/
if(key_attion==12){out_flag=0;}
else
{
out_flag=1;
}out_flag=1;/
//code
}
}
}
if(key_debounce_flag==unlock)
{
key_debounce_C++;
if(key_debounce_C==16)
{
key_debounce_C = 0;
key_debounce_flag = lock;
key_debounce = 1;
}
}
}
以上就是关于红外接收模块和tone()函数冲突怎么改全部的内容,包括:红外接收模块和tone()函数冲突怎么改、红外接收头小知识(红外线接收头的接收头简介)、单片机的红外发射模块怎么用。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)