PIC实验四 用AD转换模块实现模拟量采集
- 格式:doc
- 大小:1.64 MB
- 文档页数:10
DSP技术实验报告实验名称:片上外设实验—A/D采集实验姓名:杨望学号:080404153班级:通信一班时间:6-16南京理工大学紫金学院电光系一、 实验目的1. 了解TMS320F2812片上外设AD ;2. 熟悉片上AD 的使用;3. 利用片上AD 进行数据采集。
二、 实验原理ADC 模块功能框图F2812处理器的ADC 模块是一个12位带流水线的模/数转换器,由模拟电路和数字电路组成。
ADC 模块主要特点: ▪12位模/数转换模块ADC ▪2个采样和保持(S/H)电路 ▪模拟输入电压范围:0-3V ▪快速的转换时间,ADC 时钟可以配置为25MHz ▪16通道模拟输入 ▪自动排序功能支持16通道独立循环自动转换,每次转换的通道可以软件编程选择 ▪排序器可以工作在2个独立的8通道排序器模式,也可以工作在16通道级联模式 ▪ 自动排序器允许对同一个通道进行多次采样,以完成过采样算法,获得更高的采样精度16个结果寄存器存放ADC 的转换结果,转换后的数字量表示为:量化间隔为:)(.)(mV V v 730=40953=Δ34095-⨯=REF inV V D -▪有多个触发源启动ADC转换(软件、事件管理器、外部)▪灵活的中断控制,允许每个或每隔一个序列转换结束产生中断请求三、实验内容1.初始化系统;2.初始化片上AD,进行通道的选择;3.AD数据采集。
4.程序代码补充部分:interrupt void ad(void){IFR=0; //设置中断标志寄存器值PieCtrl.PIEACK.all=0xffff; //设定PIE级中断应答寄存器值 if(adconvover==0){Ad_data[convcount]=AdcRegs.RESULT0 ;convcount++; //补充语句,读取AD转换结果}if (convcount==(SampleLong)){convcount=0;adconvover=1; //补充语句,完成停止计数操作并设置接满标志}}5.图像部分四、小结与体会通过本次DSP实验,我了解TMS320F2812片上外设AD。
PIC24系列单片机原理与开发第6章AD转换器及编程AD转换器是一种用于将模拟信号转换为数字量的设备,它的主要用途是将模拟量转换为可用于数字控制系统的数字信号。
PIC24系列单片机内置了多路/低速模拟输入AD转换器,可以实现对模拟量的采集、处理和控制。
AD转换器的编程十分复杂,需要明确程序对模拟量的要求,包括采样率、量程、精度等,还需要根据PIC24系列单片机的资源情况,合理配置AD转换器的参数,以便实现模拟量的有效读取。
1)可以多路采样:多路采样可以提高采样精度,在故障时可以减少恢复时间,还可以提高采样率。
2)采样率:根据实际应用需要,调整单片机的时钟频率,来达到最佳的采样率。
3)精度范围:根据实际应用需要,调整AD转换器的精度范围,以保证采集到的数据和处理能力的均衡使用。
4)通道选择:根据实际应用,选择多路采样中的其中一路,来使用最佳的采样精度。
ad转换器的实验报告AD转换器的实验报告一、引言AD转换器(Analog-to-Digital Converter)是一种电子设备,用于将模拟信号转换为数字信号。
在现代电子技术中,AD转换器被广泛应用于各种领域,如通信、控制系统、医疗设备等。
本实验旨在通过实际操作,了解AD转换器的工作原理和性能特点。
二、实验目的1. 了解AD转换器的基本原理;2. 掌握AD转换器的使用方法;3. 分析AD转换器的性能特点。
三、实验原理AD转换器的基本原理是将连续的模拟信号转换为离散的数字信号。
其工作过程可以简单概括为以下几个步骤:1. 采样:从模拟信号中按照一定的时间间隔取样,得到一系列离散的采样点;2. 量化:将每个采样点的幅值转换为相应的数字值;3. 编码:将量化后的数字值转换为二进制编码。
四、实验装置和步骤1. 实验装置:AD转换器、信号发生器、示波器、计算机;2. 实验步骤:a) 连接信号发生器的输出端与AD转换器的输入端;b) 连接AD转换器的输出端与示波器的输入端;c) 设置信号发生器的频率和幅值,调节示波器的触发电平和时间基准;d) 打开AD转换器和示波器,开始采集数据;e) 将采集到的数据导入计算机,进行数据分析。
五、实验结果与分析通过实验,我们获得了一系列采样点的幅值和时间信息。
将这些数据导入计算机,我们可以进行进一步的分析和处理。
例如,我们可以绘制出信号的波形图,观察信号的周期性和幅值变化。
同时,我们可以计算出信号的平均值、最大值、最小值等统计量,以评估AD转换器的精度和稳定性。
六、实验误差与改进在实验过程中,可能会存在一些误差,影响实验结果的准确性。
例如,信号发生器的输出可能存在漂移,导致采样点的幅值偏离真实值。
此外,AD转换器本身的非线性特性也会引入误差。
为了减小误差,可以采取以下改进措施:1. 使用更精确的信号发生器,提高输出稳定性;2. 选择高精度的AD转换器,降低非线性误差;3. 增加采样点的数量,提高采样率。
实验四 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");}电压值随可变电阻的变化而变化,并显示在超级终端上。
2/4路模拟数据隔离采集AD转换模块SunYuan SY AD 02A/04A概述顺源科技SUNYUAN SY系列AD产品(亚当模块)可实现传感器和主机之间的信号安全隔离和高精度数据采集、隔离转换、监控与传输。
产品广泛应用于RS-232/485总线工业自动化控制系统,4-20mA / 0-10V信号测量、监视和控制,小信号的测量以及工业现场信号隔离及长线传输等远程监控场合。
通过软件的配置,可接入多种传感器类型,包括电流输出型、电压输出型等等。
产品内部包括电源隔离,信号隔离、线性化,A/D转换和RS-485串行通信等模块。
每个串口最多可接256只SY AD系列模块,通讯方式采用ASCII码字符通讯协议或MODBUS RTU通讯协议,其指令集兼容于ADAM模块,波特率可由用户设置,能与其他厂家的控制模块挂在同一RS-485总线上,便于主机编程。
SY系列AD产品是基于单片机的智能监测和控制系统,所有用户设定的校准值,地址,波特率,数据格式,校验和状态等配置信息都储存在非易失性存储器EEPROM里。
SY系列AD产品按工业标准设计、制造,信号输入 / 输出之间隔离,可承受3000VDC隔离电压,抗干扰能力强,可靠性高。
工作温度范围- 45℃~+80℃。
产品特点●低成本、小体积模块化设计方便桌面或导轨安装使用●数据采集隔离转换成RS485/232支持Modbus RTU通讯协议●测量精度优于0.05%,可以程控校准模块精度●信号输入 / 输出之间隔离耐压3000VDC●宽电源供电范围:8 — 50VDC●可靠性高,编程方便,易于安装和布线●用户可编程设置目标模块地址、波特率等●可直接根据现场数据采集显示结果进行监控典型应用●工业设备运行测量、监视和远程控制● 智能楼宇控制、安防工程等自动化系统监控● RS232/485总线工业自动化系统远程监测●传感器信号隔离转换及长线传输●模拟信号A/D转换、调整及远程变送●工业现场多路运行数据的获取与记录●医疗、工控产品开发●模拟4-20mA/0-10V等信号采集隔离及变送SY AD通道数输入电压或电流信号值02:两通道 U1:0-5V A1:0-1mA04:四通道U2:0-10V A2:0-10mAU3:0-75mV A3:0-20mAU4:0-2.5V A4:4-20mAU5:0-±5V A5:0-±1mAU6:0-±10V A6:0-±10mAU7:0-±100mV A7:0-±20mAU8:用户自定义A8:用户自定义备注:SY是Sunyuan Technology的商标缩写;AD是A/D采集转换模块。
单片机实验报告姓名: XX班级: XXXXX学号: XXXXXXX专业:电气工程与自动化实验1 名称:数据采集_A/D转换一、实验目的⑴掌握A/D转换与单片机接口的方法;⑵了解A/D芯片0809 转换性能及编程方法;⑶通过实验了解单片机如何进行数据采集。
二、实验设备装有proteus和keil软件的电脑一台三、实验说明及实验原理:A/D 转换器大致分有三类:一是双积分A/D 转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并联比较型A/D转换器,速度快,价格也昂贵。
实验用ADC0809属第二类,是8位A/D转换器。
每采集一次一般需100μs。
由于ADC0809A/D 转换器转换结束后会自动产生EOC 信号(高电平有效),取反后将其与8031 的INT0 相连,可以用中断方式读取A/D转换结果。
ADC0809 是带有8 位A/D转换器、8 路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
(1) ADC0809 的内部逻辑结构由图1.1 可知,ADC0809 由一个8 路模拟开关、一个地址锁存与译码器、一个A/D 转换器和一个三态输出锁存器组成。
多路开关可选通8 个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。
三态输出锁器用于锁A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。
(2) ADC0809 引脚结构ADC0809各脚功能如下:D7 ~ D0:8 位数字量输出引脚。
IN0 ~ IN7:8位模拟量输入引脚。
VCC:+5V工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端。
START:A/D转换启动信号输入端。
ALE:地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
单片机中模拟量输入与AD转换原理和技术研究单片机是一种集成电路芯片,具有处理和控制电子设备的能力。
在单片机的应用中,模拟量输入和AD转换是非常重要的技术,它们主要用于将模拟信号转换为数字信号,以便单片机进行处理和控制。
模拟量输入是指将实际的物理量信号(如温度、压力、湿度等)转换为电压或电流信号,并通过模拟输入接口输入到单片机中。
为了实现模拟量输入,通常使用传感器来感知和采集环境中的实际物理量。
传感器将物理量转换为与其相对应的电信号,然后通过电路放大和滤波等处理,将模拟信号送入单片机的模拟输入引脚。
而AD转换则是将模拟信号转换为数字信号的过程。
在单片机中,通常使用的是一种叫作模拟数字转换器(ADC)的器件。
ADC会对模拟信号进行离散化处理,将其分成若干个等幅度的区间,然后通过采样和量化的方式,将每个区间分别表示为一个数字码。
这个数字码可以被单片机读取和处理,从而实现对模拟信号的测量和控制。
在进行AD转换之前,我们需要对模拟信号进行采样。
采样是将连续的模拟信号转换为一系列离散的样本点的过程。
采样率是指每秒钟采集的样本点个数,决定了采集到的离散样本点的准确性和还原性。
在采样之后,我们需要进行量化。
量化是将采样得到的连续模拟信号转换为离散的数值的过程。
在量化过程中,会将模拟信号的幅度转换为一个预定的量化规则,通常是将其映射为一系列离散的数字值。
量化的精度常用位数来表示,例如8位、10位、12位等。
位数越高,量化的精度越高,但同时也会占用更多的存储空间和处理能力。
采样和量化完成后,就可以进行AD转换了。
在单片机中,通常使用的AD转换器是一种叫作逐次逼近型ADC的器件。
逐次逼近型ADC通过逐渐逼近模拟信号的真实值,从而得到一个尽可能准确的数字输出。
它的工作原理是通过比较待转换的模拟信号和一个内部的参考电压的大小关系,然后根据比较结果进行多次逼近,最终得到所要转换的数字结果。
除了逐次逼近型ADC,还有一种常用的ADC是成功逼近型ADC。
EDA实验报告之实验十一A/D转换实验1、实验目的(1)掌握A/D转换器与单片机接口的方法;(2)了解A/D芯片0809的转换性能及编程方法;(3)通过实验了解数据采集、处理的基本方法。
2、实验要求利用实验板上的ADC0809做A/D转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,在数码管的最高两位显示出数字量来。
另外要把模拟量值在数码管的最低三位显示出来。
例如显示“80 2.50”(其中80是采样数值,而2.50是电压值。
要求程序可连续运行以便测量不同的模拟电压(类似于电压表)(注意:多次采集求平均值可提高转换精度)3、实验说明1)原理图参看LAB6000使用手册、图示帮助等;2)连线方式与LAB6000给出的有所不同,这里的实验用数码管显示结果(原实验则用LED显示结果);3)EOC可接中断、其它引脚或不接,对应的获取数据方法为中断、查询、延迟,建议采用中断方法;4)注意ADC0809各连线接在了什么位置。
4、写出实验报告(包括6位LED显示的部分电路图)。
5、实验内容5.1 使用仪器、仪表,开发平台型号本实验用到了WAVE 6000软件平台,电脑一台,LAB6000实验箱,若干连线,串行数据线。
5.2 性能指标、技术要求、思路方案、流程图5.2.1性能指标、技术要求见实验目的和实验要求。
5.2.2 思路方案:先将所有中断使能位置位,然后启动A/D转换。
在主程序中显示缓冲区的内容,判断4次中断已满的标志位是否置位,是的话调用计算子程序计算数字平均值和模拟值,这个过程反复循环的进行。
5.2.3流程图:主程序:计算数字量和模拟量的子程序:中断子程序:5.3源程序;采样的数字值放在20H 开始的单元中,修改R6的值(4);可以控制采样的个数(为了方便我们选择2,4,8……等2的倍数),上限为256个ORG 0000HLJMP BEGIN ;ORG 0003H ;外部中断0LJMP INT0ORG 0030H;=================BEGIN:FLAG EQU 50H ;对应到16进制的是2A单元,四次中断是否满的标志位TRANS EQU 51H ;是否一次转换完毕的标志位MOV R0,#20H ;采样数据存储单元MOV R6,#4 ;采样4次求均值CLR FLAGCLR TRANSSETB EA ; 开所有中断SETB IT0 ; INT0边沿触发SETB EX0 ; 允许INT0中断MOV DPTR,#8000H ; 指向0809 IN0通道地址MOVX @DPTR,A;=================LOOP:LCALL DISPLAYJNB TRANS,LOOP ;判断是否发生EOC,为0时转移CLR TRANSJNB FLAG,CONTINUE ;为0时转移CLR FLAGLCALL COMPUTEECONTINUE:MOV DPTR,#8000HMOVX @DPTR,A ; 启动A/D转换,因为与A值无关,故不管ALJMP LOOP;================= ;中断服务程序INT0:MOVX A,@DPTR ; 读A/D转换结果MOV @R0,AINC R0DJNZ R6,RETURNSETBFLAGMOV R6,#4MOV R0,#20HRETURN:SETB TRANSRETI;=================DISPLAY:MOV R4,#02H;==============BEGIN0:MOV A,#01H ;位选择字节MOV R2,#5 ;5次MOV R1,#60H ;数据地址LOOOP:MOV DPTR,#9002H ;位选输出地址MOVX @DPTR,ARL A ;修改位信号PUSH AMOV DPTR,#9004H ;数据输出地址MOV A,@R1LCALL CHECK ;查表CJNE R1,#62H,PEIORL A,#80HPEI:MOVX @DPTR,ALCALL DELAYINC R1POP ADJNZ R2,LOOOPLCALL DELAY ;为了两轮显示间时间间隔久一些DJNZ R4,BEGIN0RET;================DELAY:MOV R5,#02HMOV R3,#09FHLOOPP:DJNZ R3,$DJNZ R5,LOOPPRET;================= ;计算数字平均值和模拟值COMPUTEE: ;计算采样值总和,放在BA单元,前者为高位MOV R1,#20H ;指向20H单元MOV R5,#4CLR CCLR AMOV B,ALLOOPP:ADD A,@R1JNC GOONINC B ;C为1是加一CLR CGOON:INC R1DJNZ R5,LLOOPP;====================MOV R5,#2 ;2的2倍是4次DIVISION: ;数字平均值最后在A中,B移位完后为0PUSH AMOV A,BCLR CRRC AMOV B,A ;暂存POP ARRC ADJNZ R5,DIVISION;===================== ;这部分程序是为了获得模拟值和将数字量分别存为两个字节里面PUSH APUSH AANL A,#0FHMOV 63H,APOP AANL A,#0F0HSWAP AMOV 64H,APOP AMOV B,#5MUL ABMOV 62H,BMOV B,#10MUL ABMOV 61H,BMOV B,#10MUL ABMOV 60H,BRET;==================CHECK:INC AMOVC A,@A+PCRETTABLE:DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79HDB 71H5.4实验步骤,完成情况5.4.1在WAVE 6000中新建文件,并将代码写入文件中,保存为EXPERIMENT11.ASM;5.4.2在WAVE 6000中新建项目,并在模块文件中包含上述EXPERIMENT11.ASM文件,最后保存为EXPERIMENT11.PRG。
实验四 AD和DA转换实验[实验目的]1.熟悉ARM芯片内部AD外设的配置方法2.掌握ARM芯片I/O控制数码管显示的方法[实验仪器]1.Proteus仿真的LPC2000系列的ARM处理器2.软件:PC机操作系统Win98、Win2000或WinXP,Keil for ARM(MDK)集成开发环境[实验原理]Lpc2000系列的ARM芯片内部AD外设可以实现对外部8路模拟数据的采样,采样模拟电压范围为0~3.3V。
精度为10位。
[实验内容]设计一个使用ARM内部AD功能的采样电路,将采样后的数据显示在3位的数码管上。
[预备知识]LPC2114/2124具有一个AD转换器,LPC2200系列具有两个AD转换器,它们具有如下特性:10位逐次逼近式模式转换器;测量范围:0~3.3V;10位转换时间>=2.44us;可设置AD转换触发方式;具有掉电模式。
AD转换的内部结构图如下:…ADCR:A/D控制寄存器。
A/D转换开始前,必须设置ADCR寄存器来选择工作模式。
ADDR:A/D数据寄存器。
该寄存器包含ADC的结束标志位和10位的转换结果(当结束标志位为1时,转换结果才是有效的)。
两个寄存器具体位的详细功能需要查看一下教材。
[实验步骤]按照下图设计硬件,来满足本次实验的需要器件的名称参照下表使用Keil MDK建立一个软件工程。
命名为AD。
步骤参照前面的实验。
在主函数中写入一些代码:#include <LPC213X.H>void delay(int x){while(--x);}void DsipInit(){PINSEL0= 0;IO0DIR |= 0x3ff<<1;IO0CLR = 0x3ff<<1;IO0SET = 0x3ff<<1;}void Display(unsigned int val){IO0CLR = 0x3ff<<1;IO0SET = val<<1;}int main(){unsigned short ADCData;DsipInit();Display(0x123) ;PINSEL1 = (PINSEL1 & ~(0x3<<22)) | 0x1<<22; //设置引脚连接模块AD0CR = (0x01 << 27) | // EDGE 硬件触发边沿设置(0x0 << 24) | // START AD启动设置(0x00 << 22) | // TEST1:0 测试模式设置(0x01 << 21) | // PDN AD部件上电设置(0 << 17)| // CLKS BURST模式精度(0x00 << 16) | // BUREST BURST模式禁止(2 << 8) | // CLKDIV ADC部件时钟(0x01 << 0); // SEL 转换通道选择for(;;){AD0CR |= (1 << 24); // START AD启动设置,软件启动一次AD转换while((AD0DR & 0x80000000) != 0);ADCData = (AD0DR >> 6) & 0x3FF;Display(ADCData) ;delay(1000000);}return 0;将生成的hex文件加载到lpc2138上运行,调整滑动变阻器的位置,记录当前显示的结果值。
本科实验报告
实验名称:实验四用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 <p18f452.h>
#include <adc.h>
#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模块转换图:。