1、51单片机红外解码资料+源代码docx51单片机红外解码(NEC)1,遥控发射及其编码红外遥控编码具有以下特征:(1),采用脉宽调制串行码,以脉宽为0.565ms,间隔0,56ms. 周期为1.125ms的组合表示二进制的“0”。(2)脉宽为0.565ms,间隔1.685ms,周期为2.25nis的组合 农示二进制的“1”。iS控爾的S ”和41 红外发射电路如图:左边是个222的无极性电容,然后接地。发送38K方波,就是载波in nnzin叩in nnzzin n1V_9ms4.5ms 用户编硏曲位用户編码键数据码引导码”r I8 36m ”S27msW S8.Sm$ 至 76.5ms 、
2、nn 4匚 e 上述“0”和“1”组成32位二进制代码,包括两次8位用户码,8位数据码,和8位数据反码以及最后的同部位。-体化红外接收管原理图一体化红外接收头在检测到38K红外遥控载波信号时输出低 电平,在未检测到39K的红外遥控载波信号时输出高电平。发射器发射的的信号为inin nn,zin nnin n n”19ms-O-4.5 nisp 低她 一 用户编码用户编码键弦据码键数弟玛反玛引导码” I8 36m ”S27ms58.5ms76.5ms接收器接收到的信号为即9ms低电平后4.5ms高电平作为起始码,之后接受到两次 8位客户码,一次八位数据码,和一次八位数据反码。遥控器按键按卜之后周
3、期件的发出同一种32位二进制编 码周期约为108ms, 纽码持续时间随本身的“0”“1”个数不同而不同。人约在4563ms之间,当一个键按下36ms,振荡器使芯 片激活,将发射一组108ms的编码脉冲这108ms编码脉冲由一个 起始码(9ms), 一个结束码(4.5nis),低八位地址码(918ms), 高八位地址码(918ms),八位数据码(918ms),和这八位数据 码反码(918ms),如果按下超过108ms仍未松开,接卜-来发射 的代码(连发代码)将仅有起始码(9ms)和结束码(2.5ms)组 成。解码的关键是如何识别零和一:“0”和“1”都是以0.56ms低电平开始的,不同的是高电平
4、 宽度不同,“0”为0.56ms “1”为1.168ms,所以必须根据高电平 宽度来区别“0”和T。如果从0.56ms低电平过后,开始延时,0.56ms后,若读到的 电平为低,说明该位为零,反之则为,可靠其间,延时必须比 0.56ms长一些,又不能超过1.12ms,否则如果该位为零,读到的 已是下一位高电平,因此取(1.12+0.56) /2=0.84ms最为可靠,一 般取0.84ms左右均可。根据码的格式,应该等待9ms起始码和 4.5111S结束码完成后才能读码。备注:定时器/计数器控制寄存器TCON位序号D7D6D5D4D3D2D1DO位符号TF1TR1TF0IR0IE1mIE0ITO位
5、地址8FH8EH8DH8CH8BH8 AH89H88H源代码如K:#inc lude#define uchar unsigned char#defiiie uint unsigned int sbit dula=P2A6;sbit wela=P2A7;uchar iilime; 红外时间uchar stallflag; 启动接收uchar irdata33;uchar bitnmn;uchar ineceiveok; 红外接收完毕uchar ircode4;uchar iiprosok;uchar disp8;uchar code smg_du=0x3F7*0*/0x067*1*/Ox5B,/
6、*2*/0x4F7*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F/*8/0x6F,/*9*/0x77,/*A*/0x7C,/*b*/0x39,/*C*/0x5E,/*d*/0x79,/*E/0x71,/*F*/;uchar code smg_we=Oxfe,Oxfid,Oxfb,0xf7,Oxef,Oxdf,Oxbf 0x7f,;void delay(uint z)uint ij;fbr(i=z;iO;i)for(j=110;j0;j-);void timerOinit(void) /定时器 0 初始化TMOD=0X02; 方式 2TH0=0X
7、00; 高第八位清零TL0=0X00:EA=1; 打开全局中断允许位 (中断允许寄存器IE)ETO=1; 打开定时器0中断允许位(中断允许寄存器IE)TRO=1; 寄存器TCON,置一启动定时器0void intOiiiit(void) 夕卜部中断0初始化ITO=1; 置一,跳变沿触犯方式,引脚INTO上,下降沿的负跳变有效EXO=1; 外部中断0中断允许位EA=1; 全局中断允许位void irwork(void)disp0=ircode0/16;disp l=ircode0%l 6;disp2=ircode 1/16;disp 3=ircodel%16; disp4=ircode2/16;
8、disp5=ircode2%16;disp =ircode3/l 6;disp 7=ircode 3 %16;void display(void)uchar i;fdr(i=O;i&i+)dula=l;PO=smg_dudispi;dula=O;PO=OxfT:wela= 1;PO=smg_wei;wela =0;delay(l);P0=0xfT;delay(l);void iipros(void) /1.125nis/0.2777=4.39=4.05 个 irtime (数据零) /2.25ins/0.2777=8.10 个 irtime (数据一)取中间值6ucliar k,i,j;uch
9、ar value;k=l; 跳过引导码fbr(j=0;j4;j-H-)for(i=0;i6) /8 次 value=value | 0x80;k-HF; ircodej=vahie;irpTOSok= 1;从这里开始定时器0初始化外部中断0初始化人循环void main()tiinerOinitO; intOiiiit(); while(l)iffineceiveok)iipros();ineceiveok=0;if(iiprosok)irwoik();iiprosok=0;display();void tiinerO () intemipt 1 d时器0,初值口动重装的8位怎时器 最大计数值256,2的8次方irtiiiie+; /256 /每加计数256次,计数次时间为 0.001085069ms 每加一,计数256次,共需0.2777msvoid into () intemipt 0 夕卜部中断 0 (INTO)if(startflag) if(iitime32) 说明收到的是引导码13.5ms (引导码)70.2777=48.7 个 inimebitnum=0;irdatabitnum=ii1ime;iilime=0;bimum+;if(bitnum=33)bitnum=0; ineceiveok=l;elsestailflag=l;irtime=0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1