项目简介
本项目是一个使用PIC16F18446微控制器的直通音频演示项目。利用该微控制器的12位带计算功能的ADC(ADCC)模块读取MIC Click Board™的音频信号,经过处理后通过CCP1模块将其作为PWM音频输出。
项目的主要特性和功能
- 音频读取:借助ADCC模块读取MIC Click Board™的音频信号。
- 音频输出:将处理后的音频信号以PWM信号形式通过CCP1模块输出。
- 信号处理:去除音频信号中的直流偏移,对信号进行缩放,并限制信号幅度范围。
安装使用步骤
硬件准备
准备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】