找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1195|回复: 0
打印 上一主题 下一主题
收起左侧

红外遥控模块

[复制链接]
跳转到指定楼层
楼主
ID:382761 发表于 2018-8-6 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include "lcd2.h"
#include "delay.h"
sbit IR=P3^2;
unsigned char IR_Code[4];
unsigned char IR_Data[33];
unsigned char IR_Time;
bit IR_RCV_OK;
bit IR_Pro_OK;
unsigned char TempData[16];
unsigned char LCD[16]="0123456789ABCDEF";
void Timer_Init(void)
{
TMOD=0x02;
TH0=0;
TL0=0;
ET0=1;
TR0=1;
}
void EX0_Init(void)
{
IT0=1;
EX0=1;
EA=1;
}
void Time0_ISR(void) interrupt 1
{
IR_Time ++;
}
void EX0_ISR(void)interrupt 0
{
static bit startflag;
static unsigned char BitCnt;
if(startflag)
{
  if(IR_Time<60&&IR_Time>40)
  {
   BitCnt=0;
  }
  IR_Data[BitCnt]=IR_Time;
  IR_Time=0;
  BitCnt++;
  if(BitCnt==33)
  {
   IR_RCV_OK=1;
   BitCnt=0;
   startflag=0;
  }
}
else
  {
   IR_Time=0;
   startflag=1;
   IR_RCV_OK=0;
  }
}
void IR_Pro(void)
{
unsigned char i,j,k;
unsigned char val;
k=1;
for(i=0;i<4;i++)
{
  for(j=1;j<=8;j++)
  {
   if(IR_Data[k]>7)
   {
    val |=0x80;
   }
   if(j<8)
   {
    val>>=1;
   }
   k++;
  }
  IR_Code=val;
  val=0;
}
IR_Pro_OK=1;
}
void button(void)
{

}

void IR_Work(void)
{
switch(IR_Code[2])
{
  case 0x45:button();break;
  default:break;
}
}

void IR_Disp(void)
{
TempData[0]=LCD[IR_Code[0]/16];
TempData[1]=LCD[IR_Code[0]%16];
TempData[2]='-';
TempData[3]=LCD[IR_Code[1]/16];
TempData[4]=LCD[IR_Code[1]%16];
TempData[5]='-';
TempData[6]=LCD[IR_Code[2]/16];
TempData[7]=LCD[IR_Code[2]%16];
TempData[8]='-';
TempData[9]=LCD[IR_Code[3]/16];
TempData[10]=LCD[IR_Code[3]%16];
LCD_Write_String(2,1,TempData);
}
void main()
{
Timer_Init();
EX0_Init();
LCD_Init();
LCD_Clear();
while(1)
{
  if(IR_RCV_OK)
  {
   IR_RCV_OK=0;
   IR_Pro();
  }
  if(IR_Pro_OK)
  {
   IR_Pro_OK=0;
   IR_Work();
   IR_Disp();
  }
}
}

红外遥控.zip

2.26 KB, 下载次数: 8, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表