四__ADC实验手册_专业尚阳
- 格式:pdf
- 大小:305.90 KB
- 文档页数:24
\本科实验报告课程名称:微机原理与接口技术林曈姓名:信息学院学院:光电系系:专业:信息工程(光电)3080104612学号:指导教师:齐杭丽2010年12 月25 日实验报告课程名称: 微机原理与接口技术 指导老师: 齐杭丽 成绩:____ ___ 实验名称:___并行AD 、DA 实验____实验类型:____综合________同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得硬件实验四 并行AD 、DA 实验1.实验目的① 掌握采用并行接口实现外部器件的扩展方法;② 掌握ADC0809模/数转换芯片与单片机的接口设计及ADC0809的典型应用; ③ 掌握DAC0832模/数转换芯片与单片机的接口设计及DAC0832的典型应用。
2.预习要求① 理解内存与IO 统一编址的外设端口地址的映射及控制; ② 理解用查询方式、中断方式完成模/数转换程序的编写方法; ③ 理解DAC0832直通方式,单缓冲器方式、双缓冲器方式的编程方法。
3.实验设备计算机 1台; ZDGDTH -1型80C51实验开发系统 1套; 2号导线、8P 数据线 若干条; 万用表1个;4.基础型实验内容① 图4-1为ADC0809的扩展电路图,用8P 数据线将D2区80C51/C8051F020 MCU 模块的 JD0(P0口)、JD8分别与C5区并行A/D 转换模块的JD1C5、JD2C5相连;用二号导线将D2区80C51/C8051F020 MCU 模块的WR 、RD 、P2.0、CLK 、P3.3分别与C5区并行A/D 转换模块的WR 、RD 、CS 、ALE 、EOC 相连;并行A/D 转换模块的+Vref 接+5V , AIN0接D6区可调电源模块的0—5V 端。
课程名称:Zigbee技术及应用实验项目: ADC实验指导教师:专业班级:姓名:学号:成绩:一、实验目的:(1)了解ADC采集原理;(2)熟悉ADC相关寄存器配置和使用方法;(3)掌握CC2530芯片内温度检测方法;使用ADC进行片内温度单次采样,将采集的电压值转换成温度值,通过串口打印至PC机;二、实验过程:(1)根据实验目的分析实验原理;(2)根据实验原理编写C程序;(3)编译下载C程序,并在实验箱上观察实验结果。
三、实验原理:3.1硬件原理3.1.1 ADC概述CC2530芯片ADC结构框图如图4-1所示。
图3-1 ADC结构框图CC2530的ADC 的主要特征如下:• ADC转换位数可选,8到14位;• 8个独立的输入通道,单端或差分输入;•参考电压可选为内部、外部单端、外部差分或AVDD5;•中断请求产生;•转换结束时DMA触发;•温度传感器输入;•电池电压检测。
通常A/D转换需要经过采样、保持、量化、编码四个步骤。
也可以将采样、保持合为一步,量化、编码合为一步,共两大步完成一次A/D采集。
采样是对连续变化的模拟量进行定时的测量,采样结束后将测量的值保持一段时间使ADC设备有充分的时间进行A/D转换,即量化编码过程。
要将一个采样后的数据进行量化编码,就必须在采样之前将要被采样的信号划分不同等级。
例如本实验要读取片上温度的值,实际上ADC读取的值为电压值。
我们首先要将能读到的最大电压值1.25V(这个被划分等级的电压值就是ADC的参考电压)划分为1024个等级(这里的等级就是ADC 的抽取率即分辨率),等级划分的越细及量化的越细。
我们最后编码得到的电压值越准确。
编码是将读取到的电压值与划分好等级的电压值比较,与哪个电压值最接近就采用哪个电压值对应的等级来表示。
例如我们读到的电压值为0.12203V,这个值与等级为100的电压值0.001220703125最接近。
则我们此次ADC读取到的数据最后量化编码后的值为100。
实验目的:1、掌握ADC的工作原理和操作过程2、掌握ADC的接口方法3、了解数据处理的实现方法主要实验仪器:硬件:个人电脑一台软件:ICCA VR软件、protuse仿真软件实验原理及主要工作:1、实验原理将连续变化的模拟信号转换为数字信号,显示在1602液晶显示上。
2、主要工作(1)使用ICCA VR软件编写C程序并编译(2)使用protuse仿真,找到相应的软件符号并连接线路(3)仿真结果请按以下几个部分完成实验报告。
一、实验步骤二、实验原理图(proteus)三、程序流程图四、C程序代码全部五、调试结果截图六、实验总结及心得体会七、附件(原理图及程序压缩包)二、实验原理图三、实验流程图四、C程序代码#include <iom16v.h>#include <macros.h>#include <math.h>#define uchar unsigned char#define uint unsigned int#define RS_CLR PORTB&=~BIT(2)#define RS_SET PORTB|=BIT(2)#define RW_CLR PORTB&=~BIT(1)#define RW_SET PORTB|=BIT(1)#define E_CLR PORTB&=~BIT(0)#define E_SET PORTB|=BIT(0)const uchar disp[]={"ADC TXT "}; uint value=0;void delay_ms (t){uchar x,y;for(;t>0;t--){for(x=0;x<114;x++) for(y=0;y<1;y++);}}void WR_DAT(uchar dat) {E_CLR;RS_SET;RW_CLR;PORTC=dat;E_SET;delay_ms(5);E_CLR;}void WR_COM(uchar dat) {E_CLR;RS_CLR;RW_CLR;PORTC=dat;E_SET;delay_ms(5);E_CLR;}void init_1602(void){DDRB=0XFF;DDRC=0XFF;delay_ms(20);WR_COM(0X38);delay_ms(5);WR_COM(0X38);delay_ms(5);WR_COM(0X38);delay_ms(5);WR_COM(0X08);WR_COM(0X0C);WR_COM(0X01);delay_ms(10);WR_COM(0X06);WR_COM(0X85);}void ADC_init(void){DDRA=0X00;PORTA=0X00;ADMUX=0X00;ADCSRA=0XE7;SFIOR=0X00;}void main(void){uchar i,ADC_L,ADC_H;DDRA=0X00;DDRB=0XFF;DDRC=0XFF;ADC_init();init_1602();WR_COM(0X80);for(i=0;i<15;i++){WR_DAT(disp[i]);}while(1){ADC_L=ADCL;ADC_H=ADCH;WR_COM(0Xc0);value=(ADC_H*256+ADC_L)*5/10.24; ADC_init();WR_DAT('0'+value/100);WR_DAT('.');WR_DAT('0'+value%100/10);WR_DAT('0'+value%100%10);WR_DAT('v');}}五、实验结果。
实验四 A/D 实验一、实验目的1、了解模数转换的基本原理;2、掌握模数转换的编程方法。
二、实验仪器JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE 集成开发环境、PC 机、串口连接线。
三、实验原理要将模拟量转换成数字信号需经采样——>量化——>编码三个基本过程(数字化过程)。
采样:按采样定理对模拟信号进行等时间间隔采样,将得到的一系列时域上的样值去代替u=f(t),即用u0、u1、…un 代替u=f(t)。
这些样值在时间上是离散的值,但在幅度上仍然是连续模拟量。
1Q 2Q3Q4Q5Q6Q7Q 0 1T 2T 3T 4T 5T 6T U =f(t)tU 0U 1U 2U 3U 4U 5U 6U 7格→=Q V 5.0量化:在幅值上再用离散值来表示。
方法是用一个量化因子Q 去度量u0、u1、…,便得到整量化的数字量。
u0=2.4Q 2Qu1=4.0Q 4Qu2=5.2Q 5Qu3=5.8Q 5Q编码:将整量化后的数字量进行编码,以便读入和识别;编码仅是对数字量的一种处理方法。
例如:Q=0.5V/格,设用三位(二进编码)通道0和通道1的模拟输入信号可通过实验箱的可调电阻AIN0、AIN1调节。
四、实验内容及步骤(一)学习例程,对其关键程序与设置进行分析。
(二)1、通过可变电阻改变模拟量输入,补充程序将模拟输入进行采集和转换,观查显示结果(在串口显示);参考程序:/* 包含文件*/#include "def.h"#include "2410lib.h"#include "option.h"#include "2410addr.h"#include "interrupt.h"/********************************************************************// Function name : Main// Description : JXARM9-2410 A/D采样实验主程序// 实现功能:// 实现JXRAM9-2410的模数转换// JXARM9-2410 UART0 <==> PC COM// Return type : void// Argument : void*********************************************************************/void Main(void){/* 配置系统时钟*/ChangeClockDivider(2,1);U32 mpll_val = 0 ;mpll_val = (92<<12)|(1<<4)|(1);ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);/* 初始化端口*/Port_Init();/* 初始化串口*/Uart_Init(0,115200);Uart_Select(0);/* 打印提示信息*/PRINTF("\n---AD采样程序---\n");PRINTF("\n请将UART0与PC串口进行连接,然后启动超级终端程序(115200, 8, N, 1)\n");PRINTF("\n从现在开始您将在超级终端上看到采样值,旋动旋钮AIN2和AIN3改变模拟输入\n");/* 开始测试*/Test_Adc();while(1){}}#define ADC_FREQ 2500000int ReadAdc(int ch); //Return type is int, Declare Prototype function//============================================================================= =====int Test_Adc(void){int i;float a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0; //Initialize variablesPRINTF("----------AD测试--------\n");PRINTF("旋动AIN0, AIN1旋钮改变模拟输入,任意键退出\n");while(1){a0=Adc_Get_Data(0)*3.3/1024;a1=Adc_Get_Data(1)*3.3/1024;PRINTF("\rAIN0: %2.4f AIN1: %2.4f", a0,a1);}rADCCON=(0<<14)|(19<<6)|(7<<3)|(1<<2); //stand by mode to reduce power consumptionPRINTF("\n");PRINTF("--------AD测试结束------\n\n");}电压值随可变电阻的变化而变化,并显示在超级终端上。
《AD教案AD实验》word版一、教案简介本教案主要针对初中学生,以实验操作和观察为主,旨在让学生了解和掌握AD 实验的基本原理和操作步骤,培养学生的实验操作能力和观察分析能力。
二、教学目标1. 了解AD实验的基本原理。
2. 掌握AD实验的操作步骤。
3. 培养学生的实验操作能力和观察分析能力。
三、教学重点与难点1. 教学重点:AD实验的基本原理和操作步骤。
2. 教学难点:实验操作的细节和观察分析能力。
四、教学准备1. 实验器材:显微镜、载玻片、盖玻片、染色剂等。
2. 实验材料:洋葱表皮细胞、口腔上皮细胞等。
3. 教学工具:PPT、显微镜等。
五、教学过程1. 导入:通过PPT介绍AD实验的背景和意义,激发学生的兴趣。
2. 讲解:讲解AD实验的基本原理和操作步骤,强调实验操作的细节。
3. 演示:进行AD实验的演示,让学生直观地了解实验过程。
4. 实践:学生分组进行实验操作,教师巡回指导。
5. 观察与分析:学生观察实验结果,进行分析讨论。
6. 总结:对实验结果进行总结,强调实验操作的重要性和观察分析能力。
7. 作业:布置相关的实验报告和思考题,巩固所学知识。
六、教学评估1. 学生实验操作的规范性和准确性。
2. 学生对实验结果的观察和分析能力。
3. 学生完成实验报告的质量。
七、教学拓展1. 邀请专业人士进行讲座,介绍AD实验在科研和医学领域的应用。
2. 组织学生参观实验室,了解AD实验的设备和实验过程。
3. 开展学生科技创新项目,鼓励学生进行AD实验的研究。
八、教学反思1. 教师要时刻关注学生的学习情况,及时调整教学内容和教学方法。
2. 在实验过程中,教师要注重培养学生的团队合作意识和沟通能力。
3. 教师要关注学生的安全,确保实验操作的安全性。
九、教学评价1. 学生实验操作的规范性和准确性。
2. 学生对实验结果的观察和分析能力。
3. 学生完成实验报告的质量。
4. 学生团队合作意识和沟通能力。
十、教学改进1. 根据学生的实际情况,调整教学内容和教学方法。
CC2430 DK ZigBee 开发板ADC实验手册专业尚阳2010-01-10目录1 特性介绍 (3)1.1 ADC 内核 (3)1.2 ADC 转换序列 (3)1.3 ADC 输入 (4)1.4 ADC 运行模式 (4)1.5 ADC 转换结果 (4)1.6 ADC 参考电压 (5)1.7 ADC 转换时间 (5)1.8 ADC 中断 (5)1.9 ADC DMA 触发 (5)2 相关寄存器 (6)2.1 ADCL (0xBA) – ADC 数据低位 (6)2.2 ADCH (0xBB) – ADC 数据高位 (6)2.3 ADCCON1 (0xB4) – ADC 控制 1 (6)2.4 ADCCON2 (0xB5) – ADC 控制 2 (7)2.5 ADCCON3 (0xB6) – ADC 控制 3 (8)2.6 CLKCON (0xC6) -时钟控制 (9)2.7 SLEEP (0xBE) – 休眠模式控制 (10)2.8 PERCFG (0xF1) – 外设控制 (11)2.9 P0SEL (0xF3) – 端口 0 功能选择 (12)2.10 U1CSR (0xF8) – USART 1 控制和状态 (13)2.13 IRCON2 (0xE8) – 中断标志 5 (15)2.14 IEN0 (0xA8) – 中断启动 0 (16)2.15 IEN1 (0xB8) – 中断使能 1 (17)2.16 IEN2 (0x9A) – 中断使能 2 (18)3.2.17 PCON (0x87) –电源模式控制 (19)3.2.18 P2DIR (0xFF) – 端口 2 方向 (19)3 实验及程序分析 (20)3.1 AD 实验一:片内温度 (21)3.1.1 实验目的 (21)3.1.2 实验过程及重要程序解析 (21)3.2 AVDD 实验 (23)3.2.1 实验目的 (23)3.2.2 实验过程及重要程序解析 (23)专业尚阳 2010-01-101 特性介绍ADC 支持多达 14 位的模拟数字转换。
ADC 包括一个模拟多路转换器,具有多达 8 个 各自可配置的通道;以及一个参考电压发生器,转换结果通过 DMA 写入存储器。
还具有若 干运行模式。
ADC 的主要特性如下:● 可选的抽取率,这也设置了分辨率(8 到 14 位)。
● 8 个独立的输入通道,可接受单端或差分信号● 参考电压可选为内部单端,外部单端,外部差分或 A VDD_SOC 。
● 产生中断请求● 转换结束时的 DMA 触发● 温度传感器输入● 电池测量功能1.1 ADC 内核ADC 包括一个可以将模拟输入转换成数字表示的 ADC ,具有多达 14 位的分辨率。
ADC 使用一个可选的正参考电压。
3.1.2 ADC 转换序列ADC 将执行一系列的转换,并把结果移动到存储器(通过DMA ),不需要任何 CPU 干 预。
ADCCFG 寄存器也可以影响转换序列(见 71 页的 13.1.5 节 )。
ADC 的 8 位模拟输入来自 IO 引脚,不需要经过编程转变为模拟输入。
如果正常情况下,一个通道应作为一个序列的一部分,但是 ADCCFG 禁用了相应的模拟输入,那么该通道将被忽略。
对于通道 8 到 ADCCON2.SCH 寄存器位用于定义 ADC 转换序列,它来自 ADC 输入。
转换序列将包 含 从 每 个 通 道 从 0 开 始 递 增 的 转 换 , 还 包 括 ADCCON2.SCH 设 置 为 小 于 8 时 , ADCCON2.SCH 编程的通道号码。
当 ADCCON2.SCH 设置为 8 到 12 之间的值,转换序列 将从通道 8 开始。
对于更高值的设置,只能执行单个转换。
除了这个转换序列,ADC 可以 通过编程执行单个转换,从最快完成序列转换的任何通道开始。
这叫做额外转换,由 ADCCON3 寄存器控制。
12,它们的输入引脚都必须使能。
1.3 ADC 输入P0 端口引脚的信号可以用作 ADC 输入。
在下面的描述中,这些端口引脚指的是 AIN0- AIN7 引脚。
输入引脚 AIN0-AIN7 是连接到 ADC 的。
ADC 可以设置为自动执行一个序列 转换,当这个序列转换完成后,可选地从任何通道执行一个额外转换。
可以把输入配置为单端或差分输入。
在选择差分输入的情况下,差分输入包括输入对AIN0-1, AIN2-3, AIN4-5 和 AIN6-7。
除了输入引脚 AIN0-AIN7,片上温度传感器的输出也可以选择作为 ADC 的输入,以用于温 度测量。
ADC 还可以输入一个对应 A VDD_SOC/3 的电压。
这个输入允许需要时,在应用中实现 诸如一个电池监测器的功能。
1.4 ADC 运行模式 本节描述了运行模式和初始化转换。
ADC 有三种控制寄存器:ADCCON1, ADCCON2 和 ADCCON3。
这些寄存器用于配置ADC,并报告结果。
ADCCON1.EOC 位是一个状态位,当一个转换结束时,设置为高电平;当读取 ADCH 时,它就被清除。
ADCCON1.ST 位 用 于 启 动 一 个 转 换 序 列 。
当 这 个 位 设 置 为 高 电 平 , ADCCON1.STSEL=”11” 且当前没有转换正在运行时,就启动一个序列。
当这个序列转换完 成,这个位就被自动清除。
ADCCON1.STSEL 位选择哪个事件将启动一个新的转换序列。
该选项可以选择为上升 沿或外部引脚事件,之前序列的结束事件,定时器 1 的通道 0 比较事件或 ADCCON1.ST=’1’。
ADCCON2 寄存器控制转换序列是如何执行的。
ADCCON2.SREF 用于选择参考电压。
参考电压只能在没有转换运行的时候修改。
ADCCON2.SDIV 位选择抽取率(并因此也设置了分辨率和完成一个转换所需的时间, 或样本率)。
抽取率只能在没有转换运行的时候修改。
转换序列的最后一个通道由 ADCCON2.SCH 位选择。
ADCCON3 寄存器控制额外转换的通道号码,参考电压和抽取率。
该寄存器位的编码和ADCCON2 是完全一样的。
1.5 ADC 转换结果数字转换结果以 2 的补码形式表示。
对于 14 位的分辨率,当模拟输入等于 VREF 时, 数字转换结果是 8191,当模拟输入等于-VREF 时,转换结果是-8192,其中 VREF 是所选的 正参考电压。
当 ADCCON1.EOC 设置为 1 时,数字转换结果是可以获得的,且结果放在 ADCH 和ADCL 中。
当读取 ADCCON2.SCH 位时,它们将指示 ADCL 和 ADCH 是哪个通道的转换结果。
1.6 ADC 参考电压模拟数字转换的正参考电压可选择为一个内部生成的 1.25V 电压,A VDD_SOC 引脚, 适用于 AIN7 输入引脚的外部电压,或适用于 AIN6-AIN7 输入引脚的差分电压。
可以选择参考电压作为 ADC 的输入,以执行一个参考电压的转换。
比如,为了校准的 目的。
同样地,它有可能选择终端 GND 接地作为输入。
1.7 ADC 转换时间ADC 运行在32MHz 的系统时钟上,它可以被 8 整除,得到一个4MHz 的时钟。
Delta sigma调制器和抽取过滤器都使用 4MHz 的时钟来计算。
执行一个转换所需的时间取决于所选的抽取率。
比如当抽取率设置为 128 时,抽取过滤 器就使用 128 个 4MHz 时钟周期来计算结果。
当一个转换开始时,输入多路复用器允许有16 个 4MHz 时钟周期来解决由于之前的转换已经被改变的通道。
16 个时钟周期提供了适用于 所有抽取率的时间。
因此总的来说,转换时间由以下公式给定:Tconv = (抽取率 + 16) x 0.25 μs。
1.8 ADC 中断当完成了一个额外转换时,ADC 将产生一个中断。
当完成一个序列转换时,不产生一 个中断。
1.9 ADC DMA 触发每完成一个序列转换,ADC 将产生一个 DMA 触发。
当完成一个额外转换,不产生 DMA 触发。
对于 ADCCON2.SCH 中头 8 位可能的设置所定义的八个通道,每一个都有一个 DMA 触发。
当通道中一个新的样本准备转换,DMA 触发是活动的。
DMA 触发命名为 90 页表 37 中的 ADC_CHx。
另外,还有一个 DMA 触发 ADC_CHALL,当 ADC 转换序列的任何通道中有新的数据 准备好时,它是活动的。
2 相关寄存器2.1 ADCL (0xBA) – ADC 数据低位2.2 ADCH (0xBB) – ADC 数据高位2.3 ADCCON1 (0xB4) – ADC 控制 12.7 SLEEP (0xBE) – 休眠模式控制2.8 PERCFG (0xF1) – 外设控制2.9 P0SEL (0xF3) – 端口 0 功能选择2.13 IRCON2 (0xE8) – 中断标志 52.14 IEN0 (0xA8) – 中断启动 0位名称复位R/W描述7EAL0R/W禁用所有中断。
0 无中断被确认1 通过设置对应的使能位将每个中断源分和禁止6-0R0不使用,读出来是 05STIE0R/WSTIE – 休眠定时器中断使能0 中断禁止1 中断使能4ENCIE0R/WENCIE – AES 加密/解密中断使能0 中断禁止1 中断使能3URX1IE0R/WURX1IE – USART1 接收中断使能0 中断禁止1 中断使能2URX0IE0R/WURX0IE - USART0 RX 接收中断使能0 中断禁止1 中断使能1ADCIE0R/WADCIE – ADC 中断使能0 中断禁止1 中断使能0RFERRIE0R/WRFERRIE – RF TX/RX FIFO 中断使能0 中断禁止1 中断使能2.15 IEN1 (0xB8) – 中断使能 12.16 IEN2 (0x9A) – 中断使能 22.17 PCON (0x87) –电源模式控制2.18 P2DIR (0xFF) – 端口 2 方向3 实验及程序分析3.1 AD 实验一:片内温度3.1.1 实验目的取片内温度传感器为 AD 源,并将转换得到温度通过串口送至电脑。
发送完成 LED1闪烁。
3.1.2 实验过程及重要程序解析开发板通过串口接到计算机,计算机端打开串口调试工具观察。
//初始化串口 0void initUARTtest(void){CLKCON &= ~0x40; //晶振while(!(SLEEP & 0x40)); //等待晶振稳定CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频SLEEP |= 0x04; //关闭不用的RC振荡器PERCFG = 0x00; //位置1 P0口P0SEL = 0x3c; //P0用作串口U0CSR |= 0x80; //UART方式U0GCR |= 10; //baud_e = 10;U0BAUD |= 216; //波特率设为57600UTX0IF = 1;U0CSR |= 0X40; //允许接收IEN0 |= 0x84; //开总中断,接收中断//初始化温度传感器,设AD 目标为片内温度传感器void InitTempSensor(void){DISABLE_ALL_INTERRUPTS(); // 禁用所有中断SET_MAIN_CLOCK_SOURCE(0); //设置主时钟源*((BYTE xdata*) 0xDF26) = 0x80; //在 RX 取代 AGC 的时候使用 VGA_GAIN 的值}//连续进行4 次AD 转换,获取采集的温度INT8 getTemperature(void){UINT8 i;UINT16 accvalue;UINT16 value;accvalue = 0;for( i = 0; i < 4; i++ ) //连续读取 4 次,累加{//使用 1.25V 内部电压,14 位分辨率,外部通道为:温度传感器ADC_SINGLE_CONVERSION(ADC_REF_1_25_V | ADC_14_BIT | ADC_TEMP_SENS); ADC_SAMPLE_SINGLE();while(!ADC_SAMPLE_READY()); //当最高位为 1 时,表示转换完成value = ADCL>>2; //ADC 数据低字节value |= (((UINT16)ADCH)<<6); //ADC 数据高字节accvalue += value;}value = accvalue >> 2; //将连续读取 4 次的累加结果除以 4,求出平均值return ADC14_TO_CELSIUS(value);//return CONVERT_TO_TEMVALUE(value);}//初始化串口0,将P10或P11 设置为输出去控制LED1或LED2, 将系统时钟设为高速晶振,将P0口设置为//串口0功能引脚,串口0使用UART模式,波特率设为57600,允许接收。