最简单的51单片机红外遥控解码程序

发布者:HeavenlyJoy444最新更新时间:2014-03-03 来源: elecfans关键字:51单片机  红外遥控  解码程序 手机看文章 扫描二维码
随时随地手机看文章

  用单片机进行红外遥控解码,对大多数初学者来说是很麻烦的一个问题。下面介绍本人自编的红外遥控解码的C51程序,自认为是可能是史上最简的。此程序是针对uPD6121系列的遥控器的取码程序,解码值在Im[2]中,当IrOK=1时解码有效。

  /* 51单片机红外遥控解码程序 */

  /* 适用uPD6121系列 */

  #include

  #define DIGPORT P2

  #define WORDPORT P0

  unsigned char code LED_num[]={0x3f,0x18,0x76,0x7c,0x59,0x6d,0x6f,0x38,0x7f,0x7d};

  #define Imax 14000 //此处为晶振为11.0592时的取值,

  #define Imin 8000 //如用其它频率的晶振时,

  #define Inum 1450 //要改变相应的取值。

  unsigned char Im[]={0x00,0x00,0x00,0x00};

  unsigned long m,Tc;

  unsigned char i,IrOK;

  void DelayMy(unsigned int t){

  while(--t);

  }

  void Display_LED(unsigned long num)

  {

  unsigned int ii;

  unsigned int jj=0;

  unsigned long aa,bb;

  unsigned int xx[8]={0,0,0,0,0,0,0,0};

  do {

  bb=num/10;

  aa=num-bb*10;

  xx[jj]=aa;

  num=bb;jj++;

  }

  while(num>0);

  DIGPORT=0x80;

  for(ii=0;ii<8;ii++) {

  WORDPORT=LED_num[xx[ii]];

  DelayMy(60);

  DIGPORT=DIGPORT>>1;

  };

  WORDPORT=0;

  }

  //外部中断解码程序

  void intersvr1(void) interrupt 2 using 1

  {

  Tc=TH0*256+TL0; //提取中断时间间隔时长

  TH0=0; TL0=0; //定时中断重新置零

  if((Tc>Imin)&&(Tc

  if(Tc>Inum) Im[m/8]=Im[m/8]>>1|0x80; else Im[m/8]=Im[m/8]>>1; //取码

  if(m==32) if((Im[2]|0x01)==~Im[3]) IrOK=1; else IrOK=0; //取码完成后判断读码是否正确

  m++; //准备读下一码

  }

  /*演示主程序*/

  void main(void)

  {

  m=0;

  EA=1;

  IT1=1;EX1=1;

  TMOD=0x11;

  TH0=0;TL0=0;

  TR0=1;ET0=1;

  for(;;){

  DelayMy(100);

  if(IrOK==1) for(i=0;i<400;i++) Display_LED(Im[2]);

  IrOK=0;

  }

  }

关键字:51单片机  红外遥控  解码程序 引用地址:最简单的51单片机红外遥控解码程序

上一篇:单片机实现的led流水灯电路
下一篇:小型无线射频识别系统设计

推荐阅读最新更新时间:2024-03-16 13:36

8051单片机在机器人技术和医疗领域的应用
  距离8051单片机的诞生已有40多年,由于专利的到期,国内8051单片机,在价格上一般都会便宜很多。随着科学技术的发展,单片机的使用减小了电子产品的尺寸、成本和复杂性。由于其简单性和优势,越来越多地电子产品使用这些嵌入式芯片和单片机。   我们可以进行单片机编程,以根据电路操作的要求执行各种任务。因此,仅通过改变程序指令就可以在不改变项目的任何硬件电路的情况下由单个电路执行各种任务。因此,单片机在科学技术中的应用正在迅速增加。   一、单片机的应用   单片机通常用于电气和电子项目或电路。有各种类型的单片机,例如:英锐恩的8051系列8位单片机EN8F5113等。但是,由于8051单片机与其他单片机相比具有优势,因此经
[单片机]
80<font color='red'>51单片机</font>在机器人技术和医疗领域的应用
C51单片机数码管动态显示
数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示: C51单片机由于运行速度很慢,在高刷新频率下,单片机的资源耗费很厉害,这样单片机就不可以再进行大量的计算工作,实际上,单片机在刷新时,只需要周期性的改变GPIO口的状态就可以了,剩下的时间其实都是在空转的状态下,我们能不能将这个空转的状态拿来用呢?当然是可以的啦,这里,我们利用单片机的定时器周期地产能中断,在中断内进行数码管的刷新工作,就可以将等待中断的这个CPU时间拿来做别的事情了。 硬件电路: 代码贴过来: 主函数
[单片机]
C<font color='red'>51单片机</font>数码管动态显示
51单片机串行口的工作方式解析
方式0是外接串行移位寄存器方式。工作时,数据从RXD串行地输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,申请中断,但必须用软件清除中断标志。 实际应用在串行I/O口与并行I/O口之间的转换。 2)方式1 方式1是点对点的通信方式。8位异步串行通信口,TXD为发送端,RXD为接收端。一帧为10位,1位起始位、8位数据位(先低后高)、1位停止位。波特率由T1或T2的溢出率确定。 在发送或接收到一帧数据后,硬件置TI=1或RI=1,向CPU申请中断;但必须用软件清除中断
[单片机]
<font color='red'>51单片机</font>串行口的工作方式解析
51单片机之键盘扫描方式程序讲解
按键扫描程序 上电时, 点亮P00口LED 按下K1时, LED向右移一位 按下K2时, LED向左移一位 #include reg51.h #include intrins.h unsigned char scan_key(); void proc_key(unsigned char key_v); void delayms(un
[单片机]
51单片机点亮LED灯、流水灯
2-1点亮一个LED灯 1.首先在keil中新建一个工程,这里需要注意,将所写的工程可以统一一个地方进行存储,这样方便查找。之后再右击添加新文件 2.首先右击代码行,引用文件 3.之后再编写主函数 4.以其中亮一个LED灯为例,编写程序如下: P2=0xFE;//1111 1110 转换成十六进制0x表示前缀代表的是十六进制数 P2=0xFE;//1111 1110 下载程序后到STC-ISP中选择单片机的型号,串口号,打开相应的程序文件,进行下载编程 5.实现效果 6.当然,也可以加上循环语句表示让其一直循环下去,实现效果是一样的 通过点亮第一个LED灯,可以知道以八个一组为例改变010
[单片机]
<font color='red'>51单片机</font>点亮LED灯、流水灯
51单片机-中断
#include <reg52.h> #include <intrins.h> unsigned int dd, i; void key() interrupt 0{ if(i == 0) P2 = dd; else{ dd = _crol_(dd,1); P2 = dd; } i++; } void main(){ EA = 1; //中断允许总控制位使能 EX0 = 1; //外部中断0中断允许位 IT0 = 1
[单片机]
<font color='red'>51单片机</font>-中断
如何创建51单片机KEIL工程步骤
1. 什么是Keil软件 Keil软件是一款专为嵌入式系统开发而设计的集成开发环境(IDE),常用于51、STM32单片机软件开发的编程软件。Keil编程软件不仅支持多种工具和扩展程序,还能够处理多种文件格式和数据交换方式;可支持单片机程序的在线仿真,或通过仿真器进行实物仿真,大大方便开发人员的工作。 其中,我们常用的Keil软件有两种,分别为Keil C51以及Keil MDK,前者主要用于51单片机等8051内核单片机的开发工具(不支持32位单片机),Keil MDK主要用于ARM架构单片机的开发工具,主要用于STM32单片机等32单片机。所以在使用Keil软件时需要主要这一点。 2.如何创建51单片机KEIL工程步骤
[单片机]
如何创建<font color='red'>51单片机</font>KEIL工程步骤
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved