用单片机解码红外遥控器
红外遥控控制电灯

红外遥控控制电灯丁炳亮[摘要]分析红外遥控编码原理和选用电子元件的功能特性。
通过利用51单片机解码红外遥控器按键来控制家用电灯的开关及亮度。
[关键词]红外编码:单片机:电灯电灯的控制开关有多种,例如声控、无线控制、人体红外感应等,但是电灯还很少有用红外遥控控制的。
现在家用电器越来越多的应用了红外遥控控制,红外遥控器家里一般至少都有一两个,用手中控制其他家电的红外遥控来控制电灯不但方便而且还可利用不同的按键来实现多种功能。
1功能介绍利用电视红外遥控控制电灯的开关和亮度,亮度最低时不是关灯的状态。
另外也通手拉开关来控制电灯,当灯灭着的时候拉开关可以开灯,灯亮着的时候拉开关可以关灯。
当断电后再来电时不管原来的灯是开还是关都应是关灯状态。
2电子元件介绍2.1电路原理电源VS1838B 单片机电灯拉线开关方框图65412U1OPTOCOUPLER-NPN电源模块C1100nC2100uXTAL24RST 1P1.012P1.113P1.214P1.315P1.416P1.517P1.618P1.719P3.2/INT06P3.3/INT17P3.4/T08P3.5/T19P3.0/RXD 2P3.1/TXD3P3.711XTAL15U2AT89C2051电源+5v5vR1100kW1CSWITCH2L1220VU32N5064BR12W005GR2100kD2LEDD31N4007原理图元件布局图电路布线图电路的布局图中由于布局的过程中出现了多处错误,布局图和实际的电路万用板都经过了修改,因此和实际的电路板布局有不一致的地方。
2.2元件特性1)电源使用的是手机充电器电路。
因为手机充电器输出的电压正好是5V,并且可以省去制作电源电路的工作。
为了保证电压稳定还可再用一个7805。
2)晶闸管选用通用型的。
3)单片机使用STC。
型号按条件选定。
4)红外接收器是采用一体化设计的VS1838B,该红外接收器内置IC,使外围元件很少。
c51、c52单片机红外线遥控接收解码c程序(可直接使用)

/ 亲,此程序以经过测试,可直接使用!!!/#include <reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(uchar x);sbit IRIN = P3^2;uchar IRCOM[4];void main(){ IE = 0x81;TCON = 0x01;IRIN=1;/* 此处可以根据按键码自由编写程序/以下为3*7遥控按键码//(也可以应用与其他类型遥控,本程序只以3*7遥控为例)/ / 0x45 0x46 0x47 // 0x44 0x40 0x43 // 0x07 0x15 0x09 // 0x16 0x19 0x0d // 0x0c 0x18 0x5e // 0x08 0x1c 0x5a // 0x42 0x52 0x4a /例如:while(1){switch(IRCOM[2]){case 0x45: P2=0x7f; break;case 0x44: P2=0xbf; break;case 0x07: P2=0xdf; break;case 0x16: P2=0xef; break;case 0x0c: P2=0xf7; break;case 0x08: P2=0xfb; break;case 0x42: P2=0xfd; break;case 0x52: P2=0xfe; break;case 0x4a: P2=0xff; break;case 0x5a: P2=0x00; break;}} */while(1);} //end main/**********************************************************/ void IR_IN(void) interrupt 0 //外部中断服务程序{unsigned char j,k,N=0;EX0 = 0;delay(15);if (IRIN==1){ EX0 =1;return;}//确认IR信号出现while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。
单片机STM32F103C8T6的红外遥控器解码系统设计

单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。
随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。
然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。
本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。
接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。
在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。
本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。
将总结本文的主要工作和创新点,并对未来的研究方向进行展望。
通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。
二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。
这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。
红外遥控器的工作原理主要基于红外辐射和光电器件的检测。
遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。
接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。
为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。
单片机实例--通过实例学习单片机(红外线遥控)

32 ;
37 ;38 ; 避开低电平,待直接判断高电平 39 L5: 40 41 42 L6: 43 JNB ACALL JMP JB ACALL IRIN, L6 DEL L5 IRIN, DEL L7 ; 等 IR 变为高电平 ; 调用 0.093ms 延时程序 ; 等 IR 变为低电平 ; 调用 0.093ms 延时程序
. . .
12MHz 30P SWR
X1 X2
. . . . . . .
+5V
R1k
. . .
+ 10μF 10 kΩ
。 。
P3.2 RST
SPK
+5V
1 2 3 VSS
S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7
引导码
用户码
用户码
图 C.6
红外线接收电路图
C.1.3
程序设计
程序中,主程序通过调用解码子程序,将接收到的红外线遥控器信号进行解码,再调 用遥控执行子程序,将解码后的按键值由 LED 显示出来。所以,解码子程序是程序中的主 要部分。 1.主要标号说明 ? ? ? ? ? ? ?
实例 C
红外线遥控应用实例
27║
成信号,再经红外线发射二极管,将红外线信号发射出去。
发射端部分 键盘 编码和调制 模块 红外线发射 LED
图 ห้องสมุดไป่ตู้.1
红外线发射端工作方框图 接收端部分
51单片机设计的红外线遥控器电路图及工作原理

51单片机设计的红外线遥控器电路图及工作原理你家里是否有一个电视机遥控器或者空调机遥控器呢?你是否也想让它遥控其他的电器甚至让它遥控您的电脑呢?那好,跟我一起做这个“红外遥控解码器”。
该小制作所需要的元件很少:单片机TA89C2051一只,RS232接口电平与TTL电平转换心片MAX232CPE 一只,红外接收管一只,晶振11.0592MHz,电解电容10uF4只,10uF 一只,电阻1K1个,300欧姆左右1个,瓷片电容30P2个。
发光二极管8个。
价钱不足20元。
电路图及原理:主控制单元是单片机AT89C2051,中断口INT0跟红外接受管U1相连,接收红外信号的脉冲,8个发光二极管作为显示解码输出(也可以用来扩展接其他控制电路),U3是跟电脑串行口RS232相连时的电平转换心片,9、10脚分别与单片机的1、2脚相连,(1脚为串行接收,2脚为串行发送),MAX232CPE的7、8脚分别接电脑串行口的2(接收)脚、3(发送脚)。
晶振采用11.0592MHz,这样才能使得通讯的波特率达到9600b/s,电脑一般默认值是9600b/s、8位数据位、1位停止位、无校验位。
电路就这么简单了,现在分析具体的编程过程吧。
如图所示,panasonic遥控器的波形是这样的(经过反复测试的结果)。
开始位是以3.6ms低电平然后是3.6ms高电平,然后数据表示形式是0.9ms低电平0.9ms 高电平周期为1.8ms表示“0”,0.9ms低电平2.4ms高电平周期为3.3ms表示“1”,编写程序时,以大于3.4ms小于3.8ms高电平为起始位,以大于2.2ms小于2.7ms高电平表示“1”,大于0.84ms小于1.11ms高电平表示“0”。
因此,我们主要用单片机测量高电平的长短来确定是“1”还是“0”即可。
定时器0的工作方式设置为方式1:mov tmod,#09h,这样设置定时器0即是把GATE置1,16位计数器,最大计数值为2的16次方个机器周期,此方式由外中断INT0控制,即INT0为高时才允许计数器计数。
自己写的51单片机的红外线遥控接收程序(C语言)

//51单片机做的红外遥控实验(C语言)#include<reg51.h>#define u8 unsigned char#define u16 unsigned int#define ID 0x00 //本遥控器的ID号sbit ir=P3^3;code u8 seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0-9的段码code u8 s[]={1,0x40,0x48,0x04,0x02,0x05,0x54,0x0A,0x1E,0x0E}; u8 buf[4];bit ir_f=0;u8 nu;void delay(u16 x){while(x--);}void show(u16 x){u8 i=0,k=0;u8 s[4];kk:s[i]=x%10;if((x/10)>=1){x=x/10;i++;goto kk;}k=i+1;for(i=0;i<k;i++){P0=seg[s[i]];P2=~(8>>i);delay(300);P0=0XFF;P2=0XFF;}}void timer0_init(){TH0=0;TL0=0;TMOD|=0x01;TR0=0;}u16 low_test(){u16 t;TR0=1;while((ir==0)&&((TH0&0X80)!=0X80));TR0=0;t=TH0;t<<=8;t|=TL0;TH0=0;TL0=0; //t=(TH*256+TL0);//机器周期数return t;}u16 high_test(){u16 t;TR0=1;while((ir==1)&&((TH0&0X80)!=0X80));TR0=0;t=TH0;t<<=8;t|=TL0;TH0=0;TL0=0;return t;}/*u16 time_test(bit x){}*/u8 receive_8bit(){u8 d,i;u16 t;for(i=0;i<8;i++){t=low_test();t=high_test();d>>=1;if((t>=2750)&&(t<=3100)){d|=0x80;}}return d;}void ir_decode(){u16 t;u8 i;if(ir==0)//有遥控信号{t=low_test();//8295-9000us,倍频的是16590-18000if((t>=14500)&&(t<=18000))//检查引导码低电平时间{t=high_test();if((t>=8000)&&(t<=9000))//检查高电平{for(i=0;i<4;i++){buf[i]=receive_8bit();}if(buf[0]==(~buf[1]))//检查系统码是否正确{if(buf[0]==ID){if(buf[2]==(~buf[3])){//具体按键处理ir_f=1; //遥控有效}}}}}}}/*void key(){if(buf[2]==0x40){P1^=(1<<0);}if(buf[2]==0x48){P1^=(1<<1);}}*/void ir_execuse(){if(ir_f==1){switch(buf[2]){case 0x40:P1^=(1<<0);break;case 0x48:P1^=(1<<1);break;case 0x04:P1^=(1<<2);break;case 0x02:P1^=(1<<3);break;case 0x05:P1^=(1<<4);break;case 0x54:P1^=(1<<5);break;case 0x0A:P1^=(1<<6);break;case 0x1E:P1^=(1<<7);break;}ir_f=0;}}void show_d(){u8 j;for(j=0;j<10;j++){if(s[j]==buf[2]){nu=j;break;}}show(nu);}void isr_init(){EA=1;EX1=1;//外部中断,一直看3.3有没有下降沿。
基于51单片机的红外线控制系统 2

单片机原理结课项目项目题目基于51单片机的红外线控制系统基于51单片机的红外线控制系统一、概述:红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。
由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以在设计红外线遥控器时,不必要像无线电遥控器那样,每套( 发射器和接收器) 要有不同的遥控频率或编码( 否则,就会隔墙控制或干扰邻居的家用电器) ,所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。
这对于大批量生产以及在家用电器上普及红外线遥控提供了极大的方面。
由于红外线为不可见光,因此对环境影响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电器,也不会影响临近的无线电设备。
基于51单片机的红外线控制系统。
要求通过单片机发送和接红外信号程序,根据接收的信号,执行有关动作的系统,能够实现近距离的无线通。
二、硬件设计1. 系统框图2. 电路原理图电路由五个模块构成(最小系统模块、红外接收模块、数码管显示模块、编程下载模块、电源模块)1) 最小系统STC12C5410AD 单片机红外接收头红外遥控器复位电路时钟振荡电路数码光显示最小系统由stc12c5410ad单片机,按键复位电路,时钟振荡电路构成。
a.电源电源采用5V直流电供电。
b.时钟、复位电路本电路选用12MHz晶振。
2)红外接收模块3)显示模块三、软件设计1.红外编解码原理红外线发射编码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制‘0’;以脉宽为0.565ms、间隔1.658ms、周期为2.25ms的组合表示二进制‘1’;红外接收头接收的信号和发射编码相反;一组编码由一个引导码,四个字节数据组成;引导码由9ms的高电位和4.5ms的地电位组成。
单片机对不同品牌空调红外遥控代码

单片机对不同品牌空调红外遥控代码摘要:I.引言- 单片机的概念与作用- 红外遥控技术的发展与应用- 本文研究内容与目的II.单片机对空调红外遥控代码的解析- 单片机简介- 空调红外遥控器的工作原理- 单片机对红外遥控代码的接收与解析III.不同品牌空调红外遥控代码的差异- 空调品牌与红外遥控代码的关系- 常见空调品牌红外遥控代码的对比- 代码差异的原因与影响IV.单片机对不同品牌空调红外遥控代码的兼容性- 单片机在空调遥控器中的应用- 单片机对不同品牌空调红外遥控代码的兼容性设计- 兼容性实现的方法与技术V.结论- 单片机在红外遥控技术中的重要性- 单片机对不同品牌空调红外遥控代码的兼容性的影响- 未来发展趋势与展望正文:随着科技的飞速发展,人们的生活水平不断提高,对于家电产品的需求也越来越高。
空调作为家用电器中的重要组成部分,其遥控器的功能也日益丰富。
而单片机技术的出现,则为空调遥控器的发展提供了新的可能。
本文将针对单片机对不同品牌空调红外遥控代码进行探讨,分析其解析原理、品牌差异及兼容性。
首先,我们需要了解一下单片机的基本概念。
单片机(Microcontroller Unit, MCU)是一种集成了CPU、存储器、外设接口等多种功能于一体的微型计算机。
通过编程,单片机可以实现对各种设备的控制与操作。
在空调遥控器中,单片机起到了接收与解析红外遥控信号的作用。
空调遥控器通过红外线发射信号,遥控器与空调器之间通过红外信号进行通信。
单片机接收到红外信号后,通过内置的解码算法对信号进行解析,识别出遥控器发出的指令,从而实现对空调的控制。
这一过程涉及到信号的接收、放大、滤波、解调、解码等多个环节。
在实际应用中,不同品牌的空调遥控器红外遥控代码存在一定差异。
这是由于各厂家为了保证遥控器的兼容性与独特性,采用了不同的编码方式。
例如,美的空调遥控器的编码方式为NEC协议,而格力空调遥控器的编码方式为Mitsubishi协议。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用单片机解码红外遥控器遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。
如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。
而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。
下面以TC9012编码芯片的遥控器为例。
谈谈如何用常用的51系统单片机进行遥控的解码。
一、编码格式1、0和1的编码遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0和1的编码有所不同。
通常有曼彻斯特编码和脉冲宽度编码。
TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其O码和1码如图1所示(以遥控接收输出的波形为例)。
O码由O.56ms低电平和0.56ms高电平组合而成.脉冲宽度为1.12ms.1码由0.56ms低电平和1.69ms高电平组合而成.脉冲宽度为2.25ms。
在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。
2、按键的编码当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。
根据各部分的功能。
可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。
遥控器发射代码时.均是低位在前。
高位在后。
由图2分析可以得到.引导码高电平为4.5ms,低电平为4.5ms。
当接收到此码时.表示一帧数据的开始。
单片机可以准备接收下面的数据。
地址码由8位二进制组成,共256种.图中地址码重发了一次。
主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。
不同的设备可以拥有不同的地址码.因此。
同种编码的遥控器只要设置地址码不同,也不会相互干扰。
图中的地址码为十六进制的0EH(注意低位在前)。
在同一个遥控器中.所有按键发出的地址码都是相同的。
数据码为8位,可编码256种状态,代表实际所按下的键。
数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。
如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。
在同一个遥控器上.所有按键的数据码均不相同。
在图2中,数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前).两者之和应为0FFH。
二、单片机遥控接收电路红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。
如CXA20106,此种方法电路复杂,现在一般不采用。
较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是+5V电源、地、信号输出。
常用的一体化接收头的外形及引脚见图3和图4。
红外接收头的信号输出接单片机的INTO或INTl脚.典型电路如图5所示.图中增加了一只PNP型三极管对输出信号进行放大。
三、遥控信号的解码算法及程序编制平时。
遥控器无键按下。
红外发射二极管不发出信号,遥控接收头输出信号1。
有键按下时.O和1编码的高电平经遥控头倒相后会输出信号O.由于与单片机的中断脚相连,将会引起单片机中断(单片机预先设定为下降沿产生中断)。
单片机在中断时使用定时器0或定时器1开始计时.到下一个脉冲到来时,即再次产生中断时,先将计时值取出。
清零计时值后再开始计时.通过判断每次中断与上一次中断之间的时间间隔。
便可知接收到的是引导码还是O和1。
如果计时值为9ms。
接收到的是引导码,如果计时值等于1.12ms,接收到的是编码O。
如果计时值等于2 25ms.接收到的是编码1。
在判断时间时,应考虑一定的误差值。
因为不同的遥控器由于晶振参数等原因,发射及接收到的时间也会有很小的误差。
以接收TC9012遥控器编码为例,解码方法如下:(1)设外部中断0(或者1)为下降沿中断,定时器0(或者1)为16位计时器.初始值均为O。
(2)第一次进入遥控中断后,开始计时。
(3)从第二次进入遥控中断起,先停止计时。
并将计时值保存后,再重新计时。
如果计时值等于前导码的时间,设立前导码标志。
准备接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面已接收到前导码,则判断是遥控数据的O还是1。
(4)继续接收下面的地址码、数据码、数据反码。
(5)当接收到32位数据时,说明一帧数据接收完毕。
此时可停止定时器的计时,并判断本次接收是否有效.如果两次地址码相同且等于本系统的地址,数据码与数据反码之和等于0FFH,则接收的本帧数据码有效。
否则丢弃本次接收到的数据。
(6)接收完毕,初始化本次接收的数据,准备下一次遥控接收。
下面是一个简单的实例代码*This sample is used for control light by infrared .//使用12M晶振适用于TC9012芯片,其他芯片请自行更改解码时序#include<reg52.h>#include<stdio.h>#include<intrins.h>////////////////////////////////////////////////#define TURE 1#define FALSE 0////////////////////////////////////////////////sbit IR=P3^2;//红外接口标志////////////////////////////////////////////unsigned char irtime;//红外用全局变量bit irpro_ok,irok;unsigned char IRcord[4];unsigned char irdata[33];//////////////////////////////////////////////void Delay(unsigned char mS);void Ir_work(void);void Ircordpro(void);//////////////////////////////////////////////////////////////////void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数{irtime++;}///////////////////////////////////////////////////////////////////////void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数{static unsigned char i;static bit startflag;if(startflag) //第一次进入中断,Startflag标志是0,不执行下面的语句,只是将标志位置1 开始计时{ //第二次中断开始判断,即发送地址码的第一位的下降沿。
if(irtime<42&&irtime>=33)//引导码TC9012的头码//大致时间是0.8448ms-10.762ms TC9012的引导时间大致是9.0msi=0;irdata[i]=irtime;//一次存储32位电平宽度,其中irdata[0]中存放的是引导码的时间长度,所以下面的程序从irdata[1]开始判断irtime=0;i++;if(i==33){irok=1;i=0;}}else{irtime=0;startflag=1;}}////////////////////////////////////////////////////////////////////void TIM0init(void)//定时器0初始化{TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值//大致时间是0.256msTH0=0x00;//reload valueTL0=0x00;//initial valueET0=1;//开中断TR0=1;}///////////////////////////////////////////////////////////////////void EX0init(void){IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2)EX0 = 1; // Enable EX0 InterruptEA = 1;}void Ir_work(void)//红外键值散转程序{switch(IRcord[2])//判断第三个数码值,因为处理后,IRcord[0]、IRcord[1]中存放是地址码,IRdata[2]中存放数据{case 0:P0=0xf9;break;//1 显示相应的按键值case 1:P0=0xa4;break;//2case 2:P0=0xb0;break;//3case 3:P0=0x99;break;//4case 4:P0=0x92;break;//5case 5:P0=0x82;break;//6case 6:P0=0xf8;break;//7case 7:P0=0x80;break;//8case 8:P0=0x90;break;//9}irpro_ok=0;//处理完成标志}void Ircordpro(void)//红外码值处理函数unsigned char i, j, k;unsigned char cord,value;k=1;for(i=0;i<4;i++)//处理4个字节{for(j=1;j<=8;j++) //处理1个字节8位{cord=irdata[k];if(cord>7)//大于某值为1时间大于1.792ms认为发射的是1,因为在TCP012的编//码中将发射脉冲时间大于2.25ms的当做1,将时间是1.12的当做是0,考虑一定的误差,将cord设为7.{value=value|0x80;//说明是1}else{value=value;//说明是0}if(j<8){value=value>>1;//因为先接受到得时数据的低字节位。
}k++;}IRcord[i]=value;value=0;}irpro_ok=1;//处理完毕标志位置1irok=0;}/////////////////////////////////////////////////////////////////void main(void){EX0init(); // Enable Global Interrupt FlagTIM0init();//初始化定时器0P2=0x00;//8位数码管全部显示while(1)//主循环{if(irok){Ircordpro();//码值处理}if(irpro_ok)//step press key{Ir_work();//码值识别散转}}}四、遥控代码与键盘码的转换在应用系统中,带遥控器的仪器设备一般都带按键。