第12章数模模数转换器文档格式.docx
- 文档编号:17540408
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:25
- 大小:346.70KB
第12章数模模数转换器文档格式.docx
《第12章数模模数转换器文档格式.docx》由会员分享,可在线阅读,更多相关《第12章数模模数转换器文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
●RD--芯片的读取控制信号,CS=0且RD=0时,则读取数据。
CS=0且RD信号在上升沿时,将INTR信号设置为1。
●WR--使芯片开始转换的触发信号,低电平动作。
●CLK--A/D芯片的工作时钟输入引脚,其最快的时钟输入不可太高(一般低于1MHz),也可以配合CLKR引脚用RC电路组成振荡工作时钟,其振荡频率为F=1/(1.1RC),一般R取10K。
●CLKR--时钟输出引脚,可配合上述CLK引脚和RC电路,提供芯片动作的工作时钟。
8.2AD0804接口设计
AD0804做接口设计时可以使用以下3种工作模式:
(1)连续转换方式;
(2)软件询问方式;
(3)中断控制方式。
(1)连续转换方式
图8-2是ADC工作于连续转换的电路,模拟信号(O~5V)由VI(+)引脚输入,转换为8位的数字信号由AT89S52的端口P1输入,线路中由R、C提供ADC所需的工作时序,实际的工作频率约为910kHz。
控制信号CS,RD直接接地,使芯片一直工作,只要信号一转换完毕即将数字信号输出在数据总在线,但是开始时应给出一个低电平的脉冲信号到WR引脚,告诉ADC开始做数据转换,一旦数据转换完毕后,INTR引脚会变低电平,此信号又告诉ADC重新做信号转换,一直持续做信号转换,以此电路做A/D控制最为方便。
图8-2工作于连续转换方式的电路连接图
(2)以软件询问方式
图8-3是以软件询问方式来控制ADC动作的电路,ADC的数字数据送至AT89S52的端口P1,端口P3做额外的控制信号产生,WR引脚产生低电平的脉冲告诉ADC开始做信号转换,等待INTR降为低电平(P3.2=0)即信号转换完毕,再由RD引脚输出低电平信号以读取数字信号.在RD信号回升到高电平时,将INTR信号复位为高电平状态。
图8-3软件询问方式控制ADC动作的电路
(3)中断控制方式
图8-3是以软件询问方式做处理必须使用循环,随时检测INTR信号是否降为低电平,同样的电路可以使用中断的方式来做控制,当INTR降为低电平时即表示ADC信号已转换完毕,此信号接到AT89S52的INT0(P3.2)引脚,可以产生中断的信号,在程序中只要设计好中断服务程序来读取转换完毕的数字信号,一但产生中断便会自动去执行中断服务程序,平时可以处理其它软件程序的工作。
输入电压与转换数值关系:
若输入电压为V经过ADC转换为数值DATA,二者的关系如下:
V=(C/255)×
5。
8.3由AT89S52读取ADC转换值
知道AD0804的操作原理,就可以做ADC转换的实验,实验以连续转换方式来控制A/D芯片操作,将所读取到的转换数据采样,经过RS232通信接口返回PC而显示在屏幕上。
图8-4连续方式来控制ADC动作的电路连接图
如图8-4是以连续方式来控制ADC动作的电路,在ADC的输入端(第6引脚位),接有一可变电阻(VRl),当VRI调整在中央时,在输入端所显示的电压为2.5V,因此由ADC所读到的数值数据应为128,十六进制为80H,如果随意调整可变电阻,便可以产生可变化的直流电压输入,相应的ADC读取到的数值数据也不同。
(1)执行结果
在PC上先执行RS232通讯程序,如SE.EXE,其通讯协议为(9600,N,8,1)即波特率9600bps,传送8位数据,没有奇偶校验位,1位停止位,再执行AT89S52控制程序,若VRI调整在中央时,此时PC屏幕画面出现如下:
TESTA/DAD0804,....,
READDATANORPLALSHOULDBE7FB,80H,81H....
80H81H80H81H81H81H81H81H8lB
调整可变电阻,则输入端的直流电压会有变化,经过ADC转换读取到的数字数据也会有变化。
(2)程序8-1.ASM
;
--------------------
LFEQU0AH
CREQU0DH
----------------------
READAD0804DATAAND
SENDDATAOUTTOPC
ORG0H
JMPBEGIN
BEGIN:
MOVSP,#60H
MOVR5,#10
CALLDELAY
CALLINIT_RS232
SHOWMESSAGE
MOVDPTR,#MESS
CALLTX_STR
MOVDPTR,#MESS1
AGAIN:
READINDATAFROMP1
MOVA,P1
CALLHEX_OUT
MOVR5,#50
JMPAGAIN
---------------------
DELAYR5*10ms
DELAY:
MOVR6,#50
$1:
MOVR7,#100
$2:
DJNZR7,$2
DJNZR6,$1
DJNZR5,DELAY
RET
LED_BL:
MOVR4,#2
$0:
CPLP1.7
MOVR5,#5
DJNZR4,$0
INIT_RS232:
MOVSCON,#50H
MOVTMOD,#20H
MOVTH1,#0FDH
SETBTR1
SETBTI
TX_CHAR:
JNBTI,$
CLRTI
MOVSBUF,A
TX_STR:
CLRA
MOVCA,@A+DPTR
CJNEA,#'
$'
$1
CALLTX_CHAR
INCDPTR
JMPTX_STR
--------------------------
MESS:
DB"
TESTA/D0804"
LF,CR,'
MESS1:
READDATANORMALSHOULDBE7FH,80H,81H....."
LF,CR,'
ASCT:
0123456789ABCDEF"
HEX_OUT:
;
将数字数据由RS232接口传回PC
IN:
AHEX_VALUEEX:
38H
OUT:
RS232O/P"
38H"
PUSHA
MOVDPTR,#ASCT
SENDBYTE1
ANLA,#F0H
SWAPA
SENDBYTE2
POPA
ANLA,#0FH
SENDOUT'
H'
AND'
'
MOVA,#'
-------------------
END
8.4并行A/D转换器ADC0809及其接口电路
ADC0809是8通道8位CMOS逐次逼近式A/D转换器,是美国国家半导体公司产品,是目前国内应用较广泛的8位通用A/D芯片。
8.4.1主要性能指标
●分辨率为8位。
●最大不可调误差:
±
11SB。
●单电源+5V供电,基准电压由外部提供,典型值为+5V。
●具有锁存控制的8路模拟选通开关。
●输出电平与TIL电平兼容,可锁存三态输出。
●功耗15mW。
●转换速度取决于芯片的时钟频率。
时钟频率范围:
10-1280kHz,当CLK=500kHz时,转换时间为128us
8.4.2.引脚功能和典型连接电路
图8-5为ADC0809引脚图,图8-6为ADC0809与AT89S52的典型连接电路。
说明如下:
●
IN0-IN7:
8路模拟信号输人端。
●ADDA、ADDB、ADDC:
3位地址码输入端。
8路模拟信号转换选择由A、B、C决定。
A为低位,C为高位,与低8位地址中AO-A2连接。
ADDA、ADDB、ADDC通道选择信号,其输入电平的组合选择模拟通道IN0~IN7之一:
ADDC、ADDB、ADDA模拟通道
000IN0
001IN1
……
111IN7
●IN1~IN7:
八路A/D通道。
●CLK:
外部时钟输人端。
时钟频率高,A/D转换速度快。
允许范围为10~1280KHz,典型值为640kHz,此时A/D转换时间为l00us。
通常由AT89S52ALE端直接或分频后与0809的CLK端相连接。
当AT89S52无读写外RAM操作时,ALE信号固定为CPU时钟频率的l/6,若晶振为12Mtlz,则1/6为2MHz时,A/D转换时间为32us。
●D0-D7:
数字量输出端。
●OE:
A/D转换结果输出允许控制端。
当OE端为高电平时,允许将A/D转换结果从DO-D7端输出。
通常由AT89S52的RD端与0809片选端(例如P2.0)通过或非门与08090的OE端相连接。
当DPTR为FEFFH且执行MOVXA,@DPTR指令后,
和P2.0均有效,或非后产生高电平,使0809的OE端有效,0809将A/D转换结果送入数据总线P0口,CPU再读入A中。
●ALE;
地址锁存允许信号输入端。
0809可依次转换8路模拟信号,8路模拟信号的通道地址由0809的ADDA、B、C端输入,0809的ALE信号有效时将当前转换的通道地址锁存。
(注意809ALE与AT89S52ALE的区别)。
●START:
启动A/D转换信号输入端。
当START端输入一个正脉冲时,立即启动0809进行A/D转换。
START端与ALE端连在一起,由AT89S52WR与0809片选端(例如P2.0)通过或非门相连,当DPTR为FEF8H时,执行MOVX@DPTR,A指令后,将启动0809模拟通道0的A/D转换。
FEF8H~FEFH分别为8路模拟输入通道的地址。
执行MOVX写指令,并非真的将A中内容写进0809,而是产生
信号和P2.0有效,从而使0809的START和ALE有效,且输出A/D通道地址A0~A2。
事实上也无法将A中内容写进0809,0809中没有一个寄存器能容纳A中内容,0809的输入通道是IN0-IN7,输出通道是DO-D7,因此,执行MOVX@DPTR,A指令与A中内容无关,但DPTR地址应指向片选地址和当前A/D的通道地址。
●EOC:
A/D转换结束信号输出端。
当启动0809A/D转换后,EOC输出低电平;
转换结束后,EOC;
输出高电平,表示可以读取A/D转换结果。
该信号取反后,若与AT89S52引脚INTO或INTI连接,可引发CPU中断,在中断服务程序中读取A/D转换的数字信号。
若AT89S52的两个中断源已用完,则EOC也可与P1口或P3口的任一条端线相连,采用查询方式,查得EOC为高电平后,再读A/D转换值。
●UREF(+)、UREF(-):
正负基准电压输入端。
基准电压的典型值为+5V,可与电源电压(+5V)相连,但电源电压往往有一定波动,将影响A/D精度。
因此,精度要求较高时,可用高稳定度基准电源输入。
当模拟信号电压较低时,基准电压也可取低于5v的数值。
●Vcc:
正电源电压(+5V)。
●GND:
接地端。
8.4.3.ADC0809应用实例
A/D转换,可用中断、查询和延时等待三种方式编制程序。
图8-6电路连接图
按图8-6用中断方式对8路模拟信号依次A/D转换一次,并把结果存入以60H为首址的内RAM中。
程序8-2.ASM
ORG00H
JMPMAIM
ORG0013H;
INT1中断入口地址
LJMPINT1
-------------------------------------------------
MAIM:
MOVR0,#60H;
置数据存储区首址
MOVR2,#08H;
置八路数据采集初值
SETBIT1;
设置边延触发中断
SETBEA
SETBEX1;
开放外部中断1
MOVDPTR,#7FF8H;
指向0809通道0
RD:
MOVX@DPTR,A;
启动A/D转换
HE:
MOVA,R2;
八路巡回检测数送A
JNZHE;
等待中断,八路未完继续
---------------------------------------------------
INT1:
MOVXA,@DPTR;
读取A/D转换结果
MOV@R0,A;
向指定单元存数
INCDPTR;
输入通道数加1
INCR0;
存储单元地址加1
MOVX@DPTR,A;
启动新通道A/D转换
DECR2;
待检通道数减1
RETI;
中断返回
END
8.4.4延时等待方式
工作在延时等待方式时,0809EOC端可不必与AT89S52相连,而是根据时钟频串计算出A/D转换时间,略微延长后直接读A/D转换值。
如图8-6中,若0809的EOC端开路,fosc=12MHz,试用延时等待方式编制程序,对8路模拟信号依次A/D转换一次,井把结果存入以50H为首址的内RAM中。
程序8-3.ASM
ORG00H
JMPMAIM
MOVR0,#50H;
MOVR6,#17H;
延时68US
DJNZR6,$
存储单元地址加1
DJNZR2,RD
JMPMAIM;
返回
查询方式与延时等待方式的区别是,前者是在启动A/D后,不断查询,直到EOC变为高电平,表明A/D转换结束后,读A/D值;
后者是在启动A/D后延迟一段时间直接读A/D值,而根本不管EOC是低电平还是高电平,这样延迟时间必须大于0809A/D转换时间,其根据是0809A/D转换时间与0809CLK有固定关系,转换一次需以64个时钟周期。
综上所述,上述三种A/D工作方式,中断方式最方便灵活,但要占用一个外中断资源;
查询方式不占用外中断资源,但要占用CPU工作时间和占用一条l/O口线;
延时等待方式,不占用CPU资源,但要占用CPU工作时间。
8.5串行A/DADC0832及其接口电路
ADC083I/0832/0834/0838是具有多路转换开关的8位串行A/D转换器,末位数1、2、4、8为其转换通道数,转换速度较高(250kHZ换时间32us),单电源供电,功耗低(15mW),现以ADC0832为例,介绍其与AT89S52接口及应用。
8.5.1.ADC0832引脚功能
图8-7为ADC0832芯片引脚。
●VDD、VSS:
电源、接地端,VDD同时兼任UREF。
●CS:
片选端,低电平有效。
图8-7ADC0832引脚图
Dh数据信号输入端。
●DO:
数据信号输出端。
时钟信号输入端,要求低于600kHz。
●CH0、CHi:
模拟信号输入端(双通道)。
8.5.2硬件连接电路
图8-8应用接口电路
图8-8为A1DC0832与AT89S52典型应用接口电路,图中:
P1.0片选CS;
TXD发送时钟信号输入ADC0832CLK;
RXD与DI、DO端连接在一起,根据ADC0832特点,DI端在接收主机起始和通道配置信号后关断,直至CS再次出现下跳变,DO端在Dl端有效期间始终处于三态,因此DI端与DO端可与RXD端连接在一起,不会引起冲突。
8.5.3串行A/D转换工作时序
图8-9为ADC0832串行A/D转换工作时序,从图中看出,其工作时序分为两个阶段,第一阶段为起始和通道配置,由CPU发送,从ADC0832端输入;
第二阶段为A/D转换数据输出,由ADC0832从Do端输出,CPU接收。
图8-9ADC0832串行A/D转换工作时序
(1)起始和通道配置
该阶段由4个时钟脉冲组成。
在片选CS满足条件(完成从高到低的跳变)后,第1个时钟脉冲的上升沿,测得DI=1,既启动ADC0832。
第2、3个时钟脉冲上升沿输入A/D通道选择:
00和01为差分输入,10和11为单端输入。
第3个时钟脉冲下降沿,DI关断。
第4个时钟脉冲是ADC0832使多路转换器选定的通道稳定,DO脱离高阻状态。
(2)A/D转换数据串行输出
ADC0832输出的A/D转换数据分为二帧,第一帧从高位(MSB)到低位(LSB),第二帧从低位到高位,二帧数据合用一个最低位,共需要15个时钟脉冲。
8.5.4.软件编程
按图8-8电路,试编制程序,将CHO、CHI通道输入的模拟信号A/D转换,分别存入30H、31H中。
程序8-4.ASM
ORG00H
JMPAD0832
AD0832:
MOVSCON,#00H;
置串口方式0,禁止接受
CLRES;
串口禁止
MOVR0,#30H;
置A/D数据存储区首地址
CLRP1.0;
片选0832
MOVA,#06H;
置CHO通道配置
ADC0:
MOVSBUF,A;
启动A/D
ADC1:
JNBTI,ADC1;
串行发送启动及通道置信号
CLRTI;
清发送中断标志
SETBREN;
允许(启动)串行接收
ADC2:
JNBRI,ADC2;
接收第一字节
CLRRI;
清接收中断标志,同时启动接收第二字节
MOVA,SBUF;
读第一字节数据
MOVB,A;
暂存
ADC3:
JNBRI,ADC3;
接收第二字节
清接收中断标志
读第二字节数据
ANLA,#0FH;
第二字节屏蔽高4位
ANLB,#0F0H;
第一字节屏蔽低4位
ORLA,B;
组合
SWAPA;
高低4位互换,组成正确的A/D数据
MOV@R0,A;
存A/D数据
指向下一存储单元
MOVA,#0EH;
置CH1通道配置
CJNER0,#32H,ADC0;
判两通道A/D完毕否?
未完继续
CLRREN;
两通道A/D完毕,禁止接收
SETBP1.0;
清0832片选
RET;
JMPADC0
说明:
①AT89S52串行口发送和接收数据次序均为先低位后高位,启动和通道配置信号;
06H=00000110B,AT89S52发送时先发低位,次序为;
01100000,ADC0832接收的第1个“1”为启动信号,紧跟着的“10”位通道配置信号CH0,再后面的一个“0”为稳定位(对应于第4个CLK),最后3位:
“000”,ADC0832输出串行A/D数据D7D6D5,由于AT89S52尚未允许串行接收(REN=0),因此丢失,直至AT89S52允许串行接收(REN=1),AT89S52TXD端再次发出CLK脉冲,至AT89S52SBUF装满,接收第一字节的8位数据为见图8-10a(注意先接收低位D4);
清串行接收中断标志后,启动串行接收第二字节,其数据见图8-10b;
组合后的8位数据见图8-10c;
高低4位互换后的8位数据见图8-10d。
②启动接收第二字节时,SBUF存有第一字节数据,尚未读出,那么接收的第二字节会不会冲掉第一字节数据?
不会。
因为AT89S52串口接收的SBUF为双缓冲结构。
图8-10
③若AT89S52串行口用于串行通信,可用p0~p3口中其他端口虚拟CLK时钟脉冲,实现串行A/D,限于篇幅,本书不予展开。
但需要注意CLK时钟脉冲的频率应低于600kHz,不足时用NOP填充。
上述电路和程序也仅适用于fosc=7.2MHz以下。
8.6数模转换器
数模转换器简称DAC(Digital-AnalogConverter)是将数字信号转换成连续的模拟信号的组件,一般用在数字接口或微处理机的接口输出控制上,典型的应用有以下几种:
数字雷射唱盘CD的放音转换;
计算机VGA适配卡中的显像输出转换电路;
直流马
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12 数模 转换器