IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【汇编与接口】ADA转换器 -> 正文阅读

[嵌入式]【汇编与接口】ADA转换器

模拟量接口

在计算机应用系统中,采集对象往往是连续变化的物理量,因此需要对连接变化的物理量进行采样、保持,再把模拟量转换为数字量交给计算机处理。计算机输出的数字量有时需要转换为模拟量去控制某些执行元件。

  • A/D转换器完成++模拟量->数字量++的转换
  • D/A转换器完成++数字量->模拟量++的转换

A/D转换器

A/D转换器就是把模拟量转换成数字量的过程。
数字量便于计算机的处理,是自动控制过程的重要步骤。
A/D转换的原理很多,常见的有双积分式、逐次逼近式、计数式等。输出码制有二进制、BCD码等;输出数据宽度(二进制)有8位、12位、16位、20位等。

A/D转换器的主要技术指标

  1. 分辨率
    指A/D转换器能够把模拟量转换成二进制数的位数。

例:用1个10位ADC转换一个满量程为5V的电压,则可能分辨的最小电压率为5000mV/1024=5mV。若模拟输入值小于5mV,则ADC无反应,输出保持不变。

可见,**ADC的数字量输出位数越多,其分辨率就越高。**当分辨率大于微机系统数据总线宽度时,每次转换都需要两次数据的传输。

  1. 转换时间
    从转换启动开始到转换结束,得到稳定的数字量输出所需要的时间。
    转换时间的快慢将会影响ADC接口与CPU交换数据的方式。对于低中速的ADC一般采用查询或中断方式,对于高速的ADC应采用DMA方式。
    低速:查询/中断
    高速:DMA

A/D转换器的外部特性

任何一种A/D转换器一般具有以下信号线:

  1. 模拟信号输入线,有单通道与多通道之分。
  2. 数字量输出线,线的数目决定了分辨率。
  3. 转换启动线(输入),每次启动只能转换一次数据。
  4. 转换结束线(输出),表示ADC作一次转换结束的状态。

A/D转换器与CPU接口的原理和方法

A/D转换器与CPU的连接

  1. ADC的启动信号
    :有脉冲启动 和 电平启动两种。
  2. ADC的输入信号
    :有单通道和多通道之分。
  3. ADC的输出信号
    ADC输出是否有三态锁存;
    ADC的分辨率是否与系统数据总线一致。
  4. ADC的转换结束信号
    :作为查询和中断的依据。

A/D转换器的数据传输

数据的传送可采用查询、中断和DMA方式。不同的方式的电路组成和编程方法不同。

A/D采集的速度取决于:

  1. A/D转换器的转换时间T;
  2. 将数据存入内存所需要的数据传输时间$\tau$。(CSDN的md编辑器打不出来,就是很像t的那个读作tao的符号)
    则采集数据的频率上限为:
    f0=1/(T+$\tau$)
    上述几种方法采集数据的速度是:
查询中断DMA

A/D转换器接口控制程序

  1. 查询方式的数据采集程序框架
  • 接口芯片初始化(当采用可编程并行接口芯片时);
  • 选择数据采集通道号(当采用多通道A/D芯片时);
  • 启动A/D转换;
  • 查询转换结束状态;
  • 读取采集数据;
  • 将数据传输到存储器;
  • 在线进行数据处理(显示、打印、存盘等);
  • 采集未完,继续启动下一次转换;
  • 转换完成,退出。
  1. 中断方式数据采集程序框架
  • 接口芯片初始化(当采用可编程并行口芯片时);
  • 可屏蔽中断初始化,包括中断向量修改、中断申请的屏蔽等;
  • 选择数据采集通道号(当采用多通道A/D转换芯片时);
  • 启动A/D转换;
  • 开中断,并等待中断;
  • 转换结束信号申请中断;
  • 进入中断服务程序,在服务程序中读取数据,并将采集数据传输到存储器以及进行在线数据处理;
  • 采集数据未完,继续启动下一次转换;
  • 采集完成,返回。

A/D转换器接口设计

A/D转换器接口设计方案的分析

① ADC的模拟量输入是否是多通道?
② ADC的分辨率是否大于系统数据总线宽度?
③ ADC芯片内部是否有三态输出锁存器?
④ ADC的启动方式是脉冲触发还是电平触发?
⑤ A/D转换的数据采用哪种传输方式?
⑥ A/D转换的数据进行什么样的处理?
⑦ ADC接口电路采用什么元器件组成?

A/D转换器接口设计

例:查询方式的ADC接口电路设计

  1. 要求
    利用ADC0804采集100个数据,采集的数据以查询方式传输到内存BUFR区。接口电路采用普通IC芯片组成。
  2. 分析
    ADC0804是单个模拟量输入;
    ADC0804的分辨率为8位,并具有三态输出锁存器;
    ADC0804的启动方式为脉冲启动;
    数据传输方式为查询方式。


STARTP EQU 310H		      ; 转换启动端口 
STATEP EQU 311H		      ; 状态端口 
DATAP EQU 310H			; 数据端口 

DATA SEGMENT 
	BUFR DB 1000) 
DATA ENDS 
CODE SEGMENT 
	ASSUME CS: CODE, DS: DATA 
BEGIN: MOV SI, OFFSET BUFR	 ; 缓冲区指针 
	 MOV CX,100		       ; 采样次数 
START: MOV DX,STARTP	     	 ; 启动转换 
	 MOV AL,00H		       ;(可以是任意值) 
	 OUT DX,AL		       ; 使CS和WR同时有效 
WAIT1: MOV DX,STATEP		; 查转换结束 
	 IN AL,DX 
	 AND AL,80H		      ; 查D7=0(INTR=0?) 
	 JNZ WAIT1		      ; 未结束,等待 
	 MOV DX,DATAP		; 已结束,读数据 
	 IN AL,DX 
	 MOV[SI],AL		; 数据传输到BUFR区 
	 INC SI			;缓冲区地址加1 
	 DEC CX			; 采样次数减1 
	 JNZ START		      ; 未完,继续启动 
	 MOV AX,4C00H		; 已完,退出 
	 INT 21H 
CODE ENDS 
     END BEGIN 

例:中断方式的ADC接口设计

  1. 要求
    采用ADC0809,从通道7采集100个数据,采集的数据以中断方式传输到内存缓冲区,并将转换结束信号EOC连到IRQ4上,请求中断。
  2. 分析
    要实现上述要求,至少有3个方面的问题需要考虑:
    被控对象ADC0809的特性;
    接口电路结构形式;
    中断处理。




ADC0809的工作过程

根据时序图,ADC0809的工作过程如下:

  1. 把通道地址送到ADDA~ADDC上,选择模拟输入;
  2. 在通道地址信号有效期间,ALE上的上升沿该地址锁存到内部地址锁存器;
  3. START引脚上的下降沿启动A/D转换;
  4. 转换开始后,EOC引脚呈现低电平,EOC重新变为高电平时表示转换结束;
  5. OE信号打开输出锁存器的三态门送出结果。

接口电路结构形式:
采用可编程接口芯片82C55A

中断处理:
本例题是利用微机系统的中断资源,故不需做中断系统的硬件连接和82C59A的初始化。

只需做两件事:

  • 中断向量的修改(IRQ4);
  • 开放IRQ4的中断和CPU中断。
  1. 硬件设计
    本接口电路应能提供如下信号:
  • ADC0809模拟量通道号选择信号
  • 启动信号
  • 读数据允许信号
    (此前3个由82C55A接口芯片实现)
  • EOC的中断请求:直接连到系统总线的IRQ4上。

82C55A的4个端口地址是:
300H(A口)、301H(B口)、302H(C口)、303H(命令口)。


	MOV	DX,303H	   ;82C55初始化,A口输入
	MOV	AL,90H
	OUT	DX,AL
	MOV	AL,0EH	   ;置PC7=0,使START和ALE无效
	OUT	DX,AL
	MOV	AL,0CH	   ;置PC6=0,使OE无效
	OUT	DX,AL
	MOV	AX,350CH	   ;获取IRQ4的中断向量并保存
	INT	21H
	MOV	OLD-OFF,BX
	MOV	BX,ES
	MOV	OLD-SEG,BX
	CLI
	MOV	AX,250CH		;置新中断向量
	MOV	DX,SEG A-D
	MOV	DS,DX
	MOV	DX,OFFSET A-D
	INT	21H
	MOV	AX,DATA		;恢复数据段
	MOV	DS,AX
	STI
	IN	AL,21H		;开放IRQ4
	AND	AL,0EFH
	OUT	21H,AL
	MOV	CX,100		;设置采集字节数
	 MOV	DI,OFFSET BUFF	;设置内存指针
BEGIN:MOV	DX,303H		;82C55初始化,A口输出
	 MOV	AL,80H
	 OUT	DX,AL
	 MOV	DX,300H		;选择通道7
	 MOV	AL,07H
	 OUT	DX,AL
	 MOV	DX,303H		;启动转换
	 MOV	AL,0FH		;START启动(地址锁存)
	 OUT	DX,AL
	 NOP
	 MOV	AL,0EH           ;START启动(启动转换)
	 OUT	DX,AL
	 STI				;开中断
	 HLT				;等待中断
	 DEC	CX			;采样次数减1
	 JNZ	BEGIN			;没完,继续
	CLI			  ;已完,关中断
	MOV	AX,250CH	  ;恢复IRQ4的原中断向量
	MOV	DX,OLD-SEG
	MOV	DS,DX
	MOV	DX,OLD-OFF
	INT	21H
	MOV	AX,DATA	  ;恢复数据段
	MOV	DS,AX
	STI
	IN	AL,21H
	OR	AL,10H	  ;屏蔽IRQ4
	OUT	21H,AL
	MOV	AX,4C00H	  ;返回DOS
	INT	21H
A-D	PROC	FAR		  ;中断服务程序
	PUSH	AX		  ;保护现场
	PUSH	DX
	CLI			  ;关中断
	MOV	DX,303H	  ;打开三态锁存器
	MOV	AL,0DH
	OUT	DX,AL	  ;置PC6=1高
	MOV	DX,303H	  ;82C55初始化,A口输入
	MOV	AL,90H
	OUT	DX,AL
	MOV	DX,300H
	IN	AL,DX	   ;从PA口读数据
	MOV	AH,AL
	MOV	DX,303H
	MOV	AL,0CH
	OUT	DX,AL	   ;置PC6=0低
	MOV	[DI],AH	  ;存取数据
	INC	DI		  ;内存地址指针加1
	MOV	AL,20H	  ;发中断结束命令
	OUT	20H,AL
	POP	DX		  ;恢复现场
	POP	AX
	STI			  ;开中断
	IRET			  ;中断返回
A-D	ENDP

D/A转换器

D/A转换器的主要技术指标

  1. 分辨率
    指DAC能够把多少位二进制数转换成模拟量。

例:DAC0832能够把8位二进制数转换成电流,所以DAC0832的分辨率是8位。

  1. 转换时间
    从数字量输入到DAC完成转换所需要的时间。

D/A转换器的外部特性

DAC的外部信号线包括:

  1. 数字信号输入线;
  2. 模拟信号输出线
  3. CS信号线和WR(或WR1,WR2)信号线(注意都带上划线,即低电平有效),用于形成DAC的启动转换信号;
  4. 数据输入锁存控制线;
  5. 模拟量输出通道地址线。

D/A转换器与CPU接口的原理和方法

D/A转换器与CPU的连接

DAC与CPU的接口包括硬件连接和软件编程。DAC接口电路的结构形式也有下列几种:

  1. 采用中小规模逻辑芯片;
  2. 利用可编程并行I/O接口芯片;
  3. 采用GAL器件。

D/A转换器接口的主要任务

D/A与A/D有很多不同之处,表现在:

  1. DAC一般不需要专门的控制信号去触发,只要CPU把数据送到它的输入端,就开始转换。
  2. DAC不提供转换结束状态信号。

DAC主要解决的是:

  1. CPU与DAC之间的数据缓冲问题
  2. 当D/A转换器的分辨率大于数据总线的宽度时,CPU必须分两次传送和同时选通。

D/A转换器接口设计方案的分析

① DAC的模拟量输出是否是多通道?
② DAC的分辨率是否大于系统数据总线的宽度?
③ DAC芯片内部是否有三态输入锁存器?
④ DAC的启动方式,只有脉冲触发一种。DAC不设专门的转换启动信号,是利用CS和IOW共同进行假写操作,来实现脉冲启动的。
⑤ DAC的数据传输方式,只有无条件传输一种。
⑥ DAC接口电路采用什么元器件组成?

D/A转换器接口电路设计

例:DAC接口电路设计

  1. 要求
    通过DAC0832产生三角波、锯齿波、方波等。
  2. 分析
  • DAC0832是单通道模拟量输出,不需通道选择;
  • DAC0832有两级缓冲锁存器,它有3种工作方式:
    双缓冲方式、单缓冲方式和直通方式。

引脚功能:

  • CS:片选信号,与ILE配合选定芯片
  • ILE:输入锁存允许
  • WR1:写输入锁存器
    上述三个信号用于把数据写入到输入锁存器
  • WR2:写DAC寄存器
  • XFER:允许输入锁存器的数据传送到DAC寄存器
    上述二个信号用于启动转换
  • D7~D0:输入数据线
  • IOU1、IOU2:D/A转换差动电流输出,接运放的输入
  • Rfb:内部反馈电阻引脚,接运放输出
  • VREF:参考电压:-10V~+10V,一般为+5V或+10V
  • VCC: 芯片电源:+5V~+15V,最佳工作状态:+15V
  • AGND、DGND:模拟地和数字地

DAC0832有三种工作方式:

  1. 双缓冲方式(LE1和LE2分别控制)
    1:直通。输出随输入变化
    0:锁存
  2. 单缓冲方式(其中LE1和LE2有一个直通)
  3. 直通方式(LE1和LE2均为直通)

注:在DAC实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。

双缓冲方式(标准方式)
转换要有两个步骤:

  • 将数据写入输入寄存器
    • CS=0、WR1=0、ILE=1 -> WR1=1
  • 将输入寄存器的内容写入DAC寄存器
    • WR2=0、XFER=0 -> WR2=1

优点:
数据接收与D/A转换可异步进行;
可实现多个DAC同步转换输出。
++分时写入、同步转换++




软件设计:三角波程序

8255初始化
	MOV DX,303H 	;8255的命令口
	MOV AL,10000000B ;8255的方式字
	OUT DX,AL     	
;指定B口控制DAC的转换
	MOV DX,301H    	;8255A的B口地址
	MOV AL,00010000B	;置DAC0832为直通工作方式
	OUT DX,AL  		
 ;生成三角波的循环
	MOV DX,300H    	;8255A的A口地址
	MOV AL,0H   	;输出数据从0开始
L1:OUT    DX,AL
    INC    AL		;输出数据加1
    JNZ    L1	  	;AL是否加满?未满继续
    MOV    AL,0FFH	;已满,AL置全1
L2:OUT    DX,AL 
    DEC    AL		;输出数据减1
    JNZ    L2		;AL是否减到0?不为0继续
    JMP    L1		;为0,AL加1 



  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:59:12  更:2022-02-06 14:00:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:43:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码