您的位置 首页 知识

红外线遥控码单片机测验程序

以前在仕创时,总是奇怪周工为什么可以编出一个能测试任何遥控的遥控码和用户码的单片机程序!周工还将此程序视为宝贝,每次测试完都将

曾经在仕创时,总是古怪 周工为什么能够编出一个能测验任何遥控的遥控码 和用户码的单片机程序!周工还将此程序视为宝物,每次测验完都将那只现已烧录好的单片机拿回去!!在这几年 自己也触摸单片机,测验写出测验遥控码的程序!!但仅仅能测验出遥控码 并未能测验出用户码!!!所以其时周工仍是适当凶猛的!!

下面放出刚刚编录完结的程序,暂时只能测验遥控码!!
下载地址:http://www.51hei.com/f/hw51d.rar

测验遥控码(家里电视机待机按键遥控码):


程序是由C言语编写,单片机运用AT89C52 下面是程序:
#include
#include
#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;
}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/255359.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部