数据采集系统实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

任务要求1.4路模拟量输入,输入电压范围0~5V,分辨率8位,转换时间100us,具有显示(数码管)测量结果(用10进制显示直流电压值或交流电压峰值)的功能;2.1路模拟量输出,用来分别重现4路被采信号的波形(供示波器观测)摘要本数据采集系统是基于单片机AT89C51来完成的,4路的模拟电压通过通用的8位A/D转换器ADC0809转换成数字信号后,由单片机进行数据处理,并将处理后的数据送LED显示器显示。再经过常用的8位D/A转换器DAC0832将数字数据转换成模拟量,供示波器观测。一、系统的方案选择和论证根据题目基本要求,可将其划为如下几个部分:4路模拟信号A/D转换单片机数据处理LED显示测量结果D/A转换模拟量输出系统框图如图1所示:图1单片机数据采集系统框图1、4路模拟信号A/D转换由于被测电压范围为0~5V,分辨率为8位,转换时间为100us,所以A/D转换部分,本系统选择常用的8路8位逐次逼近式A/D转换器ADC0809。ADC0809芯片有28条引脚,采用双列直插式封装。下面说明各引脚功能。IN0~IN7:8路模拟量输入端。2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动信号,输入,高电平有效。EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。2、单片机数据处理选择美国ATMEL公司的CMOS8位单片机AT89C51,其工作电压为2.7~6V,具有低电压低功耗性能和高性价比,兼容标准MCS-51指令系统,4Kbytes的PEROM和128bytes的RAM,片内置通用的8位中央处理器(CPU)和Flash存储单元。AT89C51是一种带有4KB闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,可为很多嵌入式控制系统提供灵活且价廉的方案。所以,本设计采用ATMEL公司的AT89C51作为程序的主控芯片。AT89C51数据总线是由P0口提供的,P0口本身能以多种方式提供数据总线和地址总线。当ALE输出信号为高电平时,P0将输出的数据锁入总线驱动器中作为地址的低8位,然后和P2送出来的高8位地址一起组成一个完整的16位地址,以寻址到外部的64KB的地址空间。AT89C51的地址总线比较简单(只有3个:RD、WR、PSEN),其中RD是用来读取外部数据内存的控制线,WR是用来写数据到外部数据内存的控制线,PSEN是用来存取外部程序内存的读取控制线。3、LED显示测量结果这里选择的是广州周立功单片机发展有限公司自行设计的数码管显示驱动及键盘扫描管理芯片ZLG7289B,它可直接驱动8位共阴式数码管(或64只独立LED),同时还可以扫描管理多达64只按键。ZLG7289B内部含有显示译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐﹑闪烁﹑左移﹑右移﹑段寻址等。ZLG7289B采用SPI串行总线与微控制器接口,仅占用少数几根I/O口线。利用片选信号,多片ZLG7289B还可以并接在一起使用,能够方便地实现多于8位的显示或多于64只按键的应用。4、D/A转换模拟量输出在本设计中D/A转换的作用是使得采集处理过的数据通过D/A转换电路后送示波器进行观察。这里选择了DAC0832这一D/A转换器。它是一个8位D/A转换芯片,唯一电源供电,从+5V~+15V均可正常工作,其引脚功能说明如下:DI0~DI7:数据输入线,TLL电平。ILE:数据锁存允许控制信号输入线,高电平有效。CS:片选信号输入线,低电平有效。WR1:为输入寄存器的写选通信号。XFER:数据传送控制信号输入线,低电平有效。WR2:为DAC寄存器写选通输入线。Iout1:电流输出线。当输入全为1时Iout1最大。Iout2:电流输出线。其值与Iout1之和为一常数。RFb:反馈信号输入线,芯片内部有反馈电阻.Vcc:电源输入线(+5v~+15v)Vref:基准电压输入线(-10v~+10v)AGND:模拟地,摸拟信号和基准电源的参考地.DGND:数字地,两种地线在基准电源处共地比较好二、系统的硬件设计本系统硬件电路包括以下几个部分:AT89C51外围电路(如时钟电路、复位电路等)AT89C51和ADC0809接口电路AT89C51和DAC0832接口电路LED显示电路1、AT89C51外围电路(如时钟电路、复位电路等)AT89C2051中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAl1和XTAL2分别是该放大器的输入端和输出端,这个放大器与作为反馈元件的片外石英晶体一起构成自己振荡器,外接石英晶体和电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容没有太严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器的稳定性等,这里选用12MHz的石英晶体,电容选用33pF,如图2所示。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。本设计的时钟电路如图3所示。图2时钟电路图3复位电路2、AT89C51和ADC0809接口电路AT89C51和ADC0809接口电路如图4所示,START和ALE互连可使ADC0809在接收模拟量路数地址时候启动工作。START的启动信号由89C51的WR和P2.7经或门U7A产生。平时,START因P2.7高电平而被封锁。ALE的正脉冲使得ADDA、ADDB和ADDC上的地址锁存,选中IN0-IN3路模拟电压送入比较器,这里ADDA、ADDB和ADDC分别和P0.0,P0.1,P0.2连接。EOC线经过反相器和AT89C51的INT1线相连,这里采用中断方式来和ADC0809传送A/D转换后的数字量。为了给OE线分配一个地址,把AT89C51的RD和P2.7经或门U7B和OE相连。平时,因P2.7为高电平,从而使得OE处于低电平封锁状态。在响应中断时候,单片机执行中断服务程序使得OE变为高电平,从而打开三态输出锁存器,让CPU提取A/D转换后的数字量。ADC0809的时钟CLK由两个D触发器把AT89C51的ALE信号4分频后来得到,如图5所示,如果使用单片机时钟电路选择12MHz的晶振,那么ALE信号的频率为2MHz(12/6),经两个串联D触发器四分频之后,CLK端的频率为500KHz,能够满足ADC0809要求。图4AT89C51和ADC0809接口电路图5时钟分频电路3、AT89C51和DAC0832接口电路图6AT89C51和DAC0832接口电路AT89C51和DAC0832接口时,可以有三种方式:直通方式、单缓冲方式和双缓冲方式。本系统选择单缓冲方式,电路如图6所示。ILE直接接到VCC,允许数字量输入,CS和XFER由译码器的输出端F7控制,从而控制DAC0832的8位输入寄存器。AT89C51的WR和DAC0832的2WR连接,1WR直接接地,这样1WR和2WR之间的延迟可以满足不小于500ns。参考电压直接选择VCC。Rbf作为运算放大器反馈线,接到uA741输出端,Iout1和Iout2接到其输入端。4、LED显示电路LED显示电路如图7所示。图中,VCC和GND之间接入100uF的电容,使得电源更加稳定,通过拉低RST引脚的方法复位ZLG7289B,四个数码管是共阴式的,10R至17R是限流电阻,1R至8R是下拉电阻。KC0/DIG0~KC3/DIG3来作为位选信号来选择LED数码管的显示。在这里使用键盘功能,真正实现人机交互,四个按键开关分别控制四路模拟信号的输入。晶振这里选择和单片机同样的晶振,即12MHz。数码管0显示选择通道,数码管1、2、3显示电压峰值。ZLG7289B的CS、CLK和DIO引脚分别接在单片机P1.0、P1.1和P1.2引脚,ZLG7289B的INT接单片机的P3.3,也即中断1,实现模拟信号输入通道的选择。图7LED显示电路部分(1)图8LED显示电路部分(2)三、系统的软件实现本系统软件包括系统初始化、数据采集与处理,AD转换、DA转换和数据显示几个部分。其中主程序流程图如图8所示,AD转换程序流程图如图9所示,DA转换程序如图10所示。实验源程序见附录2.图9主程序流程图图10A/D转换流程图图11键盘控制程序流程图四、电路和程序调试对电路的调试氛围对硬件的调试和对软件的调试。所以在调试的时候,先检查硬件电路各接线是否正确,有误短路现象,如果有那就要及时改正。软件的调试,首先要在KeilC51上面编译运行通过,由于有中断的缘故,所以中断部分要结合硬件电路进行调试,在这里可以借用实验用Monitor-51仿真器来进行调试,而不是一次次把程序写进单片机进行调试,那样不仅麻烦,而且还有可能写坏单片机。在软件硬件结合起来调试的过程中,要分模块进行调试,比如本实验中,有键盘中断、LED显示、AD转换和DA转换四个大的模块,根据程序流程图,应该依次对上面四个模块分别进行调试检查。调试过程中,要熟悉使用示波器、万用表等工具,硬件部分,上电以后,要用示波器测试晶振是否正常工作,单片机和其他芯片个引脚电位是否正常。软件部分,可以通过KeilC51来观察各特殊寄存器和某些变量的值来验证程序和电路的准确性,也可以设置断点来查看程序的运行路线,比如要查看中断是否执行,就可以在中断服务程序里面设置断点。下面结合本人在调试中遇到的部分问题加以说明。1、LED不显示原因:画原理图时候由于粗心所致,漏画一结点,如图12所示。从而导致SG/KRi(i=0~7)全部为低电平(示波器测得),而ZLG7289驱动的是共阴式数码管,所以数码管不显示。解决方法:按照图13接通VCC.图12漏结点图13原图(节点VCC)2、测试P0口达不到高电平原因:经过查询P0口内部结构,发现P0口是接在两个三极管VT1和VT2之间的,而P1-P3口的上部是接一个电阻的。P0口的上面VT1是在进扩展存储器或扩展总线时由指令控制的、平时都是截止的。一般象P0^0=0P0^0=1这些语句时控制的都是下面那个三极管的。P0口接负载P0=0,VT2导通,P0点电位为0,当P0=1,VT2截止,而VT1始终是截止的,这样P0点就等于悬空了,P0是高阻抗输入,容易受外界电路干扰。3、分频信号没有出现原因:这里是采用D触发器实现四分频电路,结果测试分频器输出引脚根本没有出现分频信号,但是单片机ALE输入信号是正常的,问题就出现在D触发器这块,原因如图14所示。由于看到D触发器示意图PR和CLR端有个圆圈,所以就误认为那是接低电平的,所以就不假思索的和地连接起来了,这种毛病得彻底改正啊。于是我重新查看了一下D触发器资料,发现其真值表如下:图14D触发器真值表很明显,只有PR和CLR同时为高电平时,D触发器才能正常工作,所以以后在使用某一芯片之前,一定要认真查看其技术资料才行。解决方法:D触发器PR和CLR接VCC,如图15所示。图15D触发器PR和CLR接地图16D触发器PR和CLR接VCC

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功