qvymZ0 关键词:模/数转换 单片机 接口 C语言 ADS7804电子园51单片机学习网-[.PP)m2D bo'Rj
电子园51单片机学习网7E `+O%ln1 基本特点电子园51单片机学习网0Y G|3N!wJ gg
Z/{FtC0在计算机控制系统及各类用单片机(或微处理器)构成的智能仪器仪表中,外部的各种模拟信号必须通过A/D转换器变换为数字信号后才能送入计算机。与8位和16位的A/D转换器相比,12位A/D转换器以其较高的性能价格比而在仪器仪表中得到广泛的应用。电子园51单片机学习网5tMZ V}
*[ u-@ W@]Ni8y3p0ADS7804 芯片采用28脚0.3英寸PDIP(塑料双列直插式)封装,两列管脚间距为0.3英寸,比一般DIP28封装窄一倍,所以俗称瘦型DIP;ADS7804 采用单5V电源供电;芯片内部含有采样保持、电压基准和时钟等电路,可极大简化用户的电路设计和硬件开锁,并可提高系统的稳定性。
H;\W|we R u0 电子园51单片机学习网~aYF"RADS7804采用CMOS工艺制造,转换速度快、功耗低(最大功耗为100mW)。电子园51单片机学习网x9iB |C,uk i5fP
电子园51单片机学习网I$pl6^)t9Cl Xz该A/D转换器采用逐次逼近式工作原理,单通道输入,模拟输入电压的范围为±10V,采样速率为100kHz。
|3m;w dWL'u0 电子园51单片机学习网*J#je7~^5~4}a2 引脚及功能电子园51单片机学习网:Q7x| \p4u
$?^$o&EK7S.u fqd0ADS7804共有28个引脚,图1为基引脚图。这些引脚大体上可以划分为3类。电子园51单片机学习网.ZGe sLz;?
c"`Q(jR t0a.电源类电子园51单片机学习网6}#jY/H/U.Q]$v
^(K'O@n4`6]R'xz0数字电源VDIG和模拟电源VANA通常一起接到5V电源上。数字地DGND和模拟地AGND1、AGND2通常共地。REF为参考电压端,通常对地接2.2μF钽电容,芯片内部可产生2.5V基准电压。CAP为参考电压所需电容,对地接2.2μF钽电容。
eaYb/_ }#q}jN0 电子园51单片机学习网 D |lvT3r%PGbb.模数信号类
J7`Vr6D z7D[]u0_J|(jKx0?Y8v:}0VIN为输入的模拟信号。D11~D0为数字量并行输出口,DZ(19~22脚)是为了使管脚与16位A/D转换器ADS7805兼容而设的,可悬空。
tw5U2aH ^1Z0a})~$o+_!GH0c.控制信号类
`){*j.X9{;P/ak'd0 电子园51单片机学习网(msF*FJyr'oCS(输入)为片选信号,R/C(输入)为读取结果/模数转换控制信号,BUSY(输出)用于指示转换是否完成,BYTE(输入)信号用来控制从总线读出的数据是转换结果的高字节还是低字节。电子园51单片机学习网(|SNMwo
电子园51单片机学习网uo"Pk_5e/EZ}1s Y3 启动A/D转换和读取转换结果电子园51单片机学习网NW6ql v7^$X
电子园51单片机学习网 A!TC5n)V:i K.fADS7804启动转换和读取转换结果的时序比较特点,参见图2。
nh b^.?b0 电子园51单片机学习网:dgx \'V/Fi首先将R/C脚电平变低;然后在CS脚输入一个脉冲并在其下降沿启动A/D转换,此脉冲的宽度要求在40ns~6μs之间;这时BUSY脚电平拉低表示正在进行转换;在经过大约8μs以后,转换完成,BUSY脚电平相应变高;再把R/C脚电平拉高,这样,CS脚脉冲的下降沿即把转换结果输出到数据总线上。电子园51单片机学习网U6Hz!BI`mAM
e"cSb/n8nj Nh U0因为转换结果为12位,所以对8位单片机而言,必须分两次读入,这个功能由BYTE脚实现。当BYTE脚为高电平时,数据总线上输出高字节,反之,输出低字节。电子园51单片机学习网k+r et-^f*d
eP]1X%|a"H'n"^0ADS7804转换得到的数字结果是以补码形式给出的,现给出几组有特定含义的值,表1所列即为ADS7804的模拟电压与其补码形式的数字输出关系,-10V~9.99512V为量程,4.88mV为电压分辨率。电子园51单片机学习网TH,m5mk3B
v.@*u^d0表1 模拟电压和数字输出的关系电子园51单片机学习网3i xB#W"j'Q"d r
模拟输入 | 初码形式的数字输出 | |
二进制 | 十六进制 | |
9.99512V | 0111 1111 1111 | 7FF |
4.88mV | 0000 0000 0001 | 001 |
0V | 0000 0000 0000 | 000 |
-4.88mV | 1111 1111 1111 | FFF |
-10V | 1000 0000 0000 | 800 |
\9L/q/Z4XyiD04 与51单片机的接口电子园51单片机学习网2^-[:xC BQ:j8G
yCPteP1oH$Z0因为ADS7804的CS信号脉冲宽度要求为40ns~6μs之间,而对于单片机而言,只要对外部设备进行读操作,即会产生RD脉冲,其宽度为6个振荡周期,如采用12MHz的晶振,其脉冲宽度为500ns,所以将ADS7804的CS脚接单片机的RD信号是再合适不过了。
q$eE&PnZ{jm0T M:TZ#?6V})_ u0至于R/C、BUSY和BYTE信号,只需连接到普通的锁存功能的端口即可,如单片机的PI口、并行口扩展芯片8155或8255等的端口。
+H?+@;LLW[0G1u,FUTa8h0图3是一个ADS7804与51单片机的典型接口电路。
!S0~'l(nmi#x1a0 电子园51单片机学习网 ^[;jh@5U5 C语言程序设计电子园51单片机学习网 F#e-| r%MWf"w/G)x3E
&EY$|F[*WD0Franklin C51交叉编译器是专为51系列单片机设计的一种高效的C语言编译器,使用它可以缩短开发周期,降低开发成本,而且开发出的系统易于维护,可靠性高,可移植性好。电子园51单片机学习网3Q$R c:y"H
电子园51单片机学习网 ybM#?6YO-_下面介绍用C语言编写的单点和定长数据采集子程序,假设所用的晶振频率为12MHz。电子园51单片机学习网.b)HkN&R-u(|0\
N Pj/EgVpi p0单点采样子程序ADS7804()用来返回一个有符号整数形式的转换结果。电子园51单片机学习网h6q7_/E9F wjo!v
电子园51单片机学习网9dK\sZb"q定长采样子程序DAQ()根据入口参数interval(单位为μs)给定的采样间隔采样N点,并采用查询51单片机内置定时器的方式来控制采样时序,N点采样结果存储在定位于外部存储器的数组array中。需要注意的是,赋给计数寄存器TH和TL的值是定时器从开始计数到溢出所用的时间,这个时间再加上清 TF和装载计数初值所需的时间(共5个机器周期,对于12MHz晶振即为5μs)才是所要的采样间隔,这一点在程序设计中必须注意。电子园51单片机学习网ZzH*OI D:u6G
j8j'f]:A {H0源程序如下:
/Gf*g2N-p^B0"h'A`&~HR2Ptu U)E0# include<reg51.h>
!G,[yu wDM0 电子园51单片机学习网1K@ my$_!T|q# include<absacc.h>电子园51单片机学习网_dQ-g3^u\j"t
电子园51单片机学习网8^r&bw/iy)Q+B# define N 128 /*定采样长度,如128点*/sbit BYTE="F1"^0;电子园51单片机学习网t"T3E{+zp)Y|
L c qK"F;E0sbit RC="P1"^1;
m!^X&gWJ07XBr)hK])DY @0sbit BUSY="P1"^2; /*定义特殊位*/电子园51单片机学习网mDs{_ ~B Hj6~S
1{+p+x'm4t6e.\0v!c0int XDATA array(N); /*在外部存储器内定义长度为N的有符号整数数组*/电子园51单片机学习网7ZX+EKn3|cIT
R h%R @%NZ']6x#Aq4D0int ADS7804(void)电子园51单片机学习网 JN%n'X*A auV
~(m[fr e4n0{ uint ul,uh;int u;电子园51单片机学习网y@\-@+o*y] qu5Q
电子园51单片机学习网0tG#I&|2Zn&o_-~RC=0; /*R/C低电平,进入转换模式*/
a,KyC7i e(]0|,h*A7_2?WPI0ul=XBYTE[0xffff]; /*产生读脉冲,启动A/D转换*/电子园51单片机学习网.Fj&oc#F3pT%l-i
} T5t"~3w'I+W B`$M0while (BUSY= =0); /*等待转换完成*/电子园51单片机学习网8B9m"I5O+BX9i@P
f5J R:iU8dT u7{0RC=1;BYTE=0; /*进入读模式,选择低字节*/电子园51单片机学习网(?'y}SZ%o'})s'G
电子园51单片机学习网A/I]Laul=XBYTE[0xffff]; /*读转换结果低8位*/
'd:|U3m$e X MV*hA0 电子园51单片机学习网+uzp]J?BYTE=1; /*选择高字节*/电子园51单片机学习网mp)h2qz
.J X)@ v @u0uh=XBYTE[0xffff]&0x0f;/*读转换结果高4位*/电子园51单片机学习网O$l hkV#{
电子园51单片机学习网f LJK5`dfu=uh*256+ul; /*得到12位转换结果*/
H/w#DJB'{'N[0!ETR+~cl0if(u>=0x0800)电子园51单片机学习网f q3fCF k)W_
h hPH\t0u=u 0xf000; /*如果为负值,则符号扩展*/电子园51单片机学习网"`c2RMI(bm1Z'h
电子园51单片机学习网+iCh:~"mzYreturn(u); /*返回转换结果*/
+n:M)wCl/R0 电子园51单片机学习网rT_)H7ui}
"Tqp_ Zz8J5R0A6a*` ~%^lx0?lB0uoid DAQ(uint interval)
8[:~-\Ml)J+^0Q"cRVCJ|6h0{ uchar th,tl;
)]rE0D7\s [0 电子园51单片机学习网Ik'd/o)^ginterval=interval-5;/*减去TF0清零和装载计数初值的时间5μs*/电子园51单片机学习网#F7q C3Im
电子园51单片机学习网;i {"G5e%Pxth=255-(interval/256);
j'xa|[E0_#{.[.A_0tl=255-(interval%256); /*计算计数初值*/电子园51单片机学习网-q h,l h*n
9g!M}.xE0TMOD=0x01; /*定时器0,方式1 */电子园51单片机学习网~5\\m!O;LX)Cb
电子园51单片机学习网/{C YgZ3x1GWtTH0=th; TL0=tl;/*装载计数初值*/电子园51单片机学习网P5Zsj mN
/x[!QbRYT0TR0=1;/*启动定时*/
o"| _%^ on0a9p ApK0I-o:W0for(I=0;i<N;i++)
|u H"Q7c^ I3~0 电子园51单片机学习网&Gwo0s*k5d)f]{ do{}whilt(!TF0);/*查询等待TF0复位*/
:O1e!z}5e7p+|0k$?3dk'Z`(t0TF0=0; /*清溢出标志*/
kX"}XHz8{0 电子园51单片机学习网nB'JFCK'mw2H,LTH0=th;TL0=tl; /*装载计数初值*/
"W6F2S[ C0 电子园51单片机学习网!k~/Bx5r tvP!@Array=ADS7804(); /*采样、存储*/
Y1[\#L}(R+{ Qn04F KP p#HZ'[$P f-E!Q0}电子园51单片机学习网y$Y1J,~}/h0C4?!T
电子园51单片机学习网(k9Gcq3_TR0=0; /*停止定时*/
7[@7|}FEMx0o"w!r#Z ]Sy0}
{;z,DgDf1zK0 电子园51单片机学习网A P/Qv N Xb oQB6 结束语电子园51单片机学习网7J {3e dn7X#Z w
a&oF T}0C^0ADS7804为12位的A/D转换器,它不仅分辨率高、转换速度快,而且接口方便,电路简单、应用灵活,因而具有广泛的应用前景。笔者在DLRS-1型检波器低频接收灵敏度特性测量仪中使用了ADS7804,取得了很好的效果。电子园51单片机学习网&db:I_!`cM
文章评论(0条评论)
登录后参与讨论