文档详情

菜鸟学习51单片机之红外解码.pdf

发布:2016-01-29约7.33千字共8页下载文档
文本预览下载声明
菜鸟学习51单片机 while(1)世界 菜鸟学习51单片机 菜鸟学习51单片机 菜菜鸟鸟学学习习5511单单片片机机 红外解码 《菜鸟学习51单片机》由while(1)世界推出的非常简单的51 单片机教程。帮助刚接触单片机的童鞋快速入门。 这一讲是由Admin编写!读者有什么问题的可以在while(1) 世界的51版块发帖提问!红外遥控在生活中用的很多,那么有没有 想过运用红外遥控来做些小玩意呢! 红外遥控怎么解码呢?先来了解红外遥控发射出来的是什么 吧!遥控编码脉冲由前导码、8位用户码、8位用户码的反码、 8位操作码以及8位操作码的反码组成。这5个就是重点的啦! 前导码是一个遥控码的起始部分,由一个9ms的低电平(起始码) 和一个4. 5ms的高电平(结果码)组成,作为接受数据的准备脉冲。 (在做解码是,这个部分可以滤掉不用管)。 以脉宽为0. 56ms、周期为1. 12ms的组合表示二进制的“0”; 菜鸟学习51单片机 while(1)世界 以脉宽为1. 68ms、周期为2. 24ms的组合表示二进制的“1”。 这里我们做的是解码,所以我们看下面的两个图,就是一体化接收头 输出的码。‘1’和‘0’时的低电平时间相同,所以这里我们主要还 是判断高电平来解析现在到底是1还是0。如果高电平时间是1.685ms 则是‘1’如果高电平时间为0.56ms则是‘0’. 上面提到过,前导码可以滤掉不用管,那么我们解码就可以得到 后面的:8位的用户码,8位的用户码反码,8位操作码,8位的操作 码反码。 菜鸟学习51单片机 while(1)世界 上图就是我们用来接收红外遥控的万能接收头。将OUT脚接在外部 中断0的引脚上,也就是P3.2脚上就可以了。下面我们根据程序来 分析和学习。 采用外部中断管脚和红外接收头的信号线相连,中断方式为边 沿触发方式。并用定时器0计算中断的间隔时间,来区分前导码、二 进制的“1”、“0”码。 #includereg52.h #defineucharunsignedchar #defineuintunsignedint sbitHW=P3^2; //红外解码引脚 sbitled= P1^1; //来操作的灯 uint HW_TIME_H=0,HW_TIME_L=0; //之后计算时间用的 uchar HW_OK=0,HW_DAT[4]; //分别是解码成功的标志位和一个数组用来存解码 //得到的4个8位的数据 上面是最基本的一些定义了。我们只定义了两个脚,一个是用来红外 解码的,一个是LED灯的控制引脚。我们这个实验就做,用要控的一 个按键来控制灯。 这里使用的是外部中断0,下降沿触发中断。并且需要定时器0 来计算时间。所以,对中断和定时器配置如下: EA=1; //总中断开 IT0=1; //边沿触发方式 EX0=1; //外部中断使能 TMOD=0x01; // 定时器0工作方式1 TH0=0x00; //定时器初始值为0 TL0=0x00; //定时器初始值为0 菜鸟学习51单片机 while(1)世界 当万能接收头接收到红外遥控发来的数据后就会产生下降沿来 触发外部中断,那么就在中断里进行解码,下面就是中断里的解码 /******************************************************************* 11.0592Mhz晶振 9.5MS = 8755,,,,8.5MS = 7833 5MS = 460
显示全部
相似文档