×
单片机 > 单片机程序设计 > 详情

基于51红外线遥控解码人流量统计系统设计基底

发布时间:2020-05-30 发布时间:
|
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
unsigned char code smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78};
uchar irtime;
uchar startflag;
uchar irdata[33];
uchar bitnum;
uchar irreceok;
uchar ircode[4];
uchar irprosok;
uchar disp[8];
//************************************************
//延时函数,在12MHz的晶振频率下
//大约50us的延时
//************************************************
void delay_50us(uint t)
{
 uchar j;
 for(;t>0;t--)
        for(j=19;j>0;j--);
}
//************************************************
//延时函数,在12MHz的晶振频率下
//大约50ms的延时
//************************************************
void delay_50ms(uint t)
{
 uint j;
 for(;t>0;t--)
 for(j=6245;j>0;j--);
}
void timer0init(void)
{
 TMOD=0x02;
 TH0=0x00;
 TL0=0x00;
 ET0=1;
 EA=1;
 TR0=1;
}
void int0init(void)
{
 IT0=1;
 EX0=1;
 EA=1;
}
void irwork(void)
{
 disp[0]=ircode[0]/16;
 disp[1]=ircode[0]%16;
 disp[2]=ircode[1]/16;
 disp[3]=ircode[1]%16; 
 disp[4]=ircode[2]/16;
 disp[5]=ircode[2]%16; 
 disp[6]=ircode[3]/16;
 disp[7]=ircode[3]%16; 
   
}
void display(void)
{
 uchar i;
 for(i=0;i<8;i++)
 {
  P1=smg_du[disp[i]];
  P2=smg_we[i];
  delay_50us(20);
 }
}
void irpros(void) 
{
 uchar k,i,j;
 uchar value;
 k=1;
 for(j=0;j<4;j++)
 {
  for(i=0;i<8;i++)
  {
   value=value>>1;  
   if(irdata[k]>6)  
   {
    value=value | 0x80; 
   }
   k++;
  }
  ircode[j]=value;
 }
 irprosok=1;
}
void main()
{
 timer0init();
 int0init();
 while(1)
 {
  if(irreceok)
  {
   irpros();
   irreceok=0; 
  }
  if(irprosok)
  {
   irwork();
   irprosok=0;
  }
  display();
   
 } 
 
  
}
void timer0 () interrupt 1
{
 irtime++; 
}
void int0 () interrupt 0
{
 if(startflag)
 {
  if(irtime>32) //检测引导码
  {
    bitnum=0;
  }
  irdata[bitnum]=irtime;
  irtime=0;
  bitnum++;
  if(bitnum==33)
  {
   bitnum=0;
   irreceok=1;
  }
 }
 else
 {
  startflag=1;
  irtime=0;
 }
}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计