HT6221发送红外HS0038解码程序
1 可以用,要弄懂的话就要去看看HT6221的时序图。 2 3 C51的红外解码程序,可以根据需要自己修改: 4 / 5 //12Mhz 6 //根据自己的接线来改 7 sbit IRIN = P3^2; //红外接收器数据线 8 / 9 10 //// 11 //定义数组IRCOM,分别装解码后得到的数据 12 //IRCOM[0] 低8位地址码 13 //IRCOM[1] 高8位地址码 14 //IRCOM[2] 8位数据码 15 //IRCOM[3] 8位数据码的反码 16 / 17 uchar IRCOM[4]=0; 18 19 #define uchar unsigned char 20 #define uint unsigned int 21 /********************************************/ 22 void delay014ms(unsigned char x); //x*0.14MS 23 void IR_init(void); 24 void IR_CODE(void); 25 26 void delay014ms(unsigned char x) //x*0.14MS 27 { 28 unsigned char i; 29 while(x--) 30 { 31 for (i = 0; i<13; i++) {} 32 } 33 } 34 35 /// 36 //初始化 37 // 38 void IR_init(void) 39 { 40 EX0=1; //允许总中断中断,使能 INT0 外部中断 41 TCON = 0x01; //触发方式为脉冲负边沿触发 42 IRIN=1; //I/O口初始化 43 } 44 45 / 46 //解码过程 47 / 48 void IR_CODE(void) 49 { 50 unsigned char j,k,N=0; 51 EX0 = 0; 52 delay014ms(15); 53 if (IRIN==1) 54 { EX0 =1; 55 return; 56 } //确认IR信号出现 57 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 58 {delay014ms(1);} 59 60 for (j=0;j<4;j++) //收集四组数据 61 { 62 for (k=0;k<8;k++) //每组数据有8位 63 { 64 while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 65 {delay014ms(1);} 66 while (!IRIN) //等 IR 变为高电平 67 {delay014ms(1);} 68 while (IRIN) //计算IR高电平时长 69 { 70 delay014ms(1); 71 N++; 72 if (N>=30) 73 { EX0=1; 74 return;} //0.14ms计数过长自动离开。 75 } //高电平计数完毕 76 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0” 77 if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1” 78 N=0; 79 } 80 } 81 if (IRCOM[2]!=~IRCOM[3]) //不等的话表示解码失败 82 { 83 IRCOM[4]=0; 84 EX0=1; 85 return; 86 } 87 88 pro();//解码成功后运行的程序 89 EX0=1; 90 return; 91 }
所谓解码就是能用单片机把以不同宽度的脉冲区别开来,一种比较好思路就是计算两次下降沿间隔时间,当单片机外部中断1口有下降沿时中断一次,并启动定时器,定时器定50us,当下次下降沿到来时我们计算定时器中断的次数,这样我们就能很好的区分不同宽度的脉冲了。实际上,我们红外接收头收到的信号的是有毛刺的,在下降沿中断触发后,要做延时去抖处理。
转载于:https://www.cnblogs.com/wangh0802PositiveANDupward/archive/2012/07/23/2605468.html
HT6221发送红外HS0038解码程序相关推荐
- 万能遥控程序c语言,51单片机万能红外遥控解码程序
51hei单片机论坛里流传的遥控解码程序现在都弱爆了根本解不了现在的遥控自己写个万能红外遥控解码 本程序中需要用的头文件下载:http://www.51hei.com/mcu/2564.html // ...
- 实战篇:基于HT6221的红外遥控解码实现
本次主要实现红外遥控解码模块的实现,红外模块发送端采用的是HT6221的编码芯片,而在接收端由于红外对管,生成的正好是与发送端电平相反的信号.要实现解码模块程序编写,需先知道协议的过程以及编码的格式, ...
- C语言红外模块程序,C语言写的红外遥控解码程序
#include "STC89C51RC.H" sbit DQ = P4^3; sbit SPK = P1^0; #include #define seg1 XBYTE[0xffe ...
- MS8006单片机开发IR红外遥控解码原理与程序实现(NEC)
目录 一.红外遥控概述 二.红外编码规则 三.硬件实现 四.软件部分 1.软件实现原理 2.红外解码程序说明 3.高低位逆转算法说明 4.key_switch遥控按键指令识别函数说明 五.总结 一.红 ...
- 红外遥控系统原理及单片机软件解码程序,我的编写经历(C版本)
应该说现在每一块开发板都带有红外模块,并且大都配置了相应的程序.但其实自己动手写解码程序,更能锻炼自己所学,且不谈程序写的如何,这个过程中肯定是受益良多的.现在我就把我花一下午写出的解码程序与大家分享 ...
- 红外遥控系统原理及单片机软件解码程序
应该说现在每一块开发板都带有红外模块,并且大都配置了相应的程序.但其实自己动手写解码程序,更能锻炼自己所学,且不谈程序写的如何,这个过程中肯定是受益良多的.现在我就把我花一下午写出的解码程序与大家分享 ...
- 基于定时器捕获功能的红外解码程序(NEC协议)
文章目录 前言 一.红外协议简介 1. ITT Protocol 2. NEC 协议 3. Nokia NRC17 协议 二.红外解码程序(NEC协议) 1. 软硬件环境及红外解码状态图 2. 基于定 ...
- HT6221红外遥控解码设计
项目名称 HT6221红外遥控解码设计 具体要求 接收红外按键的数据在ISSP上观察 设计说明 下图为红外遥控器及按键图.红外接收头有三个引脚,电源.地和信号输出. HT6221芯片的红外遥控发送数据 ...
- 51单片机红外通信解码教程
** 下面先提供一段芯片手册 ** HT6221/2解码手册 下面我们对这个遥控器编写一个解码程序, 依照模块化设计的思想,逐个函数进行编写 因为波形是与时间相关联的,我们先编写延时函数 //函数功能 ...
- arduino 的红外遥控解码
测试发现 遥控器的角度不一样 或者有反射 导致解析的码也不一样 程序 /** IRrecvDemo-LED* =====================功能说明================ ...
最新文章
- 《梦断代码》阅读笔记01
- ST17H26尽量避免switch语句
- 配置apache2目录
- 2019面试跳槽回顾和一点感想
- 分布式下的session问题
- 数据算法之插入排序(insertSort)的Java实现
- 海缆修好之前,上网悠着点
- 应用机器学习(二):k-NN 分类器
- 技术实践如何支持演进式架构和持续集成
- 高淇Java300集
- 马克思主义基本原理概论
- torch中的retain graph、detach
- win7旗舰版通知windows不是正版副本解决方法
- 2021.11.19【读书笔记】丨snakemake常见问题汇总(下)
- RabbitMQ 可靠性、重复消费、顺序性、消息积压解决方案
- CISSP基本概念与常见名词
- 【微信小程序】 apache配置https,nginx配置https
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View
- 机器学习实战-泰坦尼克号生存预测案例
- 阿里巴巴淘系技术:超详|2020年你不应该错过的CSS新特性