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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

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

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年05月18日   【字體:

  以前在仕創時,總是奇怪 周工為什么可以編出一個能測試任何遙控的遙控碼 和用戶碼的單片機程序!周工還將此程序視為寶貝,每次測試完都將那只已經燒錄好的單片機拿回去!!在這幾年 本人也接觸單片機,嘗試寫出測試遙控碼的程序!!但只是能測試出遙控碼 并未能測試出用戶碼!!!所以當時周工還是相當厲害的!!

       下面放出剛剛編錄完成的程序,暫時只能測試遙控碼!!
       下載地址:http://m.zg4o1577.cn/f/hw51d.rar


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

 
 程序是由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;
   }

關閉窗口

相關文章

主站蜘蛛池模板: 日本特黄特色aaa大片免费 | 精品粉嫩aⅴ一区二区三区四区 | 欧美日韩亚洲国产 | 老司机狠狠爱 | 亚洲成人一区二区在线 | 视频一区在线观看 | 国产色在线 | 欧美中文字幕 | 春色av | 欧美一级片 | 欧美日韩精品一区二区 | 色婷婷精品久久二区二区蜜臂av | 中文字幕免费在线 | 成人精品在线视频 | 日韩在线免费播放 | 久久精品亚洲欧美日韩精品中文字幕 | 极品的亚洲 | 亚洲成人精品影院 | 亚洲人成人一区二区在线观看 | 色眯眯视频在线观看 | 中文字幕国产日韩 | www.久久久久久久久久久久 | 日日骚网| 中文字幕在线观看视频一区 | 国产成人精品一区二区三区视频 | 日韩精品成人av | 国产精品爱久久久久久久 | 色综合久久久 | 久久久区 | 亚洲狠狠爱一区二区三区 | 国产精品免费视频一区 | 亚洲欧美一区二区三区在线 | 国产精品有限公司 | 久久久久久国产精品久久 | 国产99久久精品一区二区永久免费 | 精品久久久久久亚洲精品 | 日韩欧美三级 | 男人的天堂在线视频 | 天天爱av| 成人在线视频免费播放 | 国产乱码精品一区二区三区中文 |