微机原理与接口技术(八)

  • 模拟量输入输出通道
  • D/A转换器
  • A/D转换器

模拟量输入输出通道

模拟量I/O通道:

见图160

160

模拟量的输入通道中的主要部件

  • 传感器(Transducer)
    • 非电量→电压、电流
  • 变送器(Transformer)
    • 转换成标准的电信号
  • 信号处理(Signal Processing)
    • 放大、整形、滤波
  • 多路转换开关(Multiplexer)
    • 多选一
  • 采样保持电路(Sample Holder,S/H)
    • 保证变换时信号恒定不变
  • A/D变换器(A/D Converter)
    • 模拟量转换为数字量

模拟量的输出通道

  • D/A变换器(D/A Converter)
    • 数字量转换为模拟量
  • 低通滤波
    • 平滑输出波形
  • 整型、放大、驱动
    • 提供足够的驱动电压,电流

闭环控制系统应用案例

水泥厂增湿塔出口温度控制系统

见图161

161

无线传感器接口

见图162

162

D/A转换器

  • D/A转换器的基本工作原理
  • D/A转换器的主要技术指标
  • 典型D/A转换器芯片及应用

1.D/A转换器的基本工作原理

  • 组成
    • 模拟开关
    • 电阻网络
    • 运算放大器

见图163

163

基本变换原理

  • 当运放的放大倍数足够大时,输出电压VO与输入电压Vin的 关系为:
    • V0 = - Rf / R * Vin

见图164

164

  • 若输入端有n个支路, 则输出电压VO与输入电压Vi的关系为:
    • V0 = - Rf ∑ 1/Ri * Vin

见图165

165

n=8 的权电阻网络

见图166

166

  • 如果每个支路由一个开关Si控制,Si=1表示Si合上,Si=0表 示Si断开,则上式变换为

    • V0 = - ∑ 1/2^i^ * SiVref
      • 若Si=1,该项对VO有贡献
      • 若Si=0,该项对VO无贡献
  • 如果用8位二进制代码来控制图中的S1~S8 (Di=1时Si闭合; Di=0时Si断开),则不同的二进制代码就对应不同输出电压VO

  • 当代码在0~FFH之间变化时,VO相应地在 0~(255/256)Vref之间变化

  • 为控制电阻网络各支路电阻值的精度,实际的D/A转换器采用 R-2R梯形电阻网络,它只用两种阻值的电阻(R和2R)。

实际的D/A转换器——R-2R梯形电阻网络

见图167

167

2.主要技术指标

  • 分辨率(Resolution)

    • 输入的二进制数每±1个最低有效位 (LSB,Least Significant Bit) 使输出变化的程度。
  • 分辨率表示方法:

    • 可用输入数字量的位数来表示,如8位、10位等;
    • 也可用一个LSB 使输出变化的程度来表示。
  • 例:

    • 一个满量程为5V的10位D/A变换器的分辨率为:
    • 5/(2^10^-1) = 5/1023= 0.04888V= 48.88mV

转换精度(误差)

实际输出值与理论值之间的最大偏差

  • 影响转换精度的因素:
    • 分辩率、电源波动、温度变化…

转换时间

  • 从开始转换到与满量程值相差±1/2 LSB所对应的模拟量所 需要的时间

见图168

168

3.典型D/A转换器DAC0832

  • 特点
    • 8位电流输出型D/A转换器
    • T型电阻网络
    • 差动输出

1)主要引脚功能

  • 输入寄存器控制信号:
    • D7~D0:输入数据线
    • ILE:输入锁存允许
    • #CS:片选信号
    • #WR1:写输入锁存器
  • DAC寄存器的控制信号:
    • #WR2:写DAC寄存器
    • #XFER:允许输入锁存器的数据传送到DAC寄存器

见图169

169

2)DAC0832的内部结构

见图170

170

3)工作模式

  • 单缓冲模式
  • 双缓冲模式
  • 无缓冲模式
单缓冲模式
  • 使输入锁存器或DAC寄存器二者之一处于直通,即芯片只占用一 个端口地址。

  • CPU只需一次写入即开始转换。写入数据的程序为:

    1
    2
    3
    MOV DX,PORT
    MOV AL,DATA
    OUT DX,AL
  • 单缓冲模式应用例:

    • 利用所示线路图在VOUT端输出三角波

      见图171

      171

    • 输出三角波程序(不考虑频率和幅值调整):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
            MOV DX,0278H
      MOV AL,0
      NET1: OUT DX,AL
      INC AL
      CMP AL,0FFH
      JNZ NET1
      DEC AL
      NET2: OUT DX,AL
      DEC AL
      CMP AL,0
      JNZ NET2
      JMP NET1
      双缓冲模式(标准模式)
  • 输入寄存器和DAC寄存器均需控制。

    • 当输入寄存器控制信号有效时,数据写入输入寄存器中,并同时位 于DAC寄存器的输入端;
    • 在DAC寄存器控制信号有效时,数据写入DAC寄存器,并启动变换。
  • 此时芯片占用两个端口地址。

  • 优点:

    • 数据接收与D/A转换可异步进行
    • 可实现多个DAC同步转换输出。
    • 分时写入、同步转换
  • 工作时序

    见图172

    172

  • 双缓冲模式同步转换例:

    见图173

    173

    1
    2
    3
    4
    5
    6
    7
    8
    MOV AL,data
    MOV DX,port1
    OUT DX,AL ;0832-1的输入寄存器地址
    MOV DX,port2
    OUT DX,AL ;0832-2的输入寄存器地址
    MOV DX,port3
    OUT DX,AL ;DAC寄存器地址
    HLT
    无缓冲器模式
  • 使内部的两个寄存器都处于直通状态。模拟输出始终跟随输入变化。

  • 不能直接与数据总线连接,需外加并行接口(如74LS373、8255等)。

4.D/A转换器的应用

  • 信号发生器 → 向D/A转换器写入某种按规律变化的数 据,即可在输出端获得相应的各种波形
  • 用于闭环控制系统

A/D转换器

  • 用于将连续变化的模拟信号转换为数字信号的装置,简 称ADC,是模拟系统与计算机之间的接口部件。

  • A/D转换器类型:

    • 计数型A/D转换器 → 速度慢、价格低,适用于慢速系统
    • 双积分型A/D转换器 → 分辩率高、抗干扰性 好、转换速度慢,适 用于中速系统
    • 逐位反馈型A/D转换器 → 转换精度高、速度 快、抗干扰性差。
  • 要点:

    • A/D转换器的一般工作原理
    • A/D转换器的主要技术指标
    • A/D转换器的应用
      • 与系统的连接
      • 数据采集程序的编写

1.A/D转换器的工作原理

  • 逐位反馈型A/D转换器

    • 类似天平称重量时的尝试法,逐步用砝码的累积重量去逼近被称物体

      见图174

      174

2.主要技术指标

  • 转换精度

    • 量化误差
      • 量化误差=1/2 △
        • 量化间隔(△)=Vmax /(2^n^-1)
          • (2^n^-1)为字长
    • 非线性误差
    • 其它误差
  • 例:设满量程电压=10V,A/D变换器位数=10位,则:

    • 其量化间隔(分辨率)= 10V / 1023 ≈ 9.78mV
    • 量化误差 = 1 / 2 △ ≈ 4.89mV

其他指标

  • 转换时间
    • 实现一次转换需要的时间。精度越高(字长越长),转换速 度越慢。
  • 动态范围
    • 允许转换的电压范围

3.典型的A/D转换器芯片

  • ADC0809:
    • 8通道(8路)输入
    • 8位字长
    • 逐位逼近型
    • 转换时间100μs
    • 内置三态输出缓冲器

主要引脚功能

  • D7~D0 → 输出数据线(三态)
  • IN0~IN7 → 8通道(路)模拟输入
  • ADDA、ADDB、ADDC → 通道地址
  • ALE → 通道地址锁存
  • START → 启动转换
  • EOC → 转换结束状态输出
  • OE → 输出允许
  • CLK → 时钟输入(10KHz~1.2MHz)

内部结构

见图175

175

工作时序

见图176

176

ADC0809的工作流程

见图177

177

判断转换结束的方法

  • 软件延时等待(比如延时120us)
    • 此时不用EOC信号,CPU效率最低
  • 软件查询EOC状态
    • 查询控制方式
  • 把EOC作为中断申请信号,接到中断控制器的IN端。
    • 在中断服务程序中读入转换结果,效率较高

ADC0809的应用

  • 硬件连接
    • 通常情况下A/D转换器需要经数字接口与系统连接
  • 数据采集程序设计
    • 从数据采集到存储

ADC0809与系统的连接

  • 一般需通过数字接口与系统连接
    • 获取转换结果及状态信息(EOC)需通过输入接口
    • 选择通道地址、输出地址锁存(ALE)及启动变换(START) 信号需通过输出接口
    • 由于ALE和START信号的特点,通常将两者并联后,连接到数 字输出接口。

见图178

178

  • 当仅采集单路模拟量时
    • 此时通道可由硬件确定,系统无须输出通道地址,则也无须地址锁存。
  • 当循环采集多路模拟量时
    • 系统须通过软件方式循环输出不同的通道地址,及相应的地址锁存信号。

ADC0809与系统的连接例

单路模拟量输入:

见图179

179

多路模拟量输入:

见图180

180

循环数据采集程序流程

见图181

181

I/O接口系统综合设计示例详解I

  • I/O数字接口

示例1

  • 设某8253的端口地址范围为FFE8H—FFEBH,输入该芯片的时钟频率为2MHz。

  • 要求

    • 设计芯片与系统的接线图,并编写程序实现在OUT1产生周期为1s的连续方波。
  • 题目分析

    • 工作时钟频率:2MHz

    • 8253端口地址:FFE8H—FFEBH

      • 端口地址范围:1111 1111 1110 10XX
    • 8253 OUT1端输出周期为1s的连续方波

      • 计数初值:1s/0.5us=2000000
        • 超出16bit计数器可存储的最大值,需要2个计算通道级联实现
    • 可以选择将外部时钟信号接入通道0的CLK0,其OUT0输出接入CLK1,作为通道1的时钟信号。

    • OUT0输出连续方波,工作频率设置为1KHz。

      • 原则:两通道计算初值乘积=2000000

      • CLK0:2MHz,OUT0:1KHz,CNT0计数初值=2000

        CLK1:1KHz,OUT1:1Hz,CNT1计数初值=1000

见图182

182

示例2

  • 通过三态门循环检测OUT 0 端的状态

    • 若为低电平 , 则等待
    • 若为高电平,则读取拨段开 关的当前位置 ,并将开关的当前位置状态用七段数码管 显示出来 。
  • 有任意键按下时 ,工作结束 。

  • 分析:

    • 由给定条件得8255 CNT0的计数初值:
      • 1.148MHz/1Hz=1148000>65536
    • 需要两级分频。可利用CNT1实现。

见图183

183

  • 由图得7段数码管编码:

    符号 “0” “1” “2” “3” “4” “5” “6“ ”7“
    七段码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H
  • 8253输出端连接图:

    见图184

    184

  • CNT1的输出脉冲频率设置的原则:

    • 使两级分频时的计数初值在允许范围内。

8253初始化程序:

见图185

185

I/O 控制程序

见图186

186

I/O接口系统综合设计示例详解II

  • I/O数字与模拟接口

示例1:

  • 某炉温控制电路原理图如图所示。图中,8位A/D转换器的输入模拟量范围为0~5V。要求将炉温控制在允许的范围内(其对应的上限值和下限值分别为MAX和MIN)。若低于下限或高于上限(超出阈值),则调用控制算法子程序F(X),将子程序运算的结果(在AL中)从8255的PB口输出,对炉温进行调节。否则,继续执行以上操作,直到有键按下时才退出。

见图187

187

硬件系统设计

  • 8255接口地址范围: 0011 1010 0000 ~ 0011 1010 0011 (部分地址译码 )

  • 硬件系统原理示意图:

    见图188

    188

  • 题目分析:

    • A/D转换器为单路模拟量输入;

    • 由A/D转换器工作时序,可得出其工作流程:

      • 启动变换
      • 若#EOC=0,则转换结束
      • 使OE=1
      • 读取转换结果。

      见图189

      189

  • 程序控制流程

    见图190

    190

  • 程序块

    见图191

    191

示例2

  • 设计一个简单的水库水位监视系统。要求:

    • 通过ADC0809的IN0端监测水位的高低。
    • 系统始终监视水位的高低变化,水位到达最高点的90%时开始报警,扬声器 发出0.5秒500Hz和0.5秒1KHz交替变化的声音,报警灯点亮;
    • 水位恢复正常后,系统不再报警。
  • 设计:

    • 利用8253产生音频报警信号。设地址范围:F814H~F817H
    • 利用8255控制ADC0809的A/D转换和报警控制。地址范围:F800H~F803H
  • 题目分析:

    • 单路数据采集,无需设定通道地址,无需送地址锁存信号

    • ∵ADC0809输入为最大模拟量值时,输出数字量=FFH。

      ∴水位到达最高点的90%时,对应的数字量是230(E6H)

    • 扬声器发出0.5秒500Hz和0.5秒1KHz交替变化的声音

      • 需要利用8253两个通道分别发出500Hz和1KHz频率的连续方波,另外一个通道产 生周期为0.5秒的连续方波信号作为上述两通道的选题控制信号。
        • 8253的三个通道全部工作于方式3,计数初值
          • 通道0 :50kHz/500Hz=100;
          • 通道1:50kHz/1kHz=50;
          • 通道2:50kHz/1Hz=50000
        • 利用PC0启动报警(输出高电平启动)。

硬件系统设计

见图192

192

芯片初始化:

见图193

193

控制程序:

见图194

194

课程结束总结

主要内容

  • 计算机基础知识
  • 8088 微处理器与总线
  • 8086 CPU指令集
  • 汇编语言程序设计方法
  • 半导体存储器及其接口设计
  • 输入输出技术及输入输出接口

1.计算机基础知识

  • 熟练掌握三种常用计数制及BCD码的表示及其相互间的转换
  • ACCII码的概念
  • 二进制数的算术运算
    • 无符号数的运算
    • 补码的运算
    • 溢出问题
  • 逻辑运算、逻辑门和译码器

2.微处理器

  • 微型计算机系统组成

  • 8088CPU主要引线的功能

  • 8088CPU的内部结构和工作原理

  • 8088CPU时序

    • 时钟周期、总线周期
  • 内部寄存器组

    • 内部寄存器种类、数量、功能及其内容的含意
  • 存储器寻址

    • 段基地址,偏移地址,逻辑地址,物理地址,编址方式
  • 了解总线的基本概念

3.8086指令系统

  • 8种寻址方式
  • 指令系统
    • 数据传送类
    • 算术运算类
    • 逻辑运算和移位
    • 串操作
    • 程序控制
    • 处理器控制
指令系统
  • 指令格式
    • 单操作数,双操作数,零操作数
  • 各指令对操作数的要求
  • 指令的执行原理
    • 串操作指令,转移和调用类指令,循环类指令

4.汇编语言程序设计

  • 汇编程序设计过程
  • 汇编语言源程序的结构
  • 操作数中的数据项和表达式
  • 伪指令
  • DOS功能调用
  • 简单汇编语言源程序的设计

5.存储系统

  • 半导体存储器的分类及其特点
  • Cache的基本概念
  • 存储器系统设计
    • 译码电路及其他控制信号
    • 存储器扩展技术

6.输入输出技术及输入输出接口

  • I/O接口、I/O端口的的概念和端口的编址方式
  • 常用简单接口芯片及其应用
  • 4种基本输入输出方法的特点
  • 中断技术
  • 可编程数字接口
  • 模拟接口

设计实现简单I/O接口控制系统(I/O控制程序,硬联电路)