微机接口笔记9-DA转换器、键盘

D/A转换器

参数

  • 转换精度:实际输出与理论值之间的误差
  • 分辨率:对微小变化的敏感程度,能识别的最小电压增量
  • 建立时间:输入数字量到转换完成的时间
  • 转换速率:输出模拟电压的变化速度
  • 线性误差:偏离理想转换特性的最大值

工作方式

  • 两级锁存方式
  • 一级锁存方式
  • 无锁存方式

A/D转换器

参数

  • 分辨率:能够分辨最小信号的能力
  • 转换精度:D/A转换电路实际输出与理论值之间的误差
  • 转换速率:完成一次A/D转换所需要的时间的倒数表示

    基本工作原理

    计数式A/D转换器

    双积分式A/D转化器

    逐次逼近式A/D转化器

    D/A实现A/D

连接时考虑的问题

输入模拟电压的连接

输入模拟电压可以是单端, 也可以差动。VIN(-),VIN(+)或IN(-),IN(+)

数据输出线和系统总线的连接

三态输出,和数据总线的连接

启动信号的供给

电平启动或脉冲启动

转换结束信号以及转换数据的读取

程序查询方式、中断方式、CPU等待方式、固定的延迟程序方式

模拟电路和数字电路的接地问题

模拟接地和数字接地

键盘

行扫描法

1
2
3
4
5
6
7
8
9
10
11
WAIT:   
MOV AL, 0
MOV DX, OUTPORT ;往所有线上输出低电平
OUT DX, AL
MOV DX, INPORT
IN AL, DX ;读取列值
CMP AL, 0FFH ;看有没有列线处于低电平
JZ WAIT ;没有则循环等待
DONE:
CALL DELAY ;有,则延迟取抖动
...

行反转法

将行线接一个并行口,工作在输出方式;列线接一个并行口,工作在输入方式;让CPU通过输出向各行线上送低电平,再读入列线的值。若有键按下,必定会使某一列线的值为0,这时在对并行端口进行方式设置,使行线输入,列线输出,从而读到行线的输入值。从而得到唯一的行值与列值。

1
2
3
4
5
6
7
8
9
10
WAIT1:
MOV AL, 0 ;往端口A输出全0
OUT PORTA, AL ;
IN AL, PORTB ;输入列值
CMP AL, 0FFH ;比较查看是否有键闭合
JZ WAIT1 ;若无键闭合则等待
PUSH AX ;否则保留列值
PUSH AX
CALl DELAY
...