最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 电子DIY > 单片机 >

制作基于AT89C2051的红外线接收控制器的制作

时间:2013-01-13 18:33来源:网络 作者:网络整理 点击:
免费提供各种电子制作文章、资料、图纸

制作基于AT89C2051的红外线接收控制器的制作

红外线吸取节制器的制作

在糊口中,我们常用到红外线节制种种电器,如彩电、空调、电电扇等。为我们带来较多的利便。但偶然我们仍感想不利便。如看完电视后,用遥控器只能关掉电视主电源,电视仍处于待机状态。行使者还得走到电视跟前.按下电小

视电源开关方能安心。若想看电视。还得启航开电视,显得很贫困。尤其是冬天躺在床上看电视,上上下下,深感未便。本文以操作红外遥控器来遥控电扇的制作要领为例(可任选一只红外线遥控器.能调速,软件稍作改变,可增进

按时成果等),来先容红外线吸取节制器的制作要领,假如制作电视交换电源的开、关节制器,可与电视共用一只遥控器,制作也较简朴些。

制作思绪

红外遥控发射器是操作红外线作载体传送信息的,发射周期不等的颠末调制后串行码.该串行码一样平常由引导码、用户辨认码、操纵码构成。经红外吸取头解码后获得一串周期不等的矩形波。如表示图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(参数可在《电子制作》网站查找)通断.通过节制其通断时刻比来到达电电扇调速。

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

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容