模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

楼主: 我是天才

[单片机课堂] 五路红外遥控器

  [复制链接]
发表于 2016-11-10 14:53:29 | 显示全部楼层
感謝分享~幫頂
发表于 2016-11-10 15:26:23 | 显示全部楼层
这么小,牛人啊,可以放口袋里控制了
发表于 2016-11-27 17:24:20 | 显示全部楼层
楼主 能做个带学习的接收机吗  这样省去做遥控器了   用现成的遥控器 学习一下 就可以用  我在琢磨 还没突破呢
有这想法吗,有的话那位师傅给个 资料教程!!!!!!
 楼主| 发表于 2016-11-27 19:59:56 | 显示全部楼层
haiyanglin280 发表于 2016-11-27 17:24
楼主 能做个带学习的接收机吗  这样省去做遥控器了   用现成的遥控器 学习一下 就可以用  我在琢磨 还没突 ...

这个我不太会,我也是刚开始学单片机,这个萝莉应该能做
发表于 2016-11-28 07:09:17 | 显示全部楼层
五路红外遥控器  作者:lv838999 9589 五路红外遥控器  作者:lv838999 8360 五路红外遥控器  作者:lv838999 7260
发表于 2017-2-20 16:36:34 | 显示全部楼层
楼主能贴一下源码吗?谢谢啦
发表于 2017-2-21 15:28:56 | 显示全部楼层
我提几个问:  即然是电池供电,有测过串万用表测电流是多少吗? 好计算出省不省电,电池用多久的问题。
                    再一个是,距离多远,能否达到7米呢?
发表于 2017-3-31 17:40:03 | 显示全部楼层
这个很好
学习力好快啊,
发表于 2017-4-3 22:39:56 | 显示全部楼层
有教程没?可以出来科普分享一下的
 楼主| 发表于 2017-4-5 22:53:42 | 显示全部楼层
本帖最后由 我是天才 于 2017-4-5 23:22 编辑
阿文先生 发表于 2017-2-21 15:28
我提几个问:  即然是电池供电,有测过串万用表测电流是多少吗? 好计算出省不省电,电池用多久的问题。
   ...

7米能达到,室内10米都没问题,电流没测过,不过在不发射时只进行按键检测程序,应该很省电,以后可以加程序让单片机在空闲时进行掉电模式,续航大大增强,现在的锂电池容量很高,应该可以用很长时间,不过如果实际应用,应该外接电源,所以不用担心续航时间
 楼主| 发表于 2017-4-5 23:17:43 | 显示全部楼层
更新代码,具体还是看萝莉的注释,我只是在萝莉的基础上改进了一下,高三时间紧,就不做过多的说明了,重要的说明已经加在程序中


发射程序:

#include<reg51.h>
sbit Key1=P3^0;                          //按键与发射定义
sbit Key2=P3^1;
sbit Key3=P3^2;
sbit Key4=P3^3;
sbit Key5=P3^4;
sbit TX=P3^5;


#define uchar unsigned char
#define uint unsigned int


uchar Key1_old;                                 //定义变量
uchar Key2_old;
uchar Key3_old;
uchar Key4_old;
uchar Key5_old;


uchar action1;
uchar action2;
uchar action3;
uchar action4;
uchar action5;


void Delay10ms()                //@12.000MHz
{
        unsigned char i, j;


        i = 117;
        j = 184;
        do
        {
                while (--j);
        } while (--i);
}




void Delay13us()                //@12.000MHz
{
        unsigned char i;
        i = 36;
        while (--i);
}


void TX_time(uint n)                  //发射程序,这个具体看萝莉的注释
{
while(n)
{
TX=0;
Delay13us();
TX=1;
Delay13us();
n=n-1;
}
}


void Key_select()                           //进行按键选择,判断是哪个按键按下
{
if(Key1==1)
  {
   if(Key1_old==0)
   {action1=1;}
  }
  Key1_old=Key1;


if(Key2==1)
  {
   if(Key2_old==0)
   {action2=1;}
  }
  Key2_old=Key2;


if(Key3==1)
  {
   if(Key3_old==0)
   {action3=1;}
  }
  Key3_old=Key3;


if(Key4==1)
  {
   if(Key4_old==0)
   {action4=1;}
  }
  Key4_old=Key4;


if(Key5==1)
  {
   if(Key5_old==0)
   {action5=1;}
  }
  Key5_old=Key5;


}


main()
{
  Key1_old=1;                   //初始化
  Key2_old=1;
  Key3_old=1;
  Key4_old=1;
  Key5_old=1;


  while(1)
   {
   Delay10ms();          //系统周期10ms
   Key_select();          // 按键选择


    if(action1==1)                //不同的按键按下对应的发射时间不同
        {                                       
         action1=0;
         TX_time(384);         //通过改变括号里的数来改变发射时间
        }


    if(action2==1)
        {
         action2=0;
         TX_time(577);
        }


    if(action3==1)
        {
         action3=0;
         TX_time(731);
        }


    if(action4==1)
        {
         action4=0;
         TX_time(900);
        }


    if(action5==1)
        {
         action5=0;
         TX_time(1076);
        }


   }


}



接收程序:
#include <reg51.h>
sbit RX=P3^4;                           //定义接收与LED引脚
sbit L1=P3^0;
sbit L2=P3^1;
sbit L3=P3^2;
sbit L4=P3^3;
sbit L5=P3^5;


#define uchar unsigned char
#define uint unsigned int


uint time;


void Delay1ms()                //@12.000MHz
{
        unsigned char i, j;


        i = 12;
        j = 169;
        do
        {
                while (--j);
        } while (--i);
}


void Key_select()                    //进行按键选择,不同的时间对应不同的按键按下
{                                                        //,对不同的按键做出不同的处理
  if(time>8&&time<12)
  {L1=~L1;}


  if(time>13&&time<17)
  {L2=~L2;}


  if(time>18&&time<22)
  {L3=~L3;}


  if(time>23&&time<27)
  {L4=~L4;}


  if(time>28&&time<32)
  {L5=~L5;}          
               
}


main()
{
  while(1)
  {
    if(RX==0)                          //如果收到信号,time清零,重新计时
        {
        time=0;
         while(RX==0)                //收到信号时循环计时
          {
           Delay1ms();
           time=time+1;
          }
       
        Key_select();                //按键选择程序
        }
  }
}











 楼主| 发表于 2017-4-5 23:19:50 | 显示全部楼层
hong201305 发表于 2017-2-20 16:36
楼主能贴一下源码吗?谢谢啦

已经更新在31楼,有什么错误欢迎指正,共同学习
 楼主| 发表于 2017-4-5 23:19:51 | 显示全部楼层
本帖最后由 我是天才 于 2017-4-5 23:24 编辑
hong201305 发表于 2017-2-20 16:36
楼主能贴一下源码吗?谢谢啦

详细的注释还是看萝莉的
 楼主| 发表于 2017-4-5 23:19:51 | 显示全部楼层
本帖最后由 我是天才 于 2017-4-5 23:25 编辑
hong201305 发表于 2017-2-20 16:36
楼主能贴一下源码吗?谢谢啦

马上高考了,所以注释比较简略
 楼主| 发表于 2017-4-5 23:19:51 | 显示全部楼层
本帖最后由 我是天才 于 2017-4-5 23:25 编辑
hong201305 发表于 2017-2-20 16:36
楼主能贴一下源码吗?谢谢啦

以后再好好编辑下注释
 楼主| 发表于 2017-4-5 23:20:19 | 显示全部楼层
kingS 发表于 2017-4-3 22:39
有教程没?可以出来科普分享一下的

已更新在31楼
发表于 2017-4-6 21:56:56 | 显示全部楼层
好漂亮啊。。。。学习中呢。。。
发表于 2017-4-7 13:48:59 | 显示全部楼层
顶楼主  请教一下怎么用红外头发射8位ADC值  ?
发表于 2017-4-8 06:32:51 | 显示全部楼层
不错不错 帮顶喽
发表于 2017-6-2 10:39:11 | 显示全部楼层
真是个天才啊,猪高考顺利
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!