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

標題: 單片機+BK4802N寬頻率范圍對講機的制作 附源程序 [打印本頁]

作者: bfzy123    時間: 2021-1-3 16:30
標題: 單片機+BK4802N寬頻率范圍對講機的制作 附源程序
東戳戳西戳戳,戳出一篇利用MCU控制對講機制作的源程序,苦于無硬件連線圖無法仿制。求助大神們,可否從程序上面畫出硬件連線圖?
附上源程序,供大家琢磨。因為這個對講機工作頻率范圍很寬,好像可以工作在短波10米范圍。原數據手冊上寫有支持19~33Mhz,并附上芯片的數據手冊。
并求大神畫出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表示字表數組的位置
  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, 下載次數: 110)
BK4802_datasheet.pdf (753.36 KB, 下載次數: 114)


作者: bfzy123    時間: 2021-1-3 16:34
這個是原作者寫的論壇帖子,一并附上。求解單片機和BK4802的連線控制圖

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

418.23 KB, 下載次數: 121, 下載積分: 黑幣 -5


作者: 坤弟i    時間: 2022-11-14 12:03
這是我寫的源程序,可以在我github上搜索作者“BG7QKU”,我在上面相關研究成果(后來升級修改成為了DIY小玩意
作者: 啤酒瓶子老大    時間: 2022-11-15 11:57
快兩年遇上原作者了。緣分啊。
作者: kendu1982    時間: 2023-8-8 11:41
現在BK4802的資料都找不到了
作者: zhuls    時間: 2023-8-9 08:39
kendu1982 發表于 2023-8-8 11:41
現在BK4802的資料都找不到了

我有。好多年前收的
作者: kendu1982    時間: 2023-8-9 11:04
zhuls 發表于 2023-8-9 08:39
我有。好多年前收的

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

BK4802_datasheet.pdf

753.36 KB, 下載次數: 59, 下載積分: 黑幣 -5


作者: Kongman    時間: 2024-4-25 23:05
mark下,還有可以傳數據的型號,不過資料好像不好找
作者: 853762295    時間: 2024-4-26 14:36
好資料謝謝提供!
作者: LiHooo    時間: 2024-6-8 18:20
kendu1982 發表于 2023-8-9 11:04
謝謝!樓主的程序夠用了,PDF在這里還有

感謝!終于找到了比較全的datasheet了,我之前看半導小芯的datasheet,內容有刪減。
作者: hyzqq    時間: 2024-6-24 14:21
感謝原作者和搬運者,mark下,有空再仔細研究




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩电影免费观看中文字幕 | 成人精品一区亚洲午夜久久久 | 天天干,夜夜操 | 黄色永久免费 | 最新av片| 亚洲有码转帖 | 91av在线影院 | 中文字幕11页| 欧洲一区二区三区 | 99国产精品久久久 | 精品国产乱码久久久久久丨区2区 | 日本一区二区高清不卡 | 91精品国产自产在线老师啪 | 国产免费一级片 | 欧美日日 | 夜夜草天天草 | 午夜精品一区二区三区在线播放 | 国内成人免费视频 | 日本在线你懂的 | 成年免费大片黄在线观看一级 | 欧美视频三区 | 午夜网站视频 | 国产一区二区中文字幕 | 久久精品视频网站 | 欧美精产国品一二三区 | av先锋资源| 久久久久久一区 | 中文字幕日韩在线观看 | 久久久久久亚洲 | 国产精品污污视频 | 欧美精品成人一区二区三区四区 | 丁香六月伊人 | 亚洲国产视频一区二区 | 精品国产不卡一区二区三区 | 日本特黄a级高清免费大片 特黄色一级毛片 | 中文成人无字幕乱码精品 | 亚洲高清视频在线观看 | 在线天堂免费中文字幕视频 | 欧美成人免费在线视频 | 欧美精品一区二区三 | 日韩在线免费播放 |