1
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
9.2 PS-2304数字量 I/ O接口板简介
9.3 BCD码并行数字信号的采集
第 9章 数字信号的采集
9.4 车速脉冲信号的采集计数
2
SDUT
数据采集与处理
第 9章 数字信号的采集
传送方式
并行
串行
数字信号的采集与其传送方式有关。
采集方法
用 8255芯片采集并行数据
用 RS-232口采集串行数据
3
SDUT
数据采集与处理
第 9章 数字信号的采集
9.1 8255A可编程外围接口芯片
1,用途和结构
用途,用于接收并行传输的数字信号、
脉冲信号和开关信号。
结构
其引脚和内部结构如图 9.1所示 。
4
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
8 2 5 5 A - 5
P B 2
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 P A 4
P A 5
P A 6
P A 7
R E S E T
D0
D1
D2
D3
D4
D5
D6
D7
U c c
P B 7
P B 6
P B 5
P B 4
P B 3
WR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
P A 3
P A 2
P A 1
PA
0
RD
CS
G N D
A1
A0
P C 7
P C 6
P C 5
P C 4
P C 3
P C 2
P C 1
P C 0
P B 0
P B 1
( a )
图 9.1 8255A-5引脚和内部结构框图
端口 A
端口 C
(高 )
端口 C
(低 )
端口 B
PA7~ PA0
PC7~ PC4
PC3~ PC0
PB7~ PB0
A组
控制
器
数据总
线缓冲
B组
控制
器
D7~ D0
计算机
外界
RD
WR
A1
A0
RESET
CS
读 /写
逻辑
(b)
5
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
由此图可知:
8255有 3个端口
端口 A 是一个 8位数据输出/输入锁存器 。
端口 B 是一个 8位数据输入/输出锁存器。
端口 C 是一个 8位数据输出/输入缓冲器。
端口 C 还可以分成两个 4 位的端口 。
6
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
有 2组控制器
A组,控制端口 A和端口
C的高 4位
B组,控制端口 B和端口
C的低 4位
有数据总线缓冲、读/写逻辑芯片
2,工作方式
8255A芯片有三种工作方式。
7
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
方式 0 — 基本的输入/输出方式,
特点
⑴ 任何端口都可用做输入 /输出
⑵ 输出可被锁存,输入不能锁存
⑶ 有 16种输入/输出组态
方式 1— 选通的输入/输出方式。
8
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
特点
⑴ A,B组各有一个 8位数据口和一
4位控制/数据口
⑵ 8位数据口的输入/输出均可锁存
⑶ 端口 C的 4 位传送 8 位数据口控制
/状态信息
它与方式 0的不同之处在于,
借助选通或应答式联络信号,把 I/ O
数据与指定的端口进行发送或接收。
9
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
方式 2 — 带联络双向总线 I/ O方式 。
注意,此方式仅用于 A口 。
特点
⑴ 有一个 8位双向数据口和一个 5位
控制端口 C
⑵ 输入/输出均可锁存
⑶ 4位控制口用于 8位数据端口的控
制/状态信息
10
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
需要说明,在方式 1和方式 2中, 并未将端
口 C的所有位都用于传送控制
状态信息, 剩余的各位仍然可
以通过编程设定为输入/输出
用。
以上介绍的各种工作方式及组态,都
可以通过对 8255A的初始化来实现 。
11
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
3,初始化
8255A的初始化 — 将一个 8位控制码写
入 8255A的控制寄存
器。
基本要求,为了能正确地写入控制字,先
要了解 8255A控制寄存器中各
位的情况 。
8255A控制寄存器如图 9.2 所示 。
12
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
D7 D6 D5 D4 D3 D2 D1 D0
置方式标志:
方式选择:
端口 A:
端口 C高端,
方式选择:
端口 B:
端口 C低端:
图 9.2 8255A控制寄存器
00=方式 0; 01=方式 1
1X=方式 2
1=有效
1— 输入, 0— 输出
1— 输入, 0— 输出
0=方式 0,1=方式 1
1— 输入, 0— 输出
1— 输入 ; 0— 输出
13
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
∴ 8255初始化 —— 对 8255控制寄存器的
各位赋值。
【 例 9.1】 设 8255A的控制寄存器的地址为 63H,
初始化 A,C口为输入口, B口为输出
口 。 编写对 8255A初始化的汇编程序。
解,⑴ 确定控制码, 10011001
⑵ 8088汇编程序如下,
14
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
MOV AL,63H
MOV DI,AL
MOV AL,10011001B; 置 A,C口为输入口, B口为输出口
OUT DI,AL; 把 10011001B写入 8255A控制寄存器
15
SDUT
数据采集与处理
第 9章 数字信号的采集
9.2 PS-2304数字量 I/ O接口板简介
1,概述
主要性能
为 PC/ ISA 总线型接口板,广泛用于
PC微机 。
板上有三片 8255A芯片及若干个逻辑器
件组成,通过编程自由设定输入输出。
16
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
2,主要技术指标
输入输出路数,
输入输出电平,
控制方式:
电源要求,
72路
TTL
程序查询或中断服务
DC+5V,耗电流 <500 mA
环境温度, -10℃ ~ 50℃
17
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
2,使用
地址开关的设定
PS-2304板卡上有一个地址开关 K,如
图 9.3 所示的 。
图 9.3 地址开关 K
ON
1
A5
2
A6
3
A7
4
A8
5
A9
6
A10
7
18
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
设定其各位,就可以确定板卡端口及
控制寄存器的地址。
由图 9.3可以知道,地址开关 K 为 6 位
有效 。
ON/ OFF 状态与计算机地址线位内
容对应关系是,
ON — An = 1 OFF — An = 0
19
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
地址开关位与计算机地址线位的对
应关系如下:
K1 —— A5
K2 —— A6
K3 —— A7
K4 —— A8
K5 —— A9
K6 —— A10
K 的地址范围为 0300~ 031F,共 32个
连续地址 。
20
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
表 9.1 PS-2304板地址分配
芯片 A口 B口 C口 控制寄存器
JC9 0300H 0301H 0302H 0303H
JC10 0304H 0305H 0306H 0307H
JC11 0308H 0309H 030AH 030BH
0318H~ 031BH 写入:开中断
031CH~ 031FH 写入:关中断
21
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
板上接口插座
1 2 1 2 1 2
J C
8 2 5 5 A
J C
8 2 5 5 A
J C
8 2 5 5 A
3 3 34 3 3 34
Z
3 3 34
Z
ON
1 2 3 4 5 6
K
I R Q I R Q
PC
PC
。。。。。。
.
.
.
.
.
.
.,
.,
.,
.,
.,
.,
2
Z
4
9 10 11
PC
7
5
PC
PC
0
PC
1
PC
3
Z
1
2 3
1 3.
0 7 5.,
7
图9, 4 P S - 2 3 0 4 板结构
22
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
1 2
3 3 34 3 3 3 4
P A 1
P A 3
P A 5
P A 7
P C 7
P C 5
P C 3
P C 1
P B 7
P B 5
P B 3
P B 1
1 2
P A 0
P A 2
P A 4
P A 6
P C 6
P C 4
G N D
5V
P C 2
P C 0
P B 0
P B 2
P B 4
P B 6
G N D
P A 0
P A 2
P A 4
P A 6
P C 6
P C 4
G N D
5V
P C 2
P C 0
P B 0
P B 2
P B 4
P B 6
G N D
P A 1
P A 3
P A 5
P A 7
P C 7
P C 5
P C 3
P C 1
P B 7
P B 5
P B 3
P B 1
Z ZZ
图9, 5 插座与8 2 5 5 A 端口的对应关系
( a ) ( b )
Z1, Z2 插座各脚
号与 8255A的三个端口
对应关系如图 9.5(a)所
示 。
Z3 插座各脚与 8255
A的三个端口的对应关
系如图 9.5(b)所示 。
23
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
接口板初始化
【 例 9.2】 将 8255A芯片设置成 24路输入
状态 。
解,其控制命令字为 10011011B,即十六
BASIC语句为, OUT &H303,&H9B
进制的 9BH。
24
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
汇编程序为:
MOV AL,303H ; 确定 JC9的控制寄存
器地址
MOV DI,AL
MOV AL,9BH
OUT DI,AL ; 把控制字 9BH写入
JC9 的控制寄存器
25
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
8088寄存器结构,
通用寄存器
⑴ 数据寄存器
AX
AH,
AL,
字节乘
字节乘、字节除、字节 I/O、
转移、十进制算术运算
26
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
BX
BH,
BL,
CX
CH,
CL,
CX,串操作、循环次数
转移
变量移位、循环控制
27
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
DX
DH,
DL, 字乘、字除法、间接 I/ O
⑵ 地址指针寄存器 SP—
BP—
⑶ 变址寄存器 SI—
DI—
堆栈指针寄存器
基址指针寄存器
源变址寄存器
目的变址寄存器
28
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
段寄存器 CS —
SS —
DS —
ES —
控制寄存器 IP —
F —
代码段寄存器
堆栈段寄存器
数据段寄存器
附加数据段寄存器
指令指针寄存器
标志寄存器
29
SDUT
数据采集与处理
第 9章 数字信号的采集
9.3 BCD码并行数字信号的采集
以 BCD码 传送并行数字信号,在工程
中是一种常见方法,例如三坐标测量机坐
标位移信号的传送 。
三坐标测量机是一种测量设备,用来
测量工件上任意点的 X,Y,Z 三个坐标值 。
30
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
x
y
z
Z坐标轴
y坐标轴
x坐标轴
31
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
零
件
电测头
光栅尺
32
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
汽
车
外
轮
廓
33
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
曲
面
电测头
工件
支承件
34
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
发
动
机
气
缸
35
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
对
测
量
数
据
的
处
理
36
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
为此,在三坐标测量机的每个坐标方
向上安装了一根光栅尺来检测机器该方向
坐标位置的变化。
光栅尺输出的信号传送到与之相配套
的数显仪。
数显仪
处理后
① 用数码管以 6位十进制实数 +1
符号的形式,显示坐标值。
②以 BCD码并行输出坐标位移
信号。
37
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
光栅尺与数显仪 光栅尺定尺
数显仪 数码管
光栅尺动尺光栅尺
38
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
问题:
如何用 PC机和 PS -2304接口板采集 X坐
标的坐标位移值?
如何将采集到的 BCD 数字信号存入内
存和还原成十进制实数?
为了简化问题的讨论,这里只涉及无
符号坐标值的采集。
39
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
由第 2章编码一节可以知道,
在用 BCD码表示十进制数时, 1 位十
进制数用 4位二进制码表示,所以 6位十进
制数须用 24( 6× 4) 位二进制码表示。
8255A的 A,B,C端口均为 8 位,即
每个端口一次只能采集 8 位二进制码 ( 2位
十进制数 )。
40
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
对于 6 位十进制数, 须按图 9.6 所示,
A口采集十进制数的最高两位, B口采集
中间两位, C口采集最低两位。
41
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
数显仪插座与 PS -2304板连接,
图 9.6 8255A端口采集数据的分配
A口 B口 C口
1 2 3 4 5 6
42
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
D G N D
2 22 2 2 22 2 2 22 2 2 22 2 2 22 2 2 22 2
3 3 34
1 2
P A 0
P A 2
P A 4
P A 6
P C 6
P C 4
G N D
5V
P C 2
P C 0
P B 0
P B 2
P B 4
P B 6
G N D
P A 1
P A 3
P A 5
P A 7
P C 7
P C 5
P C 3
P C 1
P B 7
P B 5
P B 3
P B 1
ZZ
A口
1
23→ PA7
22→ PA6
21→ PA5
20→ PA4
2 2
2→ PA2
21→ PA1
20→ PA0
23→ PA3
B口
3
23→ PB7
22→ PB6
21→ PB5
20→ PB4
4 22→ PB221→ PB1
20→ PB0
23→ PB3 C口
5
23→ PC7
22→ PC6
21→ PC5
20→ PC4
6 2
2→ PC2
21→ PC1
20→ PC0
23→ PC3
1 2 3 4 5 6
43
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
选择 JC9 芯片的 PC0 位输入电测头发
出的采样脉冲信号。
由于 B口采集的 8位 BCD码中,高 4位
对应十进制整数,低 4位对应十进制小数,
因此需要把 8位 BCD 码分开。
如何把 8 位 BCD 码分开?
注意,在 0~ 9的范围内, 二进制码与 BCD
码是相同的 。
44
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
用 8255芯片采集 BCD码数据并在屏幕
上显示还原的十进制实数的过程如下:
把采集到的 3组 BCD码拆分成 6个 4位二
进制码 ;
分别存入内存中的 6个存储单元 ;
用 Quick BASIC语言的 PEEK语句从内
存中把数据读入到程序中的变量;
作字符串操作,将采集到的 BCD并行
数字信号还原成十进制实数。
45
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
8088汇编程序如下,
,MODEL MEDIUM
,STACK 256 ; 堆栈空间为 256;
,DATA
BCD1 DB?
BCD2 DB?
BCD3 DB?
46
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
BIN11 DB?
BIN12 DB?
BIN21 DB?
BIN22 DB?
BIN31 DB?
BIN32 DB?;
,CODE
PUBLIC PORT ; 说明成公共块; 以便 Quick BASIC程序调用
47
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
PORT PROC FAR
PUSH BP ; 保存原基址寄存器指针
MOV BP,SP ; 把堆栈指针放入基址寄存器
PUSH DS ; 保存原数据段地址
PUSH SI
PUSH DI
SUB AX,AX ; 把 0放入 AX
PUSH AX
MOV AX,_DATA ; 数据段的地址放入 DS
MOV DS,AX
48
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV AX,7000H ;设置段地址为 7000H
MOV ES,AX
MOV DI,1 ;设置内存起始单元
MOV DX,302H ;设置状态口地址
WAIT1,IN AL,DX ;读入状态信息
TEST AL,01H ;检查状态信息是否为 1
JNZ WAIT1 ;若为 1,循环等待测头离;开前一个采样点
WAIT2,IN AL,DX ;从状态口读入状态信息
TEST AL,01H ;检查状态信息是否为 0
49
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
JZ WAIT2 ;若为 0,循环等待测头接触工;件的另一个采样点
CALL ACQUDATA ;调用数据采集子程序
CALL HCONVT ;调用数据拆分子程序
CALL STORE ;调用数据存储子程序
POP AX
POP DI
POP SI
POP DS ;恢复原数据段地址
POP BP ;恢复原基址寄存器指针
50
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
RET ;退出汇编程序
PORT ENDP; 采集数据
ACQUDATA PROC NEAR
PUSH DX
PUSH SI
PUSH DI
PUSH AX
PUSH CX
MOV AL,10011011B ;设置控制字
51
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV DX,307H ;初始化 8255三口为输入口
OUT DX,AL
MOV DX,304H
IN AL,DX ;A口 采集第一组 BCD码
MOV DI,OFFSET BCD1
MOV [DI],AL ;存入 BCD1中保存
MOV DX,305H
IN AL,DX ;从 B口采集第二组 BCD码
MOV DI,OFFSET BCD2
MOV [DI],AL ;存入 BCD2中保存
52
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV DX,306H
IN AL,DX ;从 C口采集第三组 BCD码
MOV DI,OFFSET BCD3
MOV [DI],AL ;存入 BCD3中保存
POP CX
POP AX
POP DI
POP SI
POP DX
RET
ACQUDATA ENDP
53
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集; 把一组 BCD码拆分成二个 4位二进制码
HCONVT PROC NEAR
PUSH BX
PUSH SI
PUSH DI
MOV BX,OFFSET BCD1;BCD1的地址送入 BX寄存器
MOV SI,OFFSET BIN11;BIN11的地址送入 SI寄存器
MOV DI,OFFSET BIN12;BIN12的地址送入 DI寄存器
54
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
CALL HCONVTSUB;对第一组 BCD码进行拆分
MOV BX,OFFSET BCD2;BCD2的地址送入 BX寄存器
MOV SI,OFFSET BIN21;BIN21的地址送入 SI寄存器
MOV DI,OFFSET BIN22;BIN22的地址送入 DI寄存器
CALL HCONVTSUB;对第二组 BCD码进行拆分
55
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV BX,OFFSET BCD3;BCD3的地址送入 BX寄存器
MOV SI,OFFSET BIN31;BIN31的地址送入 SI寄存器
MOV DI,OFFSET BIN32;BIN32的地址送入 DI寄存器
CALL HCONVTSUB;对第三组 BCD码进行拆分
POP DI
POP SI
POP BX
56
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
RET
HCONVT ENDP; 拆分 BCD码
HCONVTSUB PROC NEAR
PUSH CX
MOV AL,[BX];将 BX寄存器中的内容传送到 AL寄存器
MOV CL,4 ;确定移位次数 ( 4次 )
SHR AL,CL ;将 AL逻辑右移 4次
MOV [SI],AL ;将 AL中的内容传送到 SI
57
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV AL,[BX] ;将 BX中的内容传送到 AL
AND AL,0FH ;屏蔽高 4位
MOV [DI],AL;将 AL中低 4位的内容传送到 DI
POP CX
RET
HCONVTSUB ENDP; 把数据存入内存
STORE PROC NEAR
PUSH ES
58
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
PUSH SI
MOV SI,OFFSET BIN11
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN11中的内容送入内存单元 1
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN12
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN12中的内容送到内存单元 2
59
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN21
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN21中的内容送到内存单元 3
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN22
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN22中的内容送到内存单元 4
60
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN31
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN31中的内容送到内存单元 5
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN32
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN32中的内容送到内存单元 6
61
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
POP SI
POP ES
RET
STORE ENDP
END
以上程序在计算机内存中段地址为 7000,
起始单元为 1的连续 6个内存单元中存放采集
到的 X坐标位移值 。
62
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
对于 Y,Z坐标值,同样可参照以上
介绍的方法, 完成坐标位移值的采集、
拆分和存储等操作 。
下面的程序完成还原十进制实数的操作。
DECLARE SUB PORT ( )
CALL PORT
DEF SEG = &H7000
′设定内存段地址为 7000H
DCLZ源程序如下,
63
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
A11 = PEEK(1), A12 = PEEK(2)
′从内存单元 1,2中读数据并赋予 A11,A12
B11 = PEEK(3), B12 = PEEK(4)
′从内存单元 3,4中读数据并赋予 B11,B12
C11 = PEEK(5), C12 = PEEK(6)
′从内存单元 5,6中读数据并赋予 C11,C12
DEF SEG ′取消设定的内存段地址
A11$ = STR$(A11), A12$ = STR$(A12)
′数值型数据转换成字符型数据
B11$ = STR$(B11), B12$ = STR$(B12)
′数值型数据转换成字符型数据
64
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
C11$ = STR$(C11), C12$ = STR$(C12)
′数值型数据转换成字符型数据
X$ = A11$ + A12$ + B11$ + "."
+ B12$ + C11$ + C12$
X = VAL(X$)
′将字符串还原成十进制实数 ( X坐标位移值 )
X = INT(X * 1000 +0.5) / 1000
LOCATE 4,52, PRINT SPACE$(10)
LOCATE 4,52, PRINT X
END
65
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
将以上汇编程序编译成一个目标文件,
并与 DCLZ 程序的目标文件连接成一个数
据采集程序 CAIZI。
运行 CAIZI程序,即可将 X坐标位移
值从 8255板卡经内存单元传送到相应的
Quick BASIC 程序中去 。
66
SDUT
数据采集与处理
第 9章 数字信号的采集
9.4 车速脉冲信号的采集计数
1,车速脉冲信号的变换
问题提出:
在对车辆的车速进行路面测试时,如
何得到车辆的直线行驶速度?
67
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
解决方法:
一般在车辆的后部增加一个测量轮。
测量轮的旋转轴上套装一个有 60个齿的
齿盘 。
68
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
在齿盘上
① 在侧面装反射式光电传感器
②面对圆周装磁阻式传感器
123
1 - - 拖拉机 2 - - 测试机架 3 - - 光电传感器
4 - - 齿形编码盘 5 - - 测量轮
图1 车辆工作速度测试装置
45
69
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
1 2 3
1 - - 测量轮 2 - - 齿形编码盘
3 - - 反射式光电传感器 4 - - 安装机架
4
图2 位移测试装置
70
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
工作原理:
当齿盘旋转一个节距时,传感器转换
输出一个近似于正弦波的信号,该信号经
滤波、放大和整形后,变成一个脉冲信号,
齿盘旋转一周,传感器转换输出 60个脉冲 。
由于测量轮是一个从动轮,即车辆前
进时带动该轮旋转。测量轮的圆周速度就
是车辆的车速,因此有如下关系:
71
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
)19( ???? NDv ?
式中 D — 测量轮直径 ( mm)
N — 测量轮转速 ( r/ min)
由式 ( 9-1) 可知,只要测量出测量轮
的转速,就可以得到车辆的车速。
那么,如何得知测量轮转速 N 呢?
72
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
由于测量轮每转一周输出 60个脉冲,
只需用计数器对脉冲信号在一秒钟内计
数,然后按一定关系式可算出转速。
2,脉冲信号的处理
设计数器的计数值为 C,测量轮每转
一周传感器输出的脉冲数为 P,计数时间
为 t,测量轮转速为 N( r / min),则有如
下关系式成立,
73
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
)29(
60
???? NtPC
整理式 ( 9-2),可得到测量轮转速
的公式,
)39(60 ?
?
?
tP
CN
74
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
用式 ( 9-3 ) 计算出测量轮的转速 N,
然后将 N代入式 ( 9-1 ),即可得到车辆的
车速 。
由此可知,关键是知道 t 秒内的脉冲
计数值 。
75
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
3,脉冲信号的采集计数
采集计数方法
① 硬件采集计数
② 软件采集计数
脉冲信号硬件采集计数
自习。
76
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
软件采集计数
该方法只需要很简单的接口电路,再
配以相应的程序,就能完成脉冲信号的采
集计数。
⑴ 脉冲信号采集接口
接口电路如图 9.8所示 。
77
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
I O W
R E S E T
A L E
PC 总线
译
码
器
WR
CS
8 2 5 5 A
I O R RD
R E S E T
A
1
PC
0
.
.
.
D
0
D
7
.
.
.
D
0
D
7
0
A0
A
A
1
A
4 9
A~
图9, 8 软件脉冲信号采集计数接口
78
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
⑵ 脉冲信号采集计数程序的编程
在用程序对脉冲信号计数时,仅在脉
冲上升沿到来时计数,其它时候均不计数,
如图 9.9所示。
图 9.9 用程序对脉冲信号计数
计数 A=1
A=0
79
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
设 8255的端口地址如表 9.2所示 。
表 9.2 8255A端口地址
I/ O口 地 址
A口
B口 0305H
C口 0306H
控制寄存器 0307H
0304H
80
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
设从 C口位对脉冲信号不断采集计数,
每隔 1秒钟显示脉冲信号的计数值,则可
编出相应的计数程序。
计数程序采用以下变量:
S —
A —
A = 1 表示 PC0位是高电平
A = 0 表示 PC0位是低电平
统计脉冲数 ( 计数 )
反映 PC0位电平的变化
81
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
B —
B = 1 表示已计数
B = 0 表示未计数
计数条件:
当 A = 1
其他情况不计数。
计数标志变量,表示计数与否
且 B = 0 时, S = S + 1
82
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
Quick BASIC 程序如下,
DECLARE SUB CAIZI ( )
DIM SHARED C%
CLS
S% = 0, B% = 0, C% = 0
LOCATE 8,30, PRINT TIME$
TIMER ON ′允许程序响应计时事件
ON TIMER(1) GOSUB 10
′每隔 1秒钟转子程序
83
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
CALL CAIJI ′调用脉冲信号采集过程程序
END
10 LOCATE 8,30, PRINT TIME$
′当前的时间
LOCATE 12,30, PRINT C%
′显示脉冲信号计数值
RETURN
SUB CAIJI( )
5 A1 = INP (&H306) ′从 C口采集脉冲信号
84
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
A = A1 AND &H1 ′判断 PC0位是否为 1
IF A = 1 THEN ′若 PC0位为 1
IF B% = 1 THEN 6
′若已计数,则跳转
S% = S% +1 ′否则, 对脉冲计数
C% = S%
B% = 1 ′置脉冲跳变标志变量 B≠0
LOCATE 10,30, PRINT S%
ENDIF
85
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
6 IF A = 0 THEN B% = 0
′若不为 1,置脉冲跳变标志变量 B=0
GOTO 5 ′跳转
END SUB
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
9.2 PS-2304数字量 I/ O接口板简介
9.3 BCD码并行数字信号的采集
第 9章 数字信号的采集
9.4 车速脉冲信号的采集计数
2
SDUT
数据采集与处理
第 9章 数字信号的采集
传送方式
并行
串行
数字信号的采集与其传送方式有关。
采集方法
用 8255芯片采集并行数据
用 RS-232口采集串行数据
3
SDUT
数据采集与处理
第 9章 数字信号的采集
9.1 8255A可编程外围接口芯片
1,用途和结构
用途,用于接收并行传输的数字信号、
脉冲信号和开关信号。
结构
其引脚和内部结构如图 9.1所示 。
4
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
8 2 5 5 A - 5
P B 2
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 P A 4
P A 5
P A 6
P A 7
R E S E T
D0
D1
D2
D3
D4
D5
D6
D7
U c c
P B 7
P B 6
P B 5
P B 4
P B 3
WR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
P A 3
P A 2
P A 1
PA
0
RD
CS
G N D
A1
A0
P C 7
P C 6
P C 5
P C 4
P C 3
P C 2
P C 1
P C 0
P B 0
P B 1
( a )
图 9.1 8255A-5引脚和内部结构框图
端口 A
端口 C
(高 )
端口 C
(低 )
端口 B
PA7~ PA0
PC7~ PC4
PC3~ PC0
PB7~ PB0
A组
控制
器
数据总
线缓冲
B组
控制
器
D7~ D0
计算机
外界
RD
WR
A1
A0
RESET
CS
读 /写
逻辑
(b)
5
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
由此图可知:
8255有 3个端口
端口 A 是一个 8位数据输出/输入锁存器 。
端口 B 是一个 8位数据输入/输出锁存器。
端口 C 是一个 8位数据输出/输入缓冲器。
端口 C 还可以分成两个 4 位的端口 。
6
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
有 2组控制器
A组,控制端口 A和端口
C的高 4位
B组,控制端口 B和端口
C的低 4位
有数据总线缓冲、读/写逻辑芯片
2,工作方式
8255A芯片有三种工作方式。
7
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
方式 0 — 基本的输入/输出方式,
特点
⑴ 任何端口都可用做输入 /输出
⑵ 输出可被锁存,输入不能锁存
⑶ 有 16种输入/输出组态
方式 1— 选通的输入/输出方式。
8
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
特点
⑴ A,B组各有一个 8位数据口和一
4位控制/数据口
⑵ 8位数据口的输入/输出均可锁存
⑶ 端口 C的 4 位传送 8 位数据口控制
/状态信息
它与方式 0的不同之处在于,
借助选通或应答式联络信号,把 I/ O
数据与指定的端口进行发送或接收。
9
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
方式 2 — 带联络双向总线 I/ O方式 。
注意,此方式仅用于 A口 。
特点
⑴ 有一个 8位双向数据口和一个 5位
控制端口 C
⑵ 输入/输出均可锁存
⑶ 4位控制口用于 8位数据端口的控
制/状态信息
10
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
需要说明,在方式 1和方式 2中, 并未将端
口 C的所有位都用于传送控制
状态信息, 剩余的各位仍然可
以通过编程设定为输入/输出
用。
以上介绍的各种工作方式及组态,都
可以通过对 8255A的初始化来实现 。
11
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
3,初始化
8255A的初始化 — 将一个 8位控制码写
入 8255A的控制寄存
器。
基本要求,为了能正确地写入控制字,先
要了解 8255A控制寄存器中各
位的情况 。
8255A控制寄存器如图 9.2 所示 。
12
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
D7 D6 D5 D4 D3 D2 D1 D0
置方式标志:
方式选择:
端口 A:
端口 C高端,
方式选择:
端口 B:
端口 C低端:
图 9.2 8255A控制寄存器
00=方式 0; 01=方式 1
1X=方式 2
1=有效
1— 输入, 0— 输出
1— 输入, 0— 输出
0=方式 0,1=方式 1
1— 输入, 0— 输出
1— 输入 ; 0— 输出
13
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
∴ 8255初始化 —— 对 8255控制寄存器的
各位赋值。
【 例 9.1】 设 8255A的控制寄存器的地址为 63H,
初始化 A,C口为输入口, B口为输出
口 。 编写对 8255A初始化的汇编程序。
解,⑴ 确定控制码, 10011001
⑵ 8088汇编程序如下,
14
SDUT
数据采集与处理
9.1 8255A可编程外围接口芯片
MOV AL,63H
MOV DI,AL
MOV AL,10011001B; 置 A,C口为输入口, B口为输出口
OUT DI,AL; 把 10011001B写入 8255A控制寄存器
15
SDUT
数据采集与处理
第 9章 数字信号的采集
9.2 PS-2304数字量 I/ O接口板简介
1,概述
主要性能
为 PC/ ISA 总线型接口板,广泛用于
PC微机 。
板上有三片 8255A芯片及若干个逻辑器
件组成,通过编程自由设定输入输出。
16
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
2,主要技术指标
输入输出路数,
输入输出电平,
控制方式:
电源要求,
72路
TTL
程序查询或中断服务
DC+5V,耗电流 <500 mA
环境温度, -10℃ ~ 50℃
17
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
2,使用
地址开关的设定
PS-2304板卡上有一个地址开关 K,如
图 9.3 所示的 。
图 9.3 地址开关 K
ON
1
A5
2
A6
3
A7
4
A8
5
A9
6
A10
7
18
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
设定其各位,就可以确定板卡端口及
控制寄存器的地址。
由图 9.3可以知道,地址开关 K 为 6 位
有效 。
ON/ OFF 状态与计算机地址线位内
容对应关系是,
ON — An = 1 OFF — An = 0
19
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
地址开关位与计算机地址线位的对
应关系如下:
K1 —— A5
K2 —— A6
K3 —— A7
K4 —— A8
K5 —— A9
K6 —— A10
K 的地址范围为 0300~ 031F,共 32个
连续地址 。
20
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
表 9.1 PS-2304板地址分配
芯片 A口 B口 C口 控制寄存器
JC9 0300H 0301H 0302H 0303H
JC10 0304H 0305H 0306H 0307H
JC11 0308H 0309H 030AH 030BH
0318H~ 031BH 写入:开中断
031CH~ 031FH 写入:关中断
21
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
板上接口插座
1 2 1 2 1 2
J C
8 2 5 5 A
J C
8 2 5 5 A
J C
8 2 5 5 A
3 3 34 3 3 34
Z
3 3 34
Z
ON
1 2 3 4 5 6
K
I R Q I R Q
PC
PC
。。。。。。
.
.
.
.
.
.
.,
.,
.,
.,
.,
.,
2
Z
4
9 10 11
PC
7
5
PC
PC
0
PC
1
PC
3
Z
1
2 3
1 3.
0 7 5.,
7
图9, 4 P S - 2 3 0 4 板结构
22
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
1 2
3 3 34 3 3 3 4
P A 1
P A 3
P A 5
P A 7
P C 7
P C 5
P C 3
P C 1
P B 7
P B 5
P B 3
P B 1
1 2
P A 0
P A 2
P A 4
P A 6
P C 6
P C 4
G N D
5V
P C 2
P C 0
P B 0
P B 2
P B 4
P B 6
G N D
P A 0
P A 2
P A 4
P A 6
P C 6
P C 4
G N D
5V
P C 2
P C 0
P B 0
P B 2
P B 4
P B 6
G N D
P A 1
P A 3
P A 5
P A 7
P C 7
P C 5
P C 3
P C 1
P B 7
P B 5
P B 3
P B 1
Z ZZ
图9, 5 插座与8 2 5 5 A 端口的对应关系
( a ) ( b )
Z1, Z2 插座各脚
号与 8255A的三个端口
对应关系如图 9.5(a)所
示 。
Z3 插座各脚与 8255
A的三个端口的对应关
系如图 9.5(b)所示 。
23
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
接口板初始化
【 例 9.2】 将 8255A芯片设置成 24路输入
状态 。
解,其控制命令字为 10011011B,即十六
BASIC语句为, OUT &H303,&H9B
进制的 9BH。
24
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
汇编程序为:
MOV AL,303H ; 确定 JC9的控制寄存
器地址
MOV DI,AL
MOV AL,9BH
OUT DI,AL ; 把控制字 9BH写入
JC9 的控制寄存器
25
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
8088寄存器结构,
通用寄存器
⑴ 数据寄存器
AX
AH,
AL,
字节乘
字节乘、字节除、字节 I/O、
转移、十进制算术运算
26
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
BX
BH,
BL,
CX
CH,
CL,
CX,串操作、循环次数
转移
变量移位、循环控制
27
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
DX
DH,
DL, 字乘、字除法、间接 I/ O
⑵ 地址指针寄存器 SP—
BP—
⑶ 变址寄存器 SI—
DI—
堆栈指针寄存器
基址指针寄存器
源变址寄存器
目的变址寄存器
28
SDUT
数据采集与处理
9.2 PS-2304数字量 I/ O接口板简介
段寄存器 CS —
SS —
DS —
ES —
控制寄存器 IP —
F —
代码段寄存器
堆栈段寄存器
数据段寄存器
附加数据段寄存器
指令指针寄存器
标志寄存器
29
SDUT
数据采集与处理
第 9章 数字信号的采集
9.3 BCD码并行数字信号的采集
以 BCD码 传送并行数字信号,在工程
中是一种常见方法,例如三坐标测量机坐
标位移信号的传送 。
三坐标测量机是一种测量设备,用来
测量工件上任意点的 X,Y,Z 三个坐标值 。
30
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
x
y
z
Z坐标轴
y坐标轴
x坐标轴
31
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
零
件
电测头
光栅尺
32
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
汽
车
外
轮
廓
33
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
曲
面
电测头
工件
支承件
34
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
测
量
发
动
机
气
缸
35
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
三
坐
标
测
量
机
对
测
量
数
据
的
处
理
36
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
为此,在三坐标测量机的每个坐标方
向上安装了一根光栅尺来检测机器该方向
坐标位置的变化。
光栅尺输出的信号传送到与之相配套
的数显仪。
数显仪
处理后
① 用数码管以 6位十进制实数 +1
符号的形式,显示坐标值。
②以 BCD码并行输出坐标位移
信号。
37
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
光栅尺与数显仪 光栅尺定尺
数显仪 数码管
光栅尺动尺光栅尺
38
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
问题:
如何用 PC机和 PS -2304接口板采集 X坐
标的坐标位移值?
如何将采集到的 BCD 数字信号存入内
存和还原成十进制实数?
为了简化问题的讨论,这里只涉及无
符号坐标值的采集。
39
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
由第 2章编码一节可以知道,
在用 BCD码表示十进制数时, 1 位十
进制数用 4位二进制码表示,所以 6位十进
制数须用 24( 6× 4) 位二进制码表示。
8255A的 A,B,C端口均为 8 位,即
每个端口一次只能采集 8 位二进制码 ( 2位
十进制数 )。
40
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
对于 6 位十进制数, 须按图 9.6 所示,
A口采集十进制数的最高两位, B口采集
中间两位, C口采集最低两位。
41
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
数显仪插座与 PS -2304板连接,
图 9.6 8255A端口采集数据的分配
A口 B口 C口
1 2 3 4 5 6
42
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
D G N D
2 22 2 2 22 2 2 22 2 2 22 2 2 22 2 2 22 2
3 3 34
1 2
P A 0
P A 2
P A 4
P A 6
P C 6
P C 4
G N D
5V
P C 2
P C 0
P B 0
P B 2
P B 4
P B 6
G N D
P A 1
P A 3
P A 5
P A 7
P C 7
P C 5
P C 3
P C 1
P B 7
P B 5
P B 3
P B 1
ZZ
A口
1
23→ PA7
22→ PA6
21→ PA5
20→ PA4
2 2
2→ PA2
21→ PA1
20→ PA0
23→ PA3
B口
3
23→ PB7
22→ PB6
21→ PB5
20→ PB4
4 22→ PB221→ PB1
20→ PB0
23→ PB3 C口
5
23→ PC7
22→ PC6
21→ PC5
20→ PC4
6 2
2→ PC2
21→ PC1
20→ PC0
23→ PC3
1 2 3 4 5 6
43
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
选择 JC9 芯片的 PC0 位输入电测头发
出的采样脉冲信号。
由于 B口采集的 8位 BCD码中,高 4位
对应十进制整数,低 4位对应十进制小数,
因此需要把 8位 BCD 码分开。
如何把 8 位 BCD 码分开?
注意,在 0~ 9的范围内, 二进制码与 BCD
码是相同的 。
44
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
用 8255芯片采集 BCD码数据并在屏幕
上显示还原的十进制实数的过程如下:
把采集到的 3组 BCD码拆分成 6个 4位二
进制码 ;
分别存入内存中的 6个存储单元 ;
用 Quick BASIC语言的 PEEK语句从内
存中把数据读入到程序中的变量;
作字符串操作,将采集到的 BCD并行
数字信号还原成十进制实数。
45
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
8088汇编程序如下,
,MODEL MEDIUM
,STACK 256 ; 堆栈空间为 256;
,DATA
BCD1 DB?
BCD2 DB?
BCD3 DB?
46
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
BIN11 DB?
BIN12 DB?
BIN21 DB?
BIN22 DB?
BIN31 DB?
BIN32 DB?;
,CODE
PUBLIC PORT ; 说明成公共块; 以便 Quick BASIC程序调用
47
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
PORT PROC FAR
PUSH BP ; 保存原基址寄存器指针
MOV BP,SP ; 把堆栈指针放入基址寄存器
PUSH DS ; 保存原数据段地址
PUSH SI
PUSH DI
SUB AX,AX ; 把 0放入 AX
PUSH AX
MOV AX,_DATA ; 数据段的地址放入 DS
MOV DS,AX
48
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV AX,7000H ;设置段地址为 7000H
MOV ES,AX
MOV DI,1 ;设置内存起始单元
MOV DX,302H ;设置状态口地址
WAIT1,IN AL,DX ;读入状态信息
TEST AL,01H ;检查状态信息是否为 1
JNZ WAIT1 ;若为 1,循环等待测头离;开前一个采样点
WAIT2,IN AL,DX ;从状态口读入状态信息
TEST AL,01H ;检查状态信息是否为 0
49
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
JZ WAIT2 ;若为 0,循环等待测头接触工;件的另一个采样点
CALL ACQUDATA ;调用数据采集子程序
CALL HCONVT ;调用数据拆分子程序
CALL STORE ;调用数据存储子程序
POP AX
POP DI
POP SI
POP DS ;恢复原数据段地址
POP BP ;恢复原基址寄存器指针
50
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
RET ;退出汇编程序
PORT ENDP; 采集数据
ACQUDATA PROC NEAR
PUSH DX
PUSH SI
PUSH DI
PUSH AX
PUSH CX
MOV AL,10011011B ;设置控制字
51
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV DX,307H ;初始化 8255三口为输入口
OUT DX,AL
MOV DX,304H
IN AL,DX ;A口 采集第一组 BCD码
MOV DI,OFFSET BCD1
MOV [DI],AL ;存入 BCD1中保存
MOV DX,305H
IN AL,DX ;从 B口采集第二组 BCD码
MOV DI,OFFSET BCD2
MOV [DI],AL ;存入 BCD2中保存
52
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV DX,306H
IN AL,DX ;从 C口采集第三组 BCD码
MOV DI,OFFSET BCD3
MOV [DI],AL ;存入 BCD3中保存
POP CX
POP AX
POP DI
POP SI
POP DX
RET
ACQUDATA ENDP
53
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集; 把一组 BCD码拆分成二个 4位二进制码
HCONVT PROC NEAR
PUSH BX
PUSH SI
PUSH DI
MOV BX,OFFSET BCD1;BCD1的地址送入 BX寄存器
MOV SI,OFFSET BIN11;BIN11的地址送入 SI寄存器
MOV DI,OFFSET BIN12;BIN12的地址送入 DI寄存器
54
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
CALL HCONVTSUB;对第一组 BCD码进行拆分
MOV BX,OFFSET BCD2;BCD2的地址送入 BX寄存器
MOV SI,OFFSET BIN21;BIN21的地址送入 SI寄存器
MOV DI,OFFSET BIN22;BIN22的地址送入 DI寄存器
CALL HCONVTSUB;对第二组 BCD码进行拆分
55
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV BX,OFFSET BCD3;BCD3的地址送入 BX寄存器
MOV SI,OFFSET BIN31;BIN31的地址送入 SI寄存器
MOV DI,OFFSET BIN32;BIN32的地址送入 DI寄存器
CALL HCONVTSUB;对第三组 BCD码进行拆分
POP DI
POP SI
POP BX
56
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
RET
HCONVT ENDP; 拆分 BCD码
HCONVTSUB PROC NEAR
PUSH CX
MOV AL,[BX];将 BX寄存器中的内容传送到 AL寄存器
MOV CL,4 ;确定移位次数 ( 4次 )
SHR AL,CL ;将 AL逻辑右移 4次
MOV [SI],AL ;将 AL中的内容传送到 SI
57
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
MOV AL,[BX] ;将 BX中的内容传送到 AL
AND AL,0FH ;屏蔽高 4位
MOV [DI],AL;将 AL中低 4位的内容传送到 DI
POP CX
RET
HCONVTSUB ENDP; 把数据存入内存
STORE PROC NEAR
PUSH ES
58
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
PUSH SI
MOV SI,OFFSET BIN11
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN11中的内容送入内存单元 1
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN12
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN12中的内容送到内存单元 2
59
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN21
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN21中的内容送到内存单元 3
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN22
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN22中的内容送到内存单元 4
60
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN31
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN31中的内容送到内存单元 5
INC DI ;内存单元地址 +1
MOV SI,OFFSET BIN32
MOV AL,[SI]
MOV BYTE PTR ES, [DI],AL;把 BIN32中的内容送到内存单元 6
61
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
POP SI
POP ES
RET
STORE ENDP
END
以上程序在计算机内存中段地址为 7000,
起始单元为 1的连续 6个内存单元中存放采集
到的 X坐标位移值 。
62
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
对于 Y,Z坐标值,同样可参照以上
介绍的方法, 完成坐标位移值的采集、
拆分和存储等操作 。
下面的程序完成还原十进制实数的操作。
DECLARE SUB PORT ( )
CALL PORT
DEF SEG = &H7000
′设定内存段地址为 7000H
DCLZ源程序如下,
63
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
A11 = PEEK(1), A12 = PEEK(2)
′从内存单元 1,2中读数据并赋予 A11,A12
B11 = PEEK(3), B12 = PEEK(4)
′从内存单元 3,4中读数据并赋予 B11,B12
C11 = PEEK(5), C12 = PEEK(6)
′从内存单元 5,6中读数据并赋予 C11,C12
DEF SEG ′取消设定的内存段地址
A11$ = STR$(A11), A12$ = STR$(A12)
′数值型数据转换成字符型数据
B11$ = STR$(B11), B12$ = STR$(B12)
′数值型数据转换成字符型数据
64
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
C11$ = STR$(C11), C12$ = STR$(C12)
′数值型数据转换成字符型数据
X$ = A11$ + A12$ + B11$ + "."
+ B12$ + C11$ + C12$
X = VAL(X$)
′将字符串还原成十进制实数 ( X坐标位移值 )
X = INT(X * 1000 +0.5) / 1000
LOCATE 4,52, PRINT SPACE$(10)
LOCATE 4,52, PRINT X
END
65
SDUT
数据采集与处理
9.3 BCD码并行数字信号的采集
将以上汇编程序编译成一个目标文件,
并与 DCLZ 程序的目标文件连接成一个数
据采集程序 CAIZI。
运行 CAIZI程序,即可将 X坐标位移
值从 8255板卡经内存单元传送到相应的
Quick BASIC 程序中去 。
66
SDUT
数据采集与处理
第 9章 数字信号的采集
9.4 车速脉冲信号的采集计数
1,车速脉冲信号的变换
问题提出:
在对车辆的车速进行路面测试时,如
何得到车辆的直线行驶速度?
67
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
解决方法:
一般在车辆的后部增加一个测量轮。
测量轮的旋转轴上套装一个有 60个齿的
齿盘 。
68
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
在齿盘上
① 在侧面装反射式光电传感器
②面对圆周装磁阻式传感器
123
1 - - 拖拉机 2 - - 测试机架 3 - - 光电传感器
4 - - 齿形编码盘 5 - - 测量轮
图1 车辆工作速度测试装置
45
69
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
1 2 3
1 - - 测量轮 2 - - 齿形编码盘
3 - - 反射式光电传感器 4 - - 安装机架
4
图2 位移测试装置
70
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
工作原理:
当齿盘旋转一个节距时,传感器转换
输出一个近似于正弦波的信号,该信号经
滤波、放大和整形后,变成一个脉冲信号,
齿盘旋转一周,传感器转换输出 60个脉冲 。
由于测量轮是一个从动轮,即车辆前
进时带动该轮旋转。测量轮的圆周速度就
是车辆的车速,因此有如下关系:
71
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
)19( ???? NDv ?
式中 D — 测量轮直径 ( mm)
N — 测量轮转速 ( r/ min)
由式 ( 9-1) 可知,只要测量出测量轮
的转速,就可以得到车辆的车速。
那么,如何得知测量轮转速 N 呢?
72
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
由于测量轮每转一周输出 60个脉冲,
只需用计数器对脉冲信号在一秒钟内计
数,然后按一定关系式可算出转速。
2,脉冲信号的处理
设计数器的计数值为 C,测量轮每转
一周传感器输出的脉冲数为 P,计数时间
为 t,测量轮转速为 N( r / min),则有如
下关系式成立,
73
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
)29(
60
???? NtPC
整理式 ( 9-2),可得到测量轮转速
的公式,
)39(60 ?
?
?
tP
CN
74
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
用式 ( 9-3 ) 计算出测量轮的转速 N,
然后将 N代入式 ( 9-1 ),即可得到车辆的
车速 。
由此可知,关键是知道 t 秒内的脉冲
计数值 。
75
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
3,脉冲信号的采集计数
采集计数方法
① 硬件采集计数
② 软件采集计数
脉冲信号硬件采集计数
自习。
76
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
软件采集计数
该方法只需要很简单的接口电路,再
配以相应的程序,就能完成脉冲信号的采
集计数。
⑴ 脉冲信号采集接口
接口电路如图 9.8所示 。
77
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
I O W
R E S E T
A L E
PC 总线
译
码
器
WR
CS
8 2 5 5 A
I O R RD
R E S E T
A
1
PC
0
.
.
.
D
0
D
7
.
.
.
D
0
D
7
0
A0
A
A
1
A
4 9
A~
图9, 8 软件脉冲信号采集计数接口
78
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
⑵ 脉冲信号采集计数程序的编程
在用程序对脉冲信号计数时,仅在脉
冲上升沿到来时计数,其它时候均不计数,
如图 9.9所示。
图 9.9 用程序对脉冲信号计数
计数 A=1
A=0
79
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
设 8255的端口地址如表 9.2所示 。
表 9.2 8255A端口地址
I/ O口 地 址
A口
B口 0305H
C口 0306H
控制寄存器 0307H
0304H
80
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
设从 C口位对脉冲信号不断采集计数,
每隔 1秒钟显示脉冲信号的计数值,则可
编出相应的计数程序。
计数程序采用以下变量:
S —
A —
A = 1 表示 PC0位是高电平
A = 0 表示 PC0位是低电平
统计脉冲数 ( 计数 )
反映 PC0位电平的变化
81
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
B —
B = 1 表示已计数
B = 0 表示未计数
计数条件:
当 A = 1
其他情况不计数。
计数标志变量,表示计数与否
且 B = 0 时, S = S + 1
82
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
Quick BASIC 程序如下,
DECLARE SUB CAIZI ( )
DIM SHARED C%
CLS
S% = 0, B% = 0, C% = 0
LOCATE 8,30, PRINT TIME$
TIMER ON ′允许程序响应计时事件
ON TIMER(1) GOSUB 10
′每隔 1秒钟转子程序
83
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
CALL CAIJI ′调用脉冲信号采集过程程序
END
10 LOCATE 8,30, PRINT TIME$
′当前的时间
LOCATE 12,30, PRINT C%
′显示脉冲信号计数值
RETURN
SUB CAIJI( )
5 A1 = INP (&H306) ′从 C口采集脉冲信号
84
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
A = A1 AND &H1 ′判断 PC0位是否为 1
IF A = 1 THEN ′若 PC0位为 1
IF B% = 1 THEN 6
′若已计数,则跳转
S% = S% +1 ′否则, 对脉冲计数
C% = S%
B% = 1 ′置脉冲跳变标志变量 B≠0
LOCATE 10,30, PRINT S%
ENDIF
85
SDUT
数据采集与处理
9.4 车速脉冲信号的采集计数
6 IF A = 0 THEN B% = 0
′若不为 1,置脉冲跳变标志变量 B=0
GOTO 5 ′跳转
END SUB