久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4559|回復(fù): 0
收起左側(cè)

紅外線遙控碼單片機測試程序

[復(fù)制鏈接]
ID:101489 發(fā)表于 2016-1-2 20:40 | 顯示全部樓層 |閱讀模式
轉(zhuǎn)自:http://www.zg4o1577.cn/mcu/1488.html
以前在仕創(chuàng)時,總是奇怪 周工為什么可以編出一個能測試任何遙控的遙控碼 和用戶碼的單片機程序!周工還將此程序視為寶貝,每次測試完都將那只已經(jīng)燒錄好的單片機拿回去!!在這幾年 本人也接觸單片機,嘗試寫出測試遙控碼的程序!!但只是能測試出遙控碼 并未能測試出用戶碼!!!所以當(dāng)時周工還是相當(dāng)厲害的!!
       下面放出剛剛編錄完成的程序,暫時只能測試遙控碼!!
     下載地址:http://www.zg4o1577.cn/f/hw51d.rar

下載軟件界面,用于燒錄單片機!!




USB下載器

剛燒錄好程序,單片機加電時顯示“00”

測試遙控碼(家里電視機待機按鍵遙控碼)

程序是由C語言編寫,單片機使用AT89C52       下面是程序:

#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#defineNop(){_nop_(); _nop_(); _nop_(); _nop_(); _nop_();}

volatile ulong IRcode=0x00000000;  
volatile ulong Irdcode=0x00000000;
volatile uint customcode=0x0000;      
volatile uint time_us=0x0000;      

volatile uchar timeH,timeL;  

uchar Lcustomcode;      
uchar Hcustomcode;     
uchar datacode;   
uchar mycode;
uchar Rdatacode;      
uchar uc1ms;
uchar uc10ms;
uchar uc3ms;

uchar  ucDispTime;
uchar  ucDispOrder;
uchar  ucDispCon;
uchar ucSpeakerTime;
unsigned char code LedData[16] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned char code LedCon[2] = {0x8f,0x4f};
unsigned char ucDispData[2];
sbit led1 = P3^7;
sbit led2 = P3^6;
sbit power=P1^0;  
sbit BEEP= P2^1;
bit NewIRcode=0;  
bit DataRight=0;   
bit bSampleOk;
bit bSampling;
bit b10msInt;
bit  b1msInt;
bit bKeySound;
bit b1msMain;
bit IR_E;           
bit b3msint;

void SendDataToDispDevice();
void Ir_process();
void display();
void beeping();

void init()
{
  IP=0x09;   
  TMOD=0x11;
  TCON=0x01;
  TH0=0xff;  
  TL0=0x47;
  TH1=0x00;  
  TL1=0x00;

  EA=1;   
  ET0=1;   
  ET1=1;      
  EX0=1;   
  TR1=0;
  TR0=1;

}

void TimeProg(void)
{      
b1msMain = b1msInt;
   b1msMain=0;
b10msInt = 0;


if(b1msInt == 1)
{  
         b1msMain=1;
   if(++uc10ms == 10)
{
uc10ms = 0;
b10msInt = 1;
if(bKeySound==1)
  {beeping();
bKeySound=0;
}
}

}
}//void TimeProg(void)

void IR_ISR() interrupt 0 using 1
{
  static uchar cn;

  TR1=0;
  timeH=TH1;
  timeL=TL1;
  TH1=0;
  TL1=0;
  TR1=1;                     

  time_us=(unsigned int)timeH;
  time_us=time_us<<8;
  time_us=time_us|timeL;

  if(time_us>12200&&time_us<13000) {cn=1;IRcode=0;}  
  if(cn<34)
      {
          if(time_us>950&&time_us<1120)                   //0
           {
             IRcode=IRcode|0x00000000;
             if(cn<33) IRcode=IRcode>>1;
           }

      else if(time_us>1920&&time_us<2120)        //1t > 1950 && t < 2150
          {
             IRcode=IRcode|0x80000000;
             if(cn<33) IRcode=IRcode>>1;
           }
  

  //else if(time_us>10000&&time_us<11000) {Irdcode=IRcode;cn=34; }   
                                                   }
cn++;
  if(cn==34)
   { NewIRcode=1;
     TR1=0;  

     Irdcode= IRcode;  cn=0;  
}  

}


void Timer0_ISR() interrupt 1 using 2  
{
  TR0=0;
  TH0=0xff;  
  TL0=0x47;
  TR0=1;
  if(++uc1ms == 5)
{
uc1ms = 0;
        b1msInt=1;
if(++uc3ms==8)
  {
   uc3ms=0;
   b3msint=1;
    SendDataToDispDevice();
   }


}
}//void Timer0IntProg() interrupt 1 using 1

void Timer1_ISR() interrupt 3 using 3  
{
  TR1=0;
  TH1=0x00;  
  TL1=0x00;
  TR1=1;

}
void SendDataToDispDevice()
{
unsigned char n;
    //watchdog();
if(++ucDispOrder >= 2)  ucDispOrder = 0;

         if(ucDispOrder==0)
      {led1=0;
           led2=1;
       Nop();
            Nop();
  
   }
if(b3msint==1)
       {if(ucDispOrder==1)
       {led2=0;
            led1=1;
    Nop();
            Nop();
    }
}
       n = LedData[ucDispData[ucDispOrder]];
      P0=n;

  

} //void SendDataToDispDevice()

void main()
{

    init();
  beeping();
while(1)
  {
     TimeProg();
     Ir_process();
     display();
   
  }

}

void Ir_process()

{

  if(NewIRcode==1)
  {
    NewIRcode=0;
    customcode=(Irdcode>>16);   
                          Lcustomcode=customcode>>8;
    datacode=(unsigned char)(customcode&0x00ff);  
     
   
       Rdatacode=Lcustomcode;   

      if(~Rdatacode!=datacode)
  {  DataRight=0;
     Irdcode=0;
     datacode=Rdatacode=0;
   }

     else
{ DataRight=1;
   IR_E=1;
   mycode=datacode;}
     if(DataRight==1)  { bKeySound = 1;DataRight=0;  }
     
     }

   

}

void display()
  {
  /*  unsigned char a[2];
a[0] = mycode & 0x0f;
mycode = mycode >> 4;
a[1] = mycode & 0x0f;
ET0 = 0;
ucDispData[0] = a[0];
ucDispData[1] = a[1];
ET0 = 1;*/
if(IR_E==1)
{
ET0 = 0;
ucDispData[0] = mycode & 0x0f;
mycode = mycode >> 4;
ucDispData[1] = mycode & 0x0f;
    IR_E=0;
ET0 = 1;
}
}

void delay(unsigned char x)    //x*0.14MS
{
unsigned char a;
  while(x--)
{
  for (a = 0; a<13; a++) {;}
}
}


/**********************************************************/
void beeping()
{
  unsigned char i;
  
  for (i=0;i<100;i++)
   {
     delay(4);
     BEEP=!BEEP;                 
   }
  BEEP=1;
                    }





回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人av在线播放 | 夜色www国产精品资源站 | 一区二区三区在线免费观看 | 亚洲精品一 | 亚洲欧洲精品成人久久奇米网 | 久久亚洲欧美日韩精品专区 | 久久久久久亚洲精品 | 伊人激情网 | 在线观看av不卡 | www.99热这里只有精品 | 久久中文字幕电影 | 日本精品视频一区二区三区四区 | 超碰电影 | 久久久久久久久淑女av国产精品 | 亚洲免费影院 | 二区在线观看 | 日韩成人精品一区二区三区 | 日本精品视频 | 色婷婷av久久久久久久 | 欧美成年人 | 免费精品视频在线观看 | 久久91精品国产 | 欧美视频中文字幕 | a a毛片| 精品不卡| a级毛片毛片免费观看久潮喷 | 国产精品1区 | 国产精品3区 | 国产日韩欧美精品一区二区 | 午夜视频免费 | 国产真实乱全部视频 | 99热在这里只有精品 | 欧美在线视频网站 | 中文字幕亚洲精品 | 中文字幕一区在线观看视频 | 精品亚洲二区 | 男女网站免费观看 | 日韩中文字幕一区二区 | 国产精品久久久久久久午夜 | 999久久久| 欧美中文字幕一区二区三区 |