检测与报警的设计与开发Word文档下载推荐.docx
《检测与报警的设计与开发Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《检测与报警的设计与开发Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
而本设计中的输入电压为模拟信号,因此需要ADC0809进行模数转换,将采样电压转换为数字信号。
1.2ADC0809的功能分析
模/数转换是指通过一定的电路将模拟量转变为数字量,由于模拟量是连续的,而数字量是离散的,所以,一般在某个范围中的模拟量对应于某一数字量,这就是说,在A/D转换时,模拟量和数字量之间并不是一一对应的关系。
即从理论上,有一个转换精度的问题,转换精度反映了A/D转换器的实际输出接近理想输出的精确程度,A/D转换的精度通常是用数字量的最低有效位(LSB)来表示的,设数字量的最低度有效位于对应于模拟量△,这时,我们称△为数字量的最低有效位的当量,ADC0809采用的是逐位逼近A/D转换,逐位逼近A/D转换时,也用D/A转换器的输出电压来驱动运算放大器的反相端,不同的是用逐位式进行转换时,要用一个逐位逼近寄存器存放转换好的数字量,转换结束时,将数字量送到缓冲寄存器中,当启动信号由高电平变为低电平时,逐位逼近寄存清零,这时D/A转换器输出电压V0也为0,当启动信号变为高电平时,转换开始。
同时,逐位逼近寄存进行计数。
逐位逼近寄存器工作是从最高位开始,通过设置试探值来计数,在第一个时钟脉冲时,控制电路反最高位送到逐位逼近寄存器,使它输出为10000000,则D/A转换器输出电压V0为满量程值128/255,若V0大于Vi,则作为比较器的运算放大器的输出成为低电平,控制电路据此清除逐位逼近寄存器中的最高位;
若V0小于Vi,则比较器输出高电平,控制电路使最高位的1保留下来,如果最高位被保留,则值10000000下一个时钟脉冲使次高位D6为1,于是逐位逼近寄存器值为11000000,V0为满量程值192/255。
此后,若V0大于Vi,则比较器输出低电平,从而使次高位D6复位,如果V0小于Vi,则比较器输出高电平,从而保留高位D6为1,再下一个时钟脉冲D5置1,比较……直到D0为1,再与输入电压比较,经N次比较,寄存器中得到的值就是转换后的数据,转换以后,控制电路送出一个低电平作为结束信号,这个信号的下降沿将逐位逼近寄存器中的数字量送入缓冲寄存器,从而得到数字量输出。
1.3ADC0809的技术参数
表1ADC0809的技术参数表
①分辨率是指ADC对输入电压微小变化响应能力的量度,它是数字输出的最低位
(LSB)所对应的模拟输入电平值。
若输入电压满刻度值为VFS,转换位数为N。
分辨率为1/2NVFS当模拟电压低与此值时,ADC不予响应。
②转换时间:
是指ADC完成一次转换所需时间,既从启动信号开始到转换结束并得到稳定的数字输出量所需时间,通常us级。
2.选择芯片8255A
2.18255A的作用
本实验利用8255A将模拟量转换后的数字量传送到CPU。
此外,8255采用查询工作方式控制ADC0809工作。
2.28255A的功能分析
8255A是可编程并行接口,可以根据外界条件(I/O设备需要的信号线和它能提供的状态线)来使其构成多种接口电路。
8255A内部有3个数据端口,即A口、B口、C口。
A口有三种工作方式:
即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。
本实验将控制字设为90H,初始化8255,使得A口为二进制逻辑开关输入,B口、C口为输出。
在三种工作方式中,本设计只使用了方式0,即方式0是基本的输入/输出方式,在这种方式下,三个端口都可以由程序规定为输入/出方式,但是不能既作为输入又作为输出,也没有提供固定的联络信号。
C口分为两个4位---高4位和低4位,可以分别设置为输入或输出方式。
在此设计中PC6,PC7作为控制端分别接发光二极管和扬声器。
2.38255A的技术参数
8255A的引脚信号
1)与外设相连的
PA7~PA0:
A口数据信号线。
PB7~PB0:
B口数据信号线。
PC7~PC0:
C口数据信号线。
2)与CPU相连的
RESET:
复位信号。
当此信号来时,所有寄存器都被清除。
同时三个数据端口被自动置为输入端口。
D7~D0:
它们是8255A的数据线和系统总线相连。
CS:
片选信号。
在系统中,一般根据全部接口芯片来分配若于低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,于8255A被选中。
只有当有效时,读信号写才对8255进行读写。
RD:
读信号。
当此信号有效时,CPU可从8255A中读取数据。
WR:
写信号。
当此信号有效时,CPU可向8255A中写入数据。
A1、A0:
端口选择信号。
8255A内部有3个数据端口和1个控制端口,共4个端口。
规定:
A1、A0为00时,选中A端口;
A1、A0为01时,选中B端口;
A1、A0为10时,选中C端口;
A1、A0为11时,选中控制口。
表28255A的基本参数表
参数名称
符号
测试条件
规范值
最大
最小
输入低电平电压
VIL
0.8v
-0.5v
输入高电平电压
VIH
Vcc
2.0v
<
数据总线>
VOL
IOL=2.5mA
0.45v
——
外部端口>
IOL=1.7mA
VOH
IOH=-400μA
2.4v
IOH=-200μA
达林顿驱动电流
IDAR
REXT=750
VEXT=1.5v
-0.4mA
1.0mA
电源电流
ICC
120mA
输入负载电流
IIL
I=VCC~0v
+10mA
-10mA
输出浮动电流
IOFL
VOUT=VCco~0v
2.48255A的方式控制字
8255A的控制字有两种:
一种是方式选择控制字,另一种是C口按位置位/复位控制字
①方式选择控制字
图18255A的方式控制字表
②C口按位置位/复位控制字
图28255A的置位/控制字表
3.七段LED显示器
3.1LED在本设计中的作用
LED为发光二极管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,做为终端显示,主要是作为显示采样电压值以及界限值。
3.2LED功能分析
物理构造:
LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。
工作原理:
当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。
数字成像:
将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,便可显示某一数码或字符。
7段代码的个位(bit0-bit7)用作a-g和DP的输入。
LED数码管及其框图如下:
图3LED数码管及其框图
字型码表示图如下:
表3LED字型码表示图1
dp
g
f
e
d
c
b
a
显示数码
数值
1
3fh
O6H
2
5Bh
3
47H
4
66H
5
6dH
6
7dH
7
07H
8
7fH
9
6fh
说明:
表中个值对应7段LED若相应值为1则LED中该段亮,否则不亮,通过各段真值表的值可以控制显示数字。
此外,由于本设计中的数值显示中存在小数位,因此还应将字型码中的DP位置1。
表4LED字型码表示图2
0.
0BFH
1.
86H
2.
0DBH
3.
0CFH
4.
0E6H
5.
0EDH
6.
0FDH
7.
87H
8.
0FFH
9.
0EFH
3.3LED的技术参数
表5LED技术参数
PCW
If
Vr
Ir
^P
对应型号
散射颜色
BJ235-2
70
25
≥1.5
≤2.5
200
SEL-10
红色
BJ1441529
100
40
≥0.5
565
绿色
BJ1341529
585
蓝色
4.发光二极管
4.1发光二极管在本设计中的作用
当采集电压值大于界限值时,本设计利用二极管进行发光报警。
.2发光二极管功能分析
4.3发光二极管技术参数
发光二极管的压降一般为1.5~2.0V,其工作电流一般取10~20mA为宜。
5.蜂鸣器
5.1蜂鸣器在本设计中的作用:
在本设计中,蜂鸣器用于电压值越界时声音报警。
5.2蜂鸣器的功能分析:
扬声器是将电能转化成声能,并将声能辐射到空气中去的一种电声转换器件。
5.3蜂鸣器的技术参数:
它一般包括灵敏度、频率响应、额定功率、额定阻抗、指向性、失真、音质听感评价等。
本实验电压范围为0-5V。
6.二进制逻辑开关
6.1二进制逻辑开关在本设计中的作用
二进制逻辑开关在本设计中作为输入端口。
用户可以通过二进制逻辑开关自行设计电压的界限值。
输入0时,开关闭合,输入1时,开关断开。
6.2二进制逻辑开关功能分析
如图9所示,开关未合时,与5V电压相连,输入1,当合上之后,开关就将A口接地,也就输入为0,4位开关可以置0~15的数。
图4逻辑开关结构图
6.3逻辑开关及其编码
开关高电平:
+5V、低电平:
0V
表6逻辑开关编码
BCD编码
显示数字
0000
1000
0001
1001
0010
1010
A
0011
1011
B
0100
1100
C
0101
1101
D
0110
1110
E
0111
1111
F
7.硬件总逻辑图及其说明
图6硬件总逻辑图
18086的A1,A2,A3分别与ADC0809的ADDA,ADDB,ADDC相连,以确定8路模拟量输入通过(IN0—IN7)中的哪一路通道进行A/D转换,此次设计中设定ADC0809的IN0与模拟电路进行相连,以实现对此模拟电路进行检测。
28255A的PA口同开关电路S1~S8相连,即从PA口读入界限值。
38255A的PB口同G5区GP42相连,即是连接LED显示器的段选。
48255A的PC0~PC3连接LED显示器的位选PC6、PC7分别接LCD、扬声器,当转换结束,可根据比较结果,通过8255控制PC6、PC7,从而控制报警系统。
58255A的片选端CS接地址译码器。
68086的WR(非),RD(非)和RESET与8255A的相对应的WR(非),RD(非)和RESET相连,通过控制信号CS(非),A1,A0以及RD(非),WR(非)来实现对数据口(PA,PC)和控制寄存器进行读写操作。
三、控制程序设计
1.控制程序设计思路说明:
本设计中,由于采样的电压值为模拟信号,必须通过ADC0809芯片转换成数字信号,并将其保存在AH寄存器中。
然后通过逻辑开关自行设定一界限值存入到AL中。
比较两寄存器中值的大小,并通过8255控制报警系统,实现越界报警。
首先初始化8255,令A口为输入口,B、C口为输出口。
C口清零,防止刚开始实验就报警。
启动ADC0809直至转换过程全部结束,把转换后的值存入到AH中,以用之后的比较。
通过8255对七段LED显示器位选、段选,将转换值以十进制形式输出。
作为输入端口的A口连接二进制逻辑开关。
用户可以通过操作开关实现手动输入界限值。
界限值将用来与采样电压值进行比较,并通过LED以十进制形式显示。
当采样电压值大于或等于界限值,系统将产生声光报警。
反之,则只是在LED显示,不产生报警。
在报警设计方面,本设计通过二极管实现光学报警,通过PC扬声器实现声音报警。
由于二极管、扬声器都是低电平有效。
当采样电压值大于或等于界限值,则将PC6、PC7置为0,系统产生报警。
随后,通过延时子程序控制报警时间。
超过一定时间,系统将解除报警
2.控制程序流程图:
3.控制程序:
.MODELTINY
PCIBAR3EQU1CH;
8位I/O空间基地址(它就是实验仪的基地址,也为DMA&
32BITRAM板卡上的8237提供基地址)
Vendor_IDEQU10EBH;
厂商ID号
Device_IDEQU8376;
设备ID号
.STACK100
.DATA
IO_Bit8_BaseAddressDW?
msg0DB'
BIOS不支持访问PCI$'
msg1DB'
找不到StarPCI9052板卡$'
msg2DB'
读8位I/O空间基地址时出错$'
COM_ADDDW00F3H;
控制口偏移量
PA_ADDDW00F0H;
PA口偏移量
PB_ADDDW00F1H;
PB口偏移量
PC_ADDDW00F2H;
PC口偏移量
PD_ADDDW00E0H;
AD口偏移量
TAB_BDB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;
(0.0-9.0)
TAB_ADB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;
代码段(0-9)
.CODE
START:
MOVAX,@DATA
MOVDS,AX
NOP
CALLInitPCI
CALLModifyAddress;
根据PCI提供的基地址,将偏移地址转化为实地址
;
;
movdx,COM_ADD
moval,90h;
初始化8255,PA作为输入端,PB,PC输出,
outdx,al;
方式选择控制字送8255A控制端口
BEGIN:
moval,0FFh;
报警是低电平有效,一开全部致高电平
movdx,PC_ADD;
C口清零,防止刚开始实验就报警
outdx,al
STEP1:
MOVAL,00H;
ADC0809的控制字
movdx,PD_ADD;
启动ADC0809开始转换
movcx,200h
LAY1:
inal,dx;
等待0809转换完毕
loopLAY1
movdx,PA_ADD;
读开关界限值
movcl,al;
逻辑开关界限值存入cl
从0809中采集电压
电压采集到al
movCH,al;
电压值存入CH
movbp,0FFH;
控制报警时间的
callDISP
jmpSTEP1
DISPPROCNEAR
MOVAL,CL;
取开关输入的值
shral,4;
逻辑右移四位,高位补零;
提取出高四位,即对应十进制的个位
movbx,offsetTAB_B;
将TABX的偏移量存入BX
xlat
movdx,PB_ADD;
从8255A的B口读取数字量,段选
显示十进制界限值的个位值
movdx,PC_ADD;
PC口位选
MOVBL,0AH;
0A=10
MOVBH,33H;
33H=51d.(利用255/51=5将十六进制转化为十进制)
cl界限值
ANDAL,0FH;
将开关输入值的高四位置零,提取低四位,即小数部分的值
MULBH
DIVBL;
以上两步实现将十进制小数部分转化为十六进制(商存在AL,余数在AH中)
PUSHAX;
AL,AH入栈,供下次使用
MOVAL,CL
逻辑右移,高位补零
mulBH;
个位数转化为十六进制数
MOVBL,AL
POPAX
ADDAL,BL;
AL为小数部分十六进制数,BL为整数部分十六进制数
MOVAH,CH;
将0809转化值放到AH中
cmpAh,Al;
与界限值相比较
JNBDIS_A1;
AH大于等于AL
MOVAL,11111101B
JMPDIS_B1
DIS_A1:
moval,00111101B;
七段LED的位选,实现同时报警显示
DIS_B1:
只显示不报警
movah,0FFh
JMPSTEP2
DISP_2:
shral,4
显示
STEP2:
decah;
闪光灯延时子程序(为了让之前的那位显示若干时间)
cmpah,0h
jneSTEP2
ANDAL,0FH;
高四位清零,保留低四位
movbx,offsetTAB_A
xlat
movdx,PB_ADD
outdx,al
movdx,PC_ADD
MOVAL,11111110B;
最后一位显示,控制位选
STEP3:
闪光灯延时子程序
jneSTEP3
MOVBL,33H
moval,CH;
将0809采集的电压值放到AL中
DIVBL;
转化为十进制
PUSHAX
MOVAL,AL
MOVAL,11011111B
显示电压值的整数位
STEP4:
jneSTEP4
MOVBL,0AH
MOVBH,33H
movDL,Ah;
将余数放到DL中
XORAX,AX
MOVAL,DL
MULBL
DIVBH
MOVDL,AL;
保留处理后的整数
MOV