用AT89S52自制红外电视遥控器

最新更新时间:2014-02-10来源: 互联网关键字:AT89S52  红外  电视遥控器 手机看文章 扫描二维码
随时随地手机看文章

红外遥控器发送数据时,是将二进制数据调制成一系列的脉冲信号红外发射管发射出去,红外载波为频率38KHz的方波,红外接收端在收到38KHz的载波信号时,会输出低电平,否则输出高电平,从而可以将“时断时续”的红外光信号解调成一定周期的连续方波信号,再经过1838一体化红外接收头解调便可以恢复出原数据信号。如图1所示

  

  图1

  红外接收头解调过程如图2所示

  

  图2

  解调后的“0”和“1”波形及单片机编码图3、图4所示

  

  图3

  

  图4

  
  图5

  了解了红外接收头解调及遥控编码下面就可以对照图5编写编码程序了,图5是遥控按键1的一段实际编码,由9ms低电平4.5ms高电平的启始码,26位系统码,及8位数据码、8位数据反码、23ms高电平及结束码组成。

  

  
  电路图

  

  实物图

********以下是遥控完整程序********

  /********

  **项目: 自制红外电视遥控器(EE01学习板演示程序)

  **作者:一线工人

  **网站:电子工程师之家 www.eehome.cn

  **转贴请保持代码的完整性

  ********/

  #include 《reg52.h》

  #define uint unsigned int

  #define uchar unsigned char

  bit irout;//红外管状态

  sbit ir=P1^7;//红外发射管控制脚

  uint count, set_count;//中断计数,设定中断次数

  bit flag,keyflag;//红外发送标志,按键标志位

  uchar irsys[4]={0x1a,0xa1,0xdc,0x03};//26位系统码,最后一个字节只用2位

  uchar ircode,irdata;

  /**********************************************

  延时1ms

  ***********************************************/

  void delay(uint z)//延时1ms,晶振22.1184M

  {

  uint x,y;

  for(x=z;x》0;x--)

  for(y=225;y》0;y--);

  }

  /**********************************************

  按键扫描

  **********************************************/

  void keyscan(void)

  {

  uchar keytemp;

  P3=0xff;

  keytemp=P3&0x0f;

  if(keytemp!=0x0f)

  {

  delay(20);

  keytemp=P3&0x0f;

  if(keytemp!=0x0f)

  keyflag=1;//有按键标志

  switch(keytemp)

  {

  case 0x0e:irdata=27;break;//按键1对应该遥控器P+的键值

  case 0x0d:irdata=26;break;//按键2对应该遥控器P-的键值

  case 0x0b:irdata=31;break;//按键3对应该遥控器VOL+的键值

  case 0x07:irdata=30;break;//按键4对应该遥控器VOL-的键值

  }

  }

  }

  /*******************************************

  发送8位红外数据

  *******************************************/

  void sendcode_8(void)

  {

  uchar i;

  for(i=0;i《8;i++)

  {

  set_count=28;//发送0.56ms 38k红外波(编码中的0.56ms低电平)

  flag=1;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  if(ircode&0x01)//判断红外编码最低位,1宽的高电平,0窄的高电平

  {

  set_count=120;

  }

  else

  {

  set_count=38;

  }

  flag=0;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  ircode=ircode》》1;

  }

  }

  /*******************************************

  发送2位红外数据

  *******************************************/

  void sendcode_2(void)//前26位系统码最后两位

  {

  uchar i;

  for(i=0;i《2;i++)

  {

  set_count=28;

  flag=1;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  if(ircode&0x01)

  {

  set_count=120;

  }

  else

  {

  set_count=38;

  }

  flag=0;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  ircode=ircode》》1;

  }

  }

  /*******************************************

  发送红外数据

  *******************************************/

  void sendcode(void)

  {

  set_count=575;//发送9ms 38K红外光

  flag=1;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  set_count=320;//间隔4.5ms

  flag=0;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  ircode=irsys[0];//发送26位系统码的前1-8位

  sendcode_8();

  ircode=irsys[1];//发送26位系统码的前9-16位

  sendcode_8();

  ircode=irsys[2];//发送26位系统码的前17-24位

  sendcode_8();

  ircode=irsys[3];//发送26位系统码的前24-26位

  sendcode_2();

  ircode=irdata;//发送8位数据码

  sendcode_8();

  ircode=~irdata; //发送8位数据反码

  sendcode_8();

  set_count=28;//发送0.56ms 38k红外波(编码中的0.56ms低电平)

  flag=1;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  ir=1;

  delay(23);//延时23ms(编码中的23ms高电平)

  set_count=575;//发送9ms 38k红外波

  flag=1;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  set_count=330;//间隔4.5ms

  flag=0;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  set_count=30;//发送0.56ms 38k红外波(编码中的0.56ms低电平)

  flag=1;

  count=0;

  TR0=1;

  while(count《set_count);

  TR0=0;

  ir=1;

  }

  /*******************************************

  定时器初始化

  *******************************************/

  void init_timer()

  {

  EA=1;

  TMOD=0X02;//8位自动重载模式

  ET0=1;

  TH0=0XE8;//定时13us,38K红外波,晶振22.1184

  TL0=0XE8;

  }

  /*******************************************

  主函数

  *******************************************/

  void main(void)

  {

  init_timer();

  count=0;

  flag=0;

  irout=1;

  while(1)

  {

  keyscan();

  if(keyflag)//若有新按键

  {

  delay(10);

  sendcode();//发送红外编码

  delay(500);

  keyflag=0;//按键标志清零

  }

  }

  }

  /*******************************************

  定时器中断

  *******************************************/

  void timer0(void) interrupt 1

  {

  count++;

  if(flag==1)

  {

  irout=~irout;

  }

  else

  {

  irout=1;

  }

  ir=irout;

  }

  ********************************************************************************************

关键字:AT89S52  红外  电视遥控器 编辑:神话 引用地址:用AT89S52自制红外电视遥控器

上一篇:基于80C51的LED动态显示电路图
下一篇:超声测距报警系统外围电路图

推荐阅读最新更新时间:2023-10-12 20:57

基于微光与红外的夜视技术
      摘要 :以像增强器为主线概述微光成像技术,以红外探测器为主线概述红外热成像技术,分别介绍各自的发展历程、技术特点和发展趋势,并对这二种夜视技术进行了比较,最后介绍微光图像和红外图像的融合技术。    关键词 :微光;红外;夜视技术;图像融合    1 引言    始于20世纪60年代的微光夜视技术靠夜里自然光照明景物,以被动方式工作,自身隐蔽性好,在军事、安全、交通等领域得到广泛的应用。近年来,微光夜视技术得到迅速发展,在第一代、第二代、第三代的基础上,第四代技术应运而生。始于20世纪50年代的红外热成像技术也走过了三代的历程,它以接收景物自身各部分辐射的红外线来进行探测,与微光成像技术相比,具
[工业控制]
AT89S52单片机对太阳能发电系统参数测试仪的设计
引 言 为了确保太阳能发电系统能够正常的工作,需要对太阳能发电系统的各项环境参数进行测量,从而有效地控制其运行。本文介绍了一种基于单片机的太阳能参数测试仪,提供了3种参数的测量功能和通信接口,以及2种供电方式,既可作为手持设备使用,又能安装在发电系统中,具有较高的实用价值。 1 硬件电路设计 1.1 总体结构 该测试仪以AT89S52单片机为核心,外接温湿度传感器SHTll、照度传感器TSL2561、四位共阴数码管、RS485总线通信接口以及显示切换按键。单片机上电工作后,对当前温度、湿度、光强度进行实时测量,通过按键切换将测得的3种参数通过LED数码管进行轮流显示;此外,还可以通过RS485总线与PC机进行通信,将参数值传送
[单片机]
<font color='red'>AT89S52</font>单片机对太阳能发电系统参数测试仪的设计
洛克希德马丁公司再获10亿美元大单:维护天基红外系统
洛克希德马丁公司(Lockheed Martin)近日再获得一份价值10亿美元的合同,将负责运营和维护天基红外系统(SBIRS)的地面控制系统。美国太空部队在6月4日宣布了这份合同。SBIRS是国防部导弹预警网络的一个组成部分,旨在探测弹道导弹的发射。 SBIRS卫星是美国国防部导弹预警网络的一部分,用于检测弹道导弹发射。它包括高椭圆轨道上的两个红外传感器和地球同步地球轨道上的5颗卫星。 之前我认为这种军事卫星的发射任务可能是机密,没想到ULA全球直播火箭发射,当然某些重要的内容被动画代替。 洛克希德·马丁公司2019年营业收入598.12亿美金,其中70%来自美国国防部,全球最大的军火商之一,全球最大的航天工程和国防
[嵌入式]
基于热释电红外传感器的无线监控报警系统设计
本设计旨在制作出一种功能强大的报警系统,在出现紧急情况时能及时通知当事人,即便其不在现场附近,并自动呼叫报警。相比普通的报警器,本设计将重点放在远程语音报警上,只要接上适当的传感器就可组成防盗报警、火灾报警、煤气泄露报警等多功能报警系统,并附加实现一些智能控制功能,赋予报警系统更强大和完整的功能,以满足人们对安全报警的需求。本系统基于电话网络但是与电话互相独立不会影响电话的正常使用,并通过语音提示操作,人机交互友好。 系统原理及系统框图 本系统主要包括电话自动摘机和挂机电路,DTMF信号收发电路,语音提示电路,报警电路,键盘显示电路,人体信号检测电路,编码电路,无线发射电路,以及作为主核心的单片机控制电路,系统结构框图如图1所示
[工业控制]
基于热释电<font color='red'>红外</font>传感器的无线监控报警系统设计
利用近红外光谱法实现非侵入式血糖监测
血糖监测仪用于测量患者血液中的葡萄糖量,尤其是出现了糖尿病症状或有血糖过高或过低史的患者。一般来说,血糖监测仪可帮助糖尿病患者控制合适的胰岛素剂量。家用血糖仪的出现(非临床用设备)已经大大改善了患者的生活质量。然而,每次用这种监测仪进行测量时,不仅需要采集指血,造成疼痛和不便,而且要使用新的测试纸,从而增加了设备的使用成本。 要确定最合适的胰岛素剂量需要经常或持续监测血糖,但目前的血糖仪无法满足这一要求。连续监测仪确实存在,但需要植入皮下,植入后会造成创伤,而且每周都要更换。另外还有一种非侵入式血糖监测仪。本文将介绍一种使用近红外(NIR)光谱技术的架构,根据耳垂部分的透射光谱来确定血糖水平。由于要用到组织厚度和血氧
[医疗电子]
基于DSP的高速便携红外气体分析仪
红外气体分析仪是基于不同气体分子对特定波长红外光有选择性吸收的原理制成的一种物理式分析仪器,是典型的光、机、电一体化智能传感器系统。与其他气敏传感器系统相比,具有灵敏度高、响应快、分析气体种类多、量程范围宽、可连续测量等特点。在地震预报、矿井安全、石油勘探、大气物理、医疗卫生、污染源监测、高压设备故障诊断、化工过程控制、冶金等传统工业乃至现在所有的新技术革命带头学科如生物科学、微电子学、新型材料等领域均有着越来越广泛的应用。 从国内现有的红外分析器来看,大部分在线监测仪需上位机配合完成数据的后期处理和保存,前端仅仅完成信号探测和采集的功能,这样的设计在一些安装受限或长期无人监管(如污染源监测)的场合就不能适用了,针对这种状
[工业控制]
基于DSP的高速便携<font color='red'>红外</font>气体分析仪
数字红外线摄影原理介绍
红外线摄影的基本原则其实跟一般摄影是一样的,都是利用光线照在物体上反射经过镜片到相机内成像,区别只是在可见光与红外光的不同罢了。太阳光内含丰富多样的光线,当然也包含红外光,当阳光照在物体上反射到我们的眼睛及相机内时,其实我们已经接受到了红外光,但我们的视神经没有感应到。 数字红外线摄影原理 相机其实也接受到了红外光,但一般底片一样是无法感应,传统的红外线摄影要靠红外线专用底片,而数字相机用的 CCD或 CMOS本身就可感应到红外线,只是在一般的状况下由于可见光的光量远大于红外光所以看不出红外线效应(另一个原因是许多 DC都装有 IR cut filter )。 红外线滤镜( Infrared Filter )的作用是阻挡可见
[模拟电子]
EM78P447S单片机及其在直流电机红外遥控系统中的应用
1 EM78P447S的主要特点 EM78系列单片机是台湾义隆电子股份有限公司采用CMOS工艺制造的8位高性价比单片机。该系列单片机一般都内置看门狗计数器(WDT)、RAM、ROM、可编程定时/计数器、预分频器以及5层堆栈。该系列器件的绝大部分指令只需两个振荡周期,同时具有内外部中断、低电压检测复位、可编程I/0、内部上拉电阻和集电极开路输出、SLEEP方式等功能。另外,EM78P447S单片机还具有编程简单、速度快、功耗小、成本低等优点,能广泛应用于玩具、家电、工业控制等方面。 EM78P447S的主要性能特点如下: ●工作电压范围:2.5-5.5V; ●允许温度范围:0-70°C; ●工作频率范围
[单片机]
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved