基本信息
文件名称:Microchip 系列:PIC18 系列_(9).PIC18系列ADC与DAC.docx
文件大小:23.63 KB
总页数:23 页
更新时间:2025-06-13
总字数:约1.08万字
文档摘要

PAGE1

PAGE1

PIC18系列ADC与DAC

模拟到数字转换器(ADC)

ADC概述

模拟到数字转换器(ADC)是PIC18系列单片机中的一个重要模块,用于将模拟信号转换为数字信号。这在许多应用中非常有用,例如传感器数据采集、音频处理和温度检测等。PIC18系列的ADC模块通常具有多个通道,可以配置为单端或差分输入模式,并且支持多种分辨率。

ADC配置

配置ADC模块需要设置几个关键寄存器。这些寄存器包括:

ADCON0:控制ADC模块的启动和结果存储。

ADCON1:选择ADC输入通道和配置转换模式。

ADCON2:设置ADC的采样时间和结果格式。

ADRES:存储ADC转换结果。

ADCON0寄存器

ADCON0寄存器控制ADC的启动、选择ADC模块的工作模式以及结果寄存器的状态。其主要位包括:

ADON:ADC模块使能位。

GO/DONE:启动转换/转换完成位。

CHS:选择ADC输入通道。

ADFS:结果存储格式(左对齐或右对齐)。

ADCS:选择ADC时钟源和采样时间。

ADCON1寄存器

ADCON1寄存器用于选择ADC的输入通道和配置转换模式。其主要位包括:

PCFG3:0:配置模拟输入通道和数字I/O。

CHS4:0:选择ADC输入通道。

ADFM:结果存储格式(左对齐或右对齐)。

ADCON2寄存器

ADCON2寄存器设置ADC的采样时间和结果格式。其主要位包括:

ADCS2:0:选择ADC时钟源和采样时间。

ACQT2:0:设置采样保持时间。

ADRES:存储ADC转换结果。

ADC示例代码

以下是一个简单的示例代码,演示如何在PIC18F4550上配置和使用ADC模块。

#includexc.h

#includestdio.h

#includestdlib.h

//配置时钟

#pragmaconfigFOSC=HS//高速晶振

#pragmaconfigWDTE=OFF//看门狗定时器关闭

#pragmaconfigPWRTE=OFF//电源上电复位定时器关闭

#pragmaconfigMCLRE=ON//复位引脚启用

#pragmaconfigCP=OFF//代码保护关闭

#pragmaconfigCPD=OFF//数据代码保护关闭

#pragmaconfigBOREN=ON//欠压复位使能

#pragmaconfigIESO=ON//内外切换使能

#pragmaconfigFCMEN=ON//故障检测使能

#pragmaconfigLVP=OFF//低电压编程关闭

#define_XTAL_FREQ//设置晶振频率为20MHz

voidADC_Init(){

//配置ADCON0

ADCON0=0//使能ADC,选择通道0,右对齐

ADCON1=0//配置为所有通道为模拟输入,结果为10位

ADCON2=0//选择Fosc/32作为采样时间,采样保持时间为20Tad

//配置TRIS寄存器

TRISA=0//将RA0配置为输入

TRISB=0x00;//将PORTB配置为输出

}

unsignedintADC_Read(unsignedcharchannel){

//选择ADC通道

ADCON0bits.CHS=channel;

//启动ADC转换

ADCON0bits.GO=1;

//等待转换完成

while(ADCON0bits.GO);

//返回ADC转换结果

return((ADRESH8)|ADRESL);

}

voidmain(){

unsignedintadc_result;

//初始化ADC

ADC_Init();

while(1){

//读取通道0的ADC值

adc_result=ADC_Read(0);

//将ADC结果输出到PORTB

PORTB=(unsignedchar)(adc_result4);//将10位结果右移4位,转换为8位

//