找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9607|回复: 17
收起左侧

单片机驱动无线麦克风芯片KT0626M及KT0616M程序与PCB资料

  [复制链接]
ID:742494 发表于 2020-5-2 11:23 | 显示全部楼层 |阅读模式
无线麦克风芯片KT0626M及KT0616M的规格书、原理图、参考PCB、参考代码,需要的可以下载。
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
51hei.png

数据手册与技术资料:
51hei.png 51hei.png

单片机源程序如下:
  1. //*********************************************************************
  2. //  File Name: main.c
  3. //  Function:  KT Wireless Mic Receiver Products Demoboard
  4. //*********************************************************************
  5. //        Revision History
  6. //  Version        Date                Description
  7. //  V1.0        2012-08-28        Initial draft
  8. //        V1.1        2012-12-17        SQUEAL is added.
  9. //        V1.2        2012-12-18        Simplify main.
  10. //        V1.3        2013-03-29        修正了开关机死机和关机反复上电的BUG。
  11. //        V1.4        2013-04-24        将A、B两路的频率范围区分开。
  12. //                                                将前面板中间的按键作为导频检测的开关。
  13. //-----------------------------------------------------------------------------
  14. // Includes
  15. //-----------------------------------------------------------------------------
  16. #include <intrins.h>
  17. #include <stdio.h>
  18. #include <KT_WirelessMicRxdrv.h>
  19. #include <interface.h>

  20. //------------------------------------------------------------------------------------
  21. // Global VARIABLES
  22. //------------------------------------------------------------------------------------
  23. extern uchar bChannel;
  24. extern uchar xdata K4;

  25. extern uchar        CURRENT_VOL[CHANNEL_NUMBER];
  26. extern uchar        Flag_PILOT[CHANNEL_NUMBER];
  27. extern uchar        Flag_PKGSYNC[CHANNEL_NUMBER];
  28. extern uchar        Flag_AUTOMUTE[CHANNEL_NUMBER];
  29. extern uchar        Flag_BURSTDATA[CHANNEL_NUMBER];
  30. extern uchar        Flag_SQUEAL[CHANNEL_NUMBER];

  31. #if (CHANNEL_NUMBER ==2)
  32. long xdata Memery_Frequency[CHANNEL_NUMBER] = {662000,662000};
  33. long xdata Load_Frequency[CHANNEL_NUMBER] = {662000,662000};
  34. #else
  35. long xdata Memery_Frequency[CHANNEL_NUMBER] = 662000;
  36. long xdata Load_Frequency[CHANNEL_NUMBER] =0;
  37. #endif

  38. uchar Key_UP_flag=0;
  39. uchar Key_DOWN_flag=0;
  40. //------------------------------------------------------------------------------------
  41. // Function PROTOTYPES
  42. //------------------------------------------------------------------------------------
  43. void SYSCLK_Init (void);
  44. void PORT_Init (void);

  45. void KT_MicRX_Init (void);                                                                        // KT_MicRX初始化
  46. void KT_MicRX_Next_Fre (void);                                                                // KT_MicRX加100KHz
  47. void KT_MicRX_Previous_Fre (void);                                                        // KT_MicRX减100KHz
  48. //void KT_MicRX_Mute (void);                                                                        // KT_MicRX静音
  49. void KT_MicRX_PowerDown_Detecter (void);
  50. void KT_MicRX_Batter_Detecter (void);
  51. uchar Vol_Display(void);
  52. uchar RSSI_Display(void);
  53. void LCD_Refresh (void);
  54. void DEMO_Init (void);
  55. void Save_Freq (void);
  56. void Load_Freq (void);

  57. void KT_MicRX_Automute_Pilot(void);

  58. //------------------------------------------------------------------------------------
  59. //函 数 名:main
  60. //功能描述:主程序
  61. //函数说明:
  62. //调用函数:SYSCLK_Init(); PORT_Init(); DEMO_Init(); LCD_Refresh();
  63. //                        KT_MicRX_PowerDown_Detecter(); Key_Scan();
  64. //                        KT_MicRX_Next_Fre(); KT_MicRX_Previous_Fre();
  65. //全局变量:bChannel; Key_UP_flag; Key_DOWN_flag;
  66. //输    入:
  67. //返    回:无
  68. //设 计 者:KANG Hekai                                时间:2012-08-01
  69. //修 改 者:KANG Hekai                                时间:2013-03-29
  70. //版    本:V1.0
  71. //                        V1.1        2012-12-17        SQUEAL is added.
  72. //                        V1.2        2012-12-18        Simplify main.
  73. //                        V1.3        2013-03-29        增加LDO_CTRL = 1解决关机后反复上电和死机问题;
  74. //                        V1.4        2013-04-24        将前面板中间的按键作为导频检测的开关;
  75. //------------------------------------------------------------------------------------
  76. void main (void)
  77. {
  78.         uchar ckey=0;
  79.        
  80.         PCA0MD &= ~0x40;                                                               // WDTE = 0 (clear watchdog timer enable)
  81.         SYSCLK_Init ();                                                                // Initialize system clock to 24.5MHz
  82.         PORT_Init ();                                                                  // Initialize crossbar and GPIO
  83.         DEMO_Init();
  84. //        LDO_CTRL = 1;                                                                                          //正常工作后使LDO_CTRL状态正确

  85.         while (1)
  86.         {
  87.                 LCD_Refresh();
  88.                 KT_MicRX_PowerDown_Detecter();

  89.                 ckey = Key_Scan();
  90.                 switch(ckey)
  91.                 {
  92.                         case 1        :        LCD_LED_A = 0;        bChannel = CH_A;        KT_MicRX_Next_Fre();                break;
  93.                         case 2        :        LCD_LED_A = 0;        bChannel = CH_A;        KT_MicRX_Previous_Fre();        break;
  94.                         case 3        :        LCD_LED_A = 0;        bChannel = CH_A;        KT_MicRX_Automute_Pilot();        break;
  95. //                        case 3        :        LCD_LED_A = 0;        bChannel = CH_A;        KT_MicRX_Mute();                        break;
  96.                         case 4        :        LCD_LED_B = 0;        bChannel = CH_B;        KT_MicRX_Next_Fre();                break;
  97.                         case 5        :        LCD_LED_B = 0;        bChannel = CH_B;        KT_MicRX_Previous_Fre();        break;
  98.                         case 6        :        LCD_LED_B = 0;        bChannel = CH_B;        KT_MicRX_Automute_Pilot();        break;
  99. //                        case 6        :        LCD_LED_B = 0;        bChannel = CH_B;        KT_MicRX_Mute();                        break;
  100.                         default        :        Key_UP_flag=0;        Key_DOWN_flag=0;                        break;
  101.                 }
  102.         }
  103. }

  104. //------------------------------------------------------------------------------------
  105. //函 数 名:SYSCLK_Init
  106. //功能描述:MCU时钟初始化
  107. //函数说明:
  108. // This routine initializes the system clock to use the internal 24.5MHz / 8
  109. // oscillator as its clock source.  Also enables missing clock detector reset.
  110. //调用函数:无
  111. //全局变量:无
  112. //输    入:
  113. //返    回:无
  114. //设 计 者:KANG Hekai                                时间:2012-08-01
  115. //修 改 者:KANG Hekai                                时间:2013-03-29
  116. //版    本:V1.0
  117. //                        V1.3----打开电池电压检测复位功能   
  118. //------------------------------------------------------------------------------------
  119. void SYSCLK_Init (void)
  120. {
  121.         OSCICN |= 0x03;   //0xc3                                                                // configure internal oscillator for 24.5MHz

  122.         VDM0CN = 0x80;                                                                                // enable VDD monitor
  123.         Delay_ms(1);
  124.         RSTSRC = 0x02;                                                                                // enable VDD monitor as a reset source
  125. }

  126. //------------------------------------------------------------------------------------
  127. //函 数 名:PORT_Init
  128. //功能描述:MCU端口初始化
  129. //函数说明:Configure the Crossbar and GPIO ports.
  130. //调用函数:使用弱上拉
  131. //全局变量:无
  132. //输    入:
  133. //返    回:无
  134. //设 计 者:KANG Hekai                                时间:2012-08-01
  135. //修 改 者:                                                时间:
  136. //版    本:V1.0
  137. //------------------------------------------------------------------------------------
  138. void PORT_Init (void)
  139. {
  140.         XBR0    = 0x00;                                                                                        // Disable all
  141.         XBR1    = 0x40;                                                                                        // Enable crossbar and Disable weak pull-ups
  142.         P0MDOUT        = 0x08;                                                                                        //
  143. //        P0MDIN        |= 0xF7;                                                                                //
  144. //        P0                |= 0xF7;                                                                                //

  145.         P1MDOUT        = 0xF1;       
  146. //        P1MDIN        |= 0x0E;                                                                                //
  147. //        P1                |= 0x0E;                                                                                //

  148.         P2MDOUT        = 0x8F;       
  149. //        P2MDIN        |= 0x70;                                                                                //
  150. //        P2                |= 0x70;                                                                                //

  151.         P3MDOUT        = 0x18;
  152. //        P3MDIN        |= 0x04;                                                                                //
  153. //        P3                |= 0x04;                                                                                //
  154. }

  155. //------------------------------------------------------------------------------------
  156. //函 数 名:KT_MicRX_Init
  157. //功能描述:芯片初始化
  158. //函数说明:
  159. //调用函数:Load_Freq(); KT_WirelessMicRx_PreInit(); KT_WirelessMicRx_Init();
  160. //                        KT_WirelessMicRx_Tune(); Display_Frequency_and_RFPower();
  161. //全局变量:Memery_Frequency[]; Load_Frequency[];bChannel;
  162. //输    入:
  163. //返    回:无
  164. //设 计 者:KANG Hekai                                时间:2012-08-01
  165. //修 改 者:                                                时间:
  166. //版    本:V1.0
  167. //------------------------------------------------------------------------------------
  168. void KT_MicRX_Init(void)
  169. {
  170.         Load_Freq();
  171.         while(!KT_WirelessMicRx_PreInit());
  172.         while(!KT_WirelessMicRx_Init());
  173.         Memery_Frequency[bChannel] = Load_Frequency[bChannel];
  174.         KT_WirelessMicRx_Tune(Memery_Frequency[bChannel]);
  175.         Display_Frequency_and_RFPower(Memery_Frequency[bChannel]);
  176. }

  177. //------------------------------------------------------------------------------------
  178. //函 数 名:KT_MicRX_Next_Fre
  179. //功能描述:频率加BAND_STEP,长按加4倍的BAND_STEP,超长按加40倍的BAND_STEP
  180. //函数说明:
  181. //调用函数:KT_WirelessMicRx_Tune(); Display_Frequency_and_RFPower(); WriteFix_1621();
  182. //                        RF_Power(); Audio_Lever(); Delay_ms();
  183. //全局变量:Memery_Frequency[i]; Key_UP_flag; Key_DOWN_flag;
  184. //输    入:
  185. //返    回:无
  186. //设 计 者:KANG Hekai                                时间:2012-08-01
  187. //修 改 者:KANG Hekai                                时间:2013-04-24
  188. //版    本:V1.0
  189. //                        V1.4        2013-04-24        将A、B两路的频率范围区分开
  190. //------------------------------------------------------------------------------------
  191. void KT_MicRX_Next_Fre (void)                                                                        // 加250KHz
  192. {
  193.         Key_DOWN_flag = 0;
  194.         if(bChannel == CH_A)
  195.                 Mute_A = 1;
  196.         else
  197.                 Mute_B = 1;
  198.         Delay_ms(50);
  199.         if(Key_UP_flag < 20)
  200.         {
  201.                 if(Key_DOWN_flag < 10)
  202.                         Memery_Frequency[bChannel] = Memery_Frequency[bChannel] + BAND_STEP;
  203.                 else
  204.                         Memery_Frequency[bChannel] = Memery_Frequency[bChannel] + BAND_STEP*4;

  205.                 Key_UP_flag = Key_UP_flag + 1;
  206.         }
  207.         else
  208.         {
  209.                 Memery_Frequency[bChannel] = Memery_Frequency[bChannel] + BAND_STEP*20;
  210.                 Key_UP_flag = 20;
  211.         }
  212.         if(bChannel == CH_A)
  213.         {
  214.                 if( (Memery_Frequency[bChannel] > BAND_TOP_CHA) || (Memery_Frequency[bChannel] < BAND_BOTTOM_CHA) )
  215.                         Memery_Frequency[bChannel] = BAND_BOTTOM_CHA;
  216.         }
  217.         else
  218.         {
  219.                 if( (Memery_Frequency[bChannel] > BAND_TOP_CHB) || (Memery_Frequency[bChannel] < BAND_BOTTOM_CHB) )
  220.                         Memery_Frequency[bChannel] = BAND_BOTTOM_CHB;
  221.         }
  222.         KT_WirelessMicRx_Tune(Memery_Frequency[bChannel]);
  223. //        if(bChannel == CH_A)
  224. //                Mute_A = 0;
  225. //        else
  226. //                Mute_B = 0;
  227.         WriteFix_1621(LCD_BATZ);
  228.         WriteFix_1621(LCD_PILOT_DIS);
  229.         RF_Power(0);
  230.         Audio_Lever(0);                               
  231.         Display_Frequency_and_RFPower(Memery_Frequency[bChannel]);         
  232. }

  233. //------------------------------------------------------------------------------------
  234. //函 数 名:KT_MicRX_Previous_Fre
  235. //功能描述:频率减BAND_STEP,长按减4倍的BAND_STEP,超长按减20倍的BAND_STEP
  236. //函数说明:
  237. //调用函数:KT_WirelessMicRx_Tune(); Display_Frequency_and_RFPower(); WriteFix_1621();
  238. //                        RF_Power(); Audio_Lever(); Delay_ms();
  239. //全局变量:Memery_Frequency[i]; Key_UP_flag; Key_DOWN_flag;
  240. //输    入:
  241. //返    回:无
  242. //设 计 者:KANG Hekai                                时间:2012-08-01
  243. //修 改 者:KANG Hekai                                时间:2013-04-24
  244. //版    本:V1.0
  245. //                        V1.3        2013-04-24        将A、B两路的频率范围区分开
  246. //------------------------------------------------------------------------------------
  247. void KT_MicRX_Previous_Fre (void)                                                                // 减250KHz
  248. {
  249.         Key_UP_flag = 0;
  250.         if(bChannel == CH_A)
  251.                 Mute_A = 1;
  252.         else
  253.                 Mute_B = 1;
  254.         Delay_ms(50);
  255.         if(Key_DOWN_flag < 20)
  256.         {
  257.                 if(Key_DOWN_flag < 10)
  258.                         Memery_Frequency[bChannel] = Memery_Frequency[bChannel] - BAND_STEP;
  259.                 else
  260.                         Memery_Frequency[bChannel] = Memery_Frequency[bChannel] - BAND_STEP*4;

  261.                 Key_DOWN_flag = Key_DOWN_flag + 1;
  262.         }
  263.         else
  264.         {
  265.                 Memery_Frequency[bChannel] = Memery_Frequency[bChannel] - BAND_STEP*20;
  266.                 Key_DOWN_flag = 20;
  267.         }
  268.         if(bChannel == CH_A)
  269.         {
  270.                 if( (Memery_Frequency[bChannel] > BAND_TOP_CHA) || (Memery_Frequency[bChannel] < BAND_BOTTOM_CHA) )
  271.                         Memery_Frequency[bChannel] = BAND_BOTTOM_CHA;
  272.         }
  273.         else
  274.         {
  275.                 if( (Memery_Frequency[bChannel] > BAND_TOP_CHB) || (Memery_Frequency[bChannel] < BAND_BOTTOM_CHB) )
  276.                         Memery_Frequency[bChannel] = BAND_BOTTOM_CHB;
  277.         }

  278.         KT_WirelessMicRx_Tune(Memery_Frequency[bChannel]);
  279. //        if(bChannel == CH_A)
  280. //                Mute_A = 0;
  281. //        else
  282. //                Mute_B = 0;
  283.         WriteFix_1621(LCD_BATZ);
  284.         WriteFix_1621(LCD_PILOT_DIS);
  285.         RF_Power(0);                                                         
  286.         Audio_Lever(0);
  287.         Display_Frequency_and_RFPower(Memery_Frequency[bChannel]);
  288. }

  289. //------------------------------------------------------------------------------------
  290. //函 数 名:KT_MicRX_PowerDown_Detecter
  291. //功能描述:
  292. //函数说明:
  293. //调用函数:Delay_ms(); KT_WirelessMicRx_Volume(); Save_Freq();
  294. //全局变量:bChannel; Memery_Frequency[]; Load_Frequency[];
  295. //输    入:
  296. //返    回:无
  297. //设 计 者:KANG Hekai                                时间:2012-08-20
  298. //修 改 者:                                                时间:
  299. //版    本:V1.1
  300. //------------------------------------------------------------------------------------
  301. void KT_MicRX_PowerDown_Detecter (void)
  302. {
  303.         if(VBAT_IN == 0)
  304.         {
  305.                 Delay_ms(500);
  306.                 if(VBAT_IN == 0)                                                                                                                //防止电容放电不干净反复上电
  307.                 {
  308.                                                                                                                                             
  309.                         bChannel = 0;
  310.                         KT_WirelessMicRx_Volume(0);
  311.                         bChannel = 1;
  312.                         KT_WirelessMicRx_Volume(0);
  313.                         Delay_ms(200);
  314.                         Mute_A = 1;
  315.                         Mute_B = 1;
  316.                         Delay_ms(200);

  317.                         if( (        Memery_Frequency[CH_A] != Load_Frequency[CH_A] ) || ( Memery_Frequency[CH_B] != Load_Frequency[CH_B] ) )
  318.                                 Save_Freq();
  319.                         Delay_ms(100);
  320.                         LDO_CTRL = 0;

  321.                 }
  322.         }
  323.         else
  324.         {
  325.                 Delay_ms(100);
  326.                 if(VBAT_IN == 1)                                                                                                                //防止电容放电不干净反复上电
  327.                         LDO_CTRL = 1;
  328.                 //        Mute_A = 1;
  329.                 //        Mute_B = 1;
  330.         }
  331. }

  332. //------------------------------------------------------------------------------------
  333. //函 数 名:KT_MicRX_Batter_Detecter
  334. //功能描述:电池电压监测并显示
  335. //函数说明:
  336. //调用函数:KT_Bus_Read();WriteFix_1621();
  337. //全局变量:无
  338. //输    入:
  339. //返    回:无
  340. //设 计 者:KANG Hekai                                时间:2012-08-01
  341. //修 改 者:                                                时间:
  342. //版    本:V1.0
  343. //------------------------------------------------------------------------------------
  344. void KT_MicRX_Batter_Detecter (void)
  345. {

  346.         uint xdata Batter_Voltage;

  347.         Batter_Voltage=KT_Bus_Read(0x04);

  348.         if( (Batter_Voltage <= BATTERY_MAX) && (Batter_Voltage > BATTERY_HIGHTH) )
  349.         {
  350.                 WriteFix_1621(LCD_BATH);
  351.         }
  352.         else if( (Batter_Voltage <= BATTERY_HIGHTH) && (Batter_Voltage > BATTERY_MIDDLETH) )
  353.         {
  354.                 WriteFix_1621(LCD_BATM);
  355.         }
  356.         else if( (Batter_Voltage <= BATTERY_MIDDLETH) && (Batter_Voltage > BATTERY_LOWTH) )
  357.         {
  358.                 WriteFix_1621(LCD_BATL);
  359.         }
  360.         else
  361.         {
  362.                 WriteFix_1621(LCD_BATZ);
  363.         }
  364. }

  365. //------------------------------------------------------------------------------------
  366. //函 数 名:Vol_Display
  367. //功能描述:电池电压监测并显示
  368. //函数说明:
  369. //调用函数:KT_WirelessMicRx_Automute();WriteFix_1621();Audio_Lever();KT_WirelessMicRx_GetAF();
  370. //全局变量:无
  371. //输    入:
  372. //返    回:无
  373. //设 计 者:KANG Hekai                                时间:2012-11-30
  374. //修 改 者:                                                时间:
  375. //版    本:V1.0
  376. //------------------------------------------------------------------------------------
  377. uchar Vol_Display(void)
  378. {
  379.         uchar cAF;

  380.         KT_WirelessMicRx_Automute();
  381.         if( Flag_AUTOMUTE[bChannel] == AUTOMUTE )
  382.         {
  383.                 if(bChannel == CH_A)
  384.                         Mute_A = 1;
  385.                 else
  386.                         Mute_B = 1;
  387.                 WriteFix_1621(LCD_MUTE);
  388.                 Audio_Lever(0);
  389.         }
  390.         else
  391.         {
  392.                 WriteFix_1621(LCD_UNMUTE);
  393.                 cAF=KT_WirelessMicRx_GetAF();
  394.                 if( (cAF <= 15) && (cAF >= 13) )
  395.                 {
  396.                         Audio_Lever(7);
  397.                 }
  398.                 else if( (cAF <= 12) && (cAF >= 11) )
  399.                 {
  400.                         Audio_Lever(6);
  401.                 }
  402.                 else if( cAF == 10 )
  403.                 {
  404.                         Audio_Lever(5);
  405.                 }
  406.                 else if( cAF == 9 )
  407.                 {
  408.                         Audio_Lever(4);
  409.                 }
  410.                 else if( (cAF <= 8) && (cAF >= 7) )
  411.                 {
  412.                         Audio_Lever(3);
  413.                 }
  414.                 else if( (cAF <= 6) && (cAF > 5) )
  415.                 {
  416.                         Audio_Lever(2);
  417.                 }
  418.                 else if( (cAF <= 4) && (cAF >2) )
  419.                 {
  420.                         Audio_Lever(1);
  421.                 }
  422.                 else
  423.                 {
  424.                         Audio_Lever(0);
  425.                 }
  426.                 if(bChannel == CH_A)
  427.                         Mute_A = 0;
  428.                 else
  429.                         Mute_B = 0;
  430.         }
  431.         return(1);
  432. }

  433. //------------------------------------------------------------------------------------
  434. //函 数 名:RSSI_Display
  435. //功能描述:信号强度显示
  436. //函数说明:
  437. //调用函数:KT_WirelessMicRx_GetRSSI();RF_Power();Display_Frequency_and_RFPower();
  438. //全局变量:无
  439. //输    入:
  440. //返    回:无
  441. //设 计 者:KANG Hekai                                时间:2012-11-30
  442. //修 改 者:                                                时间:
  443. //版    本:V1.0
  444. //------------------------------------------------------------------------------------
  445. uchar RSSI_Display(void)
  446. {
  447.         uchar cRssi;

  448.         cRssi=KT_WirelessMicRx_GetRSSI();

  449.         if( (cRssi <= 255) && (cRssi > 235) )
  450.         {
  451.                 RF_Power(7);
  452.         }
  453.         else if( (cRssi <= 235) && (cRssi > 215) )
  454.         {
  455.                 RF_Power(6);
  456.         }
  457.         else if( (cRssi <= 215) && (cRssi > 195) )
  458.         {
  459.                 RF_Power(5);
  460.         }
  461.         else if( (cRssi <= 195) && (cRssi > 175) )
  462.         {
  463.                 RF_Power(4);
  464.         }
  465.         else if( (cRssi <= 175) && (cRssi > 155) )
  466.         {
  467.                 RF_Power(3);
  468.         }
  469.         else if( (cRssi <= 155) && (cRssi > 135) )
  470.         {
  471.                 RF_Power(2);
  472.         }
  473.         else if( (cRssi <= 135) && (cRssi > 115) )
  474.         {
  475.                 RF_Power(1);
  476.         }
  477.         else
  478.         {
  479.                 RF_Power(0);
  480.         }
  481. //        Display_Frequency_and_RFPower(Memery_Frequency[bChannel]);
  482.         return(1);
  483. }
  484. //------------------------------------------------------------------------------------
  485. //函 数 名:Save_Freq
  486. //功能描述:将频率保存在MCU的FLASH里
  487. //函数说明:
  488. //调用函数:无
  489. //全局变量:Memery_Frequency[i]
  490. //输    入:
  491. //返    回:无
  492. //设 计 者:KANG Hekai                                时间:2012-08-01
  493. //修 改 者:                                                时间:
  494. //版    本:V1.0
  495. //------------------------------------------------------------------------------------
  496. void Save_Freq (void)
  497. {
  498.         uchar xdata i,j;
  499.         uchar xdata a[8];
  500.         uchar xdata * data pwrite;                                                        // 程序存储器空间的指针(FLASH),指向待写地址

  501.         for(i=0;i<2;i++)
  502.         {
  503.                 for(j=0;j<4;j++)
  504.                         a[i*4+j]= Memery_Frequency[i] >> (j*8);
  505.         }

  506. //erase
  507.         VDM0CN = 0x80;                                                                                // enable VDD monitor
  508.         RSTSRC = 0x02;                                                                                // enable VDD monitor as a reset source
  509.         pwrite = 0x3A00;
  510.         FLKEY = 0xA5;                                                                                // Key Sequence 1
  511.         FLKEY = 0xF1;                                                                                // Key Sequence 2
  512.         PSCTL |= 0x03;                                                                                // PSWE = 1; PSEE = 1
  513.         VDM0CN = 0x80;                                                                                // enable VDD monitor
  514.         RSTSRC = 0x02;                                                                                // enable VDD monitor as a reset source
  515.         *pwrite = 0;                                                                                // initiate page erase
  516.         PSCTL &= ~0x03;                                                                                // PSWE = 0; PSEE = 0
  517. //erase end

  518. //write
  519.         PSCTL |= 0x01;                                                                                // PSWE = 1
  520.         VDM0CN = 0x80;                                                                                // enable VDD monitor
  521.         RSTSRC = 0x02;                                                                                // enable VDD monitor as a reset source
  522.         pwrite = 0x3A00;

  523.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  524.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  525.         *pwrite = a[3];                                                                        // write the byte
  526.         pwrite = pwrite + 1;

  527.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  528.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  529.         *pwrite = a[2];                                                                        // write the byte
  530.         pwrite = pwrite + 1;

  531.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  532.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  533.         *pwrite = a[1];                                                                        // write the byte
  534.         pwrite = pwrite + 1;

  535.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  536.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  537.         *pwrite = a[0];                                                                        // write the byte
  538.         pwrite = pwrite + 1;

  539.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  540.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  541.         *pwrite = a[7];                                                                        // write the byte
  542.         pwrite = pwrite + 1;

  543.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  544.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  545.         *pwrite = a[6];                                                                        // write the byte
  546.         pwrite = pwrite + 1;

  547.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  548.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  549.         *pwrite = a[5];                                                                        // write the byte
  550.         pwrite = pwrite + 1;

  551.         FLKEY = 0xA5;                                                                        // Key Sequence 1
  552.         FLKEY = 0xF1;                                                                        // Key Sequence 2
  553.         *pwrite = a[4];                                                                        // write the byte
  554.         pwrite = pwrite + 1;

  555. /*
  556.         for(i=0;i<2;i++)
  557.         {
  558.                 for(j=3;j>=0;j--)
  559.                 {
  560.                         FLKEY = 0xA5;                                                                        // Key Sequence 1
  561.                         FLKEY = 0xF1;                                                                        // Key Sequence 2
  562.                         *pwrite = a[j+i*4];                                                                        // write the byte
  563.                         pwrite = pwrite + 1;
  564.                 }
  565.         }
  566. */
  567.         PSCTL &= ~0x01;                                                                                // PSWE = 0
  568. //write end

  569. }

  570. //------------------------------------------------------------------------------------
  571. //函 数 名:Load_Freq
  572. //功能描述:读取保存在MCU的FLASH里的频率值
  573. //函数说明:
  574. //调用函数:无
  575. //全局变量:Load_Frequency; bChannel;
  576. //输    入:
  577. //返    回:无
  578. //设 计 者:KANG Hekai                                时间:2012-08-01
  579. //修 改 者:                                                时间:
  580. //版    本:V1.0
  581. //------------------------------------------------------------------------------------
  582. void Load_Freq (void)
  583. {
  584.         uchar code *pread;                                                                         // 程序存储器空间的指针(FLASH),指向待写地址
  585.         uchar xdata j;

  586.         pread = 0x3A00;                                                                         // 将指针指向待擦除页
  587.         Load_Frequency[bChannel] = *(pread+bChannel*4);                                                        // MOVC指令将读对应的数据

  588.         for(j=1;j<4;j++)
  589.         {
  590.                 Load_Frequency[bChannel] = (Load_Frequency[bChannel]<<8) | *(pread+bChannel*4+j);        // MOVC指令将读对应的数据
  591.         }
  592. }
  593. //------------------------------------------------------------------------------------
  594. //函 数 名:LCD_Refresh
  595. //功能描述:刷新LCD屏幕显示
  596. //函数说明:
  597. //调用函数:KT_WirelessMicRx_SQUEAL_Inhibition;Vol_Display;RSSI_Display;
  598. //                        KT_WirelessMicRx_CheckPilot;WriteFix_1621;KT_WirelessMicRx_CheckAUXCH;
  599. //                        KT_MicRX_Batter_Detecter;Display_Frequency_and_RFPower;
  600. //全局变量:CURRENT_VOL; bChannel;
  601. //输    入:
  602. //返    回:无
  603. //设 计 者:zhoudongfeng                        时间:2012-12-18
  604. //修 改 者:                                                时间:
  605. //版    本:V1.2
  606. //------------------------------------------------------------------------------------
  607. void LCD_Refresh (void)
  608. {
  609.         uchar i;
  610. //        uint data burstdata;
  611.                        
  612.         for(i=0;i<CHANNEL_NUMBER;i++)
  613.         {  
  614.                 bChannel = i;
  615. #ifdef SQUEAL_EN
  616.                 KT_WirelessMicRx_SQUEAL_Inhibition();
  617. #endif        
  618. #ifdef AUTOMUTE_EN                               

  619.                 Vol_Display();
  620. #endif                               
  621.                 RSSI_Display();
  622.        
  623.                 KT_WirelessMicRx_CheckPilot();
  624.                 if(Flag_PILOT[bChannel] == PILOT)
  625.                 {
  626.                         WriteFix_1621(LCD_PILOT);       
  627.                 }
  628.                 else
  629.                 {
  630.                         WriteFix_1621(LCD_PILOT_DIS);       
  631.                 }
  632.                
  633. #ifdef KT0616M
  634.                 KT_WirelessMicRx_CheckAUXCH();
  635. //                if(Flag_BURSTDATA[bChannel] == 1)
  636. //                {
  637. //                        burstdata = KT_WirelessMicRx_GetBurstData();
  638. //                }
  639.                 if(Flag_PKGSYNC[bChannel] == PKGSYNC)
  640. ……………………

  641. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
51hei.png
所有资料51hei提供下载:
KT0626M及KT0616M资料.zip (3.15 MB, 下载次数: 353)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:856084 发表于 2020-12-7 17:17 | 显示全部楼层
这个资料非常不错!
回复

使用道具 举报

ID:878597 发表于 2021-1-18 15:01 | 显示全部楼层
请问丝印KT106T的IC是这个芯片么
回复

使用道具 举报

ID:390571 发表于 2021-1-31 23:11 | 显示全部楼层
感谢分享,不知道小型电池设备应用续航怎么样,学习下
回复

使用道具 举报

ID:569971 发表于 2021-11-20 18:04 | 显示全部楼层
51黑,最好的网站,没有之一!
回复

使用道具 举报

ID:137543 发表于 2021-11-27 16:04 | 显示全部楼层
非常感谢,哈哈,找了好久了
回复

使用道具 举报

ID:94371 发表于 2022-4-10 05:29 | 显示全部楼层
非常好, 找了好久, 谢谢.
回复

使用道具 举报

ID:957293 发表于 2023-1-7 16:13 | 显示全部楼层
感谢分享,不知与KT0656M区别大不大,先下来看看资料
回复

使用道具 举报

ID:401149 发表于 2023-1-16 00:05 | 显示全部楼层
这个资料非常不错!
回复

使用道具 举报

ID:611555 发表于 2023-3-14 14:12 | 显示全部楼层
话筒部分电路板上得S314是什么芯片
回复

使用道具 举报

ID:611555 发表于 2023-3-14 14:12 | 显示全部楼层
话筒部分上得S314是什么芯片
回复

使用道具 举报

ID:1068688 发表于 2023-4-10 17:16 | 显示全部楼层
这个资料非常不错
回复

使用道具 举报

ID:1099562 发表于 2023-11-13 19:29 | 显示全部楼层
goods!
回复

使用道具 举报

ID:1099562 发表于 2023-11-14 17:10 | 显示全部楼层
板子的bom表有吗,另外接收机和手麦的显示屏是什么型号的,谢谢
回复

使用道具 举报

ID:1099562 发表于 2023-11-18 16:50 | 显示全部楼层
yu272862270 发表于 2023-3-14 14:12
话筒部分电路板上得S314是什么芯片

C8051F310
回复

使用道具 举报

ID:1099562 发表于 2023-11-18 16:51 | 显示全部楼层
发射板的源代码有没有呀,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表