电压采集电路设计方案.docx
《电压采集电路设计方案.docx》由会员分享,可在线阅读,更多相关《电压采集电路设计方案.docx(13页珍藏版)》请在冰豆网上搜索。
电压采集电路设计方案
一、设计目的
1、了解和掌握74LS138、8253、8255A、ADC0809等可编程接口芯片、中断控制器8259以及LED显示器的原理和功能;
2、能用上面的接口芯片构建一个简单的系统控制对象;
3、进一步了解计算机得工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练;
4、掌握接口电路的综合设计与使用。
二、设计内容
利用《微型计算机原理课程》中所学的主要可编程接口芯片74LS138、8253、8255A、ADC0809和中断控制器8259设计一个模拟电压采集电路。
采用ADC0809设计一个单通道模拟电压采集电路,要求对所接通道变化的模拟电压值进行采集,采集来的数字量送至数码管LED指示,采集完100个数据后停止采集过程。
三、整体设计方案设计
首先模拟电压量通过ADC0809转换为数字量D,定时器8253计时,计时结束后向8259A发出中断请求,CPU响应中断,接受8255的数据量D,并进行运算。
当进行了100次数据采集之后,将平均电压通过8255送到数码管显示。
通过编码器,对器件进行地址选择。
四、设计任务
1、选用8088CPU和适当的存储器芯片、接口芯片完成相应的功能。
2、画出详细的硬件连接图。
3、画出各程序的详细框图。
4、给出RAM地址分配表及接口电路的端口地址。
5、给出设计思路。
6、给出程序所有清单并加上必要的注释。
7、完成设计说明书。
五、硬件设计及器件的工作方式选择
1、硬件系统设计方框图:
地址线
数据总线
地址总线
控制总线
2、中断实现:
8259A工作方式选择及初始化
芯片简要介绍:
8259A是专门为了对8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。
单个的8259A能管理8级向量优先级中断。
在不增加其他电路的情况下,最多可以级联成64级的向量优先级中断系统。
8259A有多种工作方式,能用于各种系统。
各种工作方式的设定是在初始化时通过软件进行的。
在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态.编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。
主要功能:
而在本设计中,8259的主要作用是当8253延时完毕之后,让CPU响应中断,发命令给8255,接收ACD0809的电压信号。
所以,只要开通8259A的一路中断(本设计开通了IR0)即可。
工作方式选择:
单片8259AA,上升沿有效,初始化时写入,IR0~IR7的中断号为08H~0FH,一般全嵌套,费缓冲方式1,正常中断结束,CPU为8088,允许IR0中断,非循环优化级方式,L2~L0无效,不设置EOI命令。
3、定时功能实现:
8253的工作方式及初始化
芯片简要介绍:
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
频率选择与计算:
8253的最高工作频率为2.6MHz,而ADC的最高工作频率为100KHz(100us),所以在选择参考频率fref时,而且考虑到程序运行时的指令的时间,参考与计数器所装的数N的乘积:
fref*N,应远大于100us,可取为1ms。
若取参考频率fref为:
2MHz,则N的取值为:
十进制的500(01F4H)。
工作方式选择:
工作方式2被称作速率波发生器。
进入这种工作方式,OUTi输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUTi保持为高电平不变;待计数值减到“1”和“0”之间,OUTi将输出宽度为一个CLKi周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUTi将输出一定频率的负脉冲序列,其脉冲宽度固定为一个CLKi周期,重复周期为CLKi周期的n倍。
所以当每次计数完毕后,OUTi放出一个负脉冲,用于触发中断。
并且由于装数N小于FFFFH,所以只要一个计数器即可。
所以,本次设计可选择计数器0,工作方式2,装数N为01F4H。
4、数码管显示及ADC的数据传输:
8255的工作方式及初始化
芯片简要介绍:
8255是一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。
具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。
工作方式:
PA口接数码管的位选,PB口接ADC0809的数据线D0~D7,PC口接数码管的位选,三个接口的工作方式均为方式0。
5、模拟电压转换为数字量:
ADC0809的初始化
8路输入通道,8位A/D转换器,即分辨率为8位。
转换时间为100μs。
单个+5V电源供电,模拟输入电压范围0~+5V,不需零点和满刻度校准。
ADC0809的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
参考电压V+为5V,V-为0V,工作电压为5V。
6、地址编码实现:
74LS138及逻辑器件
74LS138为3—8译码器,本设计需要地址选择的器件有3个(8259A,8255,8253),所以只要一个74LS138即可。
CPU的数据传输线A0~A3分别接芯片的A0~A3,CPU的A4~A6分别接74LS138的A,B,C,而其他位通过与门接74LS138的S3(S3为高电平有效)。
而74LS138的输出Y0接8259A,Y1接8255,Y2接8253。
从而得出器件的地址编码如下表:
器件
起始地址
8259A
10H
8255
20H
8253
30H
7、显示功能:
数码管显示
本设计通过两位数码管进行电压大小的显示,其中一位为各位,另一位为小数点后第一位。
通过8255进行动态显示。
六、软件设计
1、主程序流程图
Y
N
2、中断子程序
3、显示子程序
4、初始化
8295A初始化流程图
8253初始化流程图
8255初始化流程图
5、程序清单及说明
DATASSEGMENT
DATA1DB3FH,06H,56H,66H,7DH,07H,7FH,6FH,77H,7CH,39H,5EH;数码管显示向量表
SUMDD00H;数字电压的累加变量
NDB00H;采集数据的次数
VDB00H;显示的数字电压量
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVSI,OFFSETDATA1
MOVAL,13H;ICW1,单片8259A,上升沿有效,初始化时写入ICW4
OUT10H,AL
MOVAL,08H;ICW2,IR0~IR7的中断号为08H~0FH
OUT11H,AL
MOVAL,80H;ICW4,一般全嵌套,费缓冲方式1,正常中断结束,CPU为8088
OUT11H,AL
MOVAL,0FEH;OCW1,允许IR0中断
OUT11H,AL
MOVAL,00H;OCW2,非循环优化级方式,L2~L0无效,不设置EOI命令
OUT10H,AL
CLI;关中断,填写中断向量表
MOVAX,0
MOVES,AX
MOVDI,20H
MOVAX,OFFSETINTP
CLD
STOSW;将中断服务程序首址偏移值送20H
MOVAX,SEGINTP
STOSW;将中断服务程序首址段值送20H
STI;开中断
MOVAL,34H;选择计数器0,工作方式2,先写低8为再写高8位
OUT33H
MOVAL,0F4H;给低8位赋值
OUT30H,AL
MOVAL,01H;给高8位赋值
OUT30H,AL
MOVAL,82H;均为工作方式0,A、C口输出,B口输入
OUT23H,AL
A:
MOVDI,OFFSETSUM;把显示的数送给V
MOVAX,DI
MOVDI,OFFSETV
DIVAX,100
MULAL,50
DIVAX,256
MOVDI,OFFSETV
MOVDI,AX
MOVDI,OFFSETSUM;SUM清零
MOVDI,00H
MOVDI,OFFSETN;N清零
MOVDI,00H
B:
MOVDI,OFFSETN
CMPDI,100
JEA
MOVDI,OFFSETX
MOVAX,DI
MOVCX,AX*50/256;由于显示位为两位,所以把显示的电压扩大10倍,则可以显示小数点后的一位
MOVAL,01H;选择低位段选
OUT22H,AL
MOVBL,CL-10H;分离低位的数
MOVAL,(BL+SI)
OUT20H,AL;送低位数的段选
CALLDELAY;延时
MOVAL,02H;选择高位的位选
OUT22H,AL
MOVBL,CL/10;分离高位的数
MOVAL,(BL+SI);
OUT20H,AL;送高位数的段选
CALLDELAY;延时
JMPB;返回
STARTENDP
INTPPROCNEAR
INAL,21H;读取数字电压量
MOVDI,OFFSETSUM
ANDAX,00001111B
ADDDI,AX;SUM=SUM+采集数字电压
MOVDI,OFFSETN;采集累加次数加1
MOVCL,DI
MOVCH,CL+1
MOVDI,CH
IRET
INTPENDP
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
七、本设计实现功能
从附图的硬件连线图中,Vin口送入模拟电压量,然后再数码管上显示电压的大小,其中上面的为个位,下面的为小数点后第一位。
系统大概每隔0.1s进行100次数据采集完整的,然后把平均量送到数码管显示。
八、元件清单
名字
数量
功能
8088
1
CPU
8259A
1
中断
8282
3
地址锁存
8286
1
数据缓冲
与门
若干
要有14路,地址编码
非门
1
存储器/其他IO器件选择
8253
1
定时
8255
1
并行接口
7