红外接收模块和tone()函数冲突怎么改

红外接收模块和tone()函数冲突怎么改,第1张

#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()函数冲突怎么改、红外接收头小知识(红外线接收头的接收头简介)、单片机的红外发射模块怎么用。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10105695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存