littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于C语言的直通音频演示系统

项目简介

本项目是一个使用PIC16F18446微控制器的直通音频演示项目。利用该微控制器的12位带计算功能的ADC(ADCC)模块读取MIC Click Board™的音频信号,经过处理后通过CCP1模块将其作为PWM音频输出。

项目的主要特性和功能

  1. 音频读取:借助ADCC模块读取MIC Click Board™的音频信号。
  2. 音频输出:将处理后的音频信号以PWM信号形式通过CCP1模块输出。
  3. 信号处理:去除音频信号中的直流偏移,对信号进行缩放,并限制信号幅度范围。

安装使用步骤

硬件准备

准备PIC16F18446 PDIP20 Curiosity Development Board、MIC click board™、RC滤波器、PC Speaker或Headphones。

硬件连接

将MIC click board™插入Curiosity board的mikroBUS™插槽,把RC滤波器连接到RC1,再将PC Speaker或Headphones连接到RC滤波器输出。

软件准备

  • 安装MPLAB X IDE 5.30或更高版本。
  • 安装MPLAB XC8 2.10或更高版本的编译器。
  • 安装MPLAB Code Configurator (MCC) 3.95.0或更高版本用于项目配置。

项目配置

  • 利用MCC配置ADCC、TMR2和CCP1模块。
  • 将ADCC配置为Low_pass_filter_mode,并设置合适的滤波参数。
  • 把TMR2配置为CCP1的PWM源。
  • 设置PWM输出引脚为RC1。

代码修改

在main.c文件的while(1)循环中添加代码以处理ADC读取和PWM输出: c while (1) { /* read microphone: */ ADCval = ADCC_GetSingleConversion(channel_ANC2); /* Compute average in order to get DC offset out of ADCval, using Moving Average algorithm */ Mean = Average>>16; Average = Average - Mean; Average = Average + (uint16_t)ADCval; /* Remove DC offset from the audio signal */ Sample = ADCval - Mean; /* Scale down the signal, this will attenuate from 12bit to 8bit */ Sample >>= 2; /* Saturate the signal to (-128,127) range */ if ( Sample > 127 ) { Sample = 127; } else if ( Sample < -128 ) { Sample = -128; } /* Add DC offset to the output */ PWMval = 128 + Sample; /* Output to PWM: */ PWM1_LoadDutyValue(PWMval); }

编译和下载

使用MPLAB X IDE编译代码,并将其下载到PIC16F18446微控制器。

运行测试

向MIC click board™播放声音,通过PC Speaker或Headphones听取输出音频。

注意:确保所有硬件连接正确,遵循安全操作准则。在下载和运行代码前,检查微控制器的电源和连接。在实际操作中,可能需根据具体硬件和配置进行调整。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】