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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2635|回復: 4
打印 上一主題 下一主題
收起左側

請教433M無線遙控調試問題

[復制鏈接]
跳轉到指定樓層
樓主
請教各位論壇大神

我在學習433 遙控時不知怎麼調試(單片機使用的是STC89C52RC)
兩種接收模塊芯片WS480L  SYN531R
網上買的,賣家只提供了IC規格書,其他的他也不清楚
請教模塊數據輸出端直接接單片機IO口嗎?數據引腳有兩個,用萬用表測時導通的。
我用WS480L 模塊輸出端接NPN三極管基極,驅動LED,LED光線一直較暗閃爍,按下遙控時LED閃爍光線較強。這樣模塊是好的嗎?
SYN531R用手捏住數據線時,現象同WS480L ,不捏住時沒反應,中間使用20cm的杜邦線連接的。


遙控器參數如下:
遙控發送為25位(不知是否還需要引導位,提供的波形圖上沒有引導位)
地址位(8)+地址位(8)+數據位(8)+結束位(1)
每楨間隔12ms
數據先高后低
0: 0.4ms+1.2ms
1:1.2ms+0.4ms
原解碼思路是用中斷檢測數據上升跳變沿啟動定時器,定時器0.8ms時檢測數據口,記錄數據並關閉定時器。等待25位數據接收完成標誌數據接收完成位,後提取數據再比對數據判斷按鍵值
現無數據時數據口一直在變化(LED閃爍),如此上面思路可能行不通了

請教大神們如何調試,如分幾步,每步做什麼,怎麼判斷,解碼思路。網上論壇也看過相關資料,還是一頭霧水
望各位幫忙解惑。謝謝!

5_739_1497914_568_800.jpg (50.26 KB, 下載次數: 38)

5_739_1497914_568_800.jpg

WS480L.jpg (41.46 KB, 下載次數: 34)

WS480L.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:94031 發表于 2019-11-10 10:59 | 只看該作者
既然買到的是模塊就按模塊的說明來調試,有載波時DO輸出高電平,沒有收到載波時輸出無規則方波。
回復

使用道具 舉報

板凳
ID:155507 發表于 2019-11-10 11:40 | 只看該作者
我給你來個程序參考

  1. /*
  2. 這是解碼的51程序在1602上顯示

  3. */
  4. #include <reg52.h>
  5. #include <intrins.h>
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. sbit DATA=P3^3;     //DO輸出
  9. sbit rs=P3^6;          //1602引腳定義
  10. sbit rw=P3^5;
  11. sbit e=P3^7;
  12. uchar dat,num;

  13. uchar code table[]="0123456789ABCDEF";
  14. uchar code table1[]="Receive:";        //液晶固定部分顯示
  15. uchar code table2[]="Re_data:0x";

  16. void write_data (uchar dat);         //1602寫數據
  17. void write_com (uchar com);         //1602寫命令
  18. uchar pow(uchar n,uchar m);//n的m次方函數
  19. uchar receive(void);                          //接收處理函數  
  20. void gd();                        //液晶固定部分顯示

  21. void delay (uint xms)        //1602延時
  22. {
  23.         uint i,j;
  24.         for (i = xms; i > 0; i--)
  25.            for (j = 110; j > 0; j--);
  26. }

  27. void delay1(uchar t)//延時程序
  28. {
  29.         uchar n;
  30.         for(;t>0;t--)
  31.            for(n=40;n>0;n--);  
  32. }

  33. uchar pow(uchar n,uchar m)//n的m次方函數
  34. {
  35.         uchar t,result=1;
  36.         for(t=0;t<m;t++)
  37.         {result=n*result;}
  38.         return result;
  39. }

  40. void init_1602()
  41. {
  42.         e = 0;        //1602初始化
  43.         write_com (0x38);
  44.         write_com (0x0c);
  45.         write_com (0x06);
  46.         write_com (0x01);
  47.         gd();
  48. }

  49. /*1602液晶代碼部分        ------------------------------ */
  50. void write_com (uchar com)        //寫命令
  51. {
  52.         rs = 0;
  53.         rw = 0;
  54.         P0 = com;
  55.         delay (5);
  56.         e = 1;
  57.         delay (5);
  58.         e = 0;
  59. }

  60. void write_data (uchar dat)         //寫數據
  61. {
  62.         rs = 1;
  63.         rw = 0;
  64.         P0 = dat;
  65.         delay (5);
  66.         e = 1;
  67.         delay (5);
  68.         e = 0;
  69. }

  70. void gd()        //液晶固定部分顯示
  71. {
  72.         write_com(0x80);
  73.         for(num=0;num<8;num++)
  74.         {
  75.                 write_data(table1[num]);
  76.                 delay(5);
  77.         }
  78.         write_com(0x80+0x40);
  79.         for(num=0;num<10;num++)
  80.         {
  81.                 write_data(table2[num]);
  82.                 delay(5);
  83.         }
  84. }

  85. uchar receive(void)//接收處理函數
  86. {
  87.         uchar guid=0,result[12],i,key=0,res=0,t,time=0;
  88.         while(1)//捕獲前導命令
  89.         {
  90.                 while(DATA==1)
  91.                 {
  92.                         t++;
  93.                         if(t>=90)
  94.                         {
  95.                                
  96.                                 delay1(100);
  97.                                 return 0;
  98.                         }
  99.                 }//防止錯誤數據導致的死循環
  100.                 if(t>=60&&t<95)
  101.                 {
  102.                         t=0;
  103.                         key++;
  104.                         time=0;
  105.                         if(key>3)
  106.                         break;
  107.                 }//獲得前導命令跳出循環,清除計時信號
  108.                 else
  109.                 if(time>100)
  110.                 {
  111.                        
  112.                         delay1(100);
  113.                         return 0;
  114.                 }//長0,錯誤信號返回0
  115.                 else {t=0;time++;}//計時壘加,清除t
  116.         }  
  117.         t=0;
  118.         time=0;
  119.         for(i=1;i<13;)             //校驗碼及數據的接收共12位數據
  120.         {
  121.                 while(DATA==1)
  122.                 {
  123.                         t++;
  124.                         if(t>=95)
  125.                         {
  126.                                
  127.                                 delay1(100);
  128.                                 return 0;
  129.                         }
  130.                 }//防止錯誤信號導致的死循環
  131.                 if(t>=60&&t<95)
  132.                 {
  133.                         t=0;i=1;time=0;
  134.                 }//去除多余的前導命令
  135.                 else
  136.                 if(t>=28&&t<60)
  137.                 {
  138.                         result[i-1]=1;i++;time=0;
  139.                 }//捕獲數據1
  140.                 else
  141.                 if(t>0&&t<27)
  142.                 {result[i-1]=0;i++;time=0;}//捕獲數據0
  143.                 if(time>100)
  144.                 return 0; //消除長0的干擾確保數據正確
  145.                 t=0;   //清零
  146.                 time++;//計時        
  147.         }
  148.         if(result[0]==1&&result[1]==0&&result[2]==1&&result[3]==0)//判斷校驗碼
  149.         for(i=0;i<8;i++)
  150.         {
  151.                 res+=pow(2,i)*result[11-i];
  152.         }//將結果轉換為十進制數據
  153.         return res;//返回得到的結果
  154. }

  155. void display(uchar dat)        //液晶數據顯示
  156. {
  157.         uchar a,b;
  158.         a=dat/16;
  159.         b=dat%16;
  160.         if(a>9)
  161.         a=a+0;
  162.         if(b>9)
  163.         b=b+0;
  164.         write_com(0x80+0x4A);
  165.         write_data(table[a]);delay(5);
  166.         write_data(table[b]);delay(5);
  167. }

  168. void main()
  169. {
  170.         init_1602();        //1602初始化
  171.         while(1)
  172.         {
  173.                 dat=receive();
  174.                 if(dat)                                  //顯示
  175.                 {
  176.                         write_com(0x80+0x08);
  177.                         write_data('O');delay(5);
  178.                         write_data('K');delay(5);
  179.                         write_data('!');delay(5);
  180.                         display(dat);
  181.                 }
  182.                 else
  183.                 {
  184.                         write_com(0x80+0x08);
  185.                         write_data('N');delay(5);
  186.                         write_data('O');delay(5);
  187.                         write_data('!');delay(5);
  188.                         write_com(0x80+0x4A);
  189.                         write_data(' ');delay(5);
  190.                         write_data(' ');delay(5);
  191.                 }
  192.         }
  193. }

復制代碼

回復

使用道具 舉報

地板
ID:387856 發表于 2019-11-15 20:07 | 只看該作者
angmall 發表于 2019-11-10 11:40
我給你來個程序參考

請教一下  您寫的這個參考程序 ,在主程序的while(1)中 用到了那么多delay(5),那解碼的成功率是不是會很低呢,我的理解啊,假如剛好在write_data('N');delay(5);這里我按下遙控器,是不是下面還有好幾個delay(5),當再次運行到 dat=receive();data端檢測到的電平一定不是正確的了,那不是解碼就錯誤了呢
回復

使用道具 舉報

5#
ID:25310 發表于 2019-11-16 08:50 | 只看該作者
你這是按紅外線編碼的吧,有沒試過直接發串口數據啊,我也是猜測的,這樣進串口解碼方便些。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人国产一区二区三区精品麻豆 | 欧美天天视频 | 91精品国产91久久久久久丝袜 | 久久99一区二区 | 精品一区国产 | 福利电影在线 | 综合九九 | 在线精品一区二区三区 | 大乳boobs巨大吃奶挤奶 | 涩涩视频在线观看 | 亚洲欧美在线免费观看 | 久久99精品久久久久久国产越南 | www.久久 | 毛片网络| 99精品亚洲国产精品久久不卡 | 婷婷五月色综合香五月 | 午夜欧美一区二区三区在线播放 | 亚洲网站在线观看 | 精品伊人| 91av视频在线播放 | 中文字幕欧美一区二区 | 国产一区二区在线免费观看 | 操亚洲| 亚洲理论在线观看电影 | 国产精品1区2区3区 一区中文字幕 | 欧美日韩一区精品 | 日韩精品一区二区三区视频播放 | 国产精品一区二区三区久久久 | 国产乱码精品一区二区三区中文 | 免费一级欧美在线观看视频 | 国产精品91视频 | a爱视频 | 中文字幕在线播放第一页 | 国产精品久久久久一区二区三区 | 国产极品车模吞精高潮呻吟 | 天堂亚洲 | 久久青 | 久久久久久久久久爱 | 免费亚洲一区二区 | 日韩中文字幕久久 | 国产精品视频不卡 |