单片机教案第8章ADDA转换接口.docx
- 文档编号:3480334
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:14
- 大小:84.35KB
单片机教案第8章ADDA转换接口.docx
《单片机教案第8章ADDA转换接口.docx》由会员分享,可在线阅读,更多相关《单片机教案第8章ADDA转换接口.docx(14页珍藏版)》请在冰点文库上搜索。
单片机教案第8章ADDA转换接口
第九章A/D、D/A转换接口
模/数、数/模转换技术在数字测量和数字控制技术中非常重要。
本章着重从应用角度分析几种典型的A/D,D/A电路芯片及与8031的接口逻辑以及相应的程序设计。
9-1数模D/A转换器DAC0832
9.1.1DAC0832芯片的结构原理
一、芯片结构
DAC0832是CMOS工艺制造的8位单片D/A转换器,芯片采用的是双列直插封装结构。
二、功能特点
1、分辨率为8位。
2、只需在满量程下调整其线性度。
3、可与所有的单片机或微处理器直接接口,也可单独使用。
4、电流稳定时间1ms。
5、可以双缓冲(速度快),单缓冲可直通数据输入。
6、低功耗,200mW。
7、逻辑电平输入与TTL兼容。
8、单电源供电(+5V或+15V)。
三、引脚功能
1、DI0~DI7:
8位数字量数据输入端(内部为8位数据寄存器)。
2、AGND:
模拟信号输出的接地端。
3、DGND:
数字信号输入的接地端。
4、
、
:
模拟电流信号输出端,
与
的和为常数且
与DAC寄存器的内容线性变化。
5、
:
工作电源。
6、
:
反馈信号输入端。
芯片内已有反馈电阻。
在片外一般接运放的输出端。
7、
:
基准电压输入端。
(由外部电路提供的,可在-10V~+10V内选取)
8、ILE:
数据锁存允许信号输入端,高电平有效。
9、
:
8位数据寄存器的选通信号输入端,低电平有效。
10、
:
输入寄存器写选通信号输入端,低电平有效。
11、
:
DAC寄存器写选通信号输入端,低电平有效。
12、
:
数据转移控制信号输入端,低电平有效。
13、
、
:
为内部两个寄存器的输入锁存端。
⑴当
=ILE·
·
=0时,8位输入寄存器的输出跟随输入变化;
当
=ILE·
·
=1时,数据锁存在输入寄存器中,不再变化。
⑵当
=
·
=0时,8位DAC寄存器的输出跟随输入变化;
当
=
·
=1时,数据锁存在DAC寄存器中,不再变化。
因此:
由ILE、
确定,
由
、
确定。
四、工作原理
1、DAC0832是电流型D/A转换电路,输入数字量,输出模拟量,通过运算放大器将电流信号转换成单端电压信号输出。
2、由于输出的模拟信号,极易受到电源和数字信号的干扰而发生波动,因此为提高模拟信号的精度,一方面将“数地”和“模地”分开(各自独立),另一方面采用了高精度的
基准电源与“模地”配合使用。
9.1.2MCS-51单片机与DAC0832的接口
一般有两种接口方式:
1、单缓冲器连接方式;2、双缓冲器连接方式。
一、单缓冲器连接方式
DAC0832内部的两个寄存器(输入/DAC)中的任一个都是处于常通状态的(即共用一个地址。
见上图用P2.7同时做输入/DAC寄存器的地址——7FFFH——0111111111111111B),相当于是一个寄存器。
当数据进入了输入寄存器后,同时也写入了DAC寄存器,故称单缓冲器连接方式。
[单缓冲器软件编程实例]设计一个生成锯齿波的程序
WAVE:
MOVDPTR,#7FFFH;提供一个地址给输入/DAC寄存器
MOVA,DATA0;取数字量的初值
LOOP:
MOVX@DPTR,A;将数字量送入DAC0832进行A/D转换
CJNEA,DATAEND,MORE;不为最大值就转到MORE处;若为最大值程序往下执行
SJMPWAVE;转到WAVE处,继续转换
MORE:
INCA;数字量加1,
SJMPLOOP;将增大的数字量继续送入DAC0832进行转移
二、双缓冲器连接方式(以两片DAC0832为例)
1、双缓冲器的工作特点
先将要转换的数字量保存在输入寄存器中,在适当的时候,再由输入寄存器送至DAC寄存器锁存并进行D/A转换输出。
2、双缓冲器的连线特点
输入寄存器和DAC寄存器各占用一个I/O地址,所以每片DAC0832芯片工作在双缓冲方式时需要两个地址。
⑴1#DAC0832的输入寄存器用P2.7选通;
(单独地址,设为1#地址—7FFFH——0111111111111111B)
⑵2#DAC0832的输入寄存器用P2.6选通;
(单独地址,设为2#地址—0BFFFH——1011111111111111B)
⑶1#和2#DAC0832的DAC寄存器合用P2.5选通;
(共用地址,设为3#地址—0DFFFH——1101111111111111B)
[双缓冲器编程实例]对应上电路,试编写一个输出一组同步信号的程序
[设计思路]:
1、由于上电路的两个输入寄存器不同地址,因此可以将两组不同的数字信号分时输入给这两个输入寄存器中;
2、又由于上电路的两个DAC寄存器同地址,因此又可以同时将存放在输入寄存器中的数据下传给各自的DAC寄存器进行D/A转换,同步输出。
(即:
两路数字信号输入不同步,而转换后的两路模拟信号输出同步)
[编制程序]:
MOVDPTR,#7FFFH;提供1#输入寄存器的地址(P2.7=0)
MOVA,DATA1;将一组数字信号送入累加器A
MOV@DPTR,A;再转送到1#输入寄存器中
MOVDPTR,#0BFFFH;提供2#输入寄存器的地址(P2.6=0)
MOVA,DATA2;将另一组数字信号送入累加器A
MOV@DPTR,A;再转送到2#输入寄存器中
MOVDPTR,#0DFFH;提供3#地址(即1#和2#DAC寄存器的地址P2.5=0)
MOV@DPTR,A;同时转换后两路模拟量,实现同步输出
9-2模数A/D转换器ADC0809
9.2.1ADC0809芯片的结构原理
一、芯片结构
ADC0809是COMS工艺、采用逐次逼近法的8位A/D转换芯片,共有28个引脚,双列直插式封装,片内除A/D转换部分外,还有多路模拟开关部分。
二、功能特点
1、采用了8路模拟量的分时输入(模拟开关),最多允许8路模拟量分时输入。
2、共用一个A/D转换器进行模/数转换。
3、内部主要有四大部分组成:
①8路模拟开关;
②8位A/D转换器;
③三态输出锁存器;
④地址锁存译码器。
三、引脚功能
1、IN0~IN7:
8个输入通道的模拟量输入端。
2、D0~D7:
8位数字量输出端。
3、START:
转换的启动信号输入端。
加上正脉冲后,A/D转换才开始进行。
(在正脉冲的上升沿,所有内部寄存器清0;在正脉冲的下降沿,开始进行A/D转换。
在此期间START应保持低电平。
)
4、ALE:
地址锁存信号输入端。
高电平时把3个地址信号A、B、C送入地址锁存器,并经过译码器得到地址输出,以选择相应的模拟输入通道。
5、A、B、C:
转换通道的地址(8位模拟开关的地址)信号输入端。
ALE锁存信号
C
B
A
接通的通道
1
0
0
0
IN0
1
0
0
1
IN1
1
0
1
0
IN2
1
0
1
1
IN3
1
1
0
0
IN4
1
1
0
1
IN5
1
1
1
0
IN6
1
1
1
1
IN7
6、EOC:
转换结束信号输出端。
在START下降沿后10
左右,EOC为低电平,表示正在进行转换;转换结束时,EOC返回高电平,表示转换结束。
EOC常用于A/D转换状态的查询或作中断请求信号。
7、OE:
输出允许控制输入端。
OE直接控制三态输出锁存器输出数字信息。
OE输入0,数字输出口为高阻态;OE输入1,允许转换后结果输出。
8、CLK:
时钟信号输入端。
ADC内部没有时钟电路,故需外加时钟信号。
其最大允许值为640KHz,在实用中,需将主机的脉冲信号降频后接入。
9、
和
:
A/D转换器的参考电压输入端。
10、Vcc:
芯片的电源电压输入端。
因为ADC0809是CMOS芯片,所以允许的电压很宽,可以从+5V~+15V。
11、GND:
接地端。
9.2.2MCS-51单片机与ADC0809芯片的接口
一、8051与ADC0809的实用接口电路
1、ADC0809的时钟由8051输出的ALE信号二分频后提供。
2、ADC0809的通道地址A、B、C选由8051的P0口的低3位直接提供。
3、启动ADC0809的工作时序
⑴先由P0口的低3位给出模拟通道的地址给A、B、C。
⑵再由P2.0和
联合(逻辑或)提供一个信号给ADC0809芯片的START端和ALE地址锁存端。
⑶假定选中ADC0809的IN0通道,我们可知此时的通道地址由P2和P0组成(P2=11111110,P0=11111000)即为:
0FEF8H
⑷A/D转换完毕后,再由EOC发出一个正脉冲通知8051。
⑸8051在收到EOC的正脉冲信号后,产生一个
信号并与P2.0联合(逻辑或)提供一个信号给ADC0809芯片的OE端。
⑹OE端有效后,打开输出锁存器三态门,8位数字信息就被读入CPU。
⑺以上所有的动作都是在程序的导引下,一步一步的完成的。
二、8051与ADC0809的实用接口电路的程序
有两种结构的程序:
一种是采用查询方式结构的程序,另一种是采用中断方式结构的程序。
1、查询方式结构的程序
[实例]将6路通道的模拟信号进行A/D转换,并把转换结果顺序存放到以0A0H为首地址的RAM中。
设:
数据暂存区的首地址为0A0H;需要进行A/D转换的模拟信号的通道个数N为6(N≤8)。
ADST:
MOVR1,#0A0H;设置数据存储区的首地址
MOVDPTR,#0EF8H;设置第一个模拟信号通道IN0的地址指针
MOVR2,#06H;设置待转换的通道个数
LOOP:
MOVX@DPTR,A;启动A/D转换器
……;延时至A/D转换完毕(约10
)
MOVXA,@DPTR;CPU读取转换结果
MOV@R1,A;结果送入0A0H单元中
INCDPTR;指向下一个模拟信号通道
INCR1;修改数据存储区的地址
DJNZR2,LOOP;若还未转换完6路通道的信号则转至LOOP处继续转换。
以上程序仅对6路通道的模拟量进行了一次A/D转换,实用中则要反复多次的或者定时的循环检测转换。
2、中断方式结构的程序
由主程序和中断服务程序合成,中断源设为
。
[主程序(初始化程序)]
ADST:
MOVR1,#0A0H;设置数据存储区的首地址
MOVR2,#06H;设置待转换的通道个数
SETBIT1;将中断源
设为下降沿触发
SETBEA;设为允许中断(总允许)
SETBEX1;设中断源
为允许中断
MOVDPTR,#0EFF8H;设置第一个模拟信号通道IN0的地址指针
MOVX@DPTR,A;启动A/D转换器
MOVA,R2;通道数送入累加器A中
LOOP:
JNZLOOP;如果6路通道未转换完毕,则在原地等待
[中断服务子程序]
MOVXA,@DPTR;CPU读取转换结果
MOVX@R1,A;结果送入数据存储区的单元中
INCDPTR;指向下一个模拟信号通道
INCR1;修改数据存储区的地址
MOVX@DPTR,A;启动A/D转换器的下一个通道
DECR2;修改(递减)通道数
MOVA,R2;新的通道数送入累加器A中
RETI;中断返回
9-2数/模D/A与模/数A/D转换器的主要技术指标
一、分辩率
分辩率是转换器能够分辩最小信号的能力。
对于N位转换器,实际分辩率为模拟量满量程的
。
如:
用一个8位的A/D转换器去转换一个满量程为5V的模拟电压,则它能分辩的最小电压为:
。
因此我们称这样的转换器为8位或20mV分辩率的转换器。
二、转换误差
转换误差是反映转换器的实际转换值与理论值之间的误差。
如:
具有8位分辩率的A/D转换器,当输入0~5V电压时,所对应的数字量为在00H~FFH。
即当模拟量每变化19.53mV时,数字量就变化1(二进制数)。
但模拟量在大部分情况下都不是19.53mV的整数倍,所以只能将模拟量“四舍五入”靠近相近的数字量。
若模拟量为25mV时,被转成01H;模拟量为32mV时被转成02H。
因此最大误差为1/2个最低有效位(常用
1/2LSB表示),故我们称上转换器的最大转换误差为:
三、转换速度
转换速度是指D/A或A/D转换器完成一次转换所需过程的全部时间。
一般小于
。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 教案 ADDA 转换 接口