HS5104是一个通用的红外遥控编码芯片,采用38KHz载波红外信号编码发射输出,定向性,抗干扰性都不错。采用的是按键起振模式,在平时没有按键时是不通电的,没有功耗。芯片有8个输入通道及2个用户码设置键,最大可以管理32个按键编码。可以用作一些家电和电动玩具的遥控器上,也可以与单片机构成一个短距离的(7~10m)的红外遥控系统。

  HS5104的编码是12位数据编码,每次按键按下时,先进行32ms延时,然后再连带起始码发出按键编码,直到按键抬起,才停止发送编码。每次按键至少发送两次。这些需要在单片机中进行软件处理。HS5104数据输出格式,连续两帧码之间间隔四位,根据48K信号的长短来区分0和1。

  红外接收使用也是38KHz集成红外解码模块,与单片机的连接较为简单,接收管的输出通过三极管反向后连接到单片机的IO口。软件中使用查询方式进行解码,也可以连接到单片机中断口,使用中断方式进行解码。这里使用的是IO查询方式。

  解码程序,用的是STC单片机,11.0592MHz晶振,使用单片机的定时器进行计数定时,可以比较准备测得每一个高电平低电平的延时时间,准确进行解码。

  一些预定义:

#define BIT_LOW (750)           //16个38KHz的定时器值,跟晶振有关,在实际用时,可以先用串口把这个值发出来 #define BIT_HIGH (2250) #define BIT_LOW_L (BIT_LOW - 500)    //为提高抗干扰性所放的余量,这样低电平的长度就是250~1250 #define BIT_LOW_R (BIT_LOW + 500) #define BIT_HIGH_L (BIT_HIGH - 1200)   //高电平长度1050~3450 #define BIT_HIGH_R (BIT_HIGH + 1200) #define BIT_WIDTH (BIT_LOW_L + BIT_HIGH_R) //一位总长度,低电平最长时加上高电平最长时间 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/romyks/archive/2010/05/30/5634120.aspx

  解码函数,只是校验了起始码后直接返回按键值,至于一次按键多个码,需要在读键值时进行处理。

//初始化,将定时器设置为16位计数模式 void IRDA_init(void) { #if (IRDA_TIMER_NUMBER == 0) TMOD &= 0xf0; //Using Timer 0 to count interrupt time TMOD |= 0x01; //Mode 0, 16-bit counter #else TMOD &= 0x0f; //Using Timer 1 to count interrupt time TMOD |= 0x10; //Mode 0, 16-bit counter #endif } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/romyks/archive/2010/05/30/5634120.aspx

  解码函数:

uint16 IRDA_soft_decord(void) { uint8 i; uint16 key = 0; uint16 mid; if (!IRDA_PORT)  //No signal, return { return KEY_NULL; } for (i=0; i<12; i++) { IRDA_TH = 0; IRDA_TL = 0; IRDA_TR = 1; // start timer 0 do { mid = (IRDA_TH << 8) + IRDA_TL; if (mid > BIT_WIDTH) //pulse wide big then 1 bit, error { return KEY_NULL; } } while (IRDA_PORT); IRDA_TR = 0; IRDA_TH = 0; IRDA_TL = 0; if (mid < BIT_LOW_L) //less then 360 us, error { return KEY_NULL; } if (mid > BIT_HIGH_L) //big then 800us, 1, or 0; { key |= (1 << (12 - i - 1)); } IRDA_TH = 0; IRDA_TL = 0; IRDA_TR = 1; do { mid = (IRDA_TH << 8) + IRDA_TL; if (mid > BIT_WIDTH) { break; } } while (!IRDA_PORT); } if ((key & START_CODE) == START_CODE) { return key; } else { return KEY_NULL; } } //end 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/romyks/archive/2010/05/30/5634120.aspx

copyright 2010.04 by rock

HS5104红外遥控芯片应用 1相关推荐

  1. HS5104红外遥控芯片应用

    HS5104是一个通用的红外遥控编码芯片,采用38KHz载波红外信号编码发射输出,定向性,抗干扰性都不错.采用的是按键起振模式,在平时没有按键时是不通电的,没有功耗.芯片有8个输入通道及2个用户码设置 ...

  2. 单片机开发-红外遥控芯片EN8F629

    EN8F629 是低成本.高性能.8 位.全静态flash 的CMOS 单片机.采用RISC 架构,仅有37 条单字/ 单周期指令.除程序跳转指令为两个周期外的所有其他指令都是单周期的.EN8F629 ...

  3. 红外线遥控c语言程序,红外遥控的C程序

    红外遥控在生产和生活中应用越来越广泛,不同的红外遥控芯片有不同的发码协议,但一般都是由引导码,系统码,键码三部分组成. 引导码是告诉接收机准备接收红外遥控码.系统码是识别码,不同的遥控芯片有不同的误别 ...

  4. c语言红外解码程序,[转载]红外遥控和C语言51红外遥控解码程序设计实例

    什么是红外线?人的眼睛能看到的可见光按波长从长到短排列,依次为红.橙.黄.绿.青.蓝.紫.其中红光的波长范围为0.62-0.76μm:比红光波长还长的光叫红外线.红外遥控在生产和生活中应用越来越广泛, ...

  5. 红外遥控氛围灯触摸芯片-DLT8SA15A-杰力科创

    方案基本组成 5V输入,电池供电,恒压方案: 一个触摸按键,一个滑条,一个红外遥控,4路PWM口输出: 方案产品功能 此款红外遥控调光调色氛围灯方案,主控芯片采用DLT8SA15A系列触摸芯片,封装型 ...

  6. 基于FPGA的红外遥控解码与PC串口通信

    基于FPGA的红外遥控解码与PC串口通信 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<电子设计EDA>的课程设计作业(呵呵,这个月都拿 ...

  7. NEC协议——红外遥控的使用

    NEC协议是众多红外遥控协议的其中一种,下面以蓝桥杯的单片机开发板实现红外解码. 相关芯片与元器件介绍 此图为跳线帽的解法,在做红外通信时应接3,5:4,6. 此图左为红外发射装置和HX1838集成芯 ...

  8. AutoLeaders控制组——51单片机学习笔记(AD/DA、红外遥控)

    本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...

  9. 红外遥控及Android手机红外遥控器开发

    一.红外遥控 红外遥控技术是通过红外技术.红外通信技术和遥控技术的结合实现的一种无线控制技术.由于红外线的波长较短,对障碍物的衍射能力较差,无法穿透墙壁,所以红外遥控术更适合应用在短距离直线控制的场合 ...

最新文章

  1. Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
  2. 面了大厂的 Python 岗后,炸了!
  3. Android——开源框架Universal-Image-Loader + Fragment使用+轮播广告
  4. mysql variables 大记录 查询 慢_MySQL - 慢查询
  5. 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符
  6. Json 与GeoJson
  7. HTTP协议(1)—HTTP的连接
  8. 【汇编语言】上机实验 win7/8/10 64位系统 进入32位DOS模式 实现dubug/edit/masm/link功能
  9. Java 线程池的实现原理,你真的理解吗?
  10. 2003系统安全配置
  11. springboot整合数据库
  12. MacOS修改Hosts文件
  13. lsdyna如何设置set中的node_list_如何为3CX配置Gigaset N670 N870 IP PRO
  14. Python技能树的测评和CSDN Markdown编辑器的测评
  15. Java violate变量
  16. Elasticsearch-31.在私有云上管理Elasticsearch 的一-些方法 he 在公有云上管理与部署Elasticsearch
  17. ios 输入法扩展_如何给iOS系统原生输入法导入词库
  18. 熟悉计算机信息处理的基础知识,信息处理技术员学习指导—考试内容
  19. java实现图片jpg批量转换成pdf
  20. [NOIP2007 普及组] 奖学金(python解)

热门文章

  1. getenv(“TEMP“)
  2. I2S音频杂音问题调查小结
  3. 数据挖掘实战:特征工程python实战
  4. 基于JAVA的葫芦娃游戏
  5. 创建一个nginx容器(提供配置文件和网页文件)
  6. python抢票代码_五一要来了,教你用Python动刷新抢12306火车票,附源码
  7. [LBM方法学习笔记1】格子玻尔兹曼方法介绍
  8. 【IOS invalid signature】记录一次微信H5跳转小程序的坑
  9. egret如何把按钮弄成灰色
  10. C# 串口关闭时主界面卡死原因分析