找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51hei单片机开发板 315M无线遥控

  [复制链接]
跳转到指定楼层
楼主
ID:68897 发表于 2015-1-23 12:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
7黑币
本帖最后由 2013yu 于 2015-1-24 13:27 编辑

51hei开发板上的一个315M无线遥控程序,我想利用每个遥控器地址码的不同来区分不同的遥控器,遥控器的地址码我已经焊接好设置成1FFF FFF0,
我想在程序中设置一个地址码,用来和接收到的地址码作比较,如果设置的地址码和接收到的相同就解码,1FFF FFF0转换成16进制是11101010和10101000,大家帮我看看红字部分如何改,谢谢大家了

#include"AT89x52.h"
//#include"global.h"
#include"intrins.h"
#include"51hei.H"
#define  uchar  unsigned char
#define  uint   unsigned int
uchar Rem_Code[3];
uchar Addr_Code_H=?
uchar Addr_Code_L=?
uint TimeCount;
sbit Get_Rem=P3^2;
/* //延时函数
void Delay100us(void)
{
uchar i;
for(i=0;i<55;i++)
{
  _nop_();
}
}
*/
void delay8(uint t)
{
while(--t);
}
void Delay100us(void)
{
delay8(13); //8-18
}
//因为他的格式是00表示"0"11表示"1"01表示"F"所以我们要把12位乘以2等于24位刚好是3个字节
//第一二个字节是地址码,第三个字节是数据码
//发射芯片采用的是PT2262芯片用4.7M的震荡电阻315M发射
//遥控我们全部默认地址码是 FFFFFFFF 单片机解码出来就是0x55 0x55
//遥控处理函数
void Remote_Process(void)
{
uchar i,j,Count=0;
Delay100us();
if(TimeCount>0)//当按键按下释放后该值不在赋值就同通过递减直到该值等于0
{//等于0后表示按键释放
  TimeCount--;
}
if(Get_Rem==0)//如果有低电平就进入解码
{  
  for(Count=0;Count<100;Count++)//判断12毫秒左右的引导码
    {
     Delay100us();//100us*100=10ms
     if(Get_Rem==1)//如果在延时10毫秒期间有高电平出现就是干扰信号退出解码
     {
      return;
     }
    }
   while(Get_Rem==0);//等待低电平结束
   for(j=0;j<3;j++)//8位地址码加4位数据码
     {
    for(i=0;i<8;i++)
    {
     Count=0;
    do
    {
     Delay100us();
     Count++;
     if(Count>20)//如果在大于2毫秒高电平还没有结束认为是干扰退出解码
     {//理论上是1.2毫秒,我们2毫秒留有余量,防止遥控批量中的误差
      return;
     }
    }while(Get_Rem==1);//计算高平时间并等待结束
    Count=0;
    do
    {
     Delay100us();
     Count++;
     if(Count>20)//如果在大于2毫秒低平还没有结束认为是干扰退出解码
     {
      return;
     }
    }while(Get_Rem==0);//计算低电平时间并等待结束
    Rem_Code[j]<<=1;//数据从高位开始接收所以每次向左移一位
          if(Count<8)//如果低电平时间小于800毫秒认为该位为1
          {
     Rem_Code[j]++;
          }
     }
  }
  
  
   if(TimeCount==0)                                                             //为0表示是新的一次按下对其进行处理
   {                                                                                     // 如过该值大于0表示已经按下不在处理,保证按下一次只做一次处理
    if((Rem_Code[0]==Addr_Code_H)&&(Rem_Code[0]==Addr_Code_L)) //把接收到的地址码与程序中设置的地址码作比较如果相同就执行数据码
   {
     if(Rem_Code[2]==Key_A)                                          
  //如果数据与A键的值相等表示A键按下对其处理
     {//试验用A键来控制继电器的开关
      Com_Relay;//继电器取反
      Nokia3310();//显示继电器的状态
      Bz_Out();//蜂鸣器响一声
     }
    }
   //P2_2=0;
   }
   TimeCount=1000;//按键按下标志
}
}

void main()
{
AUXR=0x01;
P1_4=0;
guandz();
guanled();
while(1)
{
  Remote_Process();//遥控处理
}
}

最佳答案

查看完整内容

楼主能讲的清楚点吗
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:54731 发表于 2015-1-23 12:28 | 只看该作者
楼主能讲的清楚点吗
回复

使用道具 举报

板凳
ID:68897 发表于 2015-1-23 15:39 | 只看该作者
南天白云 发表于 2015-1-23 15:05
楼主能讲的清楚点吗

谢谢,我用的是51hei单片机开发板,上面那段程序是无线解码部分(单片机解码),我把程序改成了遥控开关程序,做了一个遥控开关,发射器是现成的桃木遥控器,我一共有两个这样的遥控器,其中一个是买来的,一个是开发板配套的,两个遥控器除了地址设置的不同外其他完全相同的,现在的问题是两个遥控器都能遥控led灯,可是两个遥控器的地址设置的不一样啊,想不通,就是说假如你也有一个这样的遥控器尽管遥控器地址设置的和我的遥控器不一样,但你却可以遥控这个这个电灯泡,这显然是不行的,我要做的是只能用我指定的遥控器遥控,灯才亮,
回复

使用道具 举报

地板
ID:68897 发表于 2015-1-24 19:21 | 只看该作者
我自己解决了
回复

使用道具 举报

5#
ID:54731 发表于 2015-1-27 11:54 | 只看该作者
#include"51hei.H"楼主能说的清楚些吗?
回复

使用道具 举报

6#
ID:72950 发表于 2015-1-29 09:32 | 只看该作者

怎么解决的能不能分享下,正准备弄这个呢,谢谢。
回复

使用道具 举报

7#
ID:72947 发表于 2015-1-31 01:14 来自手机 | 只看该作者
貌似这种遥控是要进行学习配对的吧……
回复

使用道具 举报

8#
ID:68897 发表于 2015-1-31 12:45 | 只看该作者
qq704661078 发表于 2015-1-31 01:14
貌似这种遥控是要进行学习配对的吧……

我做的不是学习型的,学习型的、还在研究中
回复

使用道具 举报

9#
ID:68897 发表于 2015-1-31 12:46 | 只看该作者
ziyoufeixiang 发表于 2015-1-29 09:32
怎么解决的能不能分享下,正准备弄这个呢,谢谢。

在程序中设置地址,然后与接收到的地址进行比较,如果一致就执行相应的操作
回复

使用道具 举报

10#
ID:72343 发表于 2015-2-2 16:09 | 只看该作者
我想破解我们我们公司大门,也是桃木4键遥控,把P2262的编码引脚焊接一样了,发现还是不能遥控,对比电路板发现有两个电阻不一样,不知道是不是这个原因?楼主能解释下么??
回复

使用道具 举报

11#
ID:68897 发表于 2015-2-8 19:35 | 只看该作者
li_haoma 发表于 2015-2-2 16:09
我想破解我们我们公司大门,也是桃木4键遥控,把P2262的编码引脚焊接一样了,发现还是不能遥控,对比电路板 ...

振荡电阻也必须一样,看看有没有475,335标识的贴片电阻,换成和你们公司大门遥控器一样的电阻试试
回复

使用道具 举报

12#
ID:68897 发表于 2015-2-8 19:36 | 只看该作者
li_haoma 发表于 2015-2-2 16:09
我想破解我们我们公司大门,也是桃木4键遥控,把P2262的编码引脚焊接一样了,发现还是不能遥控,对比电路板 ...

振荡电阻也必须一样,看看有没有475,335标识的贴片电阻,换成和你们公司大门遥控器一样的电阻试试
回复

使用道具 举报

13#
ID:68897 发表于 2015-2-8 19:36 | 只看该作者
li_haoma 发表于 2015-2-2 16:09
我想破解我们我们公司大门,也是桃木4键遥控,把P2262的编码引脚焊接一样了,发现还是不能遥控,对比电路板 ...

振荡电阻也必须一样,看看有没有475,335标识的贴片电阻,换成和你们公司大门遥控器一样的电阻试试
回复

使用道具 举报

14#
ID:72343 发表于 2015-3-3 15:12 | 只看该作者
2013yu 发表于 2015-2-8 19:36
振荡电阻也必须一样,看看有没有475,335标识的贴片电阻,换成和你们公司大门遥控器一样的电阻试试

那估计是这个问题了,太小了,我都不好换
回复

使用道具 举报

15#
ID:75800 发表于 2015-3-31 16:29 | 只看该作者
遥控器怎么制作啊,
回复

使用道具 举报

16#
ID:75800 发表于 2015-3-31 16:29 | 只看该作者
2013yu 发表于 2015-1-31 12:45
我做的不是学习型的,学习型的、还在研究中

研究好后,共享一下呗,急用
回复

使用道具 举报

17#
ID:44267 发表于 2015-10-19 13:00 | 只看该作者
不会搞,看看
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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