这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 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(countTR0=0;
set_count=pulen; //利用pulen传递空闲脉冲数
irflag=0; //停止红外发射二极管发射
count=0; //中断计数清0
TR0=1;
while(countTR0=0;
set_count=31;//发送编码中的脉冲码(16个脉冲周期共计489us,32个峰谷)
irflag=1; //启动红外发射二极管发射,发射第二个脉冲群
count=0; //中断计数清0
TR0=1;
while(countTR0=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 跳转至

回复

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