用80C51单片机接收红外遥控的实现

合集下载

单片机的红外通信原理

单片机的红外通信原理

单片机的红外通信原理
单片机的红外通信原理是通过红外发射器和红外接收器进行数据的发送和接收。

红外发射器是一个用于发射红外光信号的器件,它通过电流激励而发射出红外光。

红外接收器则是一个用于接收红外光信号的器件,它可以将接收到的红外光信号转换成对应的电压信号。

在红外通信过程中,发送端的单片机首先将需要发送的数据转换成红外光信号。

这可以通过对红外发射器施加电压的方式来实现。

当电压施加在红外发射器上时,它会以特定的频率发射红外光信号。

这个特定的频率一般是在红外光线可见范围之外,人眼无法看到。

接收端的单片机上安装了红外接收器,它可以接收来自发送端发射的红外光信号。

红外接收器将接收到的红外光信号转换成电压信号,并通过单片机进行处理。

单片机根据接收到的信号特征,判断出是哪个发射器发出的信号,并解码出相应的数据信息。

然后,单片机可以根据接收到的数据进行相应的操作,比如控制其他器件的开关或者进行数据的存储和处理。

红外通信在遥控器、红外设备和红外传感器等方面有着广泛的应用。

通过红外通信,可以实现无线传输和控制,具有灵活性高、成本低的优势。

51单片机红外遥控程序

51单片机红外遥控程序
uchar show[2]={0,0};
unsigned long m,Tc;
unsigned char IrOK;
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display()
{
dula=0;
P0=table[show[0]];
MOV R7,#202
DELAY882_A
NOP
NOP
DJNZ R7,DELAY882_A
RET
;=============================1000
DELAY1000 ;1.085x ((229x4)+5)=999.285
MOV R7,#229
DELAY1000_A
NOP
NOP
DJNZ R7,DELAY1000_A
Qq:735491739
红外遥控发射芯片采用PPM编码方式,当发射器按键按下后,将发射一组108ms的编码脉冲。遥控编码脉冲由前导码、8位用户码、8位用户码的反码、8位操作码以及8位操作码的反码组成。通过对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。前导码是一个遥控码的起始部分,由一个9ms的低电平(起始码)和一个4. 5ms的高电平(结果码)组成,作为接受数据的准备脉冲。以脉宽为0. 56ms、周期为1. 12ms的组合表示二进制的“0”;以脉宽为1. 68ms、周期为2. 24ms的组合表示二进制的“1”。如果按键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2. 5ms)组成。

基于51单片机的智能车毕业设计(论文)

基于51单片机的智能车毕业设计(论文)

基于80C51的电动智能单片机摘要80C51单片机是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。

这里介绍的是如何用80C51单片机来实现长春工业大学的毕业设计,该设计是结合科研项目而确定的设计类课题。

本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。

整个系统的电路结构简单,可靠性能高。

实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用.关键词80C51单片机、智能、光电检测器、PWM调速、电动小车Design and create an intelligence electricity motive small carAbstract80C51 is a 8 bit single chip computer. Its easily using and multi-function suffer large users. This article introduces the CCUT graduation design with the 80C51 single chip computer. This design combines with scientific research object. This system regards the request of the topic, adopting 80C51 for controlling core, super sonic sensor for test the hinder. It can run in a high and a low speed or stop automatically. It also can record the time, distance and the speed or searching light and mark automatically the electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyze.The adoption of technique as:(1)Reduce the speed by program the engine;(2)Efficient application of the sensor;(3)The adoption of the new display chip.Keywords 80C51 single chip computer, light electricity detector, PWM speed adjusting, Electricity motive small car目录第一章前言 (1)第二章方案设计与论证 (3)一直流调速系统 (3)二检测系统 (4)三显示电路 (9)四系统原理图 (9)第三章硬件设计 (10)一 80C51单片机硬件结构 (10)二最小应用系统设计 (11)三前向通道设计 (12)四后向通道设计 (15)五显示电路设计 (17)第四章软件设计 (20)一主程序设计 (20)二显示子程序设计 (24)三避障子程序设计 (25)四软件抗干扰技术 (26)五“看门狗”技术 (28)六可编程逻辑器件 (29)第五章测试数据、测试结果分析及结论 (30)致谢 (31)参考文献 (32)附录A 程序清单 (33)附录B 硬件原理图 (41)第一章前言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。

自己写的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有没有下降沿。

单片机红外遥控应用

单片机红外遥控应用

单片机红外遥控应用单片机的发展和应用已经深入到各个领域,红外遥控技术作为其中的一个重要应用之一,广泛应用于家电、汽车、安防、医疗等领域。

本文将围绕单片机红外遥控应用展开探讨。

一、红外遥控技术的原理红外遥控是利用物体发射、接收红外光信号来进行信息传输和控制的技术。

在红外遥控系统中,有两个主要的组成部分:遥控器和接收器。

遥控器通过按钮、键盘等方式输入指令,然后由红外发射器将指令编码成红外信号发送出去。

接收器接收到红外信号后,通过红外接收模块将其解码,并将解码后的信号传送给单片机进行处理。

二、单片机红外遥控应用的流程单片机红外遥控应用的基本流程可以分为以下几个步骤:1. 硬件准备:准备好单片机、遥控器、红外发射器和红外接收器等硬件设备。

2. 红外信号解码:通过红外接收器接收到红外信号后,使用红外接收模块将信号进行解码,并将解码后的数据传递给单片机。

3. 数据处理:单片机接收到红外信号后,对接收到的数据进行处理和解析,根据不同的指令进行相应的操作。

例如,接收到遥控器的音量加操作指令后,单片机将相应的代码发送给音响模块进行音量增加的操作。

4. 反馈控制:根据指令执行结果,单片机可以通过LED指示灯或者液晶显示屏等方式给出反馈,告知用户指令是否执行成功。

三、单片机红外遥控应用案例以家电遥控为例,介绍一个简单的单片机红外遥控应用。

在这个案例中,我们以空调为被控设备,通过红外遥控方式控制其开关。

首先,我们需要准备好单片机、遥控器、红外发射器和红外接收器等硬件设备。

然后,我们需要对遥控器进行编码,将开机和关机指令分别编码成红外信号。

接下来,通过红外接收器接收到的红外信号,利用红外接收模块进行解码,将解码后的数据传递给单片机。

单片机接收到红外信号后,对接收到的数据进行处理和解析,根据开机和关机指令进行相应的操作。

在单片机中,我们可以设置一个开关状态的变量。

接收到开机指令时,将该变量置为开启状态,并将开启状态发送给空调控制模块;接收到关机指令时,将该变量置为关闭状态,并将关闭状态发送给空调控制模块。

用8051单片机接收红外遥控的实现

用8051单片机接收红外遥控的实现
关键词: 8051 单片机; 红外线遥控; Keil C51 中图分类号: TP 368 文献标识码: A 文章编号: 1009- 3044(2006)02- 0193- 02
Us e Mcs 51 MCU Receive and Decode Infrared Remote Control S ignal ZHAO Ying- qi
本 协 议 采 用 脉 宽 调 制 的 串 行 码 , 用 脉 宽 为 0.56ms、 间 隔 0.565ms、 周 期 为 1.125ms 的 组 合 表 示 二 进 制 的 “0”; 用 脉 宽 为 0.56ms、间 隔 1.69ms、周 期 为 2.25ms 的 组 合 表 示 二 进 制 的“1”, 其 波形如图 2 所示。
图2
图3 遥控器在按键按下后, 周期性地 发 出 同 一 种 32 位 二 进 制 码 , 周期约为 108ms。一组码本身的持续时间随它包含的二进制“0”和 “1”的 个 数 不 同 而 不 同 , 大 约 在 45~63ms 之 间 , 图 4 为 发 射 波 形 图。
图1
3 编码方式
遥控发射器专用芯片很多, 根据编码格式可以分成两大类, 即日本 NEC 的 uPD6121G 系列和荷兰 Philips 的 RC5 传输协议系 列。这里我们以运用比较广泛的前者来说明。
UPD6121G 产生的遥控编码是连续的 32 位二进制码组( 如图
图4 当一个键按下超过 36ms, 将发射一组 108ms 的编码脉冲,这 108ms 发 射 代 码 由 一 个 起 始 码 ( 9ms) ,一 个 结 果 码 ( 4.5ms) ,低 8 位 地 址 码 ( 9m~18ms) ,高 8 位 地 址 码 ( 9ms~18ms) ,8 位 数 据 码 ( 9ms~ 18ms) 和 这 8 位 数 据 的 反 码 ( 9ms~18ms) 组 成 。 如 果 键 按 下 超 过 108ms 仍未松开, 接下来发射的代码 ( 连发代码) 将仅由起始码 ( 9ms) 和结束码( 2.5ms) 组成。

单片机红外遥控系统设计

单片机红外遥控系统设计

单片机红外遥控系统设计摘要:本文主要探讨了单片机红外遥控系统的设计和实现。

首先,对红外遥控技术的原理进行了简要介绍,并对系统的硬件和软件进行了详细的设计和分析。

然后,根据设计的要求和功能需求,使用C语言编程实现了系统的核心功能。

最后,通过实验验证了系统的可行性和稳定性,并进行了性能测试。

关键词:单片机、红外遥控、系统设计、C语言编程1.引言随着科技的不断发展,红外遥控技术在遥控电子设备中得到了广泛的应用。

单片机作为控制器件,可以有效地实现红外遥控系统的设计和控制。

本文基于单片机,设计了一套红外遥控系统,并使用C语言编程实现其功能。

2.红外遥控技术原理红外遥控技术是利用红外线传输信号,控制电子设备的一种技术。

红外线是一种在光谱中不可见的电磁辐射,其波长通常在0.75到1000微米之间。

红外遥控系统由遥控器和接收器组成,遥控器通过发送特定的红外信号,接收器通过接收和解码红外信号,完成对电子设备的控制。

3.系统设计3.1硬件设计系统的硬件设计包括红外遥控器和接收器两部分。

红外遥控器由按键、红外发射器和电源组成。

接收器由红外接收器、解码器和电源组成。

3.2红外信号编码红外信号编码是指将按键信息转化为红外信号进行传输。

按键信息一般使用二进制码进行表示。

在系统设计中,可以使用NEC红外协议进行红外信号的编码和解码。

3.3系统功能设计系统的功能设计包括红外信号发送和接收两部分。

红外信号发送功能实现了将按键信息转化为红外信号发送出去,红外信号接收功能实现了接收和解码红外信号,并根据解码结果进行相应的操作,如控制电子设备的开关。

4.系统实现4.1硬件实现在硬件实现中,需要选择合适的红外发射器和接收器,并进行电路连接。

遥控器和接收器分别通过数据线进行连接,遥控器的电源通过电池供电,接收器的电源可以通过外部电源供电。

4.2软件实现软件实现主要使用C语言进行编程,通过单片机的IO口控制红外发射器和接收器,并实现红外信号的编码和解码。

基于51单片机的红外遥控系统实现

基于51单片机的红外遥控系统实现

基于51单片机的红外遥控系统实现作者:王凯来源:《电子技术与软件工程》2017年第10期文章从51单片机在玩具车上的应用角度,对于其四个电路构成要素展开分析,给出电路分析以及工作原理,对于加深其应用特征认识,有着积极价值。

【关键词】51单片机红外遥控1 前言51单片机是对所有兼容Intel 8031指令系统的单片机的统称,由Intel的8004单片机演变发展而来,成为当前应用最为广泛的8位单片机领域中的重要力量。

目前在51单片机领域中,比较具有代表性的是ATMEL公司的AT89系列,已经广泛应用于工业测控系统之中,并且有着稳定表现。

2 51单片机的应用51单片机在实际应用过程中,所体现出的强大的便以功能和稳定的物理特性,都决定了其必然有着广阔的市场。

在遥控领域,以玩具车作为代表的遥控系统,同样成了51单片机的重要领地。

对于玩具车的遥控实现,虽然应用着眼点小,但是意义重大,包括其他遥控自动行走设备,诸如扫地机器人等,都与玩具车的遥控与自动化实现相似。

本次研究以AT89S51单片机为例,考察红外遥控系统的实现。

考察当前对于遥控系统的需求,应当能够使玩具车实现自动驾驶、手动控制以及循迹行进等功能。

自动驾驶过程中,玩具车应当能够识别周围障碍并且自行规避,手动控制的时候则应当能够跟随控制器的前进、后退、左转、右转等操作展开对应行为;而循迹行进,则要求玩具车能够依据预先设定的轨迹前进。

从循迹这个角度看,虽然51系列的单片机一般不具备自编程能力,但是循迹等于实现了一种外部的编程。

3 51单片机的红外遥控系统设计整个系统可以分为硬件和软件两个部分,硬件部分承担红外编码信号的发射和接受、障碍物检测、轨迹检测、直流电机运行等功能,而软件则主要负责信号的检测和处理、设备的驱动及控制等功能。

AT89S51单片机对红外信号解码,并且查询各个检测部分的输入信号,展开综合处理,驱动电机,判断障碍物位置以及前方轨迹,最终依据多方面输入,来确定玩具车的行进,并且做出对应的调整。

基于51单片机的红外遥控

基于51单片机的红外遥控

基于51单片机的红外遥控本讲内容:介绍红外遥控的知识,通过例程展示红外遥控程序的编写方法。

红外线简介:在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。

目前几乎所有的视频和音频设备都可以通过红外遥控的方式进行遥控,比如电视机、空调、影碟机等,都可以见到红外遥控的影子。

这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。

接收头输出的波形正好和遥控芯片输出的相反。

在这里红外通信采用NEC协议,它的特征如下:信号调制红外遥控信号接收管接口电路:红外信号发射电路 红外信号接收电路例程:红外遥控信号发射:/*****************红外通信——发射*******************单片机型号:STC89C52RC*开发环境:KEIL*名称:红外通信发射*功能:按下按键S4,S5,S6,S8,S9,S10,S11,S13,S14发射对应键值,可以与红外通信——接收程序配套使用***************************************************/#include <REG51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define SBM 0x80 //识别码#define m9 (65536-8294) //约9mS#define m4_5 (65536-4147) //约4.5mS#define m1_6 (65536-1521) //约1.65mS#define m_65 (65536-599) //约0.65mS#define m_56 (65536-516) //约0.56mS#define m40 (65536-36864) //约40mS#define m56 (65536-51610) //56mS#define m2_25 (65536-2074) //约2.25mSconst uchar TabHL1[9]={0x0c,0x18,0x5e,0x08,0x1c,0x5a,0x42,0x52,0x4a};sbit IR=P1^5; //定义发射引脚sbit BEEP=P2^3;void keyscan();void ZZ(uchar x);void Z0(uchar temp);void TT0(bit BT,uint x);void delay(int In,int Out);/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:主函数┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void main(void){TMOD=0x01; //T0 16位工作方式IR=1; //发射端口常态为高电平while(1){keyscan();}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:发送主程序┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void ZZ(uchar x){TT0(1,m9); //高电平9mSTT0(0,m4_5); //低电平4.5mS/*┈发送4帧数据┈*/Z0(SBM);Z0(~SBM);Z0(x);Z0(~x);/*┈┈结束码┈┈*/TT0(1,m_65);TT0(0,m40);}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:单帧发送程序入口参数:1帧数据┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void Z0(uchar temp){uchar v;for (v=0;v<8;v++) //循环8次移位{TT0(1,m_65); //高电平0.65mSif(temp&0x01) TT0(0,m1_6); //发送最低位else TT0(0,m_56);temp >>= 1; //右移一位}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:38KHz脉冲发射 + 延时程序入口参数:(是否发射脉冲,延时约 x (uS))┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/void TT0(bit BT,uint x){TH0=x>>8; //输入T0初始值TL0=x;TF0=0; //清0TR0=1; //启动定时器0if(BT==0)while(!TF0);//BT=0时不发射38KHz脉冲只延时;BT=1发射38KHz脉冲且延时;else while(1) //38KHz脉冲,占空比5:26{IR = 0;if(TF0)break;if(TF0)break;IR=1;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;}TR0=0; //关闭定时器0TF0=0; //标志位溢出则清0IR =1; //脉冲停止后,发射端口常态为高电平}void keyscan() //按键扫描函数{uchar buffer;/***************************************************/P3=0xfe; //扫描S3,S4,S5,S6;buffer=P3;buffer=buffer & 0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xee:{;}break;case 0xde:{ZZ(TabHL1[0]);}break;case 0xbe:{ZZ(TabHL1[1]);}break;case 0x7e:{ZZ(TabHL1[2]);}break;}while(buffer != 0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}/****************************************************/ P3=0xfd; //扫描S8,S9,S10,S11buffer=P3;buffer=buffer & 0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xed:{ZZ(TabHL1[3]);}break;case 0xdd:{ZZ(TabHL1[4]);}break;case 0xbd:{ZZ(TabHL1[5]);}break;case 0x7d:{ZZ(TabHL1[6]);}break;}while(buffer!=0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}/****************************************************/ P3=0xfb; //扫描S13,S14,S15,S16buffer=P3;buffer=buffer&0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xeb:{ZZ(TabHL1[7]);}break;case 0xdb:{ZZ(TabHL1[8]);}break;}while(buffer!=0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}}void delay(int In,int Out) //定义延时函数{int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}红外遥控信号接收:/*****************红外通信--接收*******************单片机型号:STC89C52RC*开发环境:KEIL*功能:在液晶LCD1602上显示接收到的数值*************************************************/#include<reg52.h>#define LCD_Data P0#define Busy 0x80sbit IR=P3^2;sbit LCD_RS=P1^0;sbit LCD_RW=P1^1;sbit LCD_E=P2^5;void TIM0init(void);void EX0init(void);void SYSinit(void);void delay(int In,int Out);void Delay5Ms(void);void Ir_work(void);void Ircordpro(void);void WriteDataLCD(unsigned char WDLCD);void WriteCommandLCD(unsigned char WCLCD,BuysC);unsigned char ReadDataLCD(void);unsigned char ReadStatusLCD(void);void LCDInit(void);void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData); void Info_display(void);bit IRpro_ok;bit IR_ok;unsigned char IRcord[4];unsigned char IRdata[33];unsigned char codedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char irtime;unsigned char speed_num=0;unsigned char codemb_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char code welcome[]={"YOU ARE WELCOME"};unsigned char code ir_reve[]={"IR_RECEIVE: "};/*******************5ms延时函数*********************/void Delay5Ms(void){unsigned int TempCyc=3552;while(TempCyc--);}void delay(int In,int Out){int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}/***********************写数据函数***********************/ void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD();LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/**********************写指令函数************************/ void WriteCommandLCD(unsigned char WCLCD,BuysC){if(BuysC)ReadStatusLCD();LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/***********************读状态函数************************/ unsigned char ReadStatusLCD(void){LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;while(LCD_Data & Busy);return(LCD_Data);}/************************LCD初始化************************/ void LCDInit(void){LCD_Data=0;WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1);WriteCommandLCD(0x08,1);WriteCommandLCD(0x01,1);WriteCommandLCD(0x06,1);WriteCommandLCD(0x0C,1);}/*******************按指定位置显示一个字符******************/void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData){Y&=0x1;X&=0xF;if(Y)X|=0x40;X|=0x80;WriteCommandLCD(X,0);WriteDataLCD(DData);}/*******************按指定位置显示一串字符******************/void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData) {unsigned char ListLength;ListLength=0;Y&=0x1;X&=0xF;while(DData[ListLength]>=0x20){if(X<=0xF){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}}/***********************定时器0初始化***********************/void TIM0init(void){TMOD=0x02;TH0=0x00;TL0=0x00;ET0=1;TR0=1;}/**********************外部中断0初始化**********************/void EX0init(void){IT0=1;EX0=1;EA=1;}/*************************系统初始化*************************/void SYSinit(void){TIM0init();EX0init();LCDInit();}/********************红外信号接收相关函数********************/void Ir_work(void){switch(IRcord[2]){case 0x0C:{DisplayOneChar(12,1,0x31);}break;case 0x18:{DisplayOneChar(12,1,0x32);}break;case 0x5e:{DisplayOneChar(12,1,0x33);}break;case 0x08:{DisplayOneChar(12,1,0x34);}break;case 0x1c:{DisplayOneChar(12,1,0x35);}break;case 0x5a:{DisplayOneChar(12,1,0x36);}break;case 0x42:{DisplayOneChar(12,1,0x37);}break;case 0x52:{DisplayOneChar(12,1,0x38);}break;case 0x4a:{DisplayOneChar(12,1,0x39);}break;default:break;}}void Ircordpro(void){unsigned char i,j,k;unsigned char cord,value;k=1;for(i=0;i<4;i++){for(j=1;j<=8;j++){cord=IRdata[k];if(cord>7)value|=0x80;if(j<8){value>>=1;}k++;}IRcord[i]=value;value=0;}IRpro_ok=1;}/********************红外信号接收相关函数********************/ void main(void){SYSinit();delay(5,100);DisplayListChar(0,0,welcome);DisplayListChar(0,1,ir_reve);while(1){if(IR_ok){Ircordpro();IR_ok=0;}if(IRpro_ok){Ir_work();}}}/********************定时器0中断处理函数********************/ void tim0_isr (void) interrupt 1 using 1{irtime++;}/*******************外部中断0中断处理函数*******************/ void EX0_ISR (void) interrupt 0{static unsigned char i;static bit startflag;if(startflag){if(irtime<63&&irtime>=33)i=0;IRdata[i]=irtime;irtime=0;i++;if(i==33){IR_ok=1;i=0;}}else{irtime=0;startflag=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遥控器的波形是这样的(经过反复测试的结果)。

/sch/rc/0080743.html开始位是以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单片机的红外遥控器解码设计毕业论文

(完整版)基于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 存储器。

基于51单片机的红外遥控设计-毕业设计论文

基于51单片机的红外遥控设计-毕业设计论文

摘要很多电器都采用红外遥控,那么红外遥控的工作原理是什么呢?本文将介绍其原理和设计方法。

红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。

常用的红外遥控系统一般分发射和接收两个部分。

红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的,在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。

也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。

接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。

“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。

一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便后级适时地来取数据。

这种输出形式一般用于与单片机或微机接口。

除以上输出形式外,还有“锁存”和“暂存”两种形式。

所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述介绍的“电平”输出类似。

关键词:80c51单片机、红外发光二极管、晶振目录第一章1、引言 (3)2、设计要求与指标 (3)3、红外遥感发射系统设计 (4)4、红外发射电路设计 (4)5、调试结果及分析 (9)6、结论 (10)第二章1、引言 (10)2、设计要求与指标 (11)3、红外遥控系统设计 (11)4、系统功能实现方法 (15)5、红外接收电路 (16)6、软件设计 (17)7、调试结果及分析 (18)8、结论 (19)参考文献附录绪论人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。

其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。

比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。

红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。

51单片机-毕业设计基于单片机设计的红外线遥控器

51单片机-毕业设计基于单片机设计的红外线遥控器
1。1红外概述
从光学的角度而言,红外光是频率低于红色光的不可见光,在无线光谱的整个频率中占有很小一个频率段,波长为0.75—100微秒之间,其中0。75—3微秒之间的红外光称为近红外,3—30微秒之间的红外光称为中红外,30—100微秒之间的称为远红外。红外光就其性质而言很简单,与普通光线的频率特性没有很大的区别,但是,由于任何有热量的物体均有能量产生,所以红外的利用非常广泛,而且不可取代,能否检测红外、能测到多少红外或者红外检测的技术是否可以应用于任何自然的或想象的场合是红外应用技术的关键.
四、主要参考文献:
[1]梅丽凤,王艳秋,张军等。单片机原理及接口技术,北京:清华大学出版社,2004年。
[2]戴峻峰,付丽辉。多功能红外线遥控器的设计,传感器世界。2002,8(12):16~18.
[3]李光飞,楼然苗,胡佳文等.单片机课程设计实例指导,北京:北京航空航天出版社,
2004年.
[4]苏长赞。红外线与超声波遥控,北京:人民邮电出版社.1995年.
3.4独立式按键结构……………………………………………………………10
3。5掉电保护与低功耗设计……………………………………………………10
3。5.1低功耗的实现方法……………………………………………………10
3。5.2掉电保护与低功耗设计………………………………………………11
3。6系统完整电路设计图………………………………………………………13
2010.6。26~2010。8.10
在老师指导下反复修改,完成设计
五、指导教师意见:
指导教师签名:2010年5月10日
六、系部意见:
系主任签名:2010年5月11日
基于单片机的红外线遥控器
摘要

单片机用作红外遥控接收器的设计

单片机用作红外遥控接收器的设计

单片机用作红外遥控接收器的设计摘要:本文介绍了一种基于单片机的红外遥控接收器的设计方法。

设计采用红外接收头模块对接收到的红外信号进行解码,通过单片机来控制相关电路的工作状态并实现功能。

该设计具有电路简单、稳定性好等特点,适用于各种红外遥控应用场合。

关键词:单片机;红外遥控;接收器;解码1.引言在现代生活中,红外遥控技术已经广泛应用于各个领域,例如电视机、空调、DVD等电器产品都使用了红外遥控技术。

红外遥控技术通过发送方发出一组红外信号,接收方通过红外接收器接收并解码这组信号,从而实现远距离遥控的功能。

2.设计原理2.1红外信号的接收红外信号是由红外遥控发射器发出的,它包含了一组特定的红外编码信息。

红外接收器接收到红外信号后,将其转换为电信号。

红外接收器通常采用红外输液二极管作为红外传感器。

2.2红外信号的解码接收到的红外信号是一组脉冲信号,需要通过解码才能获取它所代表的功能代码。

解码过程可以通过单片机来完成。

单片机可以通过中断方式监听外部信号的变化,当检测到红外信号时,单片机将接收到的信号进行解码,并根据解码结果做出相应的动作。

2.3功能实现红外遥控接收器的功能实现需要通过单片机来控制相关的电路工作状态。

单片机可以根据解码结果来控制LED指示灯的亮灭,可以控制电机的启停等。

3.硬件设计硬件设计主要包括红外接收头模块和单片机电路两部分。

3.1红外接收头模块红外接收头模块主要由红外传感器、滤波电路和输出电路组成。

红外传感器负责接收红外信号,滤波电路用于滤除噪声信号,输出电路将接收到的红外信号转换为电信号输出。

3.2单片机电路单片机电路主要由单片机、外部时钟电路、电源电路、按键电路等组成。

其中,外部时钟电路提供时钟信号给单片机,电源电路为整个电路提供电源,按键电路用于进行功能设置。

4.软件设计软件设计主要包括编码程序、解码程序等。

4.1编码程序编码程序主要用来将功能代码转换为红外信号。

根据不同的红外编码方式,编码程序可以将功能代码转换为相应的脉冲信号,并通过红外发射器发送出去。

利用单片机实现的红外线遥控系统

利用单片机实现的红外线遥控系统

利用单片机实现的红外线遥控系统
引言
随着科学技术的不断发展,红外线遥控器因其具有体积小、功耗低、功能强、成本低等特点正在向各个领域渗透,在家用电器、安全保卫、工业控制以及人们日常生活中广泛应用,特别是在家用电器、安全保卫和人们日常生活中的应用就更广泛了。

本文给出用软件方式实现红外遥控器译码的单片机程序,所有程序都经过实际单片机系统调试通过。

对于硬件电路,发射由红外线遥控器完成,而接收部分则只需要在单片机系统中添加一个红外线接收管就可完成。

1 红外线遥控系统
红外线遥控系统就是指利用红外线来传递控制信号,实现对控制对象的远距离控制的目的;具体来讲,就是由发射器发出红外线指令信号,由接收器接收信号并对信号进行处理,最后实现对对象的各种功能的远距离控制。

红外线遥控系统一般由发射器和接收器两部分组成:发射器包括指令键、指令信号产生电路、调制电路、驱动电路及红外线发射器件;接收器由红外线接收器件(如红外线接收头)、前置放大电路解调电路、指令信号检出电路、记忆及驱动电路、执行电路等组成。

红外线遥控系统按照产生和区分控制指令的方式和特征来分类,常用的有频分制和码分制红外线遥控——频分制红外线遥控就是信号产生电路以不同频率的电信号代表不同的控制指令:码分制红外线遥控是指信号产生电路以不同的脉冲编码代表不同的指令。

2 红外线遥控信号码
以一款台湾PTC 公司出产的PT2222—1 为编码芯片的DVD 遥控器为例。

红外线遥控器发送红外信号,红外线接收电路接收到的红外线信号可以通过高性能数字示波器触发锁存获得。

红外线波形如图1 所示:。

51单片机红外接收解码程序(详细解析)

51单片机红外接收解码程序(详细解析)

51单片机红外接收解码程序接收以S52单片机作为接收系统。

以S52的P3.3口作为接收端口,该端口是外部中断1。

这个接受程序是以XC866作为红外发送控制系统,接收程序如下:#include<reg52.h>//头文件#include<intrins.h>#define uchar unsigned char//宏定义#define uint unsigned intsbit HWRx=P3^3;//位声明code uchar Table[]=//共阴数码管0-9 a-f - 表{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};uchar Table_Data[8]={0,0,0,0,0,0,0,0};//用于显示的数组uchar Table_Rx[67];//用于存储判断接收是1或0的参数void Delay();//延时子函数void Display(uchar *lp,uchar lc)//显示{uchar i;//定义变量P2=0;//端口2为输出,关闭P1=P1&0xF8;//将P1口的前3位输出0,对应138译门输入脚,全0为第一位数码管for(i=0;i<lc;i++)//循环显示,采用动态扫描{P2=Table[lp[i]]; //查表法得到要显示数字的数码段if(lp[i]>0x7f)P2+=0x80;Delay();//延时P2=0;//清0端口,准备显示下位if(i==7)//检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到第四位数据break;P1++;//点亮下一位数码管}}void main()//主函数{EA=1;//首先开启总中断EX1=1;//开启外部中断1IT1=1;//设置成下降沿触发方式while(1)//一直显示,其它由中断处理{Display(Table_Data,8);}}void Delay()//延时时间大约为31us,晶振12M{uchar i=13;while(i)i--;}void Delay_ms(uint z) //延时时间约为1ms*X晶振为12M{uint x=0,y=0;for(x=z;x>0;x--)for(y=54;y>0;y--);}void hongwai()interrupt 2//外部中断1 ,INT1(P3^3)连接红外线接收IC数据脚{uchar i,j,tmp;EX1=0;//关闭中断j=33;//传送一组数包括引导码1位,4个八位数据,总共33位i=0;//从第一维数组开始Delay_ms(10);if(HWRx){//然后再检测红线接收脚是有数据招收,有继续,没有则退出EX1=1;return;}while(j--){//循环接收33位数据,为何我们用到66位数组,我们可以不接收高电平时间常数,只接低电平常数就//可以判断1或0了,在这里我们都接收,还有一点要知道,接收波形是反向,在没有接收时端口为高电平tmp=0;Table_Rx[i]=1;//时间量从1开始while(!HWRx) //检测高低电平的变化,这里检测的是高电平{Table_Rx[i]++;//没变继续加1Delay();//家一个延时防止,计数值一下子就加满了tmp++;//加1if(tmp==250)break;}i++;tmp=0;Table_Rx[i]=1;//时间量从1开始while(HWRx)//检测高低电平的变化,这里检测的是低电平{Table_Rx[i]++; //没变继续加1Delay();//同上tmp++;//加1,用于判断是1还是0的,低电平来了if(tmp==250)break;}i++;}P1=0xf8;i=200;//加入循环延时,抗干扰while(i)//在有接收数据的时候显示一个H{tmp=255;while(tmp){tmp--;P2=0x76;}i--;}tmp=0;for(i=3;i<19;i++,i++)//处理发送的数据{tmp>>=1;//右移一位,接收低位在前if(Table_Rx[i]>30)//检测低电平时间超过30就确认为1 tmp+=0x80;}Table_Data[0]=tmp/16;//分开2位以16进制显示,用显示发送的数据Table_Data[1]=tmp%16;tmp=0;for(i=19;i<35;i++,i++)//同上{tmp>>=1;if(Table_Rx[i]>30)tmp+=0x80;}Table_Data[2]=tmp/16;Table_Data[3]=tmp%16;tmp=0;for(i=35;i<51;i++,i++){tmp>>=1;if(Table_Rx[i]>30)tmp+=0x80;}Table_Data[4]=tmp/16;Table_Data[5]=tmp%16;tmp=0;for(i=51;i<67;i++,i++){tmp>>=1;if(Table_Rx[i]>30)tmp+=0x80;}Table_Data[6]=tmp/16;Table_Data[7]=tmp%16;EX1=1;//刚进中断时关闭了分控,现在要打开}。

用8051单片机接收红外遥控的实现

用8051单片机接收红外遥控的实现

用8051单片机接收红外遥控的实现
赵瑛琪
【期刊名称】《电脑知识与技术》
【年(卷),期】2006(000)001
【摘要】μPD6121,6122是用NEC传输格式的红外线遥控发射芯片,目前广泛的用在电视,录像机,音响,空调等设备上.8051系列单片机是目前应用最为广泛的8位机,其内核由美国因特公司设计.本文介绍如何用8051单片机准确接收红外遥控信号,并写出高效的代码.
【总页数】2页(P193-194)
【作者】赵瑛琪
【作者单位】湖南城建职业技术学院信息工程系,湖南,湘潭,411101
【正文语种】中文
【中图分类】TP368
【相关文献】
1.IRM81XY系列红外遥控接收微型组件及红外遥控发射,接收电路 [J], 杜雪芳
2.基于PS/2接口红外遥控接收装置的设计与实现 [J], 李乐
3.嵌入式红外遥控键盘接收端和USB闪存的整合实现 [J], 李中政;闫鹤;李娜;乔贵春
4.智能型红外遥控器中信号接收与压缩方法 [J], 李慧静;金晓民;井雅;张博尧
5.红外遥控接收放大器的解码特性 [J], 陈巍;
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关键词: 8051 单片机; 红外线遥控; Keil C51 中图分类号: TP 368 文献标识码: A 文章编号: 1009- 3044(2006)02- 0193- 02
Us e Mcs 51 MCU Receive and Decode Infrared Remote Control S ignal ZHAO Ying- qi
193
研究开发
电脑知识与技术
(1)接收位定义, 如图 5。
图5 (2)接收单发代码格式, 连发代码格式, 如图 6。
图6 (3)解码的关键是如何识别“0”和“1”, 从位的定义我 们 可 以 发 现“0”、“1”均 以 下 降 沿 开 始 , 于 是 我 们 可 以 用 8051 的 外 部 中 断 INT0 来接收, 用计数器 Time0 计时两次外部中断产生的时间来区 别“0”和“1”。 当 两 次 外 部 中 断 产 生 的 时 间 为 2.25ms 左 右 为“1”, 为 1.12ms 左右为“0”, 为 13.45ms 左右为开始位。 (4)程序代码, ( 用 Keil C51 编译通过) , 晶振用 11.0592MHz。 void Interrupt1_ISR(void) interrupt 0 using 0 {EX0 = 0; // Disable INT 0 TR0 = 0; // Disable Timer 0 IRInt = 1; INTInterval = TH0; TH0 = 0xB0; TL0 = 0; TR0 = 1; // Enable Timer 0 EX0 = 1; // Enable INT 0} //==================================== // IRDecode //==================================== bit IRDecode(void) {static idata BYTE INTCount = 0; static unsigned long idata IRData = 0; BYTE IRData1, IRData2, IRData3, IRData4; if (IRInt) {if ((INTInterval > 0xDE) && (INTInterval < 0xE1)) // 0xDFE2 = 13.5 ms {IRData = 0; INTCount = 0;} else if ((INTInterval > 0xB6) && (INTInterval < 0xB9)) // 0xB7FB = 2.25 ms(data = 1) {IRData = (IRData << 1) + 1; INTCount++;} else if ((INTInterval > 0xB2) && (INTInterval < 0xB5)) // 0xB3FD = 1.125 ms(data = 0)
4 解码方式
红外线遥控信号经过一体化接收头后变成 TTL 信号, 并把 格 式反向, 再输入 8051 单片机的外部中断脚 INT0。
下面以实例加以说明:
收稿日期: 2005- 11- 15 作者简介: 赵瑛琪( 1975- ) , 女, 湖南人, 湖南城建职业技术学院信息工程系助讲, 计算机应用学士, 研究方向: 单片机控制与应用。
本 协 议 采 用 脉 宽 调 制 的 串 行 码 , 用 脉 宽 为 0.56ms、 间 隔 0.565ms、 周 期 为 1.125ms 的 组 合 表 示 二 进 制 的 “0”; 用 脉 宽 为 0.56ms、间 隔 1.69ms、周 期 为 2.25ms 的 组 合 表 示 二 进 制 的“1”, 其 波形如图 2 所示。
(Hunan Urban Construction College,Xiangtan 411101,China) Abs tract:The !PD6121,6122 are infrared remote control transmission ICs using the NEC transmission format that are ideally suited for TVs,VCR s,audio equipment,air Conditioners,etc. Mcs51 is an 8- bit MCU, it' s core design by Intel. This document provides Information about the receive and decode infrared remote control signal,and demo resource Code. Key words :Mcs51 MCU;Infrared remote control;Keil C51
电脑知识与技术
研究开发
用 8051 单片机接收红外遥控的实现
赵瑛琪 ( 湖南城建职业技术学院信息工程系, 湖南 湘潭 411101)
摘要: !PD6121, 6122 是用 NEC 传输格式的红外线遥控发射芯片, 目前广泛的用在电视, 录像机, 音响, 空调等设备上。8051 系列单 片机是目前应用最为广泛的 8 位机,其内核由美国因特公司设计。本文介绍如何用 8051 单片机准确接收红外遥控信号, 并写出高效的代 码。
1 引言
对 遥 控 信 号 的 接 收 实 际 上 是 把 红 外 光 信 号 转 换 成 TTL 信 号 的过程, 现在有集成度比较高的一体化接收头来处理。对信号的 解码方式则可以结合不同的 MCU 硬件资源写 出 不 同 的 解 码 程 序 来。这里使用 8051 单片机, 具体是用 外 部 中 断 脚 INT0 来 接 收 信 号, 用计数器 Time0 测两次外部 中 断 产 生 的 时 间 间 隔 来 区 别 每 个 位( bit) 是“1”或“0”,再把数据流还原成各种命令, 来控制其他的 I/ O 做不同的工作。
2 系统构成
红外遥控系统由发射和接收两大部分组成, 应用编/解码集成 电路芯片来进行控制操作。发射部分即遥控器( 包括键盘矩阵、编 码调制、红外发送二极管) ; 接收为红外接收头( 包括光/电转换、放 大、解调) , 解码 MCU( 这里用的是 8051 单片机) , 如图 1。
3 所 示 ) , 其 中 前 16 位 为 用 户 识 别 码 , 能 区 别 不 同 的 电 器 设 备 , 防 止不同机种遥控码互相干扰。后 16 位为 8 位 操 作 码 ( 功 能 码 ) 及 其反码。
UPD6121G 产生的遥控编码是连续的 32 位二进制码组( 如图
图4 当一个键按下超过 36ms, 将发射一组 108ms 的编码脉冲,这 108ms 发 射 代 码 由 一 个 起 始 码 ( 9ms) ,一 个 结 果 码 ( 4.5ms) ,低 8 位 地 址 码 ( 9m~18ms) ,高 8 位 地 址 码 ( 9ms~18ms) ,8 位 数 据 码 ( 9ms~ 18ms) 和 这 8 位 数 据 的 反 码 ( 9ms~18ms) 组 成 。 如 果 键 按 下 超 过 108ms 仍未松开, 接下来发射的代码 ( 连发代码) 将仅由起始码 ( 9ms) 和结束码周期性地 发 出 同 一 种 32 位 二 进 制 码 , 周期约为 108ms。一组码本身的持续时间随它包含的二进制“0”和 “1”的 个 数 不 同 而 不 同 , 大 约 在 45~63ms 之 间 , 图 4 为 发 射 波 形 图。
图1
3 编码方式
遥控发射器专用芯片很多, 根据编码格式可以分成两大类, 即日本 NEC 的 uPD6121G 系列和荷兰 Philips 的 RC5 传输协议系 列。这里我们以运用比较广泛的前者来说明。
5 总结
8051 单 片 机 接 收 红 外 遥 控 实 现 的 关 键 是 对 脉 冲 宽 度 的 准 确 测量, 定时器参数的准确设置。
参考文献: [1]赖麒文.8051 单片机 C 语言彻底应用[M].科学出版社,2002. [2]日本 NEC 公司.uPD6121 datasheet[S].http://www.nec.com. [3](韩 国)金 炯 泰,金 奎 焕,等 译.如 何 使 用 KEIL 8051C 编 译 器 [M].北 京 航 空 航 天 大 学 出 版 社 ,2002.
194 电脑知识与技术
{IRData = IRData << 1; INTCount++;} else if ((INTInterval > 0xD6) && (INTInterval < 0xD9)) // 0xD7E7 = 11.25 ms {IRInt = 0; IRData = 0; IRCommandData = 0xFF; //repeat code flag return 1;} else {INTCount = 33; IRData = 0;} IRInt = 0; if (INTCount == 32){ IRData1 = (BYTE)(IRData >> 24); IRData2 = (BYTE)(IRData >> 16); IRData3 = (BYTE)(IRData >> 8); IRData4 = (BYTE)(IRData); IRData = 0; if (IRData4 ==  ̄IRData3){ IRCommandData = IRData3; //还 原 命 令 成 功 return 1;} else return 0;} else return 0;} return 0;} //- - - - - - - - - - - - - - - - - - - - - - - - - // main //- - - - - - - - - - - - - - - - - - - - - - - - - #include <reg52.h> main () { TH0 = 0xB0; EA = 0; IE = 0x02; // Enable Timer 0 interrupt TMOD = 0x21; TCON = 0x50; // TR0 = TR1 = 1, start timers EA = 1; wihle(1){ ………} }
相关文档
最新文档