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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7823|回復: 10
打印 上一主題 下一主題
收起左側(cè)

單片機+BK4802N寬頻率范圍對講機的制作 附源程序

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:795562 發(fā)表于 2021-1-3 16:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
東戳戳西戳戳,戳出一篇利用MCU控制對講機制作的源程序,苦于無硬件連線圖無法仿制。求助大神們,可否從程序上面畫出硬件連線圖?
附上源程序,供大家琢磨。因為這個對講機工作頻率范圍很寬,好像可以工作在短波10米范圍。原數(shù)據(jù)手冊上寫有支持19~33Mhz,并附上芯片的數(shù)據(jù)手冊。
并求大神畫出MCU控制的硬件連接圖,和如何修改程序為工作頻率段為29.6Mhz范圍?

單片機源程序如下:
  1. #include "STC8F.h"
  2. #include "intrins.h"
  3. #include "IICANDDELAY.h"
  4. #include "codetab.h"
  5. sbit set=P3^7;//must connect not more than 8.2K resistor to GND
  6. //MCU and BK4802N share 3.3v VCC(STC8MCU must using 3.3v VCC)
  7. //BK4802N pin19-pin22 must connect to 3.3v.
  8. sbit ppt=P5^4;//ppt must be connected to BK4802N pin23.
  9. sbit test=P5^5;//test(p5.5) connect a LED to GND to indict 4802n IIC RUN.
  10. //DEFAULT FERQ:TX=RX=439.725mh.uSING "BK4802NCalc.exe to calculate.
  11. int rxfreq[]={
  12. 0x52BE,0xF850,0x0000};
  13. int txfreq[]={
  14. 0x52C5,0x925F,0x0000};
  15. char txinf[]="TX...";
  16. char rxinf[]="RX...";
  17. char blankinf[]="        ";
  18. char newtxfreq[6];
  19. char newrxfreq[6];
  20. unsigned char newtxfreqinf[6];
  21. //char newrxfreqinf[6];
  22. int rxreg[]={ //rx setting for register
  23. 0x0300,
  24. 0x8e04,
  25. 0xF140,
  26. 0xED00,
  27. 0x17E0,
  28. 0xe0e0,
  29. 0x8543,
  30. 0x0700,
  31. 0xA066,
  32. 0xFFFF,
  33. 0xFFE0,
  34. 0x07a0,
  35. 0x9E3C,
  36. 0x1F00,
  37. 0xD1D1,
  38. 0x200F,
  39. 0x01FF,
  40. 0xE000,
  41. 0x0340
  42. };
  43. int txreg[]={//tx setting for register
  44. 0x7C00,
  45. 0x0c04,
  46. 0xF140,
  47. 0xED00,
  48. 0x3fE0,
  49. 0xe0e0,
  50. 0x8543,
  51. 0x0700,
  52. 0xA066,
  53. 0xFFFF,
  54. 0xffe0,
  55. 0x061f,
  56. 0x9e3c,
  57. 0x1f00,
  58. 0xd1C1,
  59. 0x200f,
  60. 0x01FF,
  61. 0xE000,
  62. 0x0c00
  63. };

  64. void setchannel(char k)//setting new trx freq from EEPROM in MCU
  65.          {
  66.                  
  67.                  int i;
  68.                  
  69.                          for(i=0;i<6;i++)
  70.                          {
  71.                                 newrxfreq[i]=IapRead(i+6+k*32);
  72.                           newtxfreq[i]=IapRead(i+k*32);
  73.                          }
  74.          }
  75. void setchannelinf(char k)//setting new trx freq information display on OLED  from EEPROM in MCU
  76.          {
  77.                  
  78.                  int i;
  79.                  
  80.                          for(i=0;i<6;i++)
  81.                          {
  82.                                 newtxfreqinf[i]=IapRead(i+16+k*32);
  83.                          }
  84.          }
  85. void main()
  86. {
  87.         unsigned char i,f;// i do for 'for',f do for store channel No.
  88.         unsigned char k=0;//k is do for trx
  89.         //Start
  90.         test=1;
  91.   Delay50ms();
  92.         OLED_Init(); //OLED初始化
  93.                         for(i=0; i<8; i++)//通過點整顯示漢字 -- i表示字表數(shù)組的位置
  94.                 {
  95.                         OLED_P16x16Ch(i*16,0,i);//In the name of the Moon ,I will punish you.
  96.                          OLED_P16x16Ch(i*16,2,i+8);         //Moon promise power, make up!
  97.                 }
  98.                 OLED_P8x16Str(0,6,"BG7QKU");
  99.                 delay(10000);
  100.                 OLED_CLS();//清屏
  101.                 test=0;
  102.                 OLED_P8x16Str(0,0,"BG7QKU");
  103.                 for(i=0; i<8; i++)
  104.                  {
  105.                          OLED_P16x16Ch(i*16,6,i);
  106.                  }
  107.                 writing(0x90,23,0xa8,0XD0);//Init rx reg23.
  108.                 if(P11==0)//if default or not?
  109.                 {
  110.                         for(i=4;i<=22;i++)
  111.                         {
  112.                          writing(0x90,i,HIGHBYTE(rxreg[i-4]),LOWBYTE(rxreg[i-4]));//init default reg. ro rx
  113.                         }
  114.                         for(i=5;i>2;i--)
  115.                         {
  116.                                 writing(0x90,i-3,HIGHBYTE(rxfreq[i-3]),LOWBYTE(rxfreq[i-3]));//init default reg. to rx freq
  117.                         }
  118.                         OLED_P8x16Str(0,4,"439.725");
  119.                         OLED_P8x16Str(0,2,rxinf);
  120.                 }
  121.                
  122.                 else
  123.                 {
  124.                         f=IapRead(0x0200);//read store channel No.
  125.                         if (f>3)
  126.                                 f=0;
  127.                         setchannel(f);
  128.                         setchannelinf(f);      
  129.                         OLED_P8x16Str(0,4,newtxfreqinf);
  130.                         k=1;
  131.                 }
  132.                        
  133.                 test=1;       
  134.                 while(1)
  135.                 {
  136.                         if(set==1)//teat channel change key
  137.                         {
  138.                                 Delay30ms();//kill swim
  139.                                 if(set==1)
  140.                                 {
  141.                                  Delay30ms();//down to LOW to set channel
  142.                                 if(set==0)
  143.                                 {
  144.                                         f++;
  145.                                         if(f>3)
  146.                                                 f=0;
  147.                                         IapErase(0x0200);//erase EEPROM before write
  148.                                         IapProgram(0x0200,f);//write EEPORM
  149.                                         setchannel(f);
  150.                                   setchannelinf(f);
  151.                                   OLED_P8x16Str(0,4,newtxfreqinf);
  152.                                        
  153.                             k=1;
  154.                                 }
  155.                          }
  156.                         }
  157.                         //Only using default freq
  158.                         if(ppt==1&&k==0&&P11==0)//Set to TX if PTT =HIGH.
  159.                         {
  160.                           test=0;
  161.                                 Delay30ms();
  162.                                 if(ppt==1)
  163.                                 {
  164.                                         Delay30ms();
  165.                                           for(i=4;i<=22;i++)
  166.                 {
  167.                                    writing(0x90,i,HIGHBYTE(txreg[i-4]),LOWBYTE(txreg[i-4]));
  168.                             }
  169.                        
  170.                       for(i=5;i>2;i--)
  171.                       {
  172.                              writing(0x90,i-3,HIGHBYTE(txfreq[i-3]),LOWBYTE(txfreq[i-3]));
  173.                       }
  174.                                         Delay30ms();
  175.                                         OLED_P8x16Str(0,2,blankinf);
  176.                                         OLED_P8x16Str(0,2,"439.725");
  177.                                         test=1;
  178.                                         k=1;
  179.                                 }
  180.                         }
  181.                                 if(ppt==0&&k==1&&P11==0)//Set to RX.
  182.                                 {
  183.                                         test=0;
  184.                                         Delay30ms();
  185.                                 if(ppt==0)
  186.                                 {
  187.                                         Delay30ms();
  188.                                         writing(0x90,23,0xa8,0XD0);
  189.                                           for(i=4;i<=22;i++)
  190.                {
  191.                                    writing(0x90,i,HIGHBYTE(rxreg[i-4]),LOWBYTE(rxreg[i-4]));
  192.                             }
  193.                        
  194.                       for(i=5;i>2;i--)
  195.                       {
  196.                              writing(0x90,i-3,HIGHBYTE(rxfreq[i-3]),LOWBYTE(rxfreq[i-3]));
  197.                       }
  198.                                         Delay30ms();
  199.                                         OLED_P8x16Str(0,2,blankinf);
  200.                                         OLED_P8x16Str(0,2,"439.725");
  201.                       test=1;
  202.                                         k=0;
  203.                           }
  204.                    }
  205.                         //Using pre-set freq
  206.                         if(ppt==1&&k==0&&P11==1)//Set to TX if PTT =HIGH.
  207.                         {
  208.         test=0;
  209.                                 Delay30ms();
  210.                                 if(ppt==1)
  211.                                 {
  212.                                         setchannel(f);
  213.                                   setchannelinf(f);
  214.                                         test=0;
  215.                                         OLED_P8x16Str(0,4,newtxfreqinf);
  216.                                         Delay30ms();
  217.                                           for(i=4;i<=22;i++)
  218.                {
  219.                                    writing(0x90,i,HIGHBYTE(txreg[i-4]),LOWBYTE(txreg[i-4]));
  220.                             }
  221.                        
  222.                       for(i=5;i>2;i--)
  223.                       {
  224.                              writing(0x90,i-3,newtxfreq[2*(i-3)],newtxfreq[2*(i-3)+1]);
  225.                       }
  226.                                         Delay30ms();
  227.                                         OLED_P8x16Str(0,2,blankinf);
  228.                                         OLED_P8x16Str(0,2,txinf);
  229.                                         test=1;
  230.                                         k=1;
  231.                                 }
  232.                         }
  233.                                 if(ppt==0&&k==1&&P11==1)//Set to RX.
  234.                                 {

  235.                                         Delay30ms();
  236.                                 if(ppt==0)
  237.                                 {

  238.                                         test=0;

  239.                                         Delay30ms();
  240.                                         writing(0x90,23,0xa8,0XD0);
  241.                                           for(i=4;i<=22;i++)
  242.                {
  243.                                    writing(0x90,i,HIGHBYTE(rxreg[i-4]),LOWBYTE(rxreg[i-4]));
  244.                             }
  245.                        
  246.                       for(i=5;i>2;i--)
  247.                       {
  248.                              writing(0x90,i-3,newrxfreq[2*(i-3)],newrxfreq[2*(i-3)+1]);
  249.                       }
  250.                                         Delay30ms();
  251.                                         OLED_P8x16Str(0,2,blankinf);
  252.                                         OLED_P8x16Str(0,2,rxinf);
  253.                                         test=1;
  254.                                         k=0;
  255.                           }
  256.                    }
  257.                 }
  258. }
復制代碼

所有資料51hei提供下載:
第三個程序,增加到16個信道,以及顯示月野兔開機圖片.zip (4.13 MB, 下載次數(shù): 110)
BK4802_datasheet.pdf (753.36 KB, 下載次數(shù): 114)

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

使用道具 舉報

沙發(fā)
ID:795562 發(fā)表于 2021-1-3 16:34 | 只看該作者
這個是原作者寫的論壇帖子,一并附上。求解單片機和BK4802的連線控制圖

自己研究的STC單片機控制對講芯片程序 摘錄.docx

418.23 KB, 下載次數(shù): 121, 下載積分: 黑幣 -5

回復

使用道具 舉報

板凳
ID:390569 發(fā)表于 2022-11-14 12:03 來自手機 | 只看該作者
這是我寫的源程序,可以在我github上搜索作者“BG7QKU”,我在上面相關(guān)研究成果(后來升級修改成為了DIY小玩意
回復

使用道具 舉報

地板
ID:230742 發(fā)表于 2022-11-15 11:57 | 只看該作者
快兩年遇上原作者了。緣分啊。
回復

使用道具 舉報

5#
ID:1041279 發(fā)表于 2023-8-8 11:41 | 只看該作者
現(xiàn)在BK4802的資料都找不到了
回復

使用道具 舉報

6#
ID:69038 發(fā)表于 2023-8-9 08:39 | 只看該作者
kendu1982 發(fā)表于 2023-8-8 11:41
現(xiàn)在BK4802的資料都找不到了

我有。好多年前收的
回復

使用道具 舉報

7#
ID:1041279 發(fā)表于 2023-8-9 11:04 | 只看該作者
zhuls 發(fā)表于 2023-8-9 08:39
我有。好多年前收的

謝謝!樓主的程序夠用了,PDF在這里還有

BK4802_datasheet.pdf

753.36 KB, 下載次數(shù): 59, 下載積分: 黑幣 -5

回復

使用道具 舉報

8#
ID:1010505 發(fā)表于 2024-4-25 23:05 | 只看該作者
mark下,還有可以傳數(shù)據(jù)的型號,不過資料好像不好找
回復

使用道具 舉報

9#
ID:122152 發(fā)表于 2024-4-26 14:36 | 只看該作者
好資料謝謝提供!
回復

使用道具 舉報

10#
ID:369845 發(fā)表于 2024-6-8 18:20 | 只看該作者
kendu1982 發(fā)表于 2023-8-9 11:04
謝謝!樓主的程序夠用了,PDF在這里還有

感謝!終于找到了比較全的datasheet了,我之前看半導小芯的datasheet,內(nèi)容有刪減。
回復

使用道具 舉報

11#
ID:283207 發(fā)表于 2024-6-24 14:21 | 只看該作者
感謝原作者和搬運者,mark下,有空再仔細研究
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久91 | 狠狠狠色丁香婷婷综合久久五月 | 黄色欧美大片 | 亚洲国产精品福利 | 99小视频| 色综合视频 | 久久中文字幕一区 | 久久久久综合 | 给我免费的视频在线观看 | 欧美国产精品一区二区三区 | 久久精品青青大伊人av | 亚洲一区二区三区视频 | 久久91av| 91国产视频在线观看 | 欧美国产日韩在线观看 | 中文字幕在线第二页 | 亚洲精品久久久久久久不卡四虎 | 视频一区二区三区在线观看 | 91pron在线| 免费一级片| 人人操日日干 | 免费在线日韩 | 欧美一区2区三区4区公司二百 | 99久9 | 99久久精品免费视频 | 一区二区三区高清 | 久久中文字幕av | 久久999| 日韩三级电影一区二区 | 最近日韩中文字幕 | 国产成人精品福利 | 国产999精品久久久久久 | 久久久影院 | 久久精品亚洲欧美日韩精品中文字幕 | 99精品亚洲国产精品久久不卡 | 国产精品免费av | 欧洲亚洲一区二区三区 | 婷婷在线视频 | 一区二区三区免费网站 | 久久精品国产免费高清 | 欧美三区视频 |