您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 单片机红外发射(原理与设计程序)
用AT89S51单片机制作红外电视遥控器一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。遥控串行数据编码波形如下图所示:接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低电平处发送38kHz红外信号,高电平处则不发送红外信号。单片机红外电视遥控器电路图如下:C51程序代码:#includeAT89X51.hstaticbitOP;//红外发射管的亮灭staticunsignedintcount;//延时计数器staticunsignedintendcount;//终止延时计数staticunsignedcharflag;//红外发送标志chariraddr1;//十六位地址的第一个字节chariraddr2;//十六位地址的第二个字节voidSendIRdata(charp_irdata);voiddelay();voidmain(void){count=0;flag=0;OP=0;P3_4=0;EA=1;//允许CPU中断TMOD=0x11;//设定时器0和1为16位模式1ET0=1;//定时器0中断允许TH0=0xFF;TL0=0xE6;//设定时值0为38K也就是每隔26us中断一次TR0=1;//开始计数iraddr1=3;iraddr2=252;do{delay();SendIRdata(12);}while(1);}//定时器0中断处理voidtimeint(void)interrupt1{TH0=0xFF;TL0=0xE6;//设定时值为38K也就是每隔26us中断一次count++;if(flag==1){OP=~OP;}else{OP=0;}P3_4=OP;}voidSendIRdata(charp_irdata){inti;charirdata=p_irdata;//发送9ms的起始码endcount=223;flag=1;count=0;do{}while(countendcount);//发送4.5ms的结果码endcount=117flag=0;count=0;do{}while(countendcount);//发送十六位地址的前八位irdata=iraddr1;for(i=0;i8;i++){//先发送0.56ms的38KHZ红外波(即编码中0.56ms的低电平)endcount=10;flag=1;count=0;do{}while(countendcount);//停止发送红外信号(即编码中的高电平)if(irdata-(irdata/2)*2)//判断二进制数个位为1还是0{endcount=41;//1为宽的高电平}else{endcount=15;//0为窄的高电平}flag=0;count=0;do{}while(countendcount);irdata=irdata1;}//发送十六位地址的后八位irdata=iraddr2;for(i=0;i8;i++){endcount=10;flag=1;count=0;do{}while(countendcount);if(irdata-(irdata/2)*2){endcount=41;}else{endcount=15;}flag=0;count=0;do{}while(countendcount);irdata=irdata1;}//发送八位数据irdata=p_irdata;for(i=0;i8;i++){endcount=10;flag=1;count=0;do{}while(countendcount);if(irdata-(irdata/2)*2){endcount=41;}else{endcount=15;}flag=0;count=0;do{}while(countendcount);irdata=irdata1;}//发送八位数据的反码irdata=~p_irdata;for(i=0;i8;i++){endcount=10;flag=1;count=0;do{}while(countendcount);if(irdata-(irdata/2)*2){endcount=41;}else{endcount=15;}flag=0;count=0;do{}while(countendcount);irdata=irdata1;}endcount=10;flag=1;count=0;do{}while(countendcount);flag=0;}voiddelay(){inti,j;for(i=0;i400;i++){for(j=0;j100;j++){}}}制作的实物如下图所示:1、引言红外通信是目前比较常用的一种无线数据传输手段,其具有无污染、信息传输稳定、信息安全性高以及安装使用方便等优点,并且可以在很多场合应用,如家电产品,工业控制、娱乐设施等领域。红外通信是利用950nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。发射端将二进制数字信号调制成某一频率的脉冲序列,经电光转换电路,驱动红外发射管以光脉冲的形式发送到空中。接收端将接收到的光脉冲转换成电信号,再经解调和译码后恢复出原二进制数字信号。本文设计了一种基于单片机PIC18F248的主从式红外通信系统,主要设计了红外接口电路以及主机和从机通信软件流程。2、系统硬件电路设计在主从式红外通信系统中,主机及从机的红外发射电路相同,红外线的载波频率都为38KHz,在同一时间内,可以是主机发射,从机接收;或者从机发射,主机接收。2.1红外发射电路设计红外发射器电路主要由单片机,驱动管Q1和Q2、红外发射管D1等组成,电路如下:红外发射器工作原理为:单片机通过I/O端口控制整个发射过程。其中,红外载波信号采用频率为38KHz的方波,由PIC18F248的*模块的PWM功能实现,并由*1端口传输到三极管T2的基极。待发送到数据由单片机的TX端口以串行方式送出并驱动三极管Q1,当TX为“0”时使Q1管导通,通过Q2管采用脉宽调制(PWM)方式调制成38KHz的载波信号,并由红外发射管D1以光脉冲的形式向外发送。当TX为“1”时使Q1管截止,Q2管也截止,连接Q1和Q2的两个上拉电阻R1和R3把三极管的基极拉成高电平,分别保证两个三极管可靠截止,红外发射管D1不发射红外光。因此通过待发送数据的“0”或“1”就可控制调制后两个脉冲串之间的时间间隔,即调制PWM的占空比。比如若传送数据的波特率为1200bps,则每个数位“0”就对应32个载波脉冲调制信号。红外发射管D1采用TSAL6200红外发射二极管,其实现将电信号转变成一定频率的红外光信号,它发射一种时断时续的高频红外脉冲信号,由于脉冲串时间长度是恒定的,根据脉冲串之间的间隔大小就可以确定传输的数据是“0”还是“1”。2.2红外接收电路设计红外接收电路主要采用Vishay公司的专用红外接收模块HS0038B。接收电路及HS0038B内部结构如下:
本文标题:单片机红外发射(原理与设计程序)
链接地址:https://www.777doc.com/doc-7257553 .html