基于8086的数字电压表设计.docx

上传人:b****0 文档编号:10114471 上传时间:2023-05-23 格式:DOCX 页数:22 大小:607.63KB
下载 相关 举报
基于8086的数字电压表设计.docx_第1页
第1页 / 共22页
基于8086的数字电压表设计.docx_第2页
第2页 / 共22页
基于8086的数字电压表设计.docx_第3页
第3页 / 共22页
基于8086的数字电压表设计.docx_第4页
第4页 / 共22页
基于8086的数字电压表设计.docx_第5页
第5页 / 共22页
基于8086的数字电压表设计.docx_第6页
第6页 / 共22页
基于8086的数字电压表设计.docx_第7页
第7页 / 共22页
基于8086的数字电压表设计.docx_第8页
第8页 / 共22页
基于8086的数字电压表设计.docx_第9页
第9页 / 共22页
基于8086的数字电压表设计.docx_第10页
第10页 / 共22页
基于8086的数字电压表设计.docx_第11页
第11页 / 共22页
基于8086的数字电压表设计.docx_第12页
第12页 / 共22页
基于8086的数字电压表设计.docx_第13页
第13页 / 共22页
基于8086的数字电压表设计.docx_第14页
第14页 / 共22页
基于8086的数字电压表设计.docx_第15页
第15页 / 共22页
基于8086的数字电压表设计.docx_第16页
第16页 / 共22页
基于8086的数字电压表设计.docx_第17页
第17页 / 共22页
基于8086的数字电压表设计.docx_第18页
第18页 / 共22页
基于8086的数字电压表设计.docx_第19页
第19页 / 共22页
基于8086的数字电压表设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于8086的数字电压表设计.docx

《基于8086的数字电压表设计.docx》由会员分享,可在线阅读,更多相关《基于8086的数字电压表设计.docx(22页珍藏版)》请在冰点文库上搜索。

基于8086的数字电压表设计.docx

基于8086的数字电压表设计

 

《微机原理与接口技术》

课程设计

 

姓名:

叶阳

学号:

0945531210

班级:

09电信2班

专业:

电子信息工程

学院:

电气与信息工程学院

 

江苏科技大学张家港校区

2012年6月

 

 

基于8086的数字电压表设计

摘要:

数字电压表利用模-数转换原理测量电压值,并以数字形式显示测量结果的仪表。

本课题基于8086系统设计软件程序,采用A/D模数转换芯片0809将采集的模拟量转换为数字量,通过并行接口芯片8255A在数码管上实时显示,并且采用8254和8259A芯片设置采样时间以及产生中断。

关键字:

数字电压表,0809,8255,8259,数码管

1.理论部分

1.1课题要求与内容

课题:

设计数字电压表

课题内容及要求:

1)使用0809芯片,获取电压数据;

2)通过8255A芯片,使数据在数码管上实时显示;

3)使用8254芯片,通过按键设置采样时间,比如60s采集一次;

4)使用8259A芯片,采样时间结束后产生中断,采集电压数据;

附加要求:

使用8251芯片,通过串口在PC机上的串口调试助手显示实时电压信号。

1.2系统方案设计

1.2.1实验器材

表1实验器件

实验器材

名称

数量

备注

PC机

一台

唐都实验箱

一台

使用的芯片

0809

一片

8255

一片

8254

一片

8259

一片

1.2.2实验总体框图:

图1方案设计框图

1.3系统硬件设计

1.3.1所用芯片及原理简介:

1)A/D转换器0809

ADC0809的引脚图如下图所示:

图20809引脚图

ADC0809是双列直插式8位A/D转换芯片,具有8路模拟量输入线,可在程序控制下对任意一路进行A/D转换,得到8位二进制数字量。

ADC0809包括一个8位的逐次逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑。

用它可以直接输入8个单端的模拟信号,分时进行A/D转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。

ADC0809的主要技术指标为:

分辨率:

8位;单电源:

+5V;

总的不可调误差:

±1LSB;转换时间:

取决于时钟频率

模拟输入范围:

单极性0~5V时钟频率范围:

10KHz~1280KHz

A/D转换方法:

IN0单极性输入电压与转换后数字的关系为:

N=Ui/(Uref/256)

其中Ui为输入电压,Uref为参考电压(+5V)

本设计中电压模拟量从ADC0809的IN0端输入。

2)并行接口芯片8255

8255A的引脚图如下图所示:

图38255A引脚图

8255A是一个40引脚的双列直插式并行接口芯片。

8255芯片内部有3个8位的输入输出端口,即A口,B口和C口。

从内部控制角度来讲,可分为两组:

A组和B组;A组控制模块管理A口和C口的高四位,B组控制模块管理B口和C口的第四位。

8255的三种工作方式:

方式0:

基本输入输出方式;

方式1:

选通型输入输出方式;

方式2:

双向数据传送方式。

本设计中使用8255端口A输出LED数码管的位选信号和端口B输出段码信号

用于控制数码管对电压值的显示。

3)定时计数芯片8254:

8254芯片的引脚图如下图所示:

图48254引脚图

8254芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。

8254芯片主要由四部分组成:

1.数据总线缓冲器;2.读写逻辑;3.控制字寄存器;4.计数器;

8254的工作方式:

方式0:

计数到0结束输出正跃变信号方式;

方式1:

硬件可重触发单稳方式;

方式2:

频率发生器方式;

方式3:

方波发生器;

方式4:

软件触发选通方式;

方式5:

硬件触发选通方式。

4)中断控制芯片8259A:

8259A的引脚图如下图所示:

图58259A引脚图

8259A是为了进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。

单个的8259A能管理8级向量优先级中断。

在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。

8259A有多种工作方式,能用于各种系统。

各种工作方式的设定是在初始化时通过软件进行的。

在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态,编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。

5)8段LED数码管:

表2:

共阴极数码管字形代码

显示字形

g

f

e

d

c

b

a

段码

0

0

1

1

1

1

1

1

3fh

1

0

0

0

0

1

1

0

06h

2

1

0

1

1

0

1

1

5bh

3

1

0

0

1

1

1

1

4fh

4

1

1

0

0

1

1

0

66h

5

1

1

0

1

1

0

1

6dh

6

1

1

1

1

1

0

1

7dh

7

0

0

0

0

1

1

1

07h

8

1

1

1

1

1

1

1

7fh

9

1

1

0

1

1

1

1

6fh

本设计用2位8段LED数码管分别显示电压值(电位器模拟电压)的十位和个位部分。

1.3.2分部原理图片:

A/D转换模块0809:

图6A/D转换模块

并行接口模块8255:

图7并行接口8255模块

设置采样时间模块8253:

图8采样时间模块8253

设置中断模块8259:

图9设置中断模块8259

1.4系统软件设计

1.4.1A/D转换部分

图10A/D模数转换部分

 

1.4.28254和8259模块

图118254和8259部分

 

1.4.3中断程序

图12中断部分

2.实践部分

2.1系统硬件原理简介

硬件设计总图如下图:

图13硬件原理总图

2.2系统硬件调试中出现的问题及解决措施

2.2.18254计数器模块

在调试中把计数器1输出连接至LED灯(检验能否进入中断程序)时,灯并未出现闪烁而是持续低电平,检查程序发现,端口存储器未改动。

修改后又持续高电平,还是未见闪烁,经过田老师检查发现电路接线错误,后改正能使灯闪即可以进入中断。

2.2.20809AD转换及8255显示模块

在调试过程中将电位器的ADJ端接到0809的IN0口作为模拟信号输入,但是调节旋钮发现产生的数字信号没有任何变化,然后我们尝试用以前微机接口实验的程序控制0809还是没有任何变化,初步认为是电位器损坏无法使用,换过数次试验台后能显示00——FF的电压变化。

2.3系统软件

2.3.1软件设计

程序如下:

IOY0EQU3000H;片选IOY0对应的端口始地址

IOY1EQU3040H;片选IOY0对应的端口始地址

AD0809EQUIOY1;AD0809的端口地址

MY8255_AEQUIOY0+00H*4;8255的A口地址

MY8255_BEQUIOY0+01H*4;8255的B口地址

MY8255_CEQUIOY0+02H*4;8255的C口地址

MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址

IOY2EQU3080H;片选IOY0对应的端口始地址

MY8254_COUNT0EQUIOY2+00H*4;8254计数器0端口地址

MY8254_COUNT1EQUIOY2+01H*4;8254计数器1端口地址

MY8254_COUNT2EQUIOY2+02H*4;8254计数器2端口地址

MY8254_MODEEQUIOY2+03H*4;8254控制寄存器端口地址

IOY3EQU30C0H;片选IOY0对应的端口始地址

MY8259_ICW1EQUIOY3+00H;实验系统中8259的ICW1端口地址

MY8259_ICW2EQUIOY3+04H;实验系统中8259的ICW2端口地址

MY8259_ICW3EQUIOY3+04H;实验系统中8259的ICW3端口地址

MY8259_ICW4EQUIOY3+04H;实验系统中8259的ICW4端口地址

MY8259_OCW1EQUIOY3+04H;实验系统中8259的OCW1端口地址

MY8259_OCW2EQUIOY3+00H;实验系统中8259的OCW2端口地址

MY8259_OCW3EQUIOY3+00H;实验系统中8259的OCW3端口地址

INTR_IVADDEQU01C8H;INTR对应的中断矢量地址

INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址

INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址

INTR_IMEQU0FBH;INTR对应的中断屏蔽字

STACK1SEGMENTSTACK

DB256DUP(?

STACK1ENDS

DATASEGMENT

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

CUNDB256DUP(?

MESDB'Pressnumbertosetinterrupttime!

',0AH,0DH,0AH,0DH,'$'

STR1DB'AD0809:

IN0$';定义显示的字符串

BUFFEDB2DUP(?

CS_BAKDW?

;保存INTR原中断处理程序入口段地址的变量

IP_BAKDW?

;保存INTR原中断处理程序入口偏移地址的变量

IM_BAKDB?

;保存INTR原中断屏蔽字的变量

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETCUN

CALLMY_8259

CALLMY_8254

CALLMY_0809

QUERY:

CALLDISPLAY1

MOVAH,1;判断是否有按键按下

INT16H

JNZQUIT;有按键则退出

MOVDX,MY8259_OCW3;向8259的OCW3发送查询命令

MOVAL,0CH

OUTDX,AL

INAL,DX;读出查询字

TESTAL,80H;判断中断是否已响应

JZQUERY;没有响应则继续查询

CALLMY_8254

CALLMY_0809

CALLDISPLAY1

CALLMY_8259

JMPQUERY

QUIT:

MOVAX,4C00H;结束程序退出

INT21H

;***********************************8254*******************************

;*********************************************************************

MY_8254PROCNEAR

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,0B6H;计数器2,方式3

OUTDX,AL

MOVDX,MY8254_COUNT2;装入计数初值

MOVAL,64H;100分频

OUTDX,AL

MOVAL,00H

OUTDX,AL

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,36H;计数器0,方式3

OUTDX,AL

MOVDX,MY8254_COUNT0;装入计数初值

MOVAL,00H;18432分频

OUTDX,AL

MOVAL,48H

OUTDX,AL

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,74H;计数器1,方式0

OUTDX,AL

MOVAH,09H

MOVDX,OFFSETMES

INT21H

MOVAH,01H

INT21H

SUBAL,30H

MOVBL,0AH

MULBL

MOV[SI],AL

MOVAH,01H

INT21H

SUBAL,30H

MOVBL,[SI]

ADDAL,BL

MOVDX,MY8254_COUNT1;装入计数初值

;MOVAL,02H;计数2秒

OUTDX,AL

MOVAL,00H

OUTDX,AL

RET

MY_8254ENDP

;**************************8259********************************

;**************************************************************

MY_8259PROCNEAR

MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1

MOVAL,13H;边沿触发、单片8259、需要ICW4

OUTDX,AL

MOVDX,MY8259_ICW2;初始化实验系统中8259的ICW2

MOVAL,08H

OUTDX,AL

MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4

MOVAL,01H;非自动结束EOI

OUTDX,AL

MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1

MOVAL,0FCH;打开IR0和IR1的屏蔽位

OUTDX,AL

RET

MY_8259ENDP

;*************************0809**************************

;FUNCTION:

;NAME:

;*******************************************************

MY_0809PROCNEAR;采样

PUSHDX

PUSHCX

PUSHAX

MOVDX,AD0809;启动A/D转换

OUTDX,AL

CALLDALLY

MOVDX,OFFSETSTR1;显示字符串AD0809:

IN0

MOVAH,9

INT21H

MOVDX,AD0809;读A/D转换结果

INAL,DX

MOVCH,AL;分析结果进行显示

ANDAL,0F0H

MOVCL,04H

SHRAL,CL;取出数据的十位

MOVBUFFE,AL

CMPAL,09H

JGA1

ADDAL,30H

JMPA2

A1:

ADDAL,37H;对A~F的处理

A2:

MOVDL,AL;对0~9的处理

MOVAH,02H

INT21H

MOVAL,BUFFE

MOVBX,OFFSETDATA

XLAT

MOV[SI],AL

MOVAL,CH

ANDAL,0FH;取出数据的各位

MOVBUFFE,AL

CMPAL,09H

JGA3

ADDAL,30H

JMPA4

A3:

ADDAL,37H;对A~F的处理

A4:

MOVDL,AL;对0~9的处理

MOVAH,02H

INT21H

MOVAL,BUFFE

MOVBX,OFFSETDATA

XLAT

INCSI

MOV[SI],AL

POPAX

POPCX

POPDX

RET

MY_0809ENDP

;**************************DISPLAY1**********************

;*********************************************************

DISPLAY1PROCNEAR

PUSHAX

PUSHDX

MOVDX,MY8255_MODE;初始化8255工作方式

MOVAL,81H;方式0,A口、B口输出,C口低4位输入

OUTDX,AL

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL

MOVAL,01H

MOVDX,MY8255_A

OUTDX,AL

CALLDALLY

DECSI

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL

MOVAL,02H

MOVDX,MY8255_A

OUTDX,AL

CALLDALLY

INCSI

POPDX

POPAX

DISPLAY1ENDP

;**********************DELLY**************************

;FUNCTION:

;NAME:

;*****************************************************

DALLYPROCNEAR;软件延时子程序

PUSHCX

PUSHAX

MOVCX,4000H

D1:

MOVAX,0300H

D2:

DECAX

JNZD2

LOOPD1

POPAX

POPCX

RET

DALLYENDP

CODEENDS

ENDSTART

3.课程设计心得

本次设计基本完成了课题要求,但仍具有一些不足之处。

首先未将电位器值转换为电压值显示,即将两位的电阻值转换成为三位的电压值(一位整数部分,两位小数部分)。

其次,考虑到数码管和矩阵按键已经复用,并未使用试验箱上的矩阵按键,而改用的DOS系统功能调用,采用电脑键盘输入。

最后,对课题的附加部分因为专业知识不足也未能很好完成,而是采用在电脑CMD窗口中跟踪显示实时电压值。

通过本次课程设计,我获益良多,对微机接口这门课程和8086系统有了更深入的了解,掌握了如何使用汇编语言编写程序实现软硬件的结合,达到课题要求。

4.附录

附录1:

参考文献:

【1】陈红卫主编.2009.微型计算机基本原理与接口技术(第二版)[M].北京:

科学出版社

【2】西安唐都科教仪器公司编著32位微机原理与接口技术实验教程

【3】樊昌信,曹丽娜编著.2010.通信原理(第六版)[M].北京:

国防工业出版社

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2