ADC是Analog-to-DigitalConverter的缩写,指模/数转换器或者模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。模/数转换器可以实现这个功能,在各种不同的产品中都可以找到它的身影。
/*********************************************************************************************************
** 函数名: ADC_Init (void)
** 函数功能: ADC初始化
** 输入参数: 无
** 输出参数: 无
** 返回值: 无
*********************************************************************************************************/
void ADC_Init (void) {
static ADC_CLOCK_SETUP_T ADCSetup;
ADCSetup.adcRate=4;//ADC时钟分配系数5 4+1
ADCSetup.burstMode=0;
Chip_ADC_Init(LPC_ADC,&ADCSetup);//使能ADC时钟
Chip_IOCON_PinMux(LPC_IOCON, 1, 31, IOCON_MODE_INACT, IOCON_FUNC3);//设置P1.31 为ADC的5通道
Chip_ADC_EnableChannel(LPC_ADC,ADC_CH5,ENABLE);//使能通道5
Chip_ADC_SetStartMode(LPC_ADC,ADC_START_NOW,ADC_TRIGGERMODE_RISING);//ADC正常工作模式
}
/*********************************************************************************************************
** 函数名: void ADC_StartCnv (void)
** 函数功能: 启动转换
** 输入参数: 无
** 输出参数: 无
** 返回值: 无
*********************************************************************************************************/
void ADC_StartCnv (void) {
Chip_ADC_SetStartMode(LPC_ADC,ADC_START_NOW,ADC_TRIGGERMODE_RISING);//启动转换
}
/*********************************************************************************************************
** 函数名: void ADC_StopCnv (void)
** 函数功能: 停止转换
** 输入参数: 无
** 输出参数: 无
** 返回值: 无
*********************************************************************************************************/
void ADC_StopCnv (void) {
Chip_ADC_SetStartMode(LPC_ADC,ADC_NO_START,ADC_TRIGGERMODE_RISING);// 停止转换
}
/*********************************************************************************************************
** 函数名: uint16_t ADC_Get (void)
** 函数功能: 获取转换值
** 输入参数: 无
** 输出参数: 无
** 返回值: ADC值
*********************************************************************************************************/
uint16_t ADC_Get (void) {
uint16_t val;
ADC_StartCnv(); //启动转换
ADC_GetCnv(&val); //获取AD值
ADC_StopCnv(); // 停止转换
return (val);
}