找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3794|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機紅外遙控求助各位大俠。。。ò遄邮荋L-1)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:34641 發(fā)表于 2012-4-12 19:00 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式

#include<reg52.h>
#include<stdio.h>
sbit dula=P2^6;
sbit wela=P2^7;
sbit fm=P2^3;

#define uchar unsigned char
#define uint unsigned int

sbit ir=P3^2;//紅外接口標(biāo)準(zhǔn)
uint lowtime,hightime;
uchar a[4];
void cmg()
{
 dula=1;
 P0=0x00;
 dula=0;
 wela=1;
 P0=0x00;
 wela=0;
 //jd=0;
}
void timer0_init()
{
 TMOD=0x01;//定時器0定時方式1
}
void hong_init()
{
 EA=1;//總中斷允許
 EX0=1;//外部中斷0允許
 IT0=1;//外部中斷0觸發(fā)方式選擇位,置1為下降沿有效
 ir=1;
}
bit my()//紅外讀32位的數(shù)據(jù)
{
 uchar i,j,temp;

 for(i=0;i<4;i++)
 {
  for(j=0;j<8;j++)
  {
   temp=temp>>1;//右移用于取數(shù)
   TH0=0;
   TL0=0;//定時器清零
   TR0=1;
   while(ir==0);//等待低電平
   TR0=0;
   lowtime=TH0*256+TL0;//保存低電平時間
   TH0=0;
   TL0=0;
   TR0=1;
   while(ir==1);
   TR0=0;
   hightime=TH0*256+TL0;
   if((lowtime<370)||(lowtime>640))
    return 0;
   if((hightime>370)&&(hightime<640))
    temp=temp&0x7f;
   if((hightime>1300)&&(hightime<1800))
    temp=temp|0x80;
  }
  a=temp;
 }
 if(a[2]=~a[3])
 return 1;
}
//lcd1602

void main()
{
 hong_init();
 timer0_init();
 cmg();
 while(1);

}
void int0() interrupt 0
{
 EX0=0;//關(guān)閉外部中斷
 TH0=0;
 TL0=0;//定時器清零以準(zhǔn)確計時
 TR0=1;//開啟定時器0
 while(ir==0);//4.5ms的引導(dǎo)碼等待,當(dāng)ir為1是為結(jié)束碼,跳出等待
 TR0=0;// 關(guān)定時器
 lowtime=TH0*256+TL0;//保存低電平時間
 TH0=0;
 TL0=0;//定時器再次清零
 TR0=1;//開定時器
 while(ir==1);//等待結(jié)束碼
 TR0=0;
 hightime=TH0*256+TL0;//保存高電平時間
 if((lowtime>3800)&&(lowtime<4600)&&(hightime>3800)&&(hightime<4600))
 {
   //my();
  if(my()==1)
      fm=0;

 }
 
}

 

用遙控器控制蜂鳴器發(fā)聲的功能無法實現(xiàn),謝謝各位大俠!!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表