芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

STC32G12K128单片机数字音频滤波器芯片解密

芯片解密单片机源程序如下:

  1. /**
  2. * 单片机数字音频带通滤波器
  3. * ADC: 12位
  4. * 采样率: 8KHz
  5. * 输出: PWM
  6. * 功能: 带宽、中心频率可调
  7. */
  8. #include <STC32G.h>
  9. #include <intrins.h>
  10. //#include <stdint.h>
  11. #define uint8_t unsigned char
  12. #define uint16_t unsigned int
  13. #define uint32_t unsigned long
  14.         
  15. unsigned char Table[]="0123456789";
  16. unsigned char freq_num[4];// 频率  
  17. unsigned char  bw_num[4];//带宽

  18. uint16_t center_bm=100;//默认带宽100hz
  19. uint16_t center_freq=1000;//默认频率1000HZ
  20. bit flag=1;

  21. //-------定义PWM输出引脚------------
  22. #define PWM1_0 0X00  //P:P1.0,N:P1.1
  23. #define PWM1_1 0X01  //P:P2.0,N:P2.1
  24. #define PWM1_2 0X02  //P:P6.0,N:P6.1

  25. #define PWM2_0 0X00  //P:P1.2/P5.4,N:P1.3
  26. #define PWM2_1 0X04  //P:P2.2,N:P2.3
  27. #define PWM2_2 0X08  //P:P6.2,N:P6.3

  28. #define PWM3_0 0X00  //P:P1.4,N:P1.5
  29. #define PWM3_1 0X10  //P:P2.4,N:P2.5
  30. #define PWM3_2 0X20  //P:P6.4,N:P6.5

  31. #define PWM4_0 0X00  //P:P1.6,N:P1.7
  32. #define PWM4_1 0X40  //P:P2.6,N:P2.7
  33. #define PWM4_2 0X80  //P:P6.6,N:P6.7
  34. #define PWM4_3 0XC0  //P:P3.4,N:P3.3

  35. #define ENO1P 0X01
  36. #define ENO1N 0X02
  37. #define ENO2P 0X04
  38. #define ENO2N 0X08
  39. #define ENO3P 0X10
  40. #define ENO3N 0X20
  41. #define ENO4P 0X40
  42. #define ENO4N 0X80

  43. // 按键定义
  44. sbit KEY_FREQ_UP = P3^0;   // 频率增加
  45. sbit KEY_FREQ_DOWN = P3^1; // 频率减少
  46. sbit KEY_Q_UP = P3^2;      // Q值增加
  47. sbit KEY_Q_DOWN = P3^3;    // Q值减少

  48. sbit RS=P2^5; //定义rs端口
  49.               // RW 接地
  50. sbit EN=P2^3; //定义en端口
  51. sbit LCD_D4=P4^2;
  52. sbit LCD_D5=P4^1;
  53. sbit LCD_D6=P3^7;
  54. sbit LCD_D7=P3^6;
  55. /* ==================== 配置参数 ==================== */
  56. #define SAMPLE_RATE     8000UL   // 采样率 8KHz
  57. #define ADC_MAX         4095     // 12位ADC最大值
  58. #define PWM_MAX         255      // 8位PWM最大值

  59. /* ==================== 滤波器结构体 ==================== */
  60. typedef struct {
  61.     // 滤波器系数
  62.     float b0, b1, b2;    // 分子系数
  63.     float a1, a2;        // 分母系数 (a0 = 1)

  64.     // 延迟单元
  65.     float x1, x2;        // 输入延迟
  66.     float y1, y2;        // 输出延迟

  67.     // 滤波器参数
  68.     float center_freq;   // 中心频率 (Hz)
  69.     float bandwidth;     // 带宽 (Hz)

  70. } BandpassFilter;

  71. /* 全局滤波器实例 */
  72. BandpassFilter g_filter;

  73. /* ==================== 数学工具函数 ==================== */

  74. /**
  75. * 简化的正弦近似 (适用于资源受限的单片机)
  76. * 使用泰勒级数展开
  77. */
  78. float sin_approx(float x) {
  79.         
  80.           float x2;
  81.     // 将x归一化到 [-π, π]
  82.     while (x > 3.14159265f) x -= 6.2831853f;
  83.     while (x < -3.14159265f) x += 6.2831853f;

  84.     // 泰勒级数: sin(x) ≈ x - x3/6 + x?/120
  85.     x2 = x * x;
  86.     return x * (1.0f - x2 / 6.0f * (1.0f - x2 / 20.0f));
  87. }

  88. /**
  89. * 余弦近似
  90. */
  91. float cos_approx(float x) {
  92.     return sin_approx(x + 1.5707963f);
  93. }

  94. /**
  95. * 平方根近似 (牛顿迭代法)
  96. */
  97. float sqrt_approx(float x) {
  98.         
  99.           float guess;
  100.           uint8_t i;
  101.     if (x <= 0.0f) return 0.0f;

  102.     guess = x * 0.5f;
  103.     for (i = 0; i < 5; i++) {
  104.         guess = (guess + x / guess) * 0.5f;
  105.     }
  106.     return guess;
  107. }

  108. /* ==================== 滤波器核心函数 ==================== */

  109. /**
  110. * 计算带通滤波器系数
  111. * 使用双二阶IIR滤波器 (Biquad)
  112. * @param filter: 滤波器实例指针
  113. * @param center_freq: 中心频率 (Hz)
  114. * @param bandwidth: 带宽 (Hz)



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信