用单片机解码红外遥控器

合集下载

红外遥控控制电灯

红外遥控控制电灯

红外遥控控制电灯丁炳亮[摘要]分析红外遥控编码原理和选用电子元件的功能特性。

通过利用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程序(可直接使用)

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单片机的红外遥控器解码系统的设计和实现过程。

随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。

然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。

本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。

接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。

在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。

本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。

将总结本文的主要工作和创新点,并对未来的研究方向进行展望。

通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。

二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。

这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。

红外遥控器的工作原理主要基于红外辐射和光电器件的检测。

遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。

接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。

为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。

单片机实例--通过实例学习单片机(红外线遥控)

单片机实例--通过实例学习单片机(红外线遥控)
17 LOOP:
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单片机设计的红外线遥控器电路图及工作原理

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语言)

//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单片机的红外线控制系统 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协议。

单片机STM32F103C8T6的红外遥控器解码系统设计

单片机STM32F103C8T6的红外遥控器解码系统设计

78M i c r o c o n t r o l l e r s &E m b e d d e d S ys t e m s 2019年第10期w w w .m e s n e t .c o m .c n单片机S T M 32F 103C 8T 6的红外遥控器解码系统设计胡进德(仙桃职业学院科研处,仙桃433000)摘要:设计了一种适用于N E C 红外传输协议的解码系统㊂系统以单片机S TM 32F 103C 8T 6为核心,采用外部中断和定时器进行软件解码,解码结果通过串口调试软件在P C 机上进行了验证㊂详细介绍了N E C 红外传输协议和解码方法,包括系统软硬件设计㊁软件设计流程图㊁核心功能函数和程序代码㊂关键词:S TM 32F 103C 8T 6;N E C 红外传输协议;红外解码;外部中断;定时器中图分类号:T P 31 文献标识码:AD e s i g n o f D e c o d i n g S ys t e m f o r I n f r a r e d R e m o t e C o n t r o l l e r B a s e d o n S T M 32F 103C 8T 6H u J i n d e(S c i e n t i f i c R e s e a r c h D e p a r t m e n t ,X i a n t a o V o c a t i o n a l C o l l e ge ,X i a n t a o 433000,C h i n a )A b s t r a c t :A d e c o d i n g s y s t e m of i n f r a r e d r e m o t e c o n t r o l l e r s u i t a b l e f o r N E C i n f r a r e d t r a n s p o r t p r o t o c o l i s d e s ig n e d .Th e s ys t e m t a k e s M C U S TM 32F 103C 8T 6a s t h e c o r e t o c o m p l e t e s o f t w a r e d e c o d i n g b y e x t e r n a l i n t e r r u p t a n d t i m e r ,a n d t h e d e c o d i n g re s u l t s a r e v e r if i e d o n P C b y s e r i a l d e b ug g i n g s o f t w a r e .N E C i n f r a r e d t r a n s p o r t p r o t o c o l a n d d e c o d i n g m e th o d a r ei n t r o d u c e d i n d e t a i l ,i n c l u d i n gt h e s o f t w a r e a n d h a r d w a r e d e s i g n ,t h e f l o w c h a r t o f s o f t w a r e d e s i g n ,c o r e f u n c t i o n s a n d p r o gr a m c o d e .K e y wo r d s :S TM 32F 103C 8T 6;N E C i n f r a r e d t r a n s p o r t p r o t o c o l ;i n f r a r e d d e c o d i n g ;e x t e r n a l i n t e r r u p t ;t i m e r 引 言红外遥控具有体积小㊁信息传输可靠㊁功耗低㊁成本低等显著特点,越来越多地应用于嵌入式系统㊂红外遥控系统一般由发射和接收两大部分组成,红外遥控器所发射的信号编码格式不同,其解码的方法也会随之发生变化㊂目图1 N E C 红外传输协议的帧数据格式前市场上所用红外遥控器广泛使用两种形式的编码格式,一种是采用N E C 红外传输协议的P WM (脉冲宽度调制)方式,一种是采用P h i l i ps 红外传输协议的P P M (脉冲位置调制)方式[1]㊂通过对市场上一种名为T E L E S K Y 的红外遥控器[2]所发射的信号进行测试,研究表明,其信号波形和脉冲间隔时间符合N E C 红外传输协议,无重复码㊂本文依项目需要针对T E L E S K Y 红外遥控器设计了基于单片机S TM 32F 103C 8T 6的解码系统㊂1 N E C 红外传输协议N E C 红外传输协议的主要特征是:一帧数据包含8位用户编码(地址码)和8位按键数据码(命令码);用户编码和按键数据码均传送两次,一次是原码,一次是反码,以确保可靠传送;采用P WM (脉冲宽度调制)方式,以发射红外载波的占空比代表比特 0 和比特 1;载波频率是38k H z ;一个数据位的传输时间是, 0 用时1.125m s, 1 用时2.25m s [1]㊂N E C 红外传输协议的帧数据格式如图1所示,其位定义如图2所示㊂图2 N E C 红外传输协议的位定义在图1中红外遥控器发射的每帧数据有32位,由16位用户编码(含低8位用户编码和高8位用户编码)㊁8位按键数据码和8位按键数据码的反码组成㊂每帧数据发敬请登录网站在线投稿 2019年第10期79送前有一个引导码(同步码),引导码由一个9m s 的高电平和一个4.5m s 的低电平组成㊂每帧数据按照低位在前㊁高位在后顺序发送[3]㊂帧数据中采用反码是为了增加传输的可靠性,因此,反码可用于解码时进行校验对比㊂需要注意的是,遵循N E C 红外传输协议的发射芯片可有两种用户编码方式,一种是8位用户码原码加8位用户码的反码,另一种是16位用户编码,通过改变红外发射芯片外部电路来选择不同的用户编码方式[1]㊂在图2中比特 1 由一个0.56m s 的脉冲和1.69m s的低电平构成,比特 0 由一个0.56m s 的脉冲和0.56m s 的低电平构成㊂一个0.56m s 的脉冲对应0.56m s 的连续载波[1]㊂2 解码系统硬件设计单片机解码红外遥控器常用的方法有查询法㊁外部中断法和定时器捕获法[4]㊂本系统采用外部中断法,即通过外部中断检测红外信号利用单片机定时器测量帧数据中每一位数据的传输时间,从而识别数据位是比特 1还是比特 0[3],解码系统硬件设计如图3所示㊂图3 红外信号接收与解码电路图3中U 1为S TM 32F 103C 8T 6处理器,这是一款以A R M C o r t e x M 3为内核的32位单片机,具有运行速度快㊁处理能力强㊁外设接口丰富㊁价格低廉等特点,专门应用于对性能要求较高㊁成本要求较低以及低功耗的场合,其最高工作频率为72MH z ,工作电压为2~3.6V ,64K B的闪存和20K B 的S R AM ,37个I /O ,与通用端口G P I O映射的外部中断E X T I 有16个,1个16位高级控制定时器,3个16位通用定时器,3个U S A R T 串口通信模块等[5]㊂本系统通过S TM 32F 103C 8T 6的P A 7引脚以外部中断方式检测红外信号,使用通用定时器T I M 2测量帧数据中每一位数据的传输时间,解码结果通过U S A R T 1(P A 9为发送引脚)和串口调试软件在P C 机上显示㊂图3中U 2为一体化红外接收头H S 0038B ,它负责将调制在38k H z 上的红外编码信号接收和解调后送给S TM 32F 103C 8T 6的P A 7引脚进行检测㊂H S 0038B 第1引脚为正电源引脚,工作电压为2.7~5.5V ,实际工作电压为3.3V ,与S TM 32F 103C 8T 6工作电压相同;第2引脚为负电源引脚,接地;第3引脚为输出端,连接S TM 32F 103C 8T 6的P A 7引脚㊂当H S 0038B 没有接收到红外遥控信号时,第3引脚输出保持高电平;当接收到红外遥控信号时,第3引脚输出从高电平变为低电平,其下降沿触发S TM 32F 103C 8T 6的外部中断[6-7]㊂需要注意的是,一体化红外接收头输出解调后的脉冲信号电平与红外遥控器发送的编码格式电平反相[8],即S TM 32F 103C 8T 6的P A 7引脚接收到的帧数据格式电平与图1反相,其数据位定义也与图2反相:比特 1 由一个0.56m s 的低电平和1.69m s 的高电平构成,传输比特 1 需要2.25m s ;比特 0 由一个0.56m s 的低电平和0.56m s 的高电平构成,传输比特 0 需要1.125m s [9]㊂因此,通过外部中断E X T I 和定时器T I M 2统计P A 7引脚接收到的帧数据中2个下降沿之间的间隔时间就可得到帧数据中每一位数据的传输时间,从而识别数据位是比特 1 还是比特 0㊂3 解码系统软件设计在A R M 嵌入式系统开发中,对处理器功能模块的操作既可以通过对芯片底层的寄存器,也可以使用S T 公司提供的标准函数库[10],本系统采用标准函数库操作S T M 32F 103C 8T 6相关寄存器㊂解码系统软件设计主要涉及5个方面㊂3.1 配置红外脉冲信号输入引脚P A 7为下降沿触发中断通过初始化通用端口G P I O ㊁外部中断E X T I 和嵌套向量中断控制器N V I C 的相关寄存器,配置P A 7为下降沿触发中断㊂3.1.1 初始化G P I O 的相关寄存器将P A 7配置为浮空输入[10],开启端口时钟和A F I O 时钟,相关初始化程序如下:G P I O _I n i t T y pe D ef G P I O _I n i t S t r u c t u r e ; //声明结构体变量以便初始化G P I O 相关寄存器R C C _A P B 2P e r i p h C l o c k C m d (R C C _A P B 2P e r i p h _G P I O A |R C C _A P B 2P e r i ph _A F I O ,E N A B L E );//开启G P I O 端口时钟,用到E X T I 必须开启A F I O 时钟G P I O _I n i t S t r u c t u r e .G P I O _P i n =G P I O _P i n _7;//选中当前端口的引脚7G P I O _I n i t S t r u c t u r e .G P I O _M o d e =G P I O _M o d e _I N _F L O A T -I N G ;//设定为浮空输入G P I O _I n i t (G P I O A ,&G P I O _I n i t S t r u c t u r e);//初始化G P I O A 相关寄存器80M i c r o c o n t r o l l e r s &E m b e d d e d S ys t e m s 2019年第10期w w w .m e s n e t .c o m .c n3.1.2 初始化E X T I 的相关寄存器应将P A 7与外部中断线连接[10],并配置为下降沿触发中断请求,相关初始化程序如下:E X T I _I n i t T y pe D ef E X T I _I n i t S t r u c t u r e ;//声明结构体变量以便初始化E X T I 相关寄存器G P I O _E X T I L i n e C o n f i g (G P I O _P o r t S o u r c e G P I O A ,G P I O _P i n -S o u r c e 7);//将P A 7与外部中断线连接E X T I _I n i t S t r u c t u r e .E X T I _L i n e =E X T I _L i n e 7; //使用外部中断输入线7E X T I _I n i t S t r u c t u r e .E X T I _M o d e =E X T I _M o d e _I n t e r r u pt ; //设置E X T I 线路为中断请求E X T I _I n i t S t r u c t u r e .E X T I _T r i g g e r =E X T I _T r i g g e r _F a l l i n g ;//设置E X T I 线路为下降沿触发中断请求E X T I _I n i t S t r u c t u r e .E X T I _L i n e C m d =E N A B L E ; //开放E X T I 线路中断请求E X T I _I n i t (&E X T I _I n i t S t r u c t u r e );//初始化E X T I 相关寄存器3.1.3 初始化N V I C 的相关寄存器程序中用到了2个中断源:来自P A 7引脚的E X T I 下降沿触发中断和定时器T I M 2计数溢出中断㊂设定E X T I 中断优先级高于T I M 2中断,使用v o i d N V I C _P r i o r i t y-G r o u p C o n f i g (u i n t 32_t N V I C _P r i o r i t y G r o u p )函数设定优先级分组为第1组,E X T I 中断抢占优先级为1,T I M 2中断抢占优先级为0,相关初始化程序如下:N V I C _I n i t T y pe D ef N V I C _I n i t S t r u c t u r e ;//声明结构体变量以便初始化N V I C 相关寄存器N V I C _P r i o r i t y G r o u p C o n f i g (N V I C _P r i o r i t y G r o u p_1);//选择第1组 N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l =E X T I 9_5_I R Q n ;//配置中断源N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l P r e e m p t i o n P r i o r i t y =1;//抢占优先级为1N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l S u b P r i o r i t y =1;//子优先级为1N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l C m d =E N A B L E ;//使能中断通道N V I C _I n i t (&N V I C _I n i t S t r u c t u r e );//初始化N V I C 相关寄存器3.2 配置定时器T I M 2每0.1m s 产生一次溢出中通过初始化定时器T I M 2和N V I C 的相关寄存器,配置T I M 2每0.1m s 产生一次溢出中断,以便在其中断处理程序中统计帧数据中每一位数据的传输时间㊂3.2.1 初始化T I M 2的相关寄存器设定系统时钟为72MH z ,预分频值P r e s c a l e r 为3600,计数器自动重装值P e r i o d 为2,此时定时器T I M 2每0.1m s 产生一次溢出中断[10]㊂相关初始化程序如下:S ys t e m I n i t (); //设置系统时钟为72MH z T I M _T i m e B a s e I n i t T y pe D ef T I M _S t r u c t I n i t ;//声明结构体变量以便初始化T I M 2寄存器R C C _A P B 1P e r i p h C l o c k C m d (R C C _A P B 1P e r i ph _T I M 2,E N A -B L E );//开启T I M 2时钟T I M _S t r u c t I n i t .T I M _P e r i o d =2;//设定计数器自动重装值T I M _S t r u c t I n i t .T I M _P r e s c a l e r =3600;//设定预分频值T I M _S t r u c t I n i t .T I M _C l o c k D i v i s i o n =T I M _C K D _D I V 1;//设置时钟分割T I M _S t r u c t I n i t .T I M _C o u n t e r M o d e =T I M _C o u n t e r M o d e _U p;//设置向上计数模式T I M _T i m e B a s e I n i t (T I M 2,&T I M _S t r u c t I n i t );//初始化T I M 2寄存器T I M _I T C o n f i g (T I M 2,T I M _I T _U p d a t e ,E N A B L E ); //使能T I M 2中断T I M _C m d (T I M 2,E N A B L E );//启动T I M 2T I M _C l e a r F l a g (T I M 2,T I M _F L A G _U pd a te ); //清除T I M 2的待处理标志位3.2.2 初始化N V I C 的相关寄存器配置定时器T I M 2为中断源,设置其优先级,相关初始化程序如下:N V I C _P r i o r i t y G r o u p C o n f i g (N V I C _P r i o r i t y G r o u p _1);//选择第1组N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l =T I M 2_I R Q n;//配置中断源N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l C m d =E N A B L E ;//使能中断通道N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l P r e e m p t i o n P r i o r i t y=0;//抢占优先级为0N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l S u b P r i o r i t y=1;//子优先级为1N V I C _I n i t (&N V I C _S t r u c t I n i t ); //初始化N V I C 相关寄存器3.3 统计帧数据中每一位脉冲的传输时间定时器T I M 2每0.1m s 产生一次溢出中断,在T I M 2中断服务程序中,全局变量i r _t i m e 每0.1m s 自动加1㊂通过i r _t i m e 可统计P A 7引脚接收的帧数据中相邻的2个下降沿之间的间隔时间,同时也获得帧数据中每一位脉冲的传输时间㊂程序如下:v o i d T I M 2_I R Q H a n d l e r (v o i d ) //T I M 2中断服务程序{T I M _C l e a r I T P e n d i n g B i t (T I M 2,T I M _I T _U pd a te );//清除T I M 2中断标志位以便下一个0.1m s 到来时触发T I M 2//中断i r _t i m e ++;//全局变量i r _t i m e 的计数值自动加1}3.4 存储从引导码开始的33个脉冲传输时间当H S 0038B 没有接收到红外信号时,系统默认处在敬请登录网站在线投稿 2019年第10期81图4 E X T I 中断服务流程图空闲 状态,P A 7引脚一直是高电平㊂当H S 0038B 接收到红外信号时,P A 7引脚由高电平变为低电平,此时将触发外部中断E X T I ,在E X T I 中断服务程序中先判断采集到的脉冲信号是否为引导码,如果i r _t i m e 计数值大于90(9m s )且小于150(15m s),则可视为引导码(引导码传输时间理论值为13.5m s,考虑到S TM 32F 103C 8T 6和红外遥控发射器的晶振频率与标称值会有一定的偏差,以及H S 0038B 红外接收头输出波形的轻微畸变,在程序设计时要留有一定的容限误差[4]),并将从引导码开始的33个脉冲传输时间(i r_t i m e 的计数值)保存到事先定义好的数组i r d a t a [33](全局变量)中㊂E X -T I 外部中断服务程序流程图如图4所示㊂3.5 从数组i r d a t a [33]中提取比特 1和比特 0并形成4个字节的按键码数组i r d a t a [33]存放了33个脉冲传输时间,其中数组元素i r d a t a [0]存放的是引导码传输时间,其他32个数组元素i r d a t a [1]~i r d a t a [32]存放了4个字节按键码的传输时间㊂比特 1 的传输时间为2.25m s,其对应的数组元素取值为22或23;比特 0 的传输时间为1.125m s,其对应的数组元素取值为11或12㊂在程序设计时同样要留有一定的容限误差,当数组元素i r d a t a [1]~i r d a t a [32]取值为20~25时,可认为接收到比特 1,否则认为接收到比特 0 ㊂因此从数组i r d a t a [33]中可提取4个字节按键码:i r -d a t a [1]~i r d a t a [16]提取16位用户编码,i r d a t a [17]~i r d a t a [24]提取8位按键数据码,i r d a t a [25]~i r d a t a [32]提取8位按键数据码的反码㊂提取4个字节按键码的函数流程图如图5所示㊂4 解码结果验证为了验证解码方案的正确性,通过串口调试软件将实验结果显示在P C 机上㊂图6是T E L E S K Y 遥控器外观和对应的按键数据码,图7是显示在P C 机上的实验结果㊂图7中有84个数据码,从左向右每4个数据码(对应4个字节共32位比特)一组对应一个按键,分别指示按键的用户码原码㊁用户码的反码㊁按键数据码和按键数据码的反码㊂如遥控器左上角第一个按键 C H- 的解码为00F F 45B A ,按键 C H图5 提取4个字节按键码的函数流程图图6 遥控器外观和按键数据码的解码为00F F 46B 9,其他按键的解码依此类推㊂从解码的实验结果可以看出,32位比特的前16位为用户码,后16位为8位按键数据码和按键数据码的反码,符合N E C 红外传输协议,且图7中21个按键数据码与图6中21个按键的数据码相同,相互依次对应,从而验证了解码方法的正确性㊂图7 串口调试软件显示的按键码结 语本文介绍的红外遥控器解码方法原理直观㊁简单可靠,已经应用于实际项目中,可为无线遥控嵌入式系统学习者提供一个应用范例㊂该方法不仅适用于N E C 红外传输协议,对于其他传输协议的解码同样有很好85敬请登录网站在线投稿2019年第10期85表4使用H M M在嘈杂环境下识别结果控制指令1号正确次数/总次数2号正确次数/总次数3号正确次数/总次数4号正确次数/总次数闭合拇指7/106/105/104/10伸开拇指6/107/105/106/10手腕逆时针7/106/107/108/10手腕归位6/104/104/105/10伸开手掌5/105/106/107/10握紧拳头6/104/105/106/10结语HMM算法实现的前提是需要大量的语音样本训练,不仅需要考虑到语音语调的差别,还要考虑非特定人性别年龄的差异,这样才能够适应实际语音中的不同情况,因此HMM算法具有良好的识别性和抗噪性㊂参考文献[1]周艳萍.机器人嵌入式语音识别系统设计与开发[D].广州:华南理工大学,2012.[2]周慧芳.基于HMM的嵌入式语音识别系统的研究[D].广州:广东工业大学,2011.[3]黄岗.马尔可夫及隐马尔可夫模型的应用[J].电子设计工程,2013,21(17):6062.[4]任昕.基于隐马尔可夫模型和卷积神经网络的W e b安全检测研究[D].长沙:湖南大学,2018.[5]王稚慧.基于HMM建模的语音识别算法的研究[D].西安:西安建筑科技大学,2005.[6]曹冠彬.基于HMM的连续语音识别技术研究[D].南京:南京理工大学,2018.[7]袁腾,李秋红,杨国斌,等.基于Z i g B e e和3G技术的W S N s 环境监控系统设计[J].传感器与微系统,2012,31(6):128129,133.[8]田泽,智爱娟,阎效莺,等.U D A1341T S在嵌入式语音系统中的应用[J].西北大学学报:自然科学版,2006(2):214220.[9]周夕良.嵌入式语音识别系统研究[J].电脑与信息技术,2014,22(1):5658.张起浩㊁蒋少国,主要研究方向为智能硬件设计;赵鹏(助理实验师),通讯作者,主要研究方向为智能硬件设计㊁语音识别㊂(责任编辑:薛士然收稿日期:2019-04-23)[5]U n d e r w o o d C,P e l l e g r i n o S,L a p p a s V J,e t a l.U s i n gC u b e S a t/m i c r o s a t e l l i t e t e c h n o l o g y t o d e m o n s t r a t e t h e A u-t o n o m o u s A s s e m b l y o f a R e c o n f i g u r a b l e S p a c e T e l e s c o p e(A A R e S T)[J].A c t a A s t r o n a u t i c a,2015(114):112122.[6]韩忠辉.基于G P I B的无线通信计量自动测试系统[J].自动化与仪器仪表,2016(6):110.[7]刘倩茜,王格芳.基于多总线结构的电路板测试系统设计研究[J].价值工程,2016,35(32):131133.[8]S h l a d o v e r S E.C o n n e c t e d a n d a u t o m a t e d v e h i c l e s y s t e m s:I n-t r o d u c t i o n a n d o v e r v i e w[J].J o u r n a l o f I n t e l l i g e n t T r a n s p o r-t a t i o n S y s t e m s,2018,22(3):190200.[9]张凯,李涵,姜静.基于A T E与B I T组合的N AM P自动测试与故障诊断系统设计[J].海军航空工程学院学报,2015,30(4):321325.[10]刘鹏飞,谢森,姚玉山,等.某型制导武器通用自动测试系统方案设计[J].计算机测量与控制,2017,25(6):9599.[11]曹兴冈,韩晨.基于P X I航电计算机测试设备的设计与实现[J].电子技术,2016(2):6.[12]刘新飞,李亚利,王东,等.通用航管二次雷达功放模块自动测试系统研制[J].计算机测量与控制,2016,24(9):4749.[13]L i u Y,P e n g Y,W a n g B,e t a l.R e v i e w o n c y b e r p h y s i c a ls y s t em s[J].I E E E/C A A J o u r n a l o f A u t o m a t i c a S i n i c a,2017,4(1):2740.[14]郭栋梁,刘新妹,殷俊龄,等.通用电路板自动故障诊断系统的设计与实现[J].中国测试,2016,42(7):112116.[15]宋丽涵,张琴.基于总线技术的仪器仪表自动检定系统设计[J].兰州文理学院学报:自然科学版,2016(2):5256.何进(讲师),主要从事电子技术㊁电力电子技术等教学研究㊂(责任编辑:薛士然收稿日期:2019-05-06)的参考价值㊂参考文献[1]李幸泽.基于W E B方式的智能家电控制网关的硏究[D].广州:广东工业大学,2012.[2]T E L E S K Y.红外线遥控器,2019.[3]李雪莹.基于单片机的空调红外线编解码系统的设计和实现[D].成都:电子科技大学,2014.[4]何乃味.单片机定时器捕获模式解码红外遥控器的方法[J].现代电子技术,2012(18):1113.[5]意法半导体(S T).S TM32F103x8d a t a s h e e t,2019.[6]圣狄豹.H S0038B红外线接收发射对管,2019.[7]管芳绍,徐志江,孟利民.基于嵌入式系统的抗干扰红外软解码方法[J].计算机技术与应用,2010(10):3033.[8]杨萍.基于F P G A的功放遥控控制系统的设计与实现[D].成都:电子科技大学,2015(3):2933.[9]胥加林,游安华,皮大伟.基于单片机的智能红外遥控开关[J].机械制造与自动化,2016(4):200201.[10]肖广兵,万茂松,羊玢.A RM嵌入式开发实例[M].北京:电子工业出版社,2013.胡进德(副教授),主要研究方向为嵌入式系统㊁机电一体化㊂(责任编辑:薛士然收稿日期:2019-05-27)。

红外解码讲解

红外解码讲解

红外解码一直是单片机中应用较多的,需要设备加装专用解码芯片,这就大大减轻了单片机的负担。

需要单片机样例使用延时做红外解码,比较容易理解,但是由于在主程序中使用,当存在许多中断时就可能造成误码,很多时候误码率较高,成品中则一般使用中断方式。

下面通过TC9012和uPD6121芯片为例大致讲解解码原理:先看一些遥控器发射波形图从上图可以看出 4.5ms高电平+4.5ms低电平称为头码,用于识别是否遥控码开始,uPD6121的头码是9ms+4.5ms,其他的一样,一些datasheet会提及连续发射码的波形图(就是一直按下某一遥控器按键),这里我们不做分析,仅分析单次按键发射的正个码的波形图。

头码过后可以看到4个8位的数据,我们最终目的就是要把这个 32位(4x8)从一体化红外接收头提取出来,并转换成16进制数,用于区分不同按键按下得出的不同数值。

在遥控器发射波形中,可以看出,8位数中的0或者1不是用高低电平表示,而是用不同的低电平的宽度表示,0.565ms表示0,1.69ms表示1,2个位中间还会有一个0.56ms的高电平(上图阴影部分)。

这个是红外遥控器发射的波形,图中看到的阴影高电平表示载波,一般使用38KHz,遥控器发射出去的含有载波的红外信号通过一体化红外接收头处理后得到的是含有载波的反向的波形,也就是没有上图中的阴影部分。

大致如下图一体化红外接收头内部集成了选频放大(38KHz左右频率增益最大),检波(把38KHz的载波滤除),放大整形(变成容易检测的矩形波)。

看到如上图波形,表示单片机引脚可以接收到的波形,我们只要通过单片机读取波形并分析波形的宽度,然后分辨出是头码,还是0或者1,最后整理出这组码的16进制组合。

正确的解码结果是按同一个按键得出的16进制数值是不变化的。

通过这个原理,我们可以分辨出每个按键的键值。

mini80/mini80e样例程序中使用的红外解码程序,应用了外部中断,平时从书上或者网络上看到的解码一般是单纯解码,整个程序不做其他工作,这种方式可以使用普通io口,用延时等待的方法判断接收到的是高电平还是低电平,从而判断码值。

摇控器规格书 红外遥控 单片机解码

摇控器规格书  红外遥控  单片机解码

遥控器规格
一.外型尺寸:
1.1主尺寸:86mm〈长〉*38mm〈宽〉*6mm〈厚〉
二.材质:
2.1 外壳: ABS料黑色
2.2 电池: CR2025
2.3 面贴按键按力:250-300克力
2.4 IC; HT6221
三.控制角度:
3.1 有效发射角度:45度
四.控制距离:
4.1 有效距离≥8m
五.按键寿命测试:
5.1 30万次以上
遥控器技术参数及标准
.外型尺寸:
1.1键数: 1-18键
1.2主尺寸:86mm〈长〉*38mm〈宽〉*6mm〈厚〉
2.材质:
2.1 面贴:0.125mmPET光面面料
2.2 外壳:ABS料黑色
2.3 电池:CR2025/3V
2.4 按键弹力:180-230克力
3.控制角度:
3.1 有效发射角度:30度
4.控制距离:
4.1 有效距离≥8m
5.按键寿命测试:
5.1 3万次以上
遥控器技术参数及标准
项目单位测试条件最小值标准值最大值
静态电流 UA 无键按下 5 10
动态电流 MA 键按下时 6 12
发射距离 M 沿光轴方向 8
30度自选范围 6
工作电压 V 2.2 3 3.5
振荡频率 KHZ 可定制 455
栽波频率 KHZ 可定制 38KHZ
红外波长 Nm 940
功能键数 21
适用环境温度℃ -10℃25℃40℃
相对温度 Rh% 40 90。

单片机实现遥控编码器PT2262的软件解码

单片机实现遥控编码器PT2262的软件解码

基于单片机实现遥控编码器PT2262的软件解码1 引言PT2262是红外遥控编码器,PT2272是其接收解码器,两者常常配对使用,现已广泛用于汽车门控、遥控门锁、门禁管理等领域,也可用于传送数字信息。

PT2262具有19位二进制编码功能;P T2272的解码只有4~6位,这就限制了数据传输的应用。

在此从PT2262接收的信号特征入手,利用8051F330单片机直接对接收到的信号进行解码,解释出PT2262发出的全部19位数据,从而使其应用于数字通信、智能化控制等领域。

2 硬件电路图1是发射装置的原理图,PT2262作为编码器,当按下按键时,设定的地址码和数据码从17引脚串行输出,经红外发射元件IRED发出信号。

通过电阻Rosc凋节发射频率,适当提高PT2262工作电压(2.6 V~15 V),以增大发射距离。

其中A0~A12可设置为高电平、低电平、悬空三种状态,因此可以发送531441种编码组合,完全满足设计需求。

接收装置采用集红外线接收、放大、整形于一体的集成电路TL0038,无需任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,故适用于各种红外线遥控和红外线数据传输。

译码采用8051F330D单片机,11.0592MHz晶体振荡器,接收信号送至I/O端口P1.0进行软件解码。

接收和译码电路如图2所示。

3 解码原理编码器PT2262发送的编码信号是由:地址码、数据码、同步码组成的一个完整码字,最多可以有12位(A0~A11)三态地址端引脚(悬空、高电平、低电平),任意组合可提供531 441个地址码。

将编码器PT2262的A8拉高,D3拉高,D0拉高,D1拉低,其余悬空。

截取一段接收模块信号输出波形如图3所示,PT2262每发射一次,至少发送4组相同编码字码。

每组字码间隔(低电平)约14 ms。

将其截获波形每组字码放大,如图4所示,一组字码有12位A/D码,每个A/D位是由2个脉冲表示:2个窄脉冲则表示“0”;2个宽脉冲表示“1”;1个窄脉冲和1个宽脉冲表示“F”即地址码“悬空”;除此之外,每组字码之间还有1个同步码隔开,所以每组字码共计有25个宽度不同的脉冲。

51单片机解码红外遥控器原理

51单片机解码红外遥控器原理

51单片机解码红外遥控器原理电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,如东芝TC9012,飞利浦SAA3010T等,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放大、驱动红外发射管将信号发射出去。

不同公司的遥控芯片,采用的遥控码格式也不一样。

较普遍的有两种,一种是NEC标准,一种是PHILIPS 标准。

NEC标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。

一个完整的全码=引导码+用户码+用户码+数据码+数据反码。

其中,引导码高电平4.5ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前16 位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。

后16 位为8 位的操作码和8位的操作反码,用于核对数据是否接收准确。

收端根据数据码做出应该执行什么动作的判断。

连发代码是在持续按键时发送的码。

它告知接收端,某键是在被连续地按着。

NEC标准下的发射码表示发射数据时0用“0.56ms高电平+0.565ms低电平=1.125ms”表示,数据1用“高电平0.56ms +低电平1.69ms=2.25ms”表示即发射码“0”表示发射38khz的红外线0.56ms,停止发射0.565ms,发射码“1”表示发射38khz 的红外线0.56ms,停止发射1.69ms需要注意的是:当一体化接收头收到38kHz 红外信号时,输出端输出低电平,否则为高电平。

所以一体化接收头输了的波形是与发射波形是反向的,如图PHILIPS标准:载波频率为38KHz;没有简码,点按键时,控制码在1和0之间切换,若持续按键,则控制码不变。

一个全码=起始码‘11’+控制码+用户码+用户码,如图所示。

基于单片机红外遥控开关的设计

基于单片机红外遥控开关的设计

基于单片机红外遥控开关的设计一、引言随着科技的发展和人们对生活品质的追求,智能化家居逐渐成为人们生活中的一部分。

其中,红外遥控技术是实现智能化家居的重要手段之一、本文将介绍基于单片机的红外遥控开关的设计方案,通过学习该方案,读者可以了解到红外遥控技术的原理和应用。

二、设计方案1.硬件设计本设计方案采用AT89S52单片机作为控制核心,通过红外接收头接收红外信号,并通过解码,将信号转化为数字信号;同时,使用继电器作为开关,通过控制继电器的通断,实现对电器设备的开关控制。

2.红外信号解码红外信号解码是实现遥控开关的关键步骤。

当用户按下遥控器上的按键时,红外发射器会发射一组特定的红外信号。

这组信号会被红外接收头接收,并通过解码器进行解码。

解码器将解码后的信号与预设的数据进行比对,确认遥控指令是否有效。

如果有效,则向单片机发送指令,控制继电器通断。

3.程序设计在单片机中,需要编写相关的程序,实现对红外信号的解码和继电器的控制。

首先需要配置单片机的I/O口为输入和输出模式,然后初始化红外接收头,设置外部中断,以便能够接收到红外信号。

接收到红外信号后,将解码后的数据与预设的数据进行比对,如果相同,则通过单片机的输出口控制继电器的通断,实现开关控制。

三、实验结果通过实验验证,基于单片机红外遥控开关的设计方案可以正常工作。

用户可以通过按下遥控器上的按键,控制继电器的通断,从而实现对电器设备的开关控制。

四、应用展望基于单片机红外遥控开关的设计方案可以广泛应用于智能化家居中,通过设置不同的红外编码,可以实现对不同设备的开关控制。

例如,通过不同编码实现对灯光、电视、空调等设备的开关控制。

此外,还可以通过增加传感器模块,实现对环境的监测和控制。

比如,根据温度传感器的数据,自动控制空调的开关,实现智能化温度控制。

总结:基于单片机红外遥控开关的设计方案利用了红外遥控技术和单片机控制技术,实现了对电器设备的智能化控制。

通过学习该方案,读者可以了解到红外遥控技术的原理和应用,以及单片机的应用。

51单片机红外解码程序

51单片机红外解码程序

51单片机红外解码程序1、红外遥控系统通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。

发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。

下面,我们将使用下面两种设备:另外,使用51单片机进行解码。

2、原理图从原理图看出,IR的data脚与51的PD2(P3.2)相连。

2、红外发射原理要对红外遥控器所发的信号进行解码,必须先理解这些信号。

a) 波形首先来看看,当我们按下遥控器时,红外发射器是发送了一个什么样的信号波形,如下图:由上图所示,当一个键按下超过22ms,振荡器使芯片激活,将发射一组108ms的编码脉冲(由位置1所示)。

如果键按下超过108ms仍未松开,接下来发射的代码(连发代码由位置3所示)将仅由起始码(9ms)和结束码(4.5ms)组成。

下面把位置1的波形放大:由位置1的波形得知,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(用户编码)(9ms~18ms),高8位地址码(用户编码)(9ms~18ms),8位数据码(键值数据码)(9ms~18ms)和这8位数据的反码(键值数据码反码)(9ms~18ms)组成。

b) 编码格式遥控器发射的信号由一串0和1的二进制代码组成.不同的芯片对0和1的编码有所不同。

通常有曼彻斯特编码和脉冲宽度编码。

XS-091遥控板的0和1采用PWM方法编码,即脉冲宽度调制。

下图为一个发射波形对应的编码方法:放大0和1的波形如下图:这种编码具有以下特征:以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。

3、红外接收原理a) 波形红外接收头将38K载波信号过虑,接收到的波形刚好与发射波形相反:放大,位定义0和位定义1波形如下:4、解码原理及算法注:代码宽度算法:16位地址码的最短宽度:1.12×16=18ms 16位地址码的最长宽度:2.24ms×16=36ms可以得知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)×8=27ms所有32位代码的宽度为(18ms+27ms)~(36ms+27ms)对于红外线遥控对于很多电子爱好者来讲,都感觉到非常神奇,看不到,摸不着,但能实现无线遥控,其实控制的关键就是我们要用单片机芯片来识别红外线遥控器发出红外光信号,即我们通常所说的解码。

(完整版)基于51单片机的红外遥控器解码设计毕业论文

(完整版)基于51单片机的红外遥控器解码设计毕业论文

第1章红外解码系统分析第1节设计要求整个控制系统的设计要求:被控设备的控制实时反应,从接收信号到信号处理及对设备控制反映时间应小于1s;整个系统的抗干扰能力强,防止误动作;整个系统的安装、操作简单,维护方便;成本低。

红外载波、编码电路设计要求:单片机定时器精确产生38KHz红外载波;根据控制系统要求能对红外控制指令信号精确编码并迅速发送。

红外解码电路设计要求:精确接收红外信号,并对所接收信号进行解码、放大、整形、解调等处理,最后输出TTL电平信号;对非红外光及边缘红外光抗干扰能力强。

设备扩展模块设计要求:直流控制交流;抗干扰能力强;反应迅速不产生误动作;能承受大电流冲击。

第2节总体设计方案2.1 方案论证驱动与开关方案一:采用晶闸管直接驱动。

其优点是体积小,电路简单,外围元件少。

但控制电流小,大电流晶闸管成本高,并且隔离性能差。

方案二:采用三极管驱动继电器。

其体积大,外围元件多。

优点是控制电流大,隔离性能好。

根据实际情况,拟采用方案二。

2.2 总体设计框图经过上述方案的分析选择,得出系统硬件由以下几部分组成:电视红外遥控器,51单片机最小系统,接收放大于一体集成红外接收头,1602液晶显示驱动电路。

整体设计思路为:根据扫描到不同的按键值转至相对应的ROM表读取数据。

确认设备及菜单选择键后AT89S2将从ROM读取出来的值,按照数据处理要求从P2.5输出控制脉冲与T0产生的38KHz的载波(周期是26.3μs)进行调制,经NPN三极管对信号放大驱动红外发光管将控制信号发送出去。

红外数据接收则是采用HS0038一体化红外接收头,内部集成红外接收、数据采集、解码的功能,只要在接收端INT0检测头信号低电平的到来,就可完成对整个串行的信号进行分析得出当前控制指令的功能。

然后根据所得的指令去操作相应的用电器件工作,如图1-1所示。

图1-1 电路设计整体框图第2章红外解码硬件电路设计第1节单片机及其硬件电路设计1.1 单片机的介绍AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

单片机的红外遥控器解码原理与实现

单片机的红外遥控器解码原理与实现

单片机的红外遥控器解码原理与实现红外遥控器是我们日常生活中常见的电子设备,它通过使用红外线信号与接收器进行通信。

而在这个过程中,单片机起到了解码的重要作用。

本文将介绍单片机解码红外遥控器的原理以及实现方法。

一、红外遥控器的工作原理红外遥控器是一种使用红外线进行通信的设备,它主要由发送器和接收器两部分组成。

发送器将指令数据转换为红外脉冲信号并发送出去,接收器通过接收红外线信号并将其转换为电信号,进而解码为可识别的指令。

而单片机则负责接收并解码红外信号,将其转化为具体的操作。

二、单片机解码红外信号的原理单片机解码红外信号主要分为两个步骤:红外信号的接收和信号的解码处理。

1. 红外信号的接收单片机通过外部的红外接收器接收红外信号。

红外接收器可以通过外部电路将接收到的红外信号转换为电压信号,然后通过单片机的IO 口输入。

2. 信号的解码处理接收到的红外信号经过IO口输入后,单片机需要对信号进行解码处理。

解码的过程涉及到红外信号的标准化和解析。

对于常见的红外遥控器协议,单片机需要能够识别其编码方式,确定其协议格式。

这些协议通常包含了引导码、地址码和指令码等信息。

在解析红外信号时,单片机首先需要识别引导码。

引导码是红外信号的起始标志,通常由高、低电平组成,表示编码的开始。

单片机通过判断引导码的时间长度来确定信号的开始。

接下来,单片机需要识别地址码和指令码。

地址码是用来区分不同的红外遥控器设备,指令码则表示具体的操作指令。

单片机通过判断地址码和指令码的高、低电平时间长度来确定具体的操作。

三、单片机解码红外信号的实现方法单片机解码红外信号有多种实现方法,以下是一种简单的实现示例。

首先,需要连接红外接收器到单片机的IO口,将接收到的信号输入到单片机。

接收到的信号可以通过外部中断的方式触发单片机的中断服务程序。

然后,在中断服务程序中,单片机需要根据红外协议的规则,判断引导码、地址码和指令码的时间长度。

利用计时器或延时函数可以实现对信号时间的测量。

51单片机简易红外线遥控开关

51单片机简易红外线遥控开关

24.2 简易红外线遥控开关
功能说明: 功能说明:按下遥控器1键,则继电器SSR将ON,蜂鸣器响一声,再 次按下遥控器上的1键,继电器将OFF。

程序设计

硬件设计
程序中,将接收到的红外线遥控器信号进 行解码,并与按键1码(01H)进行比较, 如果相同,则继电器才能工作,防止误动。
主要标号说明
● ● ● ● ● ● ● ●
第24章 红外线遥控应用实例 章
24.1 LED显示遥控器按键值 显示遥控器按键值
功能说明: 功能说明:选用一种电视机遥控器,再利用接收模块结合单片机解码,控 制P1端口所接的8个LED亮或灭。

单片机解码

接收端波形
单片机解码的关键是如何识别“0” 单片机解码的关键是如何识别“ 均以0.56ms的低 和“1”,“0”、“1”均以 , 、 均以 的低 电平开始, 电平开始,不同的是高电平的宽度 不同,所以, 不同,所以,可以直接通过判断高 电平的宽度的计数值, 电平的宽度的计数值,来决定接收 的原编码为0或 。 的原编码为 或1。
24.3 红外线遥控七色小彩灯
功能说明: 功能说明:利用红外线遥控系统,控制3个高亮度LED,其发光颜色分 别为红、绿、蓝。再根据三基色原理进行组合,使得彩灯呈件设计
利用红外遥控系统,控制3个LED,按照三基色原理进行组合发光。 红色 + 绿色 = 黄色 绿色 + 蓝色 = 青色 红色 + 蓝色 = 紫色 红色 + 绿色 + 蓝色 = 白色 主要标号说明 ● MAIN: 主程序。 ● IR_IN: 解码子程序。 ● IR_ZX: 遥控执行子程序。 ● FS_SPK: 发声子程序。 ● DE: 短暂延时子程序。 ● DELAY05_R5: ;延时子程序,总延时时间为0.5ms*R5。 ● DEL: 用于解码延时子程序,延时时间为0.093ms。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();//码值识别散转}}}四、遥控代码与键盘码的转换在应用系统中,带遥控器的仪器设备一般都带按键。

相关文档
最新文档