




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机实现红外接收解码摘要:接收到红外遥控器的脉冲波形,并通过解析其波形得到红外遥控器的相应解码,实习对相应设备的控制。本文详细接受红外遥控技术原理并如何通过C51单片机实现红外遥控。关键字:单片机,红外遥控,解码1.引言遥控器相信大家不会陌生,日常生活中会使用到各种各样的遥控器,比如电视机、DVD机、空调、机顶盒甚至音响、热水器等都用到遥控器,其实红外技术已经走进与人们的生活并且与人们的生活息息相关了。红外遥控器作为设备的输入控制具有操作简便、价格便宜等诸多好处。您可以根据您公司产品需要和遥控器提供商协商定制遥控器,包括遥控器键盘布局、每个按键的键码等。遥控器键盘上每个按键的键码是一个小于2
2、56的一个数值,按键后通过遥控器红外管产生脉冲发送出去,红外接收器接收到脉冲后,对脉冲流进行分析,提取键码值,并按照键码值实现其遥控目的。2.红外接收原理红外遥控信号接收:红外接收电路可以使用集成接收器,接收器包括红外接收管及信号处理IC,接收器对外只有三个引脚,一个接电源的Vcc脚、一个接地的GND脚、一个脉冲信号输出脚,当然脉冲信号输出脚直接接单片机的某个可以使用的IO脚就可以了。3.脉冲波形分析:每次按键,红外接收器这边会收到一串脉冲宽度不等的脉冲波形流,其脉冲流由35个脉冲波形构成:前导码:第1个脉冲波形用户码1:第2到第9个脉冲波形用户码2:第10到第17个脉冲波形键码:第18到第2
3、5个脉冲波形键码反码:第26到第33个脉冲波形连续按键脉冲:第34和第35个脉冲为结束脉冲(也即连续按键脉冲),在每次按键结束后会有两个结束脉冲,如果一直按键不放的话,会一直发送连续按键脉冲,并可以认为在收到10个连续按键脉冲后是下一个按键。注意:不同的遥控器产生的用户码值可能不一样,笔者碰到两种不同的用户码:0x00,0xFF及0x04,0x7F。 脉冲流中有四种不同的脉冲波形宽度:其中前导码脉宽为:40(4ms) < 脉冲宽度 < 50(5ms)连续按键脉宽为: 21(2.1ms) < 脉冲宽度 < 25(2.5ms)bit "0" 脉宽为: 3
4、(0.3ms) < 脉冲宽度 < 7(0.7ms)bit "1" 脉宽为: 14(1.4ms) < 脉冲宽度 < 19(1.9ms) 在收到一串脉冲流后,就要对其进行分析,先要检测第一个脉冲波形是不是前导码,如果不是,则继续检测前导码,如果是则检测如下32个脉冲波形:用户码1为1字节,由8个脉冲波形组成(其中一个脉冲波形表示字节中1 bit);用户码2为1字节;键值为1字节;键值反码为1字节,键值反码为键值取反值。先判断所收到用户码是否正确,如果不正确则丢弃此次所收键码,如果正确则利用键值反码取反与键值比较,判断收码是否正确,如果不正确则丢弃所收键码
5、。如下图所示:前导码:用户码:键码:结束码:从上图可以看出其用户码为:0b00100000-0b11111110,由于其低位在前,故转换后得到用户码为:0b00000100-0b01111111,即0x04,0x7F;其键码及键码反码为:0b00010010-0b11101101,同样也是低位在前,转换后得到键码及键码反码为:0b01001000-0b10110111,即0x48,0xB7。4.实现:4.1初始化初始化时当然要先初始化单片机红外接收管脚为高阻输入状态,其次要初始化定时器,因为检测分析脉冲波形时需要用到定时器,根据上面对脉冲流波形分析可以知道最窄的脉宽为bit “0”,为0.3m
6、s左右,所以定时器最好定时为每0.1ms中断一次比较好,但是定时器的值怎么设置呢,这样根据单片机的振荡器决定。4.2脉冲波形分析首先当然是检测前导码,单片机红外接收管脚在初始化时已经设置为高阻输入状态(即高电平状态),当有红外输入时,状态变为低电平状态,一旦检测到有低电平过来,则开始准备检测前导码。得到每个脉冲波形序号,并根据定时器统计出每个脉冲波形在高电平状态维持的时间,通过其时间值检测第一个脉冲是否是前导码,如果不是则重新检测前导码,如果是前导码则分析其后每个脉冲波形是bit “0”,还是bit “1”,并按顺序每八个波形为一个字节方式保存到用户码1字节变量、用户码2字节变量、键码字节变量
7、、键码反码字节变量,直到收满32个bits。4.3收码判断所收到的用户码是否正确、键码及键码反码是否正确,如果都正确则认为此次收码为正确收码,否则丢弃。收码完后,还会有结束脉冲波形,如果用户一直按住某个键不放,遥控器会一直发送连续按键脉冲波形,如果多次收到连续按键,可以认为再次收到键码,这个可以根据实际需要定。5.程序代码#include <reg51.h>#define uint unsigned int#define uchar unsigned charuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
8、0x6f,0x77,0x7c,0x39, 0x5e, 0x79, 0x71;uchar code weitable=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar irnum; /定时器0定时时间计数uchar bitnum; /存放接收到的位数uchar startflag; /开始标志uchar irdata33;uchar irreceok=0; /判断是否接收到一帧数据,33位uchar ircode4; /存放4个码值uchar irprosok;uchar disp8;sbit LS138A=P22; /138译码器的A端由P2.2口控制
9、sbit LS138B=P23; /138译码器的B端由P2.3口控制sbit LS138C=P24; /138译码器的C端由P2.4口控制void delay(uint i)/定时1msuchar j;for(i;i>0;i-)for(j=110;j>0;j-) ;void init() /初始化 T0, exter 0 IT0=1; /外部中断,下降沿触发IE0=1;/外部中断0允许EX0=1; /开中断/定时计数器0中断TMOD=0x02; / 工作方式1,16位TH0=0x00; /定时0.256ms TL0=0x00;ET0=1; / 开中断EA=1;TR0=1; / 定
10、时计数器启动中断 void irpros(void) /解码 uchar i,j,k; uchar value; k=1; for(j=0;j<4;j+) for(i=0;i<8;i+)value=value>>1; if(irdatak>6) /接收的数据为0或1,0为1.125ms<5,1为2.25约89,曲中间 value=value|0x80; k+;ircodej=value; /编码值给ircode,value=0; irprosok=1; /红外数据提取完毕/显示,要将接收到的码拆开8位显示void irwork(void)/将接收到的码拆开显
11、示disp0=ircode0/16; /按16进制显示disp1=ircode0%16;disp2=ircode1/16;disp3=ircode1%16;disp4=ircode2/16; /按16进制显示disp5=ircode2%16;disp6=ircode3/16;disp7=ircode3%16;void display(void) /送到数码管显示LS138C=0;LS138B=0;LS138A=0; P0=tabledisp0; delay(10);/第一个数码管显示1LS138C=0;LS138B=0;LS138A=1; P0=tabledisp1; delay(10);/第
12、一个数码管显示2LS138C=0;LS138B=1;LS138A=0; P0=tabledisp2; delay(10);LS138C=0;LS138B=1;LS138A=1; P0=tabledisp3; delay(10);LS138C=1;LS138B=0;LS138A=0; P0=tabledisp4; delay(10);LS138C=1;LS138B=0;LS138A=1; P0=tabledisp5; delay(10);LS138C=1;LS138B=1;LS138A=0; P0=tabledisp6; delay(10);LS138C=1;LS138B=1;LS138A=1; P0=tabledisp7; delay(10);void main()init();while(1)if(irreceok) /若接收到数据irpros();/解码irreceok=0;if(irprosok) /数据解码完毕,拆开显示irwork();irprosok=0;display();void exter0() interrupt 0 if(irnum>50) /收到引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件测试工程师能力构建试题及答案
- 新兴领域中的领导力重要性研究试题及答案
- 计算机四级多领域试题及答案探讨
- 2025年电动汽车电池热管理技术环保性与可持续性分析报告
- 污水处理厂新建工程项目运营管理方案
- 工业互联网NFV平台在智能工厂生产设备运行效率提升中的应用报告
- 2025年废旧电子产品无害化处理与资源回收行业市场动态与竞争格局研究报告
- 2025年借用人员劳动合同范本
- C语言解决方案试题及答案
- 软件测试课程考试重点试题及答案
- 江苏省徐州市2022-2023学年八下期末数学试题(原卷版)
- 特殊教育概论-期末大作业-国开-参考资料
- 2024年南京市鼓楼区小升初英语考试题库及答案解析
- 服务质量评价体系构建
- 麻醉过程中的意外与并发症处理规范与流程样本
- 猫传染性腹膜炎课件
- 幼儿足球训练课件
- 动物的营养需求与摄取
- 分子气动力学及气体流动的直接模拟
- 大学食堂原料物资猪肉采购 投标方案
- 绿色环保 低碳生活主题班会
评论
0/150
提交评论