登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 红外通信模块

[复制链接]
发表于 2019-1-31 22:27:12 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 熟练掌握
开始时间: 2019-01-31
结束时间: 2019-01-31
       红外接收发送主要是应用在小车避障,发射管先发送红外信号,红外信号会随着传送距离的加大逐渐衰弱,如果遇到障碍物,就会反射回来,经过一系列的信号处理改变小车的轨迹从而实现避障的功能。红外通信的原理:就是通过调制调制到合适的信道和合适的频率范围内进行传输。程序中还用到了中断,定时器,还有时间的判断  程序语句                                                                                  #include<STC12C5A60S2.H>
sbit IR_INPUT=P3^2;  //&ordm;ì&Iacute;&acirc;&frac12;&Oacute;&Ecirc;&Otilde;
bit irflag=0;//&ordm;ì&Iacute;&acirc;&frac12;&Oacute;&Ecirc;&Otilde;±ê&Ouml;&frac34;&pound;&not;&Ecirc;&Otilde;&micro;&frac12;&Ograve;&raquo;&Ouml;&iexcl;&Otilde;&yacute;&Egrave;·&Ecirc;&yacute;&frac34;&Yacute;&ordm;ó&Ouml;&Atilde;1
unsigned char ircode[4];//&ordm;ì&Iacute;&acirc;&acute;ú&Acirc;&euml;&frac12;&Oacute;&Ecirc;&Otilde;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;
//&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;&ordm;ì&Iacute;&acirc;&frac12;&Oacute;&Ecirc;&Otilde;&sup1;&brvbar;&Auml;&Uuml;
void InitInfrared()
{
IR_INPUT=1;
  TMOD &= 0x0F;// &Ccedil;&aring;&Aacute;&atilde;t1&micro;&Auml;&iquest;&Oslash;&Ouml;&AElig;&Icirc;&raquo;
TMOD |= 0x10;//&Aring;&auml;&Ouml;&Atilde;t1&Icirc;&ordf;&Auml;&pound;&Ecirc;&frac12;1
TR1=0;//&Iacute;&pound;&Ouml;&sup1;&frac14;&AElig;&Ecirc;&yacute;
ET1=0;//&frac12;&ucirc;&Ouml;&sup1;&Ouml;&ETH;&para;&Iuml;
IT1=1;//&Eacute;è&Ouml;&Atilde;INT1&Icirc;&ordf;&cedil;&ordm;±&szlig;&Ntilde;&Oslash;&acute;&yen;·&cent;
EX1=1;//&Ecirc;&sup1;&Auml;&Uuml;&Ouml;&ETH;&para;&Iuml;
}
//&raquo;&ntilde;&Egrave;&iexcl;&micro;±&Ccedil;°&cedil;&szlig;&micro;&ccedil;&AElig;&frac12;&micro;&Auml;&sup3;&Ouml;&ETH;&oslash;&Ecirc;±&frac14;&auml;
unsigned int GetHighTime()
{
TH1=0;//&Ccedil;&aring;&Aacute;&atilde;&sup3;&otilde;&Ouml;&micro;
TL1=0;
TR1=1;//&AElig;&ocirc;&para;&macr;
while(IR_INPUT)//&ordm;ì&Iacute;&acirc;&Ecirc;&auml;&Egrave;&euml;&Ograve;&yacute;&frac12;&Aring;&Icirc;&ordf;1&Ecirc;±&Ntilde;&shy;&raquo;·&frac14;ì&sup2;&acirc;&micro;&Egrave;&acute;&yacute;&pound;&not;±&auml;&Icirc;&ordf;&Aacute;&atilde;&Ecirc;±&Ocirc;ò&frac12;á&Ecirc;&oslash;±&frac34;&Ntilde;&shy;&raquo;·
{
  if(TH1>=0x40)
  {//&frac14;&Egrave;&cedil;&szlig;&micro;&ccedil;&AElig;&frac12;&sup3;&Ouml;&ETH;&oslash;&Ecirc;±&frac14;&auml;&sup3;&not;&sup1;&yacute;&Ocirc;&frac14;18ms
   break;
   }
  }
TR1=0;
  return(TH1*256+TL1);
}
unsigned int GetLowTime()
{
TH1=0;
TL1=0;
TR1=1;
while(!IR_INPUT)//&ordm;ì&Iacute;&acirc;&Ecirc;&auml;&Egrave;&euml;&Ograve;&yacute;&frac12;&Aring;&Icirc;&ordf;0&Ecirc;±&Ntilde;&shy;&raquo;·&frac14;ì&sup2;&acirc;&micro;&Egrave;&acute;&yacute;&pound;&not;&Icirc;&ordf;1&Ocirc;ò&frac12;á&Ecirc;&oslash;&Ntilde;&shy;&raquo;·
{
  if(TH1>=0x40)
  {
   break;
  }
}
TR1=0;

return (TH1*256+TL1);
}
void EXINT1_ISR() interrupt 2
{
unsigned char i,j;
unsigned char byt;
unsigned int time;

time=GetLowTime();
if((time<7833)||(time>8755))//&Aring;&ETH;&para;¨&Ecirc;±&frac14;&auml;·&para;&Icirc;§&Icirc;&ordf;8.5~9.5
{
  IE1=0;
  return;
}
time=GetHighTime();
if((time<3686)||(time>4608))
{
  IE1=0;
  return;
}
for(i=0;i<4;i++)
{
  for(j=0;j<8;j++)
  {
   time=GetLowTime();
   if((time<313)||(time>718))
   {
    IE1=0;
    return;
   }
   time=GetHighTime();
   etHighTime();
   if((time>313)&&(time<718))
   {
    byt>>=1;
   }
   else if((time>1345)&&(time<1751))
   {
    byt >>=1;
    byt |=0x80;
   }
   else
   {
    IE1=0;
    return;
   }
  }
  ircode[i]=byt;
}
irflag=1;
IE1=0;
}

QQ图片20190131221317.jpg
QQ图片20190131221312.jpg
QQ图片20190131221306.jpg
图片1.png
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表