作业帮 > 综合 > 作业

简易红外遥控电路解说方框图解说,给i红外发射部分,红外接收部分,这两部分加上文字说明一个红外线遥控开关电路的方框图用由常

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/16 16:24:51
简易红外遥控电路解说
方框图解说,给i红外发射部分,红外接收部分,这两部分加上文字说明
一个红外线遥控开关电路的方框图
用由常规集成电路组成的单通道红外遥控电路的方框图
简易红外遥控电路解说方框图解说,给i红外发射部分,红外接收部分,这两部分加上文字说明一个红外线遥控开关电路的方框图用由常
其实如果你是用单片机来解码或编码发送的话,我可以提供电路图及程序(发送和接收)(c):发送程序://#include <reg52.h>      #include <intrins.h>#define uint unsigned int#define uchar unsigned char#define nop()  _nop_()uchar bdata tt;uchar x;sbit OP=tt^1;        //红外发射管的亮灭unsigned int count;       //延时计数器unsigned int endcount; //终止延时计数unsigned char flag;      //红外发送标志uchar iraddr1;  //十六位地址的第一个字节uchar iraddr2;  //十六位地址的第二个字节sbit yaokong = P3^2;void SendIRdata(char p_irdata);void delay();void main(void) {count = 0;flag = 0;OP = 0;yaokong = 0;EA = 1; TMOD = 0x11; ET0 = 1; TH0 = 0xFF; TL0 = 0xE6; //设定时值0为38K 也就是每隔26us中断一次  TR0 = 1;iraddr1=0x03;iraddr2=0xfc;do{for(x=125;x<0;x--);SendIRdata(0x0c);}while(1);} //定时器0中断处理 void timeint(void) interrupt 1 {   TH0=0xFF;   TL0=0xE6; //设定时值为38K 也就是每隔26us中断一次  count++;  if (flag==1)  {    OP=~OP;  }  else  {    OP = 0;  }  yaokong = OP;} void SendIRdata(char p_irdata){  int i;  char irdata=p_irdata;  endcount=223;  flag=1;  count=0;  do  {  }while(count<endcount);  endcount=117;  flag=0;  count=0;  do  {  }while(count<endcount);  irdata=iraddr1;  for(i=0;i<8;i++)  {     endcount=10;     flag=1;     count=0;     do{}while(count<endcount);     if(irdata-(irdata/2)*2)      {       endcount=41;      }    else     {     endcount=15;        }    flag=0;    count=0;    do{}while(count<endcount);    irdata=irdata>>1;  }  irdata=iraddr2;  for(i=0;i<8;i++)  {     endcount=10;     flag=1;     count=0;     do{}while(count<endcount);     if(irdata-(irdata/2)*2)     {        endcount=41;     }     else     {       endcount=15;     }     flag=0;     count=0;     do{}while(count<endcount);     irdata=irdata>>1;  }  irdata=p_irdata;  for(i=0;i<8;i++)  {     endcount=10;     flag=1;     count=0;     do{}while(count<endcount);     if(irdata-(irdata/2)*2)     {         endcount=41;     }     else     {       endcount=15;     }     flag=0;     count=0;     do{}while(count<endcount);     irdata=irdata>>1;  }  irdata=~p_irdata;  for(i=0;i<8;i++)  {     endcount=10;     flag=1;     count=0;     do{}while(count<endcount);     if(irdata-(irdata/2)*2)     {         endcount=41;     }     else     {       endcount=15;     }     flag=0;     count=0;     do{}while(count<endcount);     irdata=irdata>>1;  }  endcount=10;  flag=1;  count=0;  do{}while(count<endcount);  flag=0;}void delay(){  int i,j;  for(i=0;i<400;i++)  {    for(j=0;j<100;j++)    {    }  }}