久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2949|回復: 8
收起左側

用單片機解碼無線射頻信號的相關問題

[復制鏈接]
ID:389488 發表于 2020-10-8 11:20 | 顯示全部樓層 |閱讀模式
最近在學習無線的單片機解碼。
示波器測試 :有的遙控器是24位脈沖 ,有是28位脈沖 有的遙控器是32位脈沖 汽車遙控器的脈沖數更多。 同步頭也不同  

使用2個接收模塊 測出來的波形也不相同 有一個MPS單片機的遙控器測出來相位相反  其他ev1527  2262 其他sop14單片機做的測出來相位相同。
這2個接收模塊分別是PT4302  和SYN480 芯片的

IMG_20201008_100714.jpg IMG_20201008_101456.jpg



回復

使用道具 舉報

ID:389488 發表于 2020-10-8 13:23 | 顯示全部樓層
本帖最后由 zzh2118 于 2020-10-8 13:29 編輯

用第三個接收模塊 (τ 寶買的超再生)卻根本接收不到這款的發射信號,其它的接收都正常,包括汽車遙控,滾動碼,三個波形都一致。滾動碼的脈沖多達95個
回復

使用道具 舉報

ID:389488 發表于 2020-10-13 08:22 | 顯示全部樓層
理論上可行,為什么實物卻不行,請大佬幫我解惑。
  1. #include <STC89C5xRC.H>
  2. #include <intrins.h>
  3. #define u8  unsigned char
  4. #define u16 unsigned int
  5. #define u32 unsigned long

  6. //#define RES  3300//3.3M
  7. //#define a 103 //1/(32000/RES)*1000us

  8. sbit wuxian=P0^0;

  9. bit tb_flag;
  10. sbit led=P1^0;
  11. u8 wuxianma[24];
  12. u8 wxma[3];

  13. void Delay103us()                //@11.0592MHz
  14. {
  15.         unsigned char i;

  16.         _nop_();
  17.         i = 44;
  18.         while (--i);
  19. }
  20. void Delay_8a()                //@11.0592MHz
  21. {
  22.         u8 b=8;
  23.         while(b--)
  24.         {
  25.           Delay103us();
  26.         }
  27. }

  28. void Delay_100a()                //@11.0592MHz
  29. {
  30.         u8 b=100;
  31.         while(b--)
  32.         {
  33.         Delay103us();
  34.         }
  35. }
  36. void tb_ma()   //判斷同步碼 如果無線信號腳出現低電平,延時100個脈沖 如果還是低,可能是同步碼 再延時24a 確定是同步碼
  37. {
  38.         u8 cnt;
  39.         if(wuxian==0)//p0.0=0
  40. {
  41.   Delay_100a();                                        // 一共124a,先延時消耗掉100a
  42.         if (wuxian == 0)                                        // 如果不是干擾8ms后應該還是低電平
  43.         {                        
  44.                 cnt = 50;                                        // 24*10us=2ms, 超過說明接收到錯誤的信號
  45.                 while ((wuxian == 0) && (cnt > 0))        // 等待前面9ms的低電平過去                  
  46.                 {                        
  47.                         Delay103us();                // 每隔100us查一次,準確度很高
  48.                         cnt--;
  49.                 }

  50.                         
  51.         }
  52.         
  53.         }
  54.         tb_flag=1;
  55.         
  56. }

  57. void wuxian_ma()
  58. {
  59.         u8 i;
  60.         for(i=0;i<24;i++)    延時8個脈沖 讀取無線模塊引腳電平,再延時8個脈沖,下一個度數在16個脈沖的位置
  61.         {
  62.    Delay_8a();        
  63.          wuxianma[i]=wuxian;//|0x80;
  64.          Delay_8a();                        
  65.         }        

  66. }
  67. void jiema()
  68. {
  69.          u8 i,j,k,temp,wei;
  70.         for(i=0;i<3;i++)
  71.         {
  72.                   for(j=0;j<8;j++)
  73.                 {
  74.                         k=0;
  75.                           temp=wuxianma[k];
  76. //                        if(j<7)
  77.                           wei=temp<<1;
  78.                          k++;
  79.     }
  80.                 wxma[i]=wei;
  81.                 wei=0;
  82.   }
  83. }

  84. void main()
  85. {
  86.         wuxian=1;
  87.         UartInit();
  88.         while(1)
  89. {
  90.         tb_ma();
  91.         if(tb_flag)
  92.         {
  93.           tb_flag=0;
  94.                 jiema();
  95.   }
  96. }
  97. }
復制代碼

回復

使用道具 舉報

ID:389488 發表于 2020-10-13 08:31 | 顯示全部樓層
這份是從網上找的,試過了也不行啊,程序中沒有同步碼解碼  

#include<reg52.h>                 //庫文件
#include< stdio.h>
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int  //宏定義無符號整型

uint addr,key;
uchar cntint;//外部中斷0計數


void eint0(void) interrupt 0//外部中斷0
{
        static uint tempaddr;//接收地址緩存
        static uint tempkey;//接收數據緩存
        uint timecnt;
        timecnt=TH0*256+TL0;
        TH0=0;
        TL0=0;
        if(cntint<16)//接收地址碼
        {
                tempaddr=tempaddr<<1;//將接收的到最低位移到最高位
                if(timecnt>1000)//210為寬脈沖與低脈沖界線,當振蕩電阻為1M時,窄脈沖為110uS,寬脈沖為320uS
                {
                tempaddr|=1;//寬脈沖為1
                }
                cntint++;//中斷次數加1
        }
        else if(cntint<24)//接收數據碼
        {
                tempkey=tempkey<<1;
                if(timecnt>1000)
                {
                tempkey|=1;
                }
                cntint++;
        }
        else//cntint大于24也就是中斷了25次時,關閉外部中斷0,等待同步碼
        {
                TMOD&=0xf0;//設定時器0為定時方式
                TMOD|=0x01;
                TH0=0xf9;
                TL0=0x66;
                cntint=0;
                EX0=0;//關外部中斷0
                addr=tempaddr;
                key=tempkey;
                tempaddr=0;
                tempkey=0;
        }
        
}
void timer0(void) interrupt 1//定時器0中斷,只有初始化時,空閑時和同步碼到來時才中斷
{
        TMOD&=0xf0;//將定時器0的工作方式設為門控定時,用以檢測脈寬。
        TMOD|=0x09;
        cntint=0;//外部中斷0中斷次數設為0
        TH0=0;//設定時器0定時初值為0
        TL0=0;
        EX0=1;//允許外部中斷0
        IE0=0;//清除外部中斷0標志
}
void main(void)
{
       // void sendd(unsigned int intnum);
        unsigned int i;
        TMOD=0x21;//設定定時器0和定時器1,定時器1用來驅動串口
        TH0=0xf9;//設定定時器的初始值,這個值必小于同步碼
        TL0=0x66;
//        TH1=243;//12M晶振時,串口波特率為2400
//        TL1=243;
                TH1=0xdc;//11.0592M晶振時,串口波特率為9600
          TL1=0xdc;
        SCON=0x50;//設定串口工作方式
        TI=1;//要用printf就將其設為1
        EA=1;//開所有中斷
        ET0=1;//開定時器0中斷
        EX0=0;//關外部中斷0,在Timer0中斷里面將其打開
        IT0=1;//外部中斷0設為跳變觸發
        TR0=1;//定時器0啟動
        TR1=1;//定時器1啟動
        while(1)
        {
//                P2=key;
//                P0=key>>8;
             printf("%u\n",addr);//輸出解碼地址
            printf("%u\n\n",key);//輸出解碼數據
                for(i=0;i<65500;i++);//這個用來防止串口不同步
        }
        
}

        
/********************************************************************
                              結束
*********************************************************************/
回復

使用道具 舉報

ID:389488 發表于 2020-10-15 15:06 | 顯示全部樓層
無線解碼程序已搞定,現在測試了4個遙控器都可以,分別是PT2262 震蕩電阻3.3M 和4.7M 任意地址都可以。另外2個是單片機寫的20按鍵和21按鍵,時序和2262芯片基本一致。
回復

使用道具 舉報

ID:389488 發表于 2020-10-15 15:07 | 顯示全部樓層

謝謝關注
回復

使用道具 舉報

ID:389488 發表于 2020-10-16 11:09 | 顯示全部樓層
PT2262的按鍵可以擴展到31個以上  (地址碼保留的情況下)
回復

使用道具 舉報

ID:389488 發表于 2020-10-18 20:49 | 顯示全部樓層
在主機上電10秒內 按壓遙控器指定按鍵 實現配對功能  這個又是怎么實現的呢? 目前還是不懂
回復

使用道具 舉報

ID:389488 發表于 2020-10-28 08:51 | 顯示全部樓層
zzh2118 發表于 2020-10-18 20:49
在主機上電10秒內 按壓遙控器指定按鍵 實現配對功能  這個又是怎么實現的呢? 目前還是不懂

遙控器配對功能已實現,但目前不是在10秒內  而是在整個期間按指定鍵實現。。還需要優化
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩91| 性一交一乱一伦视频免费观看 | 在线观看中文字幕 | 久久精品二区 | 九九伊人sl水蜜桃色推荐 | 国产一区二区三区四区五区加勒比 | 日本不卡一区二区三区在线观看 | 国产成人99久久亚洲综合精品 | 日韩中文字幕视频 | 国产精品久久久久久久免费观看 | 国产精品一区二区三区在线 | 国产欧美二区 | www.四虎.com| 91免费观看国产 | 久久精品这里精品 | 天天操网 | 国产 欧美 日韩 一区 | 免费观看一级黄色录像 | 天堂久久网 | 久久成人精品视频 | 99热精品在线 | 亚洲在线一区二区 | 日韩在线精品视频 | 在线观看国产三级 | 青草青草久热精品视频在线观看 | 91精品久久久久久久久中文字幕 | 伊人网站在线观看 | 国产成人区 | 欧美伊人久久久久久久久影院 | 欧美日日 | 国产乱码精品一区二区三区五月婷 | 国产精品毛片久久久久久久 | 亚洲精品国产成人 | 欧美精品一区二区三区蜜桃视频 | 午夜男人天堂 | 69av在线视频 | 在线中文字幕亚洲 | 国产一区2区| 看一级毛片 | 色综网 | 九热在线|