网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
搜索关键字: 所有资讯 行业动态 市场趋势 政策法规 新品发布 技术资讯 价格快报 展会资讯
  • 达普IC芯片交易网 > 新闻中心 > 单片机制作 > 正文
  • RSS
  • 基于AT89C2051的红外线接收控制器的制作
    http://www.ic72.com 发布时间:2008/12/23

    红外线接收控制器的制作

    在生活中,我们常用到红外线控制各类电器,如彩电、空调、电风扇等。为我们带来较多的方便。但有时我们仍感到不方便。如看完电视后,用遥控器只能关掉电视主电源,电视仍处于待机状态。使用者还得走到电视跟前.按下电小

    视电源开关方能放心。若想看电视。还得动身开电视,显得很麻烦。尤其是冬天躺在床上看电视,上上下下,深感不便。本文以利用红外遥控器来遥控风扇的制作方法为例(可任选一只红外线遥控器.能调速,软件稍作改变,可增加

    定时功能等),来介绍红外线接收控制器的制作方法,如果制作电视交流电源的开、关控制器,可与电视共用一只遥控器,制作也较简单些。

    制作思路

    红外遥控发射器是利用红外线作载体传送信息的,发射周期不等的经过调制后串行码.该串行码一般由引导码、用户识别码、操作码组成。经红外接收头解码后得到一串周期不等的矩形波。如示意图1。

    不同型号的遥控发射器的波形宽度不同。即周期T1、T2……不同.在不知手头遥控发射器的波形周期的情况下.首先要制作一个检测红外线周期的工具。根据测得的周期规律来制作红外线接收控制器。

    制作方法

    检测红外周期的器件制作.见图2。

    当红外接收头没有接收到发射器发送来的红外线.其输出端输出高电平(约 5V)。当接收到红外线,输出端电平变低.送到单片机AT89C2051的外部中断1口即INT1,使其发生中断而进入中断服务:启动定时器1并开M-I-数。相当于在图1的A点.1个周期后即C点。单片机第二次中断。关定时器1.记下周期T1(实际上只记下TH1的数值。 TL1的值可以丢弃)。然后清TH1、TL1,再启动定时器1重新计数,第二个周期完后,同样会引起单片机发生中断.再记

    下周期T2'…一,如此记下40-50个周期(一般红外编码为4字节.即32BIT.之前还有引导码。又因接收到的红外数据不一定是从引导码开始,要分析一次完整的串行码,应尽可能多记下红外矩形波周期数)。接收完后,通过按轻触开关将各记下的各周期的THl在数码管显示出来以作分析(每按一次轻触开关,显示下一个周期数)。

    编程方法

    在main()中开中断。启动定时器1.即EA=I;EX1=1:IT1=1;TRI=I:

    在外部中断1的服务程序中编写如下语名:#defineCNT50//预测50个红外线周期 DATA Byte value_h[CNT]://记录周期的变量(数组) DATA Byte count=0;//接收到的周期数 void int1(void)interrupt 2{

    if(TH1==TL1&&TL1==0)//判断是否是第一次接收到红外数据

    {

    TR1=1:

    }elseI

    TRl=0;value_h[count]:THl;

    THl=TLl=0;TRI=I:count;

    if(count==CNT)

    {

    EXl=0:count=u;

    l} l

    假设接收到的TH的数值为:30,50.04,08,08,08,04,04,04,04,04,08,08,08,04,04,04,04。08,04,04,08,04,04,04,04,04,04,08,08,04.08,08,08,08,3f,50....

    稍作分析可知。表示高低电平的有效数为:04,08。若将04定作低电平.08定作高电平.舍弃其他数据,得到4字节数据即:01110000。01110000,10010000。01101111。转为十六进制后得:70h,70h,90h,6fh,至此得到遥控发射器刚才按下的键值码.用同样的方法可以测得其他键键值码。假设有:70h,70h,0x90,0x6f。//0键70h,70h.0x00,0xff。//1键70h,70h.0xd0,0x2f//power键

    根据以上数据分析得.每键码为4字节.前2字节固定不变,为用户识别码。后2字节均不同,是操作码。将遥控器上的各键键值码测出后,根据这些数据可以根据制作需要进行编程了。因键值码为4字节太长。不利于编程,需要将各键键值转为相对应的1字节的数据,如:70h,70h,0x90,0x6f,对应于O,70h,70h,0x00,0xff对应于1..…·

    转换方法:

    建立一个数组,将上述测得的各键码按顺序放入数组中(去掉用户识别码)

    code Byte arr[][2]=

    {

    0x90,0x6f.//0,尽可能按键0、键1..·…的先后顺序放,以符合习惯

    0x00,0xff,//1

    ……

    Oxl0,0xef.//9

    0xd0, Ox2f //power 13

    };

    在接收红外线的外部中断1函数中编写如下的键码转换语句:

    DATA Byte arrtmp[4];

    DATA Byte Keytmp;//转换后的键值寄存变量

    DATA Byte Keyval=NOKEY;

    bit KeyOk;//键值转换完成与否的标志

    bit d_Ok;//接收到一个完整的键码标志

    void Ex_int(void)interrupt 2

    {

    Byte i;

    Byte(*p)[2];

    ……

    if(d_Ok)//若接收到完整的键码

    {

    d_Ok=0://清除

    if(arrtmp[0]==0x70&&arrtmp[1]

    ==0x70){//键码转换

    for(p=arr,bO:i<14:i。p)

    {if(arrtmp[2]==*(*p 0)&&arrtmp[3]

    ==*(*p 1))

    { Keytmp=i:KeyOk=1;//键值

    转换成功标志

    break;

    }else{Keytmp=NOKEY;l//未

    接收到完整的键值

    }

    }eIse{Keytmp=NOKEY;}

    } l

    经过转换后的Keytmp为0、1、2……的整数.然后再编写主函数、调速函数(参源程序)。来进行电风扇调速。

    有关电路的一些解释:单片机U1(AT89C2051)P37脚输出高低电平通过R13控制光耦可控硅MOC3041(参数可在《电子制作》网站查找)通断.通过控制其通断时间比来达到电风扇调速。

    有关红外周期检测和电风扇调速实例的源程序可在本刊网站上下载。


    上一篇:无
    下一篇:用单片机解码红外遥控器
    www.ic72.com 达普IC芯片交易网
  • 行业动态
  • 市场趋势
  • 政策法规
  • 新品发布
  • Baidu

    IC快速检索:abcdefghijklmnopqrstuvwxyz0123456789
    COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
    客户服务:service@IC72.com 库存上载:IC72@IC72.com
    (北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123