OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6790|回复: 6

51红外遥控

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2013-5-4
在线时间
0 小时
发表于 2013-5-4 10:35:33 | 显示全部楼层 |阅读模式
想请教各位高手,利用红外遥控控制51去执行不同的动作,接受芯片h138(38hz接在51的哪个引脚上,接受到的信号是单纯的高电平信号还是有占空比的信号,能不能利用这一个接收芯片来控制51完成多个动作?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2013-5-4 10:54:52 | 显示全部楼层
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2013-5-4 10:58:42 | 显示全部楼层
红外遥控器发出的就是38k的载波,
红外遥控器4个键值以十进制全部显示在lcd1602上,并附加遥控数码管显示0-9值功能源码:
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 code word1[]={"IR NUMBER:"};
uint8  word2[]={"                "};
uint8 ir_buf[4];//用以缓存ir码值
sbit RS = 1^0 ;
sbit RW = 1^1 ;
sbit EN = 1^5 ;
sbit BUSY = 0^7;
sbit ir_pin=P3^3;
sbit ENLED=P1^4;
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
void wait()
0=0XFF;
  do{EN=0;RW=1;RS=0;EN=1;}while(BUSY);
  EN=0;
}
void w_cmd(uint8 cmd)
{ wait();
  EN=0;
  RW=0;
  RS=0;
  0=cmd;
  EN=1;
  EN=0;
}
void w_dat(uint8 dat)
{ wait();
  EN=0;
  RS=1;
  RW=0;
  0=dat;
  EN=1;
  EN=0;
}
void w_string(uint8 add,uint8 *p)
{  w_cmd(add);
   while(*p!='\0')
   w_dat(*p++);
}
 Init_LCD1602()
{
w_cmd(0x38);  // 16*2显示,5*7点阵,8位数据接口
w_cmd(0x0C);  // 显示器开、光标开、光标允许闪烁
w_cmd(0x06);  // 文字不动,光标自动右移。此处只能是0x06!
w_cmd(0x01);  // 清屏
}



void EX1_ir() //注意!数字和大写字母不能做函数名
{ IT1=1;//下降沿为触发条件
  EX1=1; //中断名称:外部中断
  EA=1; //中断总开关
}


uint16 get_low()
{  TH0=0;
   TL0=0;
   TR0=1;
   while(!ir_pin&&(TH0&0X80)==0);
   TR0=0;
   return(256*TH0+TL0);
}
uint16 get_high()
{  TH0=0;
   TL0=0;
   TR0=1;
   while(ir_pin&&(TH0&0X80)==0);
   TR0=0;
   return(256*TH0+TL0);
}
void convert_num(uint8 add,uint8 num)
{ w_cmd(add);
    w_dat(num/100%10+'0');//将16进制转换成十进制百位
w_dat(num/10%10+'0');//将16进制转换成十进制十位
w_dat(num%10+'0');//将16进制转换成十进制个位,记住转换方法和函数公式
}
/*void convert_bcd(uint8 add,uint8 num)//转换bcd码,仅供参考研究!
{
w_cmd(add);
w_dat(num/16 + '0');
w_dat(num%16 + '0');
} */
void main()
{ Init_LCD1602();
  TMOD=0X01;//脉宽计时,必须对相应的定时器定义
  EX1_ir();
  w_string(0x80,word1);
  while(1);
}
ir_interrupt() interrupt 2
{
   uint16 temp;
   uint8 i,j;

temp = get_low();
if ((temp < 7833) || (temp > 8755))  //引导脉冲低电平8500~9500us
return;
temp = 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 = get_low();
if ((temp < 184) || (temp > 737)) //200~800us
return;

temp = get_high();
if ((temp < 184) || (temp > 1843)) //200~2000us
return;

ir_buf >>= 1;
if (temp > 1032) //1120us
ir_buf |= 0x80;
}

}
 convert_num(0xc0,ir_buf[0]);
 convert_num(0xc4,ir_buf[1]);
       convert_num(0xc8,ir_buf[2]);
         convert_num(0xc8+0x04,ir_buf[3]);
// convert_bcd(0xc8,ir_buf[2]);
        
          ENLED=0;ADDR3=1;ADDR0=1;ADDR1=0;ADDR2=0;
 if(ir_buf[2]==22)
 0=0xc0;
 if(ir_buf[2]==12) 
 0=0Xf9;
 if(ir_buf[2]==24)
 0=0xa4;
 if(ir_buf[2]==94)
 P0=0xb0;
 if(ir_buf[2]==8)
 P0=0x99;
 if(ir_buf[2]==28)
 P0=0x92;
 if(ir_buf[2]==90)
 P0=0x82;
 if(ir_buf[2]==66)
 P0=0xf8;
 if(ir_buf[2]==82)
 P0=0x80;
 if(ir_buf[2]==74)
 P0=0x90;
  
}
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2013-5-4 11:13:39 | 显示全部楼层
外部中断,下降触发
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2013-5-4
在线时间
0 小时
 楼主| 发表于 2013-5-9 10:31:01 | 显示全部楼层
二楼高手啊,谢谢了。遗憾的是我看不懂、、、
回复 支持 反对

使用道具 举报

6

主题

23

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2014-5-11
在线时间
12 小时
发表于 2014-5-11 16:42:00 | 显示全部楼层
回复【5楼】李小灰:
---------------------------------
呵呵,你要是做个能学习的,串口通信,简单易用,可以用万能红外编解码芯片YHRTX01,http://item.taobao.com/item.htm?spm=a1z10.1.w4004-6958990213.7.1hWmAi&id=38506585145
也有一种多功能的解码芯片推荐给你,常用的遥控都能接出来,典型编码芯片如uPD6121, uPD6122, TC9012以及众多
的兼容芯 片型号,如 T2221, T2222, SC6121, SC6122,SC9012 等等,一个芯片通杀,一个芯片就能搞定!http://item.taobao.com/item.htm?spm=686.1000925.1000774.13.2B8BMr&id=38941459239
提供:红外学习芯片、模块;315M、433M无线学习芯片、模块;MP3语音芯片、模块;更多产品和详情请光临我的淘宝小店http://shop109337654.taobao.com;欢迎大家交流学习指导。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-8-28
在线时间
0 小时
发表于 2014-8-28 08:46:19 | 显示全部楼层
二楼高手啊,谢谢了。遗憾的是我看不懂、要是全都注释就好了
电子爱好者
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 04:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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