历史上的今天

今天是:2024年10月23日(星期三)

正在发生

2019年10月23日 | 51单片机红外接收代码加解码

发布者:数字狂想 来源: 51hei关键字:51单片机  红外接收  解码 手机看文章 扫描二维码
随时随地手机看文章

头文件 stc12c5a.h下载: http://www.51hei.com/mcu/2564.html 

头文件 1602.h 下载: http://www.51hei.com/bbs/dpj-24671-1.html 

  ///*redPC838.c文件

* 红外接收数据,中断方式,并通过串口发送

* 晶振:11.0592M*/

#include<STC12c5a.h>

#include<1602.h>

typedef unsigned char uint8;

sbit Ir_Pin = P3^3;

uint8 Ir_Buf[4]; //用于保存解码结果

extern int keynum=1;

void int1_init(void)

{

IT1 = 1; //下降沿有效

EX1 = 1;

EA = 1;

TMOD = 0x01;

}

/*获取低电平时间*/

unsigned int Ir_Get_Low()

{

TL0 = 0;

TH0 = 0;

TR0 = 1;

while (!Ir_Pin && (TH0&0x80)==0);  

              

TR0 = 0;           

return (TH0 * 256 + TL0);

}

/* 获取高电平时间*/

unsigned int Ir_Get_High()

{

TL0 = 0;

TH0 = 0;

TR0 = 1;

while (Ir_Pin && (TH0&0x80)==0);

TR0 = 0;

return (TH0 * 256 + TL0);

}

//*******************************************

void PC838()

{ int1_init();

}

void int1_isr() interrupt 2

{

unsigned int temp;

char i,j;

temp = Ir_Get_Low();

if ((temp < 7833) || (temp > 8755))  //引导脉冲低电平8500~9500us

return;

temp = Ir_Get_High();

if ((temp < 3686) || (temp > 4608))  //引导脉冲高电平4000~5000us

return;

for (i=0; i<4; i++) //4个字节

{

for (j=0; j<8; j++) //每个字节8位

{

temp = Ir_Get_Low();

if ((temp < 184) || (temp > 737)) //200~800us

return;

temp = Ir_Get_High();

if ((temp < 184) || (temp > 1843)) //200~2000us

return;

Ir_Buf[ i] >>= 1;

if (temp > 1032) //1120us

Ir_Buf[ i] |= 0x80;

}

}

if( Ir_Buf[2]=~ Ir_Buf[3])  //验证键数据码和其反码是否相等,一般情况下不必验证用户码

{

if(Ir_Buf[2]==0x16)  keynum=0; //a[0]=00h;a[1]=ffh

if(Ir_Buf[2]==0x0c)  keynum=1; //a[0]=00h;a[1]=ffh

if(Ir_Buf[2]==0x18)  keynum=2; //a[0]=00h;a[1]=ffh

if(Ir_Buf[2]==0x5E)  keynum=3;

if(Ir_Buf[2]==0x08)  keynum=4;

if(Ir_Buf[2]==0x1C)  keynum=5;

if(Ir_Buf[2]==0x5A)  keynum=6;

if(Ir_Buf[2]==0x42)  keynum=7;

if(Ir_Buf[2]==0x52)  keynum=8;

if(Ir_Buf[2]==0x4A)  keynum=9;

if(Ir_Buf[2]==0x45)  keynum=10; //ON/OFF

if(Ir_Buf[2]==0x46)  keynum=11; //MODE

if(Ir_Buf[2]==0x47)  keynum=12; //静音

if(Ir_Buf[2]==0x44)  keynum=13; //暂停

if(Ir_Buf[2]==0x40)  keynum=14; //下一曲

if(Ir_Buf[2]==0x43)  keynum=15; //上一曲

if(Ir_Buf[2]==0x07)  keynum=16; //EQ

if(Ir_Buf[2]==0x15)  keynum=17; //VOL-

if(Ir_Buf[2]==0x09)  keynum=18; //VOL+

if(Ir_Buf[2]==0x19)  keynum=19; //RPT

if(Ir_Buf[2]==0x0D)  keynum=20; //U/SD

  //  beep();        //蜂鸣器响一声 提示解码成功




}


}

//******************8redPC838.h文件

#ifndef _redPC838_

#define _redPC838_

#define uchar unsigned char

#define uint  unsigned int

void PC838();

extern int keynum;

#endif 


关键字:51单片机  红外接收  解码 引用地址:51单片机红外接收代码加解码

上一篇:51单片机ADC0809数码管显示光照强度的仿真和源码
下一篇:51单片机智能车超声波避障实验

推荐阅读

中国减速机产量逐年增长,2014年,我国生产减速机600万台,同比增长6.9%;2015年,我国减速机产量为623万台,同比增长3.88%,2017年我国减速机产量已经达到671万台。中国减速机产品从最初单一的摆线减速机发展到现在的齿轮减速机、蜗轮蜗杆减速机等,并被广泛应用于电力机械、冶金机械、环保机械、化工机械、食品机械、矿山机械、建筑机械、水利机械等国民...
任何软件安全计划要想真正发挥作用,都必须确定需要关注的适当活动以及应当由谁负责执行这些活动,这是软件安全计划的重要环节。新思科技软件安全构建成熟度模型(BSIMM)是对现实世界中软件安全计划开展多年研究的结果,是衡量软件是否安全的标尺。 新思科技宣布发布其最新版本的软件安全构建成熟度模型(BSIMM)——BSIMM10。该模型旨在帮助企业规划、执行、...
对于使用电机、发电机和齿轮等的机械设备和技术系统,状态监控是当前的核心挑战之一。在最大限度降低生产停机风险这一方面,计划性维护的重要性日益凸显,不仅是在工业领域,在任何使用机械系统的地方均是如此。除此以外,本文还分析了机器的振动模式。齿轮箱导致的振动在频域体现为轴速的倍数。不同频率点的磨损、不平衡或松脱的部件等异常。我们通常使用...
10月18-19日,TUV南德意志集团(以下简称“TUV 南德”)联合SAE International 国际自动机工程师学会 (以下简称“SAE”)于上海成功举办ISO/SAE 21434道路车辆—网络安全工程国际标准培训。来自国内知名的主机厂及一级制造供应商等多家企业的汽车网络安全相关人员参加了此次培训。透过该场专业化的培训,TUV南德旨在帮助企业了解和掌握车辆网络安全风...

史海拾趣

问答坊 | AI 解惑

2005年中国RFID产业回顾

      RFID作为一种新兴的射频识别技术,近年来日益引起国人的重视。03年6月,沃尔玛宣布2005年1月1日为供货商完成RFID革新工作的最后期限。这对于其最大的供货基地——中国的RFID市场无疑起到了推波助澜的作用。&nb ...…

查看全部问答∨

6期桑拿程序HEX代码

6期桑拿程序HEX代码…

查看全部问答∨

问个较弱的问题

我现在想搭建一个电路,但是我发现我的示波器在未接任何东西的情况下,也会有噪声,幅值很小,但是频率不停的变化(几十hz到几khz)。而我的电路关键就是要得到可调的不同频率的信号。于是,我在电路的输出端加上上拉电阻,这样幅值上去了,但是频 ...…

查看全部问答∨

请客观比较一下stc系列和avr系列单片机

我之前用的是c51,然后顺其自然就用了stc的片子。感觉stc的性价比比51是强了不少。对51做了不少扩展,而且指令周期也缩短了。最近发现用avr的人也不少,于是萌生了想换个芯片的想法。只是听说avr的指令速度比较快,不知道还有没有相对于stc更优越的 ...…

查看全部问答∨

跑求驱动的加载

跪求WINCE 下面的SDIO设备驱动加载过程,比如SDIO的蓝牙或者SDIO接口的WIFI,又或者SDIO接口的数字电视!不胜感谢!…

查看全部问答∨

TIM捕获频率不正确

我的初始化函数与中断函数如下: void TIM4_Config(void) {   TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;    TIM_ICInitStruct ...…

查看全部问答∨

linux内核完全剖析-基于0.12的

这里分享一下赵炯博士的经典书籍:linux内核完全剖析-基于0.12的,其实这本书是0.11的,只是它是修订版,也到0.12了,但是却比0.12的书少很多页,看起来心里没压力呀,呵呵。由于本人是新来的,资源很少,币值也少的可怜,所以这本书就索要一个币值 ...…

查看全部问答∨

ISE14.6 CPLD综合的时候FIT出现警告,不能找到ISE项目库,详细信息如下:

WARNING:Cpld - Unable to retrieve the path to the iSE Project Repository. Will    use the default filename of 'plv.ise'. ISE14.6安装在D盘,新建一个工程在C盘,工程名称ss123,工程中添加的源文件名称是plv,用verilog语言编 ...…

查看全部问答∨

用MSP430G2553制作地铁屏蔽门继电器正常工作检测程序

用MSP430G2553制作地铁屏蔽门继电器正常工作检测程序,要用漏电流传感器检测然后数据转换到单片机,判断是否在正常工作,不正常工作的话要报警并传送到后台计算机…

查看全部问答∨

CAD低版本为什么打印不了高版本的图,(经过CAD转换了)

能改能看 就是不能打印 也经过版本转换器转换了 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved