欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

上傳一個莫爾斯電碼發生的單片機程序與Proteus仿真電路

  [復制鏈接]
跳轉到指定樓層
樓主
短波等幅電報是無線電玩家的摯愛,其抗干擾能力是無法替代的,使用小功率就能實現遠距離通聯。但是人工收發電報實在是太難,也太繁瑣,也因此莫爾斯碼已被主流應用淘汰。如果能用單片機實現自動收發電報,就能很方便的進行遠距離通聯了。看到有些資深網友反對電報自動化,不過如能用單片機實現自動收發報、自動加解密,相信莫爾斯碼會更有實用價值,會煥發第二春。網上這樣的程序很少,找了很久終于找到一個,保存到這里,希望對需要的人有幫助。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. void delay(unsigned char ms);
  4. void delay2(int i);
  5. void lcd_wcmd(unsigned char cmd);
  6. void lcd_pos(unsigned char pos);
  7. void lcd_wdat(unsigned char dat);
  8. void lcd_init();
  9. void xianshi();
  10. void KeyDown();
  11. void la_ba();
  12. sbit rs= P2^6;
  13. sbit rw = P2^5;
  14. sbit ep = P2^7;
  15. sbit d=P3^0;
  16. sbit d1=P3^1;
  17. sbit lb=P3^2;
  18. int b,c,s=0,q=0,w=0;
  19. #define GPIO_KEY P1
  20. unsigned char dis1[32];
  21. unsigned char dis2[9]={',','A','D','G','J','M','P','T','W'};
  22. unsigned char dis3[9]={'1','2','3','4','5','6','7','8','9'};
  23. unsigned int code laba[36][5]={
  24.         1,2,3,3,3,//A
  25.         2,1,1,1,3,//B
  26.         2,1,2,1,3,//C
  27.         2,1,1,3,3,//D
  28.         1,3,3,3,3,//E
  29.         1,1,2,1,3,//F
  30.         2,2,1,3,3,//G
  31.         1,1,1,1,3,//H
  32.         1,1,3,3,3,//I
  33.         1,2,2,2,3,//J
  34.         2,1,2,3,3,//K
  35.         1,2,1,1,3,//L
  36.         2,2,3,3,3,//M
  37.         2,1,3,3,3,//N
  38.         2,2,2,3,3,//0
  39.         1,2,2,1,3,//P
  40.         2,2,1,2,3,//Q
  41.         1,2,1,3,3,//R
  42.         1,1,1,3,3,//S
  43.         2,3,3,3,3,//T
  44.         1,1,2,3,3,//U
  45.         1,1,1,2,3,//V
  46.         1,2,2,3,3,//W
  47.         2,1,1,2,3,//X
  48.         2,1,2,2,3,//Y
  49.         2,2,1,1,3,//Z
  50.         2,2,2,2,2,//0
  51.         1,2,2,2,2,//1
  52.         1,1,2,2,2,//2
  53.         1,1,1,2,2,//3
  54.         1,1,1,1,2,//4
  55.         1,1,1,1,1,//5
  56.         2,1,1,1,1,//6
  57.         2,2,1,1,1,//7
  58.         2,2,2,1,1,//8
  59.         2,2,2,2,1,//9
  60. };
  61. void delay(unsigned char ms)
  62. {
  63.         unsigned char i;
  64.         while(ms--)
  65.         {
  66.                 for(i = 0; i< 250; i++)
  67.                 {
  68.                         _nop_();
  69.                         _nop_();
  70.                         _nop_();
  71.                         _nop_();
  72.                 }
  73.         }
  74. }
  75. void delay2(int i)
  76. {
  77.         while(i--);       
  78. }
  79. bit lcd_bz()
  80. {
  81.         bit result;
  82.         rs = 0;
  83.         rw = 1;
  84.         ep = 1;
  85.         _nop_();
  86.         _nop_();
  87.         _nop_();
  88.         _nop_();
  89.         result = (bit)(P0 & 0x80);
  90.         ep = 0;
  91.         return result;
  92. }
  93. void lcd_wcmd(unsigned char cmd)
  94. {
  95.         while(lcd_bz());//判斷LCD是否忙碌
  96.         rs = 0;
  97.         rw = 0;
  98.         ep = 0;
  99.         _nop_();
  100.         _nop_();
  101.         P0 = cmd;
  102.         _nop_();
  103.         _nop_();
  104.         _nop_();
  105.         _nop_();
  106.         ep = 1;
  107.         _nop_();
  108.         _nop_();
  109.         _nop_();
  110.         _nop_();
  111.         ep = 0;
  112. }
  113. void lcd_pos(unsigned char pos)
  114. {
  115.         lcd_wcmd(pos | 0x80);
  116. }
  117. void lcd_wdat(unsigned char dat)
  118. {
  119.         while(lcd_bz());//判斷LCD是否忙碌
  120.         rs = 1;
  121.         rw = 0;
  122.         ep = 0;
  123.         P0 = dat;
  124.         _nop_();
  125.         _nop_();
  126.         _nop_();
  127.         _nop_();
  128.         ep = 1;
  129.         _nop_();
  130.         _nop_();
  131.         _nop_();
  132.         _nop_();
  133.         ep = 0;
  134. }
  135. void lcd_init()
  136. {
  137.         lcd_wcmd(0x38);
  138.         delay(1);
  139.         lcd_wcmd(0x0c);
  140.         delay(1);
  141.         lcd_wcmd(0x06);
  142.         delay(1);
  143.         lcd_wcmd(0x01);
  144.         delay(1);
  145. }
  146. void xianshi()
  147. {
  148.         int i=0,j=1,n=0;
  149.         while(dis1[i] != '\0')
  150.         {
  151.                 lcd_pos(0x00);//設置顯示位置
  152.                 while(j!=0&&dis1[i] != '\0')
  153.                 {
  154.                         lcd_wdat(dis1[i]);//顯示字符
  155.                         i++;
  156.                         j=i%16;
  157.                 }
  158.                 lcd_pos(0x40);// 設置顯示位置
  159.                 j=1;
  160.                 while(j!=0&&dis1[i] != '\0')
  161.                 {
  162.                         lcd_wdat(dis1[i]);// 顯示字符
  163.                         i++;
  164.                         j=i%16;
  165.                 }
  166.                 j=1;
  167.                 if(dis1[i] != '\0')
  168.                 i-=16;
  169.         }
  170.         i=0;
  171. }
  172. void KeyDown()
  173. {
  174.         int KeyValue=0;
  175.         GPIO_KEY=0x0f;
  176.         if(GPIO_KEY!=0x0f)
  177.         {
  178.                 delay(5);
  179.                 if(GPIO_KEY!=0x0f)
  180.                 {       
  181.                         GPIO_KEY=0X0F;
  182.                         switch(GPIO_KEY)
  183.                         {
  184.                                 case(0X07):        KeyValue=0;break;
  185.                                 case(0X0b):        KeyValue=1;break;
  186.                                 case(0X0d): KeyValue=2;break;
  187.                                 case(0X0e):        KeyValue=12;break;
  188.                         }
  189.                 }
  190.                         GPIO_KEY=0XF0;
  191.                         switch(GPIO_KEY)
  192.                         {
  193.                                 case(0X70):        KeyValue=KeyValue;break;
  194.                                 case(0Xb0):        KeyValue=KeyValue+3;break;
  195.                                 case(0Xd0): KeyValue=KeyValue+6;break;
  196.                                 case(0Xe0):        KeyValue=KeyValue+9;break;
  197.                         }
  198.                 while(GPIO_KEY!=0xf0);
  199.                 if(KeyValue!=c&&dis1[w]!='\0')
  200.                         {b=0;w++;}
  201.                
  202.                 if(KeyValue<=8&&s==0)
  203.                 {
  204.                         if(c==12||c==15)w--;
  205.                         dis1[w]=dis2[KeyValue]+b;
  206.                         d=0;delay(25);d=1;delay(25);
  207.                 }
  208.                 else if(KeyValue<=8&&s==1)
  209.                 {
  210.                         if(c==12||c==15)w--;
  211.                         dis1[w]=dis3[KeyValue];
  212.                         d=0;delay(25);d=1;delay(25);
  213.                 }
  214.                 else if(KeyValue==12)
  215.                 {
  216.                         if(w>0)
  217.                         {
  218.                                 w--;
  219.                                 dis1[w]=' ';
  220.                         }
  221.                         else
  222.                         {
  223.                                 dis1[w]=' ';
  224.                         }
  225.                         d1=0;delay(25);d1=1;delay(25);
  226.                 }
  227.                 else if(KeyValue==15)
  228.                 {
  229.                         while(w!=0)
  230.                         {
  231.                                 w--;
  232.                                 dis1[w]=' ';
  233.                         }
  234.                 }
  235.                 else if(KeyValue==9)
  236.                 {
  237.                                 q++;
  238.                                 s=q%2;
  239.                         if(c==12||c==15)w-=2;
  240.                 }
  241.                 else if(KeyValue==10)
  242.                 {
  243.                         if(s==0)
  244.                                 dis1[w]=' ';
  245.                         else
  246.                                 dis1[w]='0';
  247.                 }
  248.                 else if(KeyValue==11)
  249.                 {
  250.                                 dis1[w]=' ';
  251.                 }
  252.                 else if(KeyValue==18)
  253.                 {
  254.                         dis1[w]=' ';
  255.                         w--;
  256.                 }
  257.                 else if(KeyValue==21)
  258.                 {
  259.                         la_ba();
  260.                 }
  261.                 b++;
  262.                 if(b==3)b=0;
  263.                 c=KeyValue;
  264.         }
  265. }
  266. void la_ba()
  267. {
  268.         int i,j,t;
  269.         for(i=0;dis1[i]!='\0';i++)
  270.         {
  271.                 if(dis1[i]>=65&&dis1[i]<=90)
  272.                 {
  273.                 d1=0;delay(25);d1=1;delay(25);
  274.                 for(j=0;laba[dis1[i]-65][j]!=3;j++)
  275.                 {
  276.                         if(laba[dis1[i]-65][j]==1)
  277.                         {
  278.                                 t=100;
  279.                                 while(t--)
  280.                                 {
  281.                                         lb=~lb;
  282.                                         delay2(70);
  283.                                 }
  284.                                         delay(50);
  285.                         }
  286.                         if(laba[dis1[i]-65][j]==2)
  287.                         {
  288.                                         t=300;
  289.                                         while(t--)
  290.                                 {
  291.                                         lb=~lb;
  292.                                         delay2(70);
  293.                                 }
  294.                                 delay(50);
  295.                         }
  296.                         if(laba[dis1[i]-65][j+1]==3)
  297.                         {
  298.                                 delay(100);
  299.                         }
  300.                 }
  301.         }       
  302.                 if(dis1[i]>=48&&dis1[i]<=57)
  303.                 {
  304.                         d=0;delay(25);d=1;delay(25);
  305.                         for(j=0;j<5;j++)
  306.                         {
  307.                                 if(laba[dis1[i]-22][j]==1)
  308.                                 {
  309. ……………………

  310. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
莫爾斯電碼發生器.zip (91.17 KB, 下載次數: 62)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:98926 發表于 2020-10-20 22:33 | 只看該作者
這個只有無線電愛好者才有興趣,打破零評論
回復

使用道具 舉報

板凳
ID:343102 發表于 2020-10-20 22:50 | 只看該作者
經檢查該程序鍵盤部分少設置了兩個字母,可以重新設置增加上。
利用空閑的io口可以增加一個手動發報按鈕,如果你喜歡手動發報。按下時讓喇叭發聲即可。
在喇叭輸出端連接一個三極管,再連接到短波發射電路,就能模擬電鍵實現單片機自動發報。喇叭的聲音是io口通過0、1變化實現的,這也意味著聲音載波是100%調制的,接收時聲音信號不怕限幅,還能通過音調識別來提高抗干擾能力。
回復

使用道具 舉報

地板
ID:66377 發表于 2020-10-21 05:05 | 只看該作者
發報部份不難,有難度的是收報。怎樣才能適應不同人的手速?
回復

使用道具 舉報

5#
ID:343102 發表于 2020-10-21 12:59 | 只看該作者
wbz0508 發表于 2020-10-21 05:05
發報部份不難,有難度的是收報。怎樣才能適應不同人的手速?

這個確實是難點,我正在解決。考慮采用聚類分析算法,但是程序太大,要想法精簡。
不過,采用單片機發報后,再采用單片機收報就很容易了。單片機對單片機通訊按鍵時間可以非常精準。使用單片機還可以縮短按鍵時間,提高發報速度。所以說采用單片機發報前途光明。
回復

使用道具 舉報

6#
ID:468878 發表于 2020-10-23 12:16 | 只看該作者
自動發報的早就有了,但還是喜歡用手動的。我問相關人員為什么堅持手動電鍵,他說,熟練后,手動電鍵比自動發報的速度還要快!
回復

使用道具 舉報

7#
ID:343102 發表于 2020-10-24 09:40 | 只看該作者
rsx9583 發表于 2020-10-23 12:16
自動發報的早就有了,但還是喜歡用手動的。我問通信兵為什么堅持手動電鍵,通信兵說,熟練后,手動電鍵 ...

現在已經很少用電報了,原因就是速度太慢、加解密太繁瑣,畢竟人的操作速度是很有限的。
但是,如果收發報都用單片機,收發報速度就會大大加快,如果不考慮抗干擾,發報速度幾乎可以直追數字通訊。況且,用單片機收發報,還可以自動加解密,這樣就解決了人工收發報加解密時的繁瑣問題。
如果用單片機實現自動收發報、自動加解密,相信會普及電報,甚至在前線可以做到人手一臺。因為短波電報無論是抗干擾能力還是抗擊打能力,都是無可替代的。在這兩個方面,中繼站、衛星通訊都不如短波電報。
回復

使用道具 舉報

8#
ID:965487 發表于 2021-10-21 08:34 | 只看該作者
風158 發表于 2020-10-24 09:40
現在已經很少用電報了,原因就是速度太慢、加解密太繁瑣,畢竟人的操作速度是很有限的。
但是,如果收發 ...

哇,我也在搞這個,已經弄了四五天了,快完成了,沒有想到你也在弄,并發表了。
回復

使用道具 舉報

9#
ID:965487 發表于 2021-10-21 09:46 | 只看該作者
風158 發表于 2020-10-24 09:40
現在已經很少用電報了,原因就是速度太慢、加解密太繁瑣,畢竟人的操作速度是很有限的。
但是,如果收發 ...

哈哈,時間看錯了,2020年10月20日,我以為是昨天。昨天正好是2021年10月20日。搜集資料竟然沒有找到你這個帖子。估計關鍵字寫錯了,我是摩爾斯電碼。
回復

使用道具 舉報

10#
ID:1000797 發表于 2022-1-13 11:16 來自觸屏版 | 只看該作者
風158 發表于 2020-10-20 22:50
經檢查該程序鍵盤部分少設置了兩個字母,可以重新設置增加上。
利用空閑的io口可以增加一個手動發報按鈕, ...

大佬這個咋搞嘞手動的
回復

使用道具 舉報

11#
ID:1000797 發表于 2022-1-13 16:24 來自觸屏版 | 只看該作者
wzqwxx 發表于 2021-10-21 09:46
哈哈,時間看錯了,2020年10月20日,我以為是昨天。昨天正好是2021年10月20日。搜集資料竟然沒有找到你這 ...

你知道咋用這16個按鍵輸入26個字母和0-9嘛,我看不懂那個代碼
回復

使用道具 舉報

12#
ID:1000797 發表于 2022-1-13 16:48 來自觸屏版 | 只看該作者
wzqwxx 發表于 2021-10-21 08:34
哇,我也在搞這個,已經弄了四五天了,快完成了,沒有想到你也在弄,并發表了。

你知道咋用這16個按鍵輸入26個字母和0-9嘛,我看不懂那個代碼
回復

使用道具 舉報

13#
ID:1000797 發表于 2022-1-13 17:29 來自觸屏版 | 只看該作者
wzqwxx 發表于 2021-10-21 09:46
哈哈,時間看錯了,2020年10月20日,我以為是昨天。昨天正好是2021年10月20日。搜集資料竟然沒有找到你這 ...

這個咋用按鍵輸入字母那些吶
回復

使用道具 舉報

14#
ID:46320 發表于 2022-1-13 18:15 | 只看該作者
看來樓主對現代無線通信了解不多
1 早就有自動收發報系統
2 雖然還在培養報務員但早停止了cw通信模式,手鍵發報只作為緊急備用最后手段
3 現在早有了更先進的數字報技術,比如ASK,PSK,FSK。特別是fsk中的ft8通信,弱信號比cw優勢明顯
不過,手鍵的優勢依然明顯,比如報務員手法像指紋一樣是獨一無二的。所以早期的報務員配有保護人員
回復

使用道具 舉報

15#
ID:343102 發表于 2022-1-14 14:51 | 只看該作者
1 可能是我孤陋寡聞,但我在網上真的沒有找到自動收發報軟件,包括萬能的某一個寶。這個程序是我找到的比較好的了,改進后收發報就像收發短信一樣容易。而且利用單片機很容易進行加密,不能自動加密的系統基本上只能玩玩,沒大用。
2 你能知道cw通信是緊急備用最后手段就行,我說的也是這個意思。現代戰場上電磁干擾會很常見,沒有cw通信做最后保障是很糟糕的。
3 單片機不僅能高速準確地模擬手鍵,還能很容易地控制激光、紅外線、超聲波、次聲波進行通信,比手動強多了。
回復

使用道具 舉報

16#
ID:46320 發表于 2022-1-14 20:59 | 只看該作者
風158 發表于 2022-1-14 14:51
1 可能是我孤陋寡聞,但我在網上真的沒有找到自動收發報軟件,包括萬能的某一個寶。這個程序是我找到的比較 ...

好吧,我只是想說還是往識別人工手法方面都研究一下,現在玩手鍵的只有業余無線電愛好者了,業余無線電只允許明碼明語通訊。至于模擬手鍵技術,軍隊幾十年前就淘汰了,現在的跳頻加數字調制技術各方面都碾壓傳統模擬無線通信,別說cw,現代軍隊語音通信都是數字加密。況且,現代戰爭是信息化戰爭,cw的傳遞速率,呵呵吧。
回復

使用道具 舉報

17#
ID:343102 發表于 2022-1-15 09:21 | 只看該作者
讓我們再看看CW通信有哪些過人之處,就會發現淘汰CW通信是不明智的。傳統方法自有傳統方法的優點,據說海上的就又開始裝備利用恒星定位的儀器了。這是從最壞處著想,向最好處努力的基本決策原則。以下來自網絡:

CW通訊的優缺點

    摩斯電碼(Morse Code)是一種相當古老的通訊方法,早在有線電話發明前的有線電報時代即已存在。由于它具有精簡、低成本、高效率的優點,所以在通訊科技發達的今天,它仍然占有相當重要的地位。

    CW為Continue Wave的縮寫,它并不是指連續發射的信號(那不成為干擾了嗎?)而是指頻率固定、振輻固定,有別于FM的頻率、AM的振輻隨時間改變而改變。由于沒有調制,所以只能借著信號的有無來傳遞信號,想當然爾,當然是用Morse Code這種全球皆知的方式來編碼。在此要特別說明的是Morse Code是一種編碼方式,而CW是一種電波型式,兩者并不相同,只不過我們在運用CW時通常是用Morse Code來溝通,兩者雖有極高的關聯,但并不表示全等,不可混淆。

優點:

1.CW的頻寬甚窄:
    FM的頻寬一般要10KHz以上,AM要6KHz以上,SSB要3KHz以上,而CW通常只要1KHz。實際上只要頻率相差100Hz即可輕易分辨兩個信號的不同。CW是能在有限頻寬中容納最多組信號的通信方法。

2.S/N比高:
    這里指的不是無線電機上的S/N比,而是人耳對聲音的辨識能力。CW由于聲音單調,很容易在噪聲之中突顯出來,在相同的條件下,如果要分辯CW的信號已經有點困難,這個時候用話務通訊則幾乎不可能達成通訊。

3.CW傳播較遠:
    由于CW頻寬最窄,以相同的功率來發訊則單位頻寬內的功率密度較其它調制方式為高,所以可以傳得較遠。打個比方來說,FM就好像沒有燈罩的燈泡,而CW就像是加了聚光燈罩的聚光燈,雖然用的都是同一個燈泡,但效果則是大大的不同。

4.CW可用較低的功率通訊:
    綜合1,2,3點,這是必然的結論。在緊急且電力供給受到限制的狀況下,使用CW是最佳的解決方法。

5.CW收發機的結構最簡單:
    CW只要能分辨得出信號有無即可,即使頻率不是非常穩定或非常準確也沒關系。CW的發射機不需要調制,就像是一部信號產生器。而接收機只要有振蕩、放大、混頻、濾波等功能即可,結構很簡單、制做容易。

6.CW的信號容易做濾波處理:
    因為它的頻寬窄,我們容易將不想收到的信號濾除以增加信號的可讀性。

7.CW是安靜的通訊方式:
    戴上耳機操作電鍵,即使是夜深人靜也不會吵到左右鄰居及枕邊人,而話務通信必須要開口說話就沒有這個優點。

缺點:

    我幾乎想不到CW有什么缺點,如果有的話,那就是CW用Morse Code來編碼,而報務通信和話務通信相比,本來就有下列缺點:
    同樣的時間內,難以詳細描述事情:雖然報務通信大量使用簡語及Q Code來提升傳遞訊息的速度,不過若要用報務詳細描述事情的確是比較費時費力。
    Morse Code需要一定的訓練才能熟習使用,而話務通訊可說是人人都會,不需要特別訓練。
回復

使用道具 舉報

18#
ID:343102 發表于 2022-1-15 12:41 | 只看該作者
本帖最后由 風158 于 2022-1-15 17:42 編輯

單片機自動收發報系統體積小,又省電,也很便宜,而且速度很快,不容易出錯,在很大程度上彌補了CW通信的缺點。有了單片機自動收發報系統,相信手動收發基本上只用于愛好了。
回復

使用道具 舉報

19#
ID:343102 發表于 2022-1-16 22:03 | 只看該作者
妹妹妹妹 發表于 2022-1-13 11:16
大佬這個咋搞嘞手動的

看電路圖:

單片機收發報電路.png (94.35 KB, 下載次數: 157)

單片機收發報電路.png
回復

使用道具 舉報

20#
ID:343102 發表于 2022-1-16 22:06 | 只看該作者
妹妹妹妹 發表于 2022-1-13 16:24
你知道咋用這16個按鍵輸入26個字母和0-9嘛,我看不懂那個代碼

指定某個按鍵與哪幾個字符關聯就行。就像多功能電話鍵盤一樣。
回復

使用道具 舉報

21#
ID:1000797 發表于 2022-1-18 20:36 來自觸屏版 | 只看該作者
風158 發表于 2022-1-16 22:06
指定某個按鍵與哪幾個字符關聯就行。就像多功能電話鍵盤一樣。

太太太感謝了 我好好研究研究
回復

使用道具 舉報

22#
ID:1000797 發表于 2022-1-18 21:01 來自觸屏版 | 只看該作者
風158 發表于 2022-1-16 22:03
看電路圖:

我我還有一個問題就是現在咋把這個斷斷續續的信號發射出去呢,具體咋實現
回復

使用道具 舉報

23#
ID:1000797 發表于 2022-1-18 21:22 來自觸屏版 | 只看該作者
風158 發表于 2022-1-16 22:06
指定某個按鍵與哪幾個字符關聯就行。就像多功能電話鍵盤一樣。

那那這個咋做成無線發射的吶 俺不會
回復

使用道具 舉報

24#
ID:343102 發表于 2022-1-19 21:09 | 只看該作者
妹妹妹妹 發表于 2022-1-18 21:22
那那這個咋做成無線發射的吶 俺不會

這個需要一定的電路知識,可以先玩玩無線發射電路,例如無線遙控、無線話筒等。
回復

使用道具 舉報

25#
ID:1000797 發表于 2022-1-19 22:51 來自觸屏版 | 只看該作者
風158 發表于 2022-1-19 21:09
這個需要一定的電路知識,可以先玩玩無線發射電路,例如無線遙控、無線話筒等。

就是如果我現在想做一個實物,那在這個的基礎上需要什么來發射吶,固定的433Mhz或者315Mhz
回復

使用道具 舉報

26#
ID:1023972 發表于 2022-5-5 11:44 | 只看該作者
這個怎么演示啊,搞不懂
回復

使用道具 舉報

27#
ID:1023972 發表于 2022-5-12 11:38 | 只看該作者
哪位大佬可以解答一下這個程序的思想嗎,理解不了程序
回復

使用道具 舉報

28#
ID:99525 發表于 2022-5-12 12:50 | 只看該作者
有意思!這兒還有HAM!73!de BH4TXN!
回復

使用道具 舉報

29#
ID:343102 發表于 2022-5-16 12:29 | 只看該作者
w4589 發表于 2022-1-14 20:59
好吧,我只是想說還是往識別人工手法方面都研究一下,現在玩手鍵的只有業余無線電愛好者了,業余無線電只 ...

我看了一下ft8的通信原理,發現有兩個地方不如cw通信。一是不完全調幅,接收時就不能通過限幅方法抗干擾。二是功耗仍然較大,因為ft8是連續波。cw通信在抗干擾和省電方面(省電在野外很重要)是最好的。ft8號稱靈敏度高于cw,因此可以減少發射功率,其實主要是用聲卡代替人耳帶來的優勢。采用單片機接收cw同樣能大幅提高靈敏度,也可因此減少發射功率。而且單片機可以使用音頻脈沖發射,又比常規的cw通信減少一半功率消耗。由于音頻脈沖也是等幅脈沖,接收時還可以對音頻進行二次限幅,使抗干擾能力進一步增強。
只要能收到信號,脈沖信號就比連續信號抗干擾能力強。

單片機CW脈沖圖示.PNG (8.74 KB, 下載次數: 119)

單片機CW脈沖圖示.PNG
回復

使用道具 舉報

30#
ID:343102 發表于 2022-5-16 15:00 | 只看該作者
關于通信速率問題要看使用環境。單片機解碼速度很快,理論上可以縮短脈寬提高速率,可以直逼數字通信。但是cw通信的特點決定了其更強調抗干擾,能聯通。一般在極端環境下使用。在利用月亮反射通信時,每分鐘只能發送10-15個字符。ft8通信為了提高靈敏度,發送速率也不高。
至于采用跳頻抗干擾,其實屬于發射技術。單片機cw信號同樣可以采用跳頻發射,而且由于單片機cw信號采用的是單一音頻,接收時更容易選擇、辨識,抗干擾能力更強。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表