找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 15969|回復(fù): 17
收起左側(cè)

51hei單片機(jī)開(kāi)發(fā)板 315M無(wú)線遙控

  [復(fù)制鏈接]
ID:68897 發(fā)表于 2015-1-23 12:28 | 顯示全部樓層 |閱讀模式
7黑幣
本帖最后由 2013yu 于 2015-1-24 13:27 編輯

51hei開(kāi)發(fā)板上的一個(gè)315M無(wú)線遙控程序,我想利用每個(gè)遙控器地址碼的不同來(lái)區(qū)分不同的遙控器,遙控器的地址碼我已經(jīng)焊接好設(shè)置成1FFF FFF0,
我想在程序中設(shè)置一個(gè)地址碼,用來(lái)和接收到的地址碼作比較,如果設(shè)置的地址碼和接收到的相同就解碼,1FFF FFF0轉(zhuǎn)換成16進(jìn)制是11101010和10101000,大家?guī)臀铱纯醇t字部分如何改,謝謝大家了

#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;
/* //延時(shí)函數(shù)
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
}
//因?yàn)樗母袷绞?0表示"0"11表示"1"01表示"F"所以我們要把12位乘以2等于24位剛好是3個(gè)字節(jié)
//第一二個(gè)字節(jié)是地址碼,第三個(gè)字節(jié)是數(shù)據(jù)碼
//發(fā)射芯片采用的是PT2262芯片用4.7M的震蕩電阻315M發(fā)射
//遙控我們?nèi)磕J(rèn)地址碼是 FFFFFFFF 單片機(jī)解碼出來(lái)就是0x55 0x55
//遙控處理函數(shù)
void Remote_Process(void)
{
uchar i,j,Count=0;
Delay100us();
if(TimeCount>0)//當(dāng)按鍵按下釋放后該值不在賦值就同通過(guò)遞減直到該值等于0
{//等于0后表示按鍵釋放
  TimeCount--;
}
if(Get_Rem==0)//如果有低電平就進(jìn)入解碼
{  
  for(Count=0;Count<100;Count++)//判斷12毫秒左右的引導(dǎo)碼
    {
     Delay100us();//100us*100=10ms
     if(Get_Rem==1)//如果在延時(shí)10毫秒期間有高電平出現(xiàn)就是干擾信號(hào)退出解碼
     {
      return;
     }
    }
   while(Get_Rem==0);//等待低電平結(jié)束
   for(j=0;j<3;j++)//8位地址碼加4位數(shù)據(jù)碼
     {
    for(i=0;i<8;i++)
    {
     Count=0;
    do
    {
     Delay100us();
     Count++;
     if(Count>20)//如果在大于2毫秒高電平還沒(méi)有結(jié)束認(rèn)為是干擾退出解碼
     {//理論上是1.2毫秒,我們2毫秒留有余量,防止遙控批量中的誤差
      return;
     }
    }while(Get_Rem==1);//計(jì)算高平時(shí)間并等待結(jié)束
    Count=0;
    do
    {
     Delay100us();
     Count++;
     if(Count>20)//如果在大于2毫秒低平還沒(méi)有結(jié)束認(rèn)為是干擾退出解碼
     {
      return;
     }
    }while(Get_Rem==0);//計(jì)算低電平時(shí)間并等待結(jié)束
    Rem_Code[j]<<=1;//數(shù)據(jù)從高位開(kāi)始接收所以每次向左移一位
          if(Count<8)//如果低電平時(shí)間小于800毫秒認(rèn)為該位為1
          {
     Rem_Code[j]++;
          }
     }
  }
  
  
   if(TimeCount==0)                                                             //為0表示是新的一次按下對(duì)其進(jìn)行處理
   {                                                                                     // 如過(guò)該值大于0表示已經(jīng)按下不在處理,保證按下一次只做一次處理
    if((Rem_Code[0]==Addr_Code_H)&&(Rem_Code[0]==Addr_Code_L)) //把接收到的地址碼與程序中設(shè)置的地址碼作比較如果相同就執(zhí)行數(shù)據(jù)碼
   {
     if(Rem_Code[2]==Key_A)                                          
  //如果數(shù)據(jù)與A鍵的值相等表示A鍵按下對(duì)其處理
     {//試驗(yàn)用A鍵來(lái)控制繼電器的開(kāi)關(guān)
      Com_Relay;//繼電器取反
      Nokia3310();//顯示繼電器的狀態(tài)
      Bz_Out();//蜂鳴器響一聲
     }
    }
   //P2_2=0;
   }
   TimeCount=1000;//按鍵按下標(biāo)志
}
}

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

最佳答案

查看完整內(nèi)容

樓主能講的清楚點(diǎn)嗎

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:54731 發(fā)表于 2015-1-23 12:28 | 顯示全部樓層
樓主能講的清楚點(diǎn)嗎
回復(fù)

使用道具 舉報(bào)

ID:68897 發(fā)表于 2015-1-23 15:39 | 顯示全部樓層
南天白云 發(fā)表于 2015-1-23 15:05
樓主能講的清楚點(diǎn)嗎

謝謝,我用的是51hei單片機(jī)開(kāi)發(fā)板,上面那段程序是無(wú)線解碼部分(單片機(jī)解碼),我把程序改成了遙控開(kāi)關(guān)程序,做了一個(gè)遙控開(kāi)關(guān),發(fā)射器是現(xiàn)成的桃木遙控器,我一共有兩個(gè)這樣的遙控器,其中一個(gè)是買(mǎi)來(lái)的,一個(gè)是開(kāi)發(fā)板配套的,兩個(gè)遙控器除了地址設(shè)置的不同外其他完全相同的,現(xiàn)在的問(wèn)題是兩個(gè)遙控器都能遙控led燈,可是兩個(gè)遙控器的地址設(shè)置的不一樣啊,想不通,就是說(shuō)假如你也有一個(gè)這樣的遙控器盡管遙控器地址設(shè)置的和我的遙控器不一樣,但你卻可以遙控這個(gè)這個(gè)電燈泡,這顯然是不行的,我要做的是只能用我指定的遙控器遙控,燈才亮,
回復(fù)

使用道具 舉報(bào)

ID:68897 發(fā)表于 2015-1-24 19:21 | 顯示全部樓層
我自己解決了
回復(fù)

使用道具 舉報(bào)

ID:54731 發(fā)表于 2015-1-27 11:54 | 顯示全部樓層
#include"51hei.H"樓主能說(shuō)的清楚些嗎?
回復(fù)

使用道具 舉報(bào)

ID:72950 發(fā)表于 2015-1-29 09:32 | 顯示全部樓層

怎么解決的能不能分享下,正準(zhǔn)備弄這個(gè)呢,謝謝。
回復(fù)

使用道具 舉報(bào)

ID:72947 發(fā)表于 2015-1-31 01:14 來(lái)自觸屏版 | 顯示全部樓層
貌似這種遙控是要進(jìn)行學(xué)習(xí)配對(duì)的吧……
回復(fù)

使用道具 舉報(bào)

ID:68897 發(fā)表于 2015-1-31 12:45 | 顯示全部樓層
qq704661078 發(fā)表于 2015-1-31 01:14
貌似這種遙控是要進(jìn)行學(xué)習(xí)配對(duì)的吧……

我做的不是學(xué)習(xí)型的,學(xué)習(xí)型的、還在研究中
回復(fù)

使用道具 舉報(bào)

ID:68897 發(fā)表于 2015-1-31 12:46 | 顯示全部樓層
ziyoufeixiang 發(fā)表于 2015-1-29 09:32
怎么解決的能不能分享下,正準(zhǔn)備弄這個(gè)呢,謝謝。

在程序中設(shè)置地址,然后與接收到的地址進(jìn)行比較,如果一致就執(zhí)行相應(yīng)的操作
回復(fù)

使用道具 舉報(bào)

ID:72343 發(fā)表于 2015-2-2 16:09 | 顯示全部樓層
我想破解我們我們公司大門(mén),也是桃木4鍵遙控,把P2262的編碼引腳焊接一樣了,發(fā)現(xiàn)還是不能遙控,對(duì)比電路板發(fā)現(xiàn)有兩個(gè)電阻不一樣,不知道是不是這個(gè)原因?樓主能解釋下么??
回復(fù)

使用道具 舉報(bào)

ID:68897 發(fā)表于 2015-2-8 19:35 | 顯示全部樓層
li_haoma 發(fā)表于 2015-2-2 16:09
我想破解我們我們公司大門(mén),也是桃木4鍵遙控,把P2262的編碼引腳焊接一樣了,發(fā)現(xiàn)還是不能遙控,對(duì)比電路板 ...

振蕩電阻也必須一樣,看看有沒(méi)有475,335標(biāo)識(shí)的貼片電阻,換成和你們公司大門(mén)遙控器一樣的電阻試試
回復(fù)

使用道具 舉報(bào)

ID:68897 發(fā)表于 2015-2-8 19:36 | 顯示全部樓層
li_haoma 發(fā)表于 2015-2-2 16:09
我想破解我們我們公司大門(mén),也是桃木4鍵遙控,把P2262的編碼引腳焊接一樣了,發(fā)現(xiàn)還是不能遙控,對(duì)比電路板 ...

振蕩電阻也必須一樣,看看有沒(méi)有475,335標(biāo)識(shí)的貼片電阻,換成和你們公司大門(mén)遙控器一樣的電阻試試
回復(fù)

使用道具 舉報(bào)

ID:68897 發(fā)表于 2015-2-8 19:36 | 顯示全部樓層
li_haoma 發(fā)表于 2015-2-2 16:09
我想破解我們我們公司大門(mén),也是桃木4鍵遙控,把P2262的編碼引腳焊接一樣了,發(fā)現(xiàn)還是不能遙控,對(duì)比電路板 ...

振蕩電阻也必須一樣,看看有沒(méi)有475,335標(biāo)識(shí)的貼片電阻,換成和你們公司大門(mén)遙控器一樣的電阻試試
回復(fù)

使用道具 舉報(bào)

ID:72343 發(fā)表于 2015-3-3 15:12 | 顯示全部樓層
2013yu 發(fā)表于 2015-2-8 19:36
振蕩電阻也必須一樣,看看有沒(méi)有475,335標(biāo)識(shí)的貼片電阻,換成和你們公司大門(mén)遙控器一樣的電阻試試

那估計(jì)是這個(gè)問(wèn)題了,太小了,我都不好換
回復(fù)

使用道具 舉報(bào)

ID:75800 發(fā)表于 2015-3-31 16:29 | 顯示全部樓層
遙控器怎么制作啊,
回復(fù)

使用道具 舉報(bào)

ID:75800 發(fā)表于 2015-3-31 16:29 | 顯示全部樓層
2013yu 發(fā)表于 2015-1-31 12:45
我做的不是學(xué)習(xí)型的,學(xué)習(xí)型的、還在研究中

研究好后,共享一下唄,急用
回復(fù)

使用道具 舉報(bào)

ID:44267 發(fā)表于 2015-10-19 13:00 | 顯示全部樓層
不會(huì)搞,看看
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表