这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 51单片机DIY佳能600D遥控器

共5条 1/1 1 跳转至

51单片机DIY佳能600D遥控器

高工
2012-11-02 19:45:47     打赏

最近入手佳能600D一台,无奈穷屌丝一枚,买了机就没钱买遥控器了,你想啊,作为一名屌丝,没有遥控器这种自拍神器怎么可能活下去呢,于是决定动手DIY一个遥控器,经过不断找资料,研究佳能遥控器之后发现佳能RC-1这款遥控器山寨起来不困难,已经有人发出AVR代码了,虽然我不懂AVR,但是单片机的东西多看几下应该是没问题的,最后成功山寨。看帖

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

这个是简化之后的原理图,玩电子的一看就明白了,不必多说
/*********************************程序******************************/
   //************************************单片机DIY佳能相机遥控器RC-1***********************************
#include "reg52.h"
sbit ir=P1^0;//红外发射管控制脚,使用24M晶振
sbit ka=P3^2;//即按即拍
sbit kb=P3^3;//延时拍摄
unsigned int count, set_count,pulen;
bit irflag,keyflag;
//---------------------------------------------------------------------------
void delay(unsigned int a)//延时,晶振24M ,此处延时不需很精确
 {
  unsigned char i;
  while(--a!=0)
  for(i=300;i>0;i--);
 }
//---------------------------------------------------------------------------
void keyscan() // 按键扫描
{
     if(ka==0)
  {
   keyflag=1;pulen=479;//a键按下,发送编码中的空闲(7.33ms,480个脉冲时长)
  }
     if(kb==0)
  {
   keyflag=1;pulen=349;//b键按下,发送编码中的空闲(5.36ms,350个脉冲时长),利用pulen传递空闲脉冲数
  }
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
void ir_send() //发送红外数据
 {
  set_count=31;//发送编码中的脉冲码(16个脉冲周期共计489us,32个峰谷)
  irflag=1;    //启动红外发射二极管发射,发射第一个脉冲群
  count=0;    //中断计数清0
  TR0=1;
  while(count<set_count);
   TR0=0;
   set_count=pulen; //利用pulen传递空闲脉冲数
   irflag=0;    //停止红外发射二极管发射
   count=0;    //中断计数清0
   TR0=1;
  while(count<set_count);
   TR0=0;
   set_count=31;//发送编码中的脉冲码(16个脉冲周期共计489us,32个峰谷)
   irflag=1;    //启动红外发射二极管发射,发射第二个脉冲群
   count=0;    //中断计数清0
   TR0=1;
  while(count<set_count);
   TR0=0;
 }
//---------------------------------------------------------------------------
void timer0_init()    //定时器初始化
 {
  EA=1;
  TMOD=0x02;     //定时0 8位自动重装模式
  ET0=1;
  TH0=0xe1;//0xf1;   //定时15us,32700hz红外矩形波,晶振24M (//后为11.0592M晶振下的数值)
  TL0=0xe1;//0xf1;
 }
//---------------------------------------------------------------------------
void main()
 {
  timer0_init(); //定时0初始化
  count=0;     //中断计数先清0
  irflag=0;     //红外发射标志先置0
  while(1)
   {
    keyscan();   //键值扫描
    if(keyflag)   //若有按键按下
     {
      ir_send();   //发送红外编码
      delay(500);
      keyflag=0;//清零

     }
   }
 }
//---------------------------------------------------------------------------
void timer0() interrupt 1 //定时器0中断
 {
  count++;
  if((keyflag==1)&&(irflag==1))
   ir=~ir; //有发射标志,则发射32700hz的矩形波
  else ir=1;     //否则不发射,即相当于发射编码中的低电平
 }
/**************************程序完**************************/

接下来就是焊接,组装。由于焊接组装过程忘记拍摄了,就直接发成品吧,看原理图就知道很简单的东西,不必再拍了。





最后来张遥控自拍效果图,哈哈哈哈




关键词: 单片机     佳能     遥控器     发射     count     脉冲    

专家
2012-11-02 22:15:23     打赏
2楼
这个不错,这样就可以随时远距离自拍了,遥控这头再来个显示屏同步显示~~

高工
2012-11-03 15:17:42     打赏
3楼
这个创意可以扩展到很多东西的遥控,只要把编解码改变成相关的可以了

院士
2012-11-03 16:36:53     打赏
4楼
东西不错,理工男的内务都是这样?

高工
2013-03-01 16:11:18     打赏
5楼

得。。。这种我也会做。。。关键是和空调的编码方式不一样貌似。。没起到帮助啊


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]