当前位置:文档之家› 基于单片机实现的数据采集系统

基于单片机实现的数据采集系统

单片机课程设计报告题目:数据采集系统(一)设计任务1. 采用8051和ADC0809构成一个8通道数据采集系统。

能够顺序采集各个通道的信号。

2. 先利用A/D转化器对各路电压进行采样,得到相应数字量,再按数字量与模拟量成正比关系运算得到相应的模拟电压值,然后将模拟量通过显示器显示出来。

3. 采集信号的动态范围:0~5V。

每个通道的采样速率:100 SPS。

4.要求四位LED数码管上轮流显示或单路选择显示,测试最小分辨率为0.019V,测量误差为± 0.02V。

5.利用单片机仿真器,将采样数据送入单片机70H~77H存储单元。

6.编写相应的单片机采集程序,到达规定的性能。

(二)设计方案硬件选择:89C51,ADC0809,电源,单片机仿真器,LED,电位器,RAM,74LS02,开关K1K2。

接口芯片:74LS244驱动及四个共阳极的LED数码管软件部分:1测量电压值最大是5V,显示最大值为5V。

2使用89C51单片机,6MH晶振,P0口读入A/D值,P2口为A/D转换控制口。

3采用T0定时100uS来产生5分钟来进行数据采集,以下为主要芯片的简要介绍:AD0809引脚图1、AD0809 的逻辑结构ADC0809 是8 位逐次逼近型A/D转换器。

它由一个8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成(见图1)。

多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。

三态输出锁器用于锁存A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。

2、AD0809 的工作原理IN0-IN7:8 条模拟量输入通道ADC0809 对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:4条ALE 为地址锁存允许输入线,高电平有效。

当ALE线为高电平时,地址锁存与译码器将A,B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。

A,B 和C 为地址输入线,用于选通IN0-IN7 上的一路模拟量输入。

通道选择表如下表所示。

C B A 选择的通道0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 数字量输出及控制线:11 条ST 为转换启动信号。

当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D 转换;在转换期间,ST 应保持低电平。

EOC 为转换结束信号。

当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。

OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。

OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。

D7-D0 为数字量输出线。

CLK为时钟输入信号线。

因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。

3 、ADC0809 应用说明(1)ADC0809 内部带有输出锁存器,可以与A T89S51 单片机直接相连。

(2)初始化时,使ST 和OE信号全为低电平。

(3)送要转换的哪一通道的地址到A,B,C 端口上。

(4)在ST 端给出一个至少有100ns 宽的正脉冲信号。

(5)是否转换完毕,我们根据EOC 信号来判断。

(6)当EOC变为高电平时,这时给OE 为高电平,转换的数据就输出给单片机了。

4、AD0809 的应用了解完A/D 转换芯片,下面我们以图2 为例来完成它的程序设计。

电路说明:CLK:时钟输入信号,0809的时钟频率范围在10~1200kHz ,典型值为640kHz 。

1.数据采集系统电路图:图3 ADC0809时序图ADC0809是带有8:1多路模拟开关的8位A/D 转换芯片,所以它可有8个模拟量的输入端,由芯片的A ,B ,C 三个引脚来选择模拟通道中的一个。

A ,B ,C 三端分别与8051的P1.0~P1.2相接。

地址锁存信号(ALE)和启动转换信号(START ),由P2.7和/WR 或非得到。

输出允许,由P2.7和/RD 或非得到。

时钟信号,可有8051的ALE 输出得到,不过当采用6M 晶振时,应该先进行二分频,以满足ADC0809的时钟信号必须小于640K 的要求。

(三)实验程序 ORG 0000HLJMP START START: CLR A MOV P2,A MOV R0,#70H MOV R2,#0DH LOOPMEM: MOV @R0,A INC R0DJNZ R2,LOOPMEM MOV 20H,#00H ;00H 位在20H 字节中 MOV A,#0FFHMOV P0,A ;数据口 MOV P1,A ;段码口 MOV P3,A ;字位口MAIN: LCALL TEST ;调用A/D 转换程序 LCALL DISPLAY ;调用显示程序 ;显示子程序DISPLAY: JB 00H,DISP11 ;为1跳DISP11 MOV R3,#08H ;00H 位=0循环显示 MOV R0,#70H ;首地址 MOV 7BH,#00H ;选中0通道 DISLOOP1: LCALL TUNBCD MOV R2,#0FFHD 0-7A B C OESTART ALE CLOCK74LS740202P 0.1-P 0.7P 2.0P 2.1P 2.2/RDP 2.7/WR ALE80510809Vref-Vref+VCCIN0IN7...EOC P 1.0图4 系统电路图DISLOOP2: LCALL DISPLCALL KEYWORK1DJNZ R2,DISLOOP2 ;延时INC R0INC 7BH ;循环选中8通道DJNZ R3,DISLOOP1RETDISP11: MOV A,7BH ;00H位=1跳来,实现单路显示SUBB A,#01HMOV 7BH,AADD A,#70HMOV R0,ADISLOOP11: LCALL TUNBCDMOV R2, #0FFHDISLOOP22: LCALL DISPLCALL KEYWORK2DJNZ R2,DISLOOP22 ;延时INC 7BH ;通道号加1RET;显示数据转换为3位BCD码子程序TUNBCD: MOV A,@R0MOV B,#51DIV AB ;A-商,B-余数MOV 7AH, AMOV A,BCLR F0SUBB A,#1AHMOV F0,CMOV A,#10MUL ABMOV B,#51DIV ABJB F0,LOOP2ADD A,#5LOOP2: MOV 79H,AMOV A,BCLR F0SUBB A,#1AHMOV F0,CMOV A,#10MUL ABMOV B,#51DIV ABJB F0,LOOP3ADD A,#5LOOP3: MOV 78H,ARET;LED扫描显示子程序DISP: MOV R1,#78HMOV R5,#0FEHPLAY: MOV P1,#0FFHMOV A,R5ANL P3,AMOV A,@R1MOV DPTR,#TABMOVC A,@A+DPTRMOV P1,AJB P3.2,PLAY1CLR P1.7PLAY1: LCALL DL5MININC R1MOV A,P3JNB ACC.3,ENDOUTRL AMOV R5,AMOV P3,#0FFHENDOUT: MOV P3,#0FFHMOV P1,#0FFHRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,F8H,80H,90H,0FFH;延时子程序DL5MIN: MOV TMOD,# 10HMOV TH1,# 3CHMOV TL1,# 0B0HCLR TF1SETB TR1MOV R4,# 100MOV R6, # 30WAIT0:JNB TF1, WAIT0CLR TF1MOV TH1,# 3CHMOV TL1,# 0B0HDJNZ R4,W AIT0MOV R4,# 100DJNZ R6,W AIT0RETA/D转换子程序TEST: CLR AMOV P2,AMOV R0,#70H ;通道号地址MOV R7,#08H ;LCALL TESTARTWAIT: JB P3.7,MOVD ;EOC=P3.7=1跳AJMP WAITTESTART: SETB P2.3 ;ALE=1NOPNOPCLR P2.3SETB P2.4 ;START=1NOPNOPCLR P2.4NOPNOPNOPNOPRETMOVD: SETB P2.5 ;OE=1MOV A,P0MOV @R0,ACLR P2.5INC R0 ;指向下一通道MOV A,P2INC A ;地址加1MOV P2,ACJNE A,#08H,TESTENDTESTEND: JC TESTCON ;C=1跳CLR AMOV P2,AMOV A,#0FFHMOV P0,AMOV P1,AMOV P2,ARETTESTCON: LCALL TESTARTLJMP W AIT ;按键检测子程序KEYWORK1: JNB P3.5,KEY1 ;K1=P3.5=0跳KEY1 KEYOUT: RETKEY1: LCALL DISP ;按下K1后调用显示程序JB P3.5,KEYOUT ;K1=1跳(松开)WAIT11: JNB P3.5,W AIT12 ;K1=0跳CPL 00H ;K1松开后切换显示方式MOV R2,#0AHMOV R3,#01HRETWAIT12: LCALL DISP ;按K1后调用显示AJMP W AIT11KEYWORK2: JNB P3.5,KEY1 ;按K1后跳JNB P3.6,KEY2 ;K2=0跳KEY2RETKEY2: LCALL DISP ;刷新显示JB P3.6,KEYOUT ;K2=1跳KEYOUTWAIT22: JNB P3.6,W AIT21 ;K2=0跳W AIT21INC 7BH ;K2=1,通道号+1MOV A,7BHCJNE A,#08H,KEYOUT11KEYOUT11: JC KEYOUT1 ;C=1跳KEYOUT1MOV 7BH,#00H ;通道号≥8,7BH清0 KEYOUT1: RETWAIT21: LCALL DISP ;刷新显示AJMP W AIT22END(五)设计体会:通过实验了解了A/D0809的作用以及其的接口作用,C52在整个实验做得作用了解锁存器的型号及作用,还有编程语言相互嵌套的强大魅力,同时也意识到自己知识的匮乏,对以后的学习是种无形的激励,总之这次实验我受益匪浅。

相关主题