PIC实验四 用AD转换模块实现模拟量采集

PIC实验四 用AD转换模块实现模拟量采集
PIC实验四 用AD转换模块实现模拟量采集

本科实验报告

实验名称:实验四用AD转换模块实现模拟量采集

实验四用AD转换模块实现模拟量采集

一、实验目的:

1. 学习使用硬件外设函数实现A/D转换

2. 学习对PIC单片机外围模块A/D转换器的控制

二、实验原理:

1. 与A/D转换相关的特殊功能寄存器的设置

PIC18F452自带的A/D转换模块的功能是将一个模拟输入信号转换成一个16位数字信号,此模块有4个寄存器,分别是:

(1)A/D转换结果高位寄存器(ADRESH)

(2)A/D转换结果低位寄存器(ADRESH)

(3)A/D转换控制寄存器(ADCON0)

(4)A/D转换控制寄存器(ADCON1)

这4个寄存器的用法可参考PIC18F452数据手册的相关内容。

2. 与A/D转换相关的硬件外设函数的使用

三.程序设计内容:

完善例程2

查看程序,发现有几处需要完善

在开头处需要添加三行代码

关闭看门狗计时器

#pragma config WDT = OFF

配置晶振

#pragma config OSC = HS

关闭低电平

#pragma config LVP = OFF

并且需要配置A/D转换器

OpenADC(ADC_FOSC_8&

ADC_LEFT_JUST&

ADC_1ANA_0REF,

ADC_CH0&

ADC_INT_OFF);

通过左右对齐控制灯的开关,并且选择0通道,禁止中断。

修改后的实验代码:

#include

#include

#pragma config WDT = OFF

#pragma config OSC = HS

#pragma config LVP = OFF

// Exercise 1 :

/* Set configuration bits for use with ICD2 / PICDEM2 PLUS Demo Board:

* - set HS oscillator

* - disable watchdog timer

* - disable low voltage programming

*/

void InitializeAD(void);

void main(void)

{

TRISD=0; // Set PORTD for LED output

InitializeAD(); // Initial A/D module

while(1)

{

ConvertADC(); // Convert A/D

while(BusyADC()); // Waiting A/D until done

PORTD=ADRESH; // Put A/D result on LEDs }

}

//************************************************

//* Function: InitializeAD *

//* - Fosc/8 clock source *

//* - Left justified *

//* - 1 analog channels, 0 references *

//* - Channel 0 *

//* - Disable A/D interrupt *

//************************************************

void InitializeAD(void)

{

OpenADC(ADC_FOSC_8&

ADC_LEFT_JUST&

ADC_1ANA_0REF,

ADC_CH0&

ADC_INT_OFF);

// Exercise 2 : Open the A/D peripheral with A/D Library function

// See Page 11-13 of MPLAB-C18 C编译器库函数

}

四.实验步骤:

1. 编辑源文件并将源文件存于mcc18目录中

2.选择目标处理器

3. 建立项目,项目名与源文件同名

4. 选择项目设置

选择语言工具套件:MPLAB c18c Toolsuite (mcc18.exe),

MPLINK Object Linker (Mplink.exe) 选择MPLAB C18 安装目录中头文件和函数库子目录的路径。

5. 加载源文件和链接文件

6.编译

7. 用MPLAB SIM 软件模拟器进行调试

8. 用MPLAB ICD2 进行调试

五.实验结果:

通过转动旋钮,可以观察到LED灯有规律的变化,代表数字的加减,是模拟信号实现了A/D转换,变为数字编码。

六、实验感想

有了之前几次实验的经验,本次实验异常顺利,不管是实验代码的完善,还是程序的编译连接都十分顺利,很快就出了实验的结果。本次实验是关于A\D转换的实验,就是将模拟电压转换为(10位,6位为空)数字编码,实验结束之后又参考网络资源,找到了A\D转换结构图,才彻底明白了A\D转换的结构和功能。

A/D模块转换图:

相关主题
相关文档
最新文档