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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

淘寶上買的433M無線模塊,程序電路都有了沒反應啊!

  [復制鏈接]
跳轉到指定樓層
樓主
就是這個東西電路很簡單:
功能是發射模塊通過無線模塊發送到接收模塊單片機(按鈕實現),接收單片機點亮對應的一個LED。
把無線模塊去掉,直接在兩單片機RXD和TXD接導線,能成功。
問題是無線模塊接上沒法用啊!
菜鳥求教,有酬謝!



QQ圖片20160102234916.png (63.11 KB, 下載次數: 161)

原理圖

原理圖
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:101558 發表于 2016-1-3 10:45 | 只看該作者
Proteus仿真圖單刀雙擲開關連接TXD、RXD,能成功。。。程序應該沒問題吧。。。

QQ圖片20160103104239.png (75.58 KB, 下載次數: 115)

Proteus仿真

Proteus仿真

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:79544 發表于 2016-1-3 14:20 | 只看該作者
無線模塊要求晶振和PWM頻率要求很嚴格再就是干擾。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:101558 發表于 2016-1-3 15:48 | 只看該作者
騰飛的龍 發表于 2016-1-3 14:20
無線模塊要求晶振和PWM頻率要求很嚴格再就是干擾。

那豈不是要做很多附加的濾波整形電路?我的天線是沒接的,淘寶客服說天線不接可以傳50m.

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:79544 發表于 2016-1-3 17:05 | 只看該作者
反正我做315M解碼的時候很費勁,有的遙控能解出碼有的就不行,很多原因的

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:101558 發表于 2016-1-4 20:07 | 只看該作者
騰飛的龍 發表于 2016-1-3 17:05
反正我做315M解碼的時候很費勁,有的遙控能解出碼有的就不行,很多原因的

示波器能測信號,不過只有100mvpp.單片機能識別出高低電平嗎?完全沒轍了,做了個天線也沒反應

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:79544 發表于 2016-1-5 08:55 | 只看該作者
sgiter 發表于 2016-1-4 20:07
示波器能測信號,不過只有100mvpp.單片機能識別出高低電平嗎?完全沒轍了,做了個天線也沒反應

這是我解
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit DATA=P3^3;
  6. sbit rs=P3^6;          //1602引腳定義
  7. sbit rw=P3^5;
  8. sbit e=P3^7;
  9. uchar dat,num;

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

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

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

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

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

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

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

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

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

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

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

  165. void main()
  166. {
  167. init_1602();        //1602初始化
  168. while(1)
  169. {
  170. dat=receive();
  171. if(dat)                                  //顯示
  172. {
  173.       write_com(0x80+0x08);
  174.   write_data('O');delay(5);
  175.   write_data('K');delay(5);
  176.   write_data('!');delay(5);
  177.   display(dat);
  178. }
  179. else
  180. {
  181.       write_com(0x80+0x08);
  182.   write_data('N');delay(5);
  183.   write_data('O');delay(5);
  184.   write_data('!');delay(5);
  185.   write_com(0x80+0x4A);
  186.   write_data(' ');delay(5);
  187.   write_data(' ');delay(5);
  188. }
  189. }
  190. }
復制代碼
碼的51程序在1602上顯示
回復

使用道具 舉報

8#
ID:79544 發表于 2016-1-5 08:57 | 只看該作者
sgiter 發表于 2016-1-4 20:07
示波器能測信號,不過只有100mvpp.單片機能識別出高低電平嗎?完全沒轍了,做了個天線也沒反應

還有這個你
  1. /**********************************************************
  2.                         315M無線解碼51程序  
  3.         無線碼寬電平脈沖時間1.8ms,低電平脈沖時間600us,
  4.         同步碼低電平時間18.6ms lcd1602顯示碼值
  5.           MCU:STC12C5a60s2,11.0591MHzOSC,
  6.                 大數碼管實驗板調試通過
  7. ***************************************************/

  8. #include <stc12c5a60s2.h>
  9. #define  uchar unsigned char  
  10. #define  uint unsigned int  
  11. #define _rlcar_(RX)  CY=RX&0X80//RX帶進位左移1位,數據放入ACC
  12. sbit WUXIAN=P3^3;
  13. sbit led=P1^3;
  14. sbit lcdrs=P3^6;
  15. sbit lcdrw=P3^5;
  16. sbit lcden=P3^7;
  17. sbit beep=P1^7;//蜂鳴器
  18. uchar code Tab[]={'0','1','2','3','4','5','6','7','8',//大寫
  19. '9','A','B','C','D','E','F'};
  20. uchar code Tab1[]="315M WU XIAN JMA";//315無線解碼
  21. uchar code Tab2[]="MA ZHI:";//碼值
  22. uchar disp[8];

  23. uchar bdata wx_data0,wx_data1,wx_data2;  //存儲24位無線數據
  24. uchar data wx_code0,wx_code1,wx_code2;  
  25. uchar data wx_count,wxcount_buf;   //低電平時間計數器
  26. uchar data wx_bit;       //無線碼位數
  27. uchar data t_10ms;
  28. uchar data t_50ms;  
  29. bit tb_flag;        //同步碼接收成功標志
  30. bit wx_ok;         //無線碼接收成功標志  
  31. bit wx_sta;         //無線信號輸入腳的高低電平狀態

  32. void write_dat(uchar dat);
  33. void display();//顯示函數;
  34. void irwork();//數據分離
  35. void decode();

  36. void delay(uint z) //延時子程序
  37. {
  38.           uint x,y;
  39.           for(x=z;x>0;x--)
  40.      for(y=220;y>0;y--);
  41. }
  42. void write_com(uchar com)//定義一個帶參數的寫命令子程序
  43. {
  44.          lcdrs=0; //1602的rs為0時,接收命令,為1時接收數據
  45.          P0=com;//把void write_com(uchar com)中的COM中的數據給P0口
  46.          delay(2);
  47.          lcden=1;
  48.          delay(2);
  49.          lcden=0;
  50.          delay(2);
  51. }
  52. void init_1602()//定義一個初始化子程序
  53. {
  54.         uchar i;
  55.          lcden=0;
  56.          lcdrw=0;
  57.          write_com(0x38);//調用 write_com子程序并把0x38賦給P0口,顯示模式打開
  58. //         write_com(0x0f);//調用 write_com子程序并把“開顯示,顯示光標,光標閃爍”指令碼賦給P0口
  59.          write_com(0x06);//調用 write_com子程序并把“地址指針加1,整屏不移動”指令碼賦給P0口
  60.          //write_com(0x80+0x10);//數據指針初始化,讓指針指向可顯示的最右端
  61.          write_com(0x80);//數據指針初始化,讓指針指向最左端,顯示從第一行開始
  62.          write_com(0x01);//調用 write_com子程序并把"清零指"令碼賦給P0口
  63.         write_com(0x0c);//不顯示光標
  64.         write_com(0x81);
  65.         for(i=0;i<16;i++)
  66.         {
  67.                 write_dat(Tab1[i]);
  68.                  delay(2);
  69.         }
  70.         write_com(0x80+0x40);
  71.         for(i=0;i<7;i++)
  72.         {
  73.                 write_dat(Tab2[i]);
  74.                  delay(2);
  75.         }
  76. }

  77. void write_dat(uchar dat)//定義一個帶參數的寫數據子程序
  78. {
  79.          lcdrs=1; //1602的rs為0時,接收命令,為1時接收數據
  80.          P0=dat;//把void write_shu(uchar shu)中的COM中的數據給P0口
  81.          delay(2);
  82.          lcden=1;
  83.          delay(2);
  84.          lcden=0;
  85.          delay(2);
  86. }

  87. void mcu_initialize()
  88. {   
  89.         WDT_CONTR=0x00;       //關閉看門狗   
  90.         AUXR=0;         //定時器0和1設為傳統8051速度,12分頻   
  91. //        P0=0;     
  92.         TR0=0;   
  93.         TH0 = 0xa4;//11.0592M //100us中斷一次
  94.         TL0 = 0x00;
  95. //TH0=0x9c;//12M//100us中斷一次
  96. //TL0=0x00;         
  97.         TMOD|=0x02;        //設置T0為自動裝入的8位定時器  
  98.         ET0=1;          //允許T0中斷  
  99.         EA=1;   
  100.         TR0=1;         //啟動T0
  101. }
  102. void main()
  103. {     
  104.         mcu_initialize();
  105.          init_1602();
  106.         while(1)
  107.         {
  108.        
  109.                
  110.         }  
  111. }
  112. void decode()
  113. {   
  114.         if(WUXIAN)
  115.         {           //檢測無線I/O口為高      
  116.                 if(!wx_sta)
  117.                 {   
  118.                         wx_sta=1;          //無線信號從低變高   
  119.                         wxcount_buf=wx_count;         
  120.                         if(tb_flag)
  121.                         {         //同步碼標志為1      
  122.                                 if((0x02<wxcount_buf)&&(wxcount_buf<0x08))
  123.                                 {           //低電平脈寬范圍在200us到800us之間      
  124.                                         CY=1;            
  125.                                 }
  126.                                 else
  127.                                 if((0x0d<wxcount_buf)&&(wxcount_buf<0x14))
  128.                                 {     //低電平脈寬范圍在1.3ms到2ms之間      
  129.                                         CY=0;            
  130.                                 }      
  131.                                 else
  132.                                 {        //干擾碼      
  133.                                         loop2:wx_count=0;      
  134.                                         wx_bit=0;        
  135.                                         wxcount_buf=0;
  136.                                         tb_flag=0;      
  137.                                         return;      
  138.                                 }      
  139.                                 _rlcar_(wx_data0);//移位寄存器,接收一位數據
  140.                                 wx_data0=ACC;   
  141.                                 _rlcar_(wx_data1);   
  142.                                 wx_data1=ACC;     
  143.                                 _rlcar_(wx_data2);   
  144.                                 wx_data2=ACC;
  145.                                 if(++wx_bit==24)
  146.                                 {      //接收完24位碼,接收成功標志wx_ok置1      
  147.                                         tb_flag=0;      
  148.                                         wx_bit=0;      
  149.                                         wx_ok=1;      
  150.                                         wx_code0=wx_data0;
  151.                                         wx_code1=wx_data1;
  152.                                         wx_code2=wx_data2;
  153.                                         irwork();
  154.                                         display();                   
  155.                                 //        P0=wx_code0;      //p1口接LED顯示數據   
  156.                                 }      
  157.                         }
  158.                         else
  159.                         {        
  160.                                 if((0x87<wxcount_buf)&&(wxcount_buf<0xc8))      
  161.                                 tb_flag=1;//抵電平脈寬范圍在13.5ms到20ms之間,把同步碼標志置1   
  162.                                 else      
  163.                                 goto loop2;      
  164.                         }     
  165.                 }  
  166.         }
  167.         else
  168.         {   
  169.                 if(wx_sta)
  170.                 {     
  171.                 wx_count=0; //無線信號從高變低,清零低電平脈寬計數器   
  172.                 wx_sta=0;         
  173.                 }      
  174.                 else     
  175.                 wx_count++; //無線信號為低電平,低電平脈寬計數器加1     
  176.         }
  177. }
  178. void irwork()//數據分離
  179. {
  180.          disp[0]=wx_code0/16;//取高四位
  181.          disp[1]=wx_code0%16;//取低四位
  182.          disp[2]=wx_code1/16;//取高四位
  183.          disp[3]=wx_code1%16;//取低四位
  184.          disp[4]=wx_code2/16;//取高四位
  185.          disp[5]=wx_code2%16;//取低四位
  186. //         disp[6]=ircode[3]/16;//取高四位
  187. //         disp[7]=ircode[3]%16;//取低四位
  188. }
  189. void display()//顯示函數
  190. {
  191.          write_com(0x80+0x48);
  192.          write_dat(Tab[disp[0]]);
  193.          write_dat(Tab[disp[1]]);
  194.          write_dat(Tab[disp[2]]);
  195.          write_dat(Tab[disp[3]]);
  196.          write_dat(Tab[disp[4]]);
  197.          write_dat(Tab[disp[5]]);
  198. //         write_dat(Tab[disp[6]]);
  199. //         write_dat(Tab[disp[7]]);
  200. }
  201. void timer0_isr() interrupt 1
  202. {  
  203.         decode();   
  204.         if(++t_10ms>=100)
  205.         {         //P3.7口接的LED以0.5s的速度閃爍   
  206.                 t_10ms=0;   
  207.                 if(++t_50ms>=50)
  208.                 {   
  209.                         led=!led;   
  210.                         t_50ms=0;   
  211.                 }
  212.         }  
  213.                
  214. }
復制代碼
都試試吧

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:101558 發表于 2016-1-7 21:08 | 只看該作者
目前的問題是接收無線模塊的輸出信號電壓無法驅動單片機,幅度很小。。謝謝你啦

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

10#
ID:48413 發表于 2016-1-7 21:47 | 只看該作者
不好說原因太多了

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

11#
ID:114868 發表于 2016-4-21 11:23 | 只看該作者
騰飛的龍 發表于 2016-1-5 08:55
這是我解碼的51程序在1602上顯示

你好,請問接收處理函數里面的變量t代表的是什么啊?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

12#
ID:157531 發表于 2017-1-3 17:03 | 只看該作者
本帖最后由 qiu7854867 于 2017-1-3 17:21 編輯
騰飛的龍 發表于 2016-1-5 08:55
這是我解碼的51程序在1602上顯示

在不 這個代碼用多大的晶振,,  我用11.0592M晶振  315M模塊端口有數據輸出,,但是單片機貌似沒檢測到 1602顯示 NO!,0X     會不會存在電壓匹配問題   我在程序中增加DATA如果高就亮LED燈,但是LED燈就沒亮過  求指教  
回復

使用道具 舉報

13#
ID:210330 發表于 2017-6-12 09:54 | 只看該作者
剛看到你的這個帖子,可能你的問題已經解決。我還是給你分析一下原因,因為你的這個問題比較普遍,很多做研發的容易遇到這個問題,這個模塊不知道是那個公司做的,是用的480接收芯片,很多公司在做,成本便宜也比較簡單,輸出有很多雜波干擾,需要程序來處理一下,模塊應該是沒有問題的,看你的電路圖,是硬件接口連接有問題,因為這種ASK模塊的輸入和輸出接口平時為0電平,你的TX和RX平時是高電平,連接后把電平拉的不正常,輸出的信號電壓就不正常了,導致不解碼。
回復

使用道具 舉報

14#
ID:145141 發表于 2017-7-12 08:21 | 只看該作者
好高能的東西,最近也在研究這個,可惜未能入門...
回復

使用道具 舉報

15#
ID:218365 發表于 2017-9-20 08:16 | 只看該作者
315無線,做個標記
回復

使用道具 舉報

16#
ID:152715 發表于 2017-12-19 22:20 | 只看該作者
學習學習
回復

使用道具 舉報

17#
ID:330116 發表于 2018-5-17 09:40 | 只看該作者
您好,您的發射碼程序是怎樣編碼的呢,能不能分享一下
回復

使用道具 舉報

18#
ID:343047 發表于 2018-6-1 18:23 來自手機 | 只看該作者
原因是多方面的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人在线视频 | 中文字幕不卡 | 韩日精品一区 | 欧美三区在线观看 | 69堂永久69tangcom| 中国美女一级黄色片 | 日本高清aⅴ毛片免费 | 免费国产视频 | 九九综合 | 麻豆av网站 | 91一区二区 | 国产精品网址 | 色婷婷综合久久久中字幕精品久久 | 天天操天天摸天天爽 | 久久久一区二区三区四区 | 国产不卡一 | 免费视频一区 | 国产精品一二三区 | 色精品 | 久久精品毛片 | 欧美在线观看一区 | 久久久久国产一区二区三区四区 | 成人在线免费视频观看 | 91成人在线 | 午夜电影福利 | 日韩一级黄色毛片 | 久久国产精品亚洲 | 色性av| 狠狠爱视频 | 一区二区三区四区不卡视频 | 你懂的在线视频播放 | 日韩在线一区二区三区 | 国产一区二区三区网站 | 一区二区高清在线观看 | av一级毛片| 久久综合一区二区 | 午夜在线影院 | 欧美乱人伦视频 | 久久精品亚洲 | 国产一在线观看 | 日本综合在线观看 |