550 likes | 672 Views
项目六、 A/D D/A 转换器接口. 项目六、 A/D D/A 转换器接口 任务.1数字电压表系统设计. 1、能将 A/D 转换器 AD0808(AD0809) 和单片机进行硬件连接 2、能进行单片机对 A/D 转换器 AD0808(AD0809) 进行读写,进行模拟量转换成数字量的采集。 学习内容 1、常用 A/D 转换器类型和选择依据 2、常用 A/D 转换器和单片机的连接方式. 一、任务要求
E N D
项目六、A/D D/A转换器接口 任务.1数字电压表系统设计 1、能将A/D转换器AD0808(AD0809)和单片机进行硬件连接 2、能进行单片机对A/D转换器AD0808(AD0809)进行读写,进行模拟量转换成数字量的采集。 学习内容 1、常用A/D转换器类型和选择依据 2、常用A/D转换器和单片机的连接方式
一、任务要求 利用单片机AT89C51与AD0808设计一个数字电压表,能够测量0~5V之间电压值,利用单片机动态显示方法显示模拟电压转换成数字量,用4位共阳数码管显示。 二、任务分析 用电位器的两端分别接0V和5V,滑动点输出模拟电压接AD0808的输入端,考虑到AD0808转换的结果为16进制,为显示直观,必须将转换的16进制结果转换为十进制(BCD码)进行显示。
三、学习知识 (一)数码管动态显示 在如图6-1所示中,其中P2.0、P2.1、P2.2、P2.3分别是数码管的位选信号,P0口为段码信号,动态数码显示的工作过程:将最高位数码管片选P2.0设为0,其余为1,其中“0”为片选选中状态,“1”为片选未选中状态,由P0口输出最高位的段码,显示最高位相应的数码值,然后将次高位数码管片选P2.1设为0,其余为1,由P0口输出次高位的段码,显示次高位相应的数码值,依次由高位进行到最低位,然后再循环从最高位显示到最低位,
由于从高位到低位显示的时间非常短,人的眼睛分辨不出四个数码管显示的时间差距,感觉四个数码管是同时显示的,起到数码管动态显示的效果。由于从高位到低位显示的时间非常短,人的眼睛分辨不出四个数码管显示的时间差距,感觉四个数码管是同时显示的,起到数码管动态显示的效果。
8031 开关量输出 模拟电信号 A/D转换器 D/A转换器 模拟非电信号 传感器 模拟量输出 (二)A/D转换器的工作原理 1、认识并正确选用A/D转换器 图6-2 具有模拟量输入输出的MCS-51系统
(1)A/D转换器类型 1)双积分式A/D转换器 双积分式A/D转换器的主要优点是转换精度高,抗干扰性能好,价格便宜。其缺点是转换速度较慢,因此,这种转换器主要用于速度要求不高的场合。 2)逐次逼近式A/D转换器 另一种常用的A/D转换器是逐次逼近式的,逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几μs到几百μs之间。
(2)A/D转换器的主要技术指标及选用时的主要依据(2)A/D转换器的主要技术指标及选用时的主要依据 1)A/D转换器的主要技术指标 ①分辨率 分辨率是指数字量变化一个最小值时模拟信号的变化量,定义为满刻度与2n的比值。分辨率越高,转换时对输入模拟信号变化的反应就越灵敏。 ②精度 精度是指转换后所得结果相对于实际值的准确度,与温度漂移、元件线性度等有关。精度分为绝对精度和相对精度两种。
③转换时间与转换速率。 A/D转换时间是指完成一次A/D转换所需要的时间,即从启动A/D转换器开始到获得相应数据所需的总时间。积分型A/D转换器的转换时间是毫秒级,属低速A/D;逐次逼近型A/D转换器是微妙级,属中速A/D。采样时间是指两次转换的间隔。 转换速率是转换时间的倒数。为了保证转换的正确完成,采样速率必须小于或等于转换速率。
④量程 即所能转换的电压范围,如10V、5V。 ⑤输出逻辑电平 大多数为与TTL电平配合。在使用中应注意是否用三态逻辑输出,是否要对数据进行锁存等。 ⑥基准电压 基准电压的精度将对整个系统的精度产生影响。A/D转换器分为内部和外部基准电源,故选芯片时应考虑是否要外加精密参考电源等。
2)A/D转换器的选用主要依据 ①A/D转换器用于什么系统、输出的数据位数、系统的精度、线性度。 ②输入的模拟信号类型,包括模拟输入信号的范围、极性(单、双极性)、信号的驱动能力、信号的变化快慢。 ③后续电路对A/D输出数字逻辑电平的要求、输出方式(并行、串行)、是否锁存等。 ④系统工作在动态条件还是静态条件、带宽要求、转换时间、采样速度等。 ⑤基准电压源的选择。基准电压源的幅度、极性及稳定性,电压是固定还是可调、电压由外部还是A/D转换器芯片内部提供等。 ⑥成本及芯片来源等。
2、MCS-51单片机与ADC0809接口设计 (1)典型A/D转换器芯片ADC0809的内部逻辑结构 多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换。地址锁存与译码电路完成对A、B、C三个地址位进行锁存和译码,其译码输出用于通道选择,如表6-1所示。
C B A 选择的输入通道 0 0 0 IN0 1 0 0 IN1 0 0 1 IN2 1 0 1 IN3 0 1 0 IN4 1 1 0 IN5 0 1 1 IN6 1 1 1 IN7 表6-1 通道选择表
(2)信号引脚 ADC0809芯片为28引脚双列直插式封装,其引脚排列见图6-4。 图6-4 ADC0809引脚图
对ADC0809主要信号引脚的功能说明如下: ①IN7~IN0:模拟量输入通道。ADC0809对输入模拟量的要求主要有:信号单极性,电压范围0~5V,若信号过小还需进行放大。另外,在A/D转换过程中,模拟量输入的值不应变化太快,因此,对变化速度快的模拟量,在输入前应增加采样保持电路。 ②A、B、C:地址线。A为低位地址,C为高位地址,用于对模拟通道进行选择。图6-4中为ADDA、ADDB和ADDC,其地址状态与通道相对应的关系见表6-1。 ③ALE:地址锁存允许信号。在对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
④START:转换启动信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。④START:转换启动信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。 ⑤D7~D0:数据输出线。其为三态缓冲输出形式,可以和单片机的数据线直接相连。 ⑥OE:输出允许信号。其用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高电阻;OE=1,输出转换得到的数据。 ⑦CLK:时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500kHz的时钟信号。
⑧EOC:转换结束状态信号。EOC=0,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。⑧EOC:转换结束状态信号。EOC=0,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。 ⑨VCC:+5V电源。 ⑩Vref:参考电源。参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V,Vref(-)=0V)
(3)MCS-51单片机与ADC0809接口 电路连接主要涉及两个问题,一是8路模拟信号通道选择,二是A/D转换完成后转换数据的传送。 图6-5ADC0809与8031单片机的连接
8031 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0809 × × × × × × × ST × × × × × C B A × × × × × × × 0 × × × × × 0 0 0 … … × × × × × × × 0 × × × × × 1 1 1 1)8路模拟通道选择 图6-5中使用的是线选法,口地址由P2.0确定,同时和写信号相或取反后作为开始转换的选通信号。因此,该ADC0809的通道地址确定如下:
若无关位都取0,则8路通道IN0~IN7的地址分别为0000H~0007H。当然,口地址也若无关位都取0,则8路通道IN0~IN7的地址分别为0000H~0007H。当然,口地址也 可以由单片机其它片选不用的口线,或者由几根口线经过译码后来提供,这样,8路通道的地址也就有所不同。 2)转换数据的传送 ①定时传送方式 ADC0809转换时间为128μs,设计一个延时子程序,A/D转换启动后即调用这个延时子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
②查询方式 A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。因此,可以用查询方式,软件测试EOC的状态,即可确知转换是否完成,然后进行数据传送。EOC的状态是高电平表明转换是完成。 ③中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
MOV DPTR,#0000H ;选中通道0 MOVX A, @DPTR ;信号有效,输出转 换后的数据到A累加器
四、任务实施 1、 硬件设计 数字电压表硬件设计如图6-6所示。U1为单片机AT89C51,U3为A/D转换器AD0808,采用的是共阳极数码管显示,四个数码管的片选为P2.0、P2.1、P2.2、P2.3,低电平为选中,段码从P0口输出。
LED_0 EQU 30H LED_1 EQU 31H LED_2 EQU 32H ;存放段码 ADC EQU 35H CLOCK BIT P2.4 ;定义ADC0808时钟位 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 2、软件设计 数字电压表程序设计如下:
START: MOV LED_0,#00H MOV LED_1,#00H MOV LED_2,#00H MOV DPTR,#TABLE ;段码表首地址 MOV TMOD,#02H MOV TH0,#245 MOV TL0,#00H MOV IE,#82H SETB TR0 WAIT: CLR ST SETB ST CLR ST ;启动AD转换
SETB OE MOV ADC,P1 ;读取AD转换结果 CLR OE MOV A,ADC MOV B,#100 ;AD转换结果转换成BCD码 DIV AB MOV LED_2,A MOV A,B MOV B,#10 DIV AB MOV LED_1,A MOV LED_0,B
LCALL DISP SJMP WAIT INT_T0: CPL CLOCK ;提供ADC0808时钟信号 RETI DISP: MOV A,LED_0 ;显示子程序 MOVC A,@A+DPTR CLR P2.3 MOV P0,A LCALL DELAY SETB P2.3 MOV A,LED_1 MOVC A,@A+DPTR CLR P2.2 MOV P0,A
LCALL DELAY SETB P2.2 MOV A,LED_2 MOVC A,@A+DPTR CLR P2.1 MOV P0,A LCALL DELAY SETB P2.1 RET DELAY: MOV R6,#10 ;延时5毫秒 D1: MOV R7,#250 DJNZ R7,$ DJNZ R6,D1 RET
TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END
3、仿真调试 图6-7 数字电压表仿真调试结果
五、总结与提高 1、选择A/D转换器时应主要考虑的问题: 精度、转换速度。为了达到一定的精度,对电源的精度也有要求,因为电源的精度直接影响A/D转换器转换精度。 2、几种常见的A/D转换器性能比较: 并行A/D转换器的特点是转换速度快、价格较昂贵,主要用于要求高速度的场合;逐次逼近型A/D转换器是一种在速度、精度和价格上都处于适中位置的最常用的A/D转换器;双积分A/D转换器具有精度高、抗干扰性能好、价格低廉等优点,其缺点是转换速度慢。 所以,选择A/D转换器时要综合考虑上面两方面的问题。
项目六、A/D D/A转换器接口 任务2.锯齿波发生器电路设计 能力目标 1、能用AT89C51单片机和DAC0832进行硬件连接 2、能利用AT89C51单片机通过D/A转换器DAC0832进行数字到模拟信号转换 学习内容 一、任务要求 利用AT89C51单片机和DAC0832制作一个波形发生器。要求DAC完成锯齿波的电路波形输出设计。
二、任务分析 当给DAC0832一个从00H至FFH连续变化的数字输入时,DAC0832输出相应的从0~5V模拟电压,可以通过示波器观察到DAC0832输出的这种锯齿波变化的波形,改变DAC0832输入端变化的速度,可以看到输出端的锯齿波的频率在发生变化,由此可以利用单片机控制DAC0832的输入来使之输出端产生锯齿波。
三、学习知识 (一)认识并正确选用D/A转换器 1、D/A转换器性能指标 (1)分辩率 分辨率是D/A转换器对输入量变化敏感程度的描述,与输入数字量的位数有关。如果 数字量的位数为n,则D/A转换器的分辨率为2-n。 (2)建立时间 建立时间是描述D/A转换速度快慢的一个参数,指从输入数字量变化到输出达到终值误差±(1/2)LSB(最低有效位)时所需的时间。
(3)接口形式 D/A转换器与单片机接口方便与否,主要决定于转换器本身是否带数据锁存器。有两类D/A转换器,一类是不带锁存器的,另一类是带锁存器的。对于不带锁存器的D/A转换器,为了保存来自单片机的转换数据,接口时要另加锁存器,因此这类转换器必须在口线上;而 带锁存器的D/A转换器,可以把它看作是一个输出口,因此可直接在数据总线上,而不需另加锁存器。
2、典型D/A转换器芯片DAC0832 图6-9 DAC0832内部结构框图 图6-8 DAC0832引脚图
•DI7~DI0:转换数据输入。 •ILE:数据锁存允许信号(输入),高电平有效。 • :片选信号(输入),低电平有效。 :第1写信号(输入),低电平有效。 上述两个信号控制输入寄存器是数据直通方式还是数据锁存方式,当ILE=1和 =0时,为输入寄存器直通方式;当ILE=1和 =1时,为输入寄存器锁存 方式。 • :第2写信号(输入),低电平有效。 • :数据传送控制信号(输入),低电平有效。
•Iout1:电流输出1。 •Iout2:电流输出2。 DAC转换器的特性之一是:Iout1+Iout2=常数。 •Rfb:反馈电阻端。 DAC0832是电流输出,为了取得电压输出,需在电压输出端接运算放大器,Rfb即为运算放大器的反馈电阻端。运算放大器的接法如图6-10所示。 •Vref:基准电压,其电压可正可负,范围是-10V~+10V。 • AGND:模拟地。 •DGND:数字地。
(二)DAC0832单缓方式的接口与应用 1、单缓冲方式连接 所谓单缓冲方式就是使DAC0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者说两个输入寄存器同时受控的方式。 图6-11 DAC 0832单缓冲方式接口
2、单缓冲方式应用举例——产生锯齿波 图6-12 用DAC产生锯齿波
在许多控制应用中,要求有一个线性增长的电压(锯齿来控制检测过程,移动记录笔或移动电子束等)。对此可通过在DAC0832的输出端接运算放大器,由运算放大器产生锯齿波来实现,电路连接如图6-12所示。图中的DAC8032工作于单缓冲方式,其中输入寄存器受控,而DAC寄存器直通。假定输入寄存器地址为7FFFH,产生锯齿波的源程序清单如下:
ORG 0200H DASAW: MOV DPTR,#7FFFH ;输入寄存器地址,假定P2.7接片选信号 MOV A,#00H ;转换初值 WW: MOVX @DPTR,A ;D/A转换 INC A NOP NOP NOP AJMP WW
执行上述程序,在运算放大器的输出端就能得到如图6-13所示的锯齿波。对锯齿波的产生作如下几点说明:执行上述程序,在运算放大器的输出端就能得到如图6-13所示的锯齿波。对锯齿波的产生作如下几点说明: ①程序每循环一次,A加1,因此实际上锯齿波的上升边是由256个小阶梯构成的,但 由于阶梯很小,所以宏观上看就是如图6-13中所表示的线性增长锯齿波。 ②可通过循环程序段的机器周期数计算出锯齿波的周期,并可根据需要,通过延时的办法来改变波形周期。当延迟时间较短时,可用NOP指令来实现(本程序就是如此); 锯齿波的斜率就不同。当需要延迟时间较长时,可以使用一个延时子程序。延迟时间不同,波形周期不同,
图6-13 D/A转换产生的锯齿波 ③通过A加1,可得到正向的锯齿波;如要得到负向的锯齿波,改为减1指令即可实现。 ④程序中A的变化范围是0~255,因此得到的锯齿波是满幅度的。如要求得到非满幅锯齿波,可通过计算求得数字量的初值和终值,然后在程序中通过置初值判终值的办法即可实现。用同样的方法也可以产生三角波、矩形波、梯形波,请读者自行编写程序。
(三)DAC0832双缓冲方式的接口与应用 1、双缓冲方式连接 所谓双缓冲方式,就是把DAC0832的两个锁存器都接成受控锁存方式。 图6-14 DAC 0832的双缓冲方式连接
2、双缓冲方式应用举例 双缓冲方式用于多路D/A转换系统,以实现多路模拟信号同步输出的目的。例如使用单片机控制X-Y绘图仪。 对X-Y绘图仪的控制有两点基本要求:一是需要两路D/A转换器分别给X通道和Y通道提供模拟信号,二是两路模拟量要同步输出。两路模拟量输出是为了使绘图笔能沿X-Y轴作平面运动。
MOV R1,#DATA X坐标数据单元地址 MOV R0,#0F0H X向输入寄存器地址 MOV A,@R1 X坐标数据送A MOVX @R0,A X坐标数据送输入寄存器 INC R1 指向Y坐标数据单元地址 INC R0 指向Y向输入寄存器地址 MOV A,@R1 Y坐标数据送A MOVX @R0,A Y坐标数据送输入寄存器 INC R0 指向两个DAC寄存器地址 MOVX @R0,A X、Y转换数据同步输出 假定X方向DAC 0832输入寄存器地址为F0H,Y方向DAC0832输入寄存器地址为F1H, 两个DAC寄存器公用地址为F2H;X坐标数据存于DATA单元中,Y坐标数据存于DATA+1单元中,则绘图仪的驱动程序为:
四、任务实施 1、 硬件设计 图6-17 锯齿波波形发生器硬件原理图