资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
智能仪器实验报告实验项目 自动量程切换 实验时间 同组同学 班级 111 学号 1111 姓名 瓜瓜 2014 年 4 月 实验四 自动量程切换一、实验目的1. 了解仪器量程的概念,量程切换原理。2. 了解多路开关在模拟量输入通道中的应用。3. 掌握实现自动量程切换的硬件电路和编程方法。二、实验原理与要求用电位器调整输入电压值,利用实验板上的 AD774 A/D 转换器、多路模拟开关MPC508 和可编程增益放大器 AD526 和 C8051 单片机构成单路电压测量系统,对输入电压进行测量。放大器 A D 5 2 6( 取其 增益 为 1 )A / D 转换器A D 7 7 4 BC 8 0 5 1 单片机输入电压多路模拟开关M P C 5 8 0电压衰减电路( 电阻阵列 , 本实验用特定模拟电压代替 )图 4-1 自动量程切换实验原理图对输入电压的量程判断是通过不断改变可编程增益放大器 AD526 的增益实现的。AD526 通过编程可输出 1、2、4、8、16 五档不同的增益,本实验取其增益为 1。实验中AD774 输入电压为 10V 那么经衰减后的电压应该在 0-10。取衰减电阻网络中的电阻分别为1K、1K、2K,可以实现三个量程的切换。假设输入信号在 0-40V 内(根据实验台条件提供) ,则 0-10V 范围的电压不需要衰减, 10-20V 范围的电压需要衰减一半, 20-40V 范围内的输入电压需要衰减为原值的 1/4。实验中,我们假设输入电压分别为 6V、12V 、24V,编写具有自动量程切换功能的电压测量程序,将采集的电压值以数字量形式存于内存中。来观察内存中相应的量程和 AD转换结果。三、实验内容及说明实验电路图请参考实验指导书附录中的“12位并行AD模块”部分(图4-2所示),1 8通道多路开关MPC508在此模块中,MPC508(U1)为8通道多路开关,其引脚图如图8-2及主要功能说明如下:INn(n=18) 为 8通道模拟量输入端,A0、A1 、A2 为通道选择控制端, EN为使能端,它们之间的关系见真值表8-1所示。要访问 MPC508多路开关,只要对端口地址(8C00H8CFFH范围中的一个地址)写入相应的数据,从而选通相应的通道。表4-1 MPC508通道选择2 可编程增益放大器AD526 AD526(U2)为可编程增益放大器, A2、A1 、A0 、B 四端为控制增益的代码输入端,、 为使能端,VIN端为信号输入端,VOUT端为信号输出端,它们之间的关系见真CSLK值表4-2,通过编程可以很方便的设置 1、2、4、8、16不同的增益。 要访问AD526可编程增益放大器,只要对端口地址(8B00H8BFFH 范围中的一个地址)写入相应的数据,从而选择对信号不同的放大倍数。表4-2 AD526增益设置控制3 A/D转换器AD774BAD774B(U5)为12位逐次逼近型快速A/D 转换器,其转换速度最大为 8S,引脚说明如下:数字逻辑部分电源+5V。LOGICV12/ : 数据输出格式选择信号引脚。当12/ =1(+5V)时,双字节输出,即128 8位数据同时有效输出,当12/ =0(0V)时,为单字节输出,即只有高8位或低4位有效。: 片选信号端,低电平有效。S: 字节选择控制线。0AR/ : 读数据/转换控制信号,当 R/ =1,ADC 转换结果的数据允许被读出;当CCR/ =0时,则允许启动A/D转换。CE: 启动转换信号,高电平有效。、 :模拟部分供电的正电源和负电源,为 或 。CVE 12V5REF OUT: 10V内部参考电压输出端。REF IN: 内部解码网络所需参考电压输入端。REF OFF: 补偿调整。接至正负可调的分压网络,以调整ADC输出的零点。10 、10 :模拟量10V,20V 量程的输入端口,信号的一端接至AG 引脚。INIDGND: 数字公共端(数字地)。AGND: 模拟公共端 (模拟地)。 :数字量输出。0DB1STS: 输出状态信号引脚。转换开始时,STS达到高电平, 转换过程中保持高电平。转换完成时返回到低电平。STS可以作为状态信息被CPU 查询,也可以用它的下降沿向CPU发中断申请,通知A/D转换已完成,CPU可以读取转换结果。四、实验步骤1 本实验需要用到的实验模块包括:“SMP-102 12位并行AD 模块”,“SMP-202 C8051模块 ” ,“SMP-204 译码模块”。2 把上述模块分别插放到相应的实验挂箱所在位置。3 在确保上述模块插放无误后,用扁平信号线连接“SMP-1 信号转换单元”挂箱的“J2”与 “SMP-2 控制器单元 ”挂箱的“J8”;“SMP-1 信号转换单元”挂箱的“J1”与“SMP-2 控制器单元”挂箱的 “J7”。4 将“SMP-2 控制器单元”挂箱的“切换模块”切换到下列状态:SW1(全部OFF), SW2(全部OFF),SW3(全部OFF),SW4(全部OFF)。5 将“SMP204 译码模块”上的插针J1的2、3用短路帽短接,J2的2、3用短路帽短接,J3 的1、2用短路帽短接,给系统上电。6 在“SMP-102 12位并行AD 模块”的“CH0”和“CH1”处接入2K电阻,“CH1”和“CH2”处接入1K 电阻,“CH2”和GND处接入 1K电阻。7 打开“实验程序/C8051实验程序 /多路开关”文件夹下SWITCH.wsp 和GAIN.wsp项目文件,阅读、分析、理解程序,参照图4-3所示流程图,用 C语言编写多量程切换程序。用适配器连接PC机和系统MCU,编译、生成项目、下载程序; 8 在“SMP-102 12位并行AD 模块”的“CH0 ”接入6V 输入电压。在程序中的设置断点,全速运行程序到每个断点处。观察“SMP-102 12位并行AD 模块”上的A0A1 处的通道选择指示灯的变化情况,并观察调试软件AD转换后所得数值。 9 依次在“SMP-102 12位并行AD模块”的“CH0 ”接入 12V、24V的电压信号,重复上述实验步骤8。图 4-2 12 位并行 AD 模块预置最 小 量程增加 量程 ( 选择 M P C 5 0 8 下一通 道 )结果与 0 F F F H比较A / D 转换子程序溢出 ? 最大量程 ?返回自动量程切换程序N oY e s设过载标志Y e sN o存转换结果图 4-3 量程切换程序流程图五、实验报告1用 c 语言编制实验程序。#include / SFR declarations#include #include Delay.h#include AD774.hsfr16 DP = 0x82; / data pointersfr16 TMR3RL = 0x92; / Timer3 reload valuesfr16 TMR3 = 0x94; / Timer3 countersfr16 ADC0 = 0xbe; / ADC0 datasfr16 ADC0GT = 0xc4; / ADC0 greater than windowsfr16 ADC0LT = 0xc6; / ADC0 less than windowsfr16 RCAP2 = 0xca; / Timer2 capture/reloadsfr16 T2 = 0xcc; / Timer2sfr16 RCAP4 = 0xe4; / Timer4 capture/reloadsfr16 T4 = 0xf4; / Timer4sfr16 DAC0 = 0xd2; / DAC0 datasfr16 DAC1 = 0xd5; / DAC1 data#define BAUDRATE 115200 / Baud rate of UART in bps#define SYSCLK 22118400/11059200 / SYSCLK frequency in Hz#define SAMPLE_RATE 50000 / Sample frequency in Hz#define INT_DEC 256 / integrate and decimate ratio/sbit AD_BUSY = P35;sbit AD_BUSY = P16;void SYSCLK_Init (void);void PORT_Init (void);long result; / ADC0 decimated valuelong zhuanhuan();long duzhi();void main (void)long c;long b;SET_PLUS(0x60); /选择并设置多路开关的通道为第1 号通道/选择并设置程控放大器的放大倍数while(1)SET_PGA(0x00);c=duzhi();if (c2048&c2176&c2304)SET_PGA(0x40);b=zhuanhuan();if(c2560) SET_PGA(0x20);b=zhuanhuan();if(c3072&c3072)ADC0GT=1;long zhuanhuan() unsigned char high8,low4;unsigned char HIGH4,LOW8;long res; / temperatureWDTCN = 0xde; / disable watchdog timerWDTCN = 0xad;SET_PLUS(0x60);SYSCLK_Init (); / initialize oscillatorPORT_Init (); / initialize crossbar and GPIO/ sample rateHIGH4 = 0x00;LOW8 = 0x00;AD_BUSY = 1;AD_START(); /启动AD 转换while(AD_BUSY);/等AD转换完if(!AD_BUSY) /若转换完,则读转换后的数字量high8 = RD_ADDATA_H8(); /读高8位(D7D4D11D8)low4 = RD_ADDATA_L4(); /读低4位(D3D0)HIGH4 = high8 / (0000D11D8)- HIGH4LOW8 = (high8 /(D7D4D3D0 )- LOW8res=HIGH4*256+LOW8;return res;/ Initialization Subroutines/ SYSCLK_Init/ This routine initializes the system clock to use an 22.1184MHz crystal/ as its clock source.void SYSCLK_Init (void)int i; / delay counterOSCXCN = 0x67; / start external oscillator with/ 22.1184MHz crystalfor (i=0; i 1ms)while (!(OSCXCN / Wait for crystal osc. to settleOSCICN = 0x88; / select external oscillator as SYSCLK/ source and enable miss
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号