硬件课设报告.docx

上传人:b****6 文档编号:3336104 上传时间:2022-11-21 格式:DOCX 页数:12 大小:93.90KB
下载 相关 举报
硬件课设报告.docx_第1页
第1页 / 共12页
硬件课设报告.docx_第2页
第2页 / 共12页
硬件课设报告.docx_第3页
第3页 / 共12页
硬件课设报告.docx_第4页
第4页 / 共12页
硬件课设报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

硬件课设报告.docx

《硬件课设报告.docx》由会员分享,可在线阅读,更多相关《硬件课设报告.docx(12页珍藏版)》请在冰豆网上搜索。

硬件课设报告.docx

硬件课设报告

 

南京航空航天大学

硬件课程设计

课设名称

数据采集显示系统设计

(一)

作者

陈凯030810330

同实验者

孙少东

专业

自动化

班级

0308103

指导教师

孔德明

二〇一一年六月

数据采集显示系统设计

(一)

一、实验任务与目的

1.利用PC机和实验装置设计并实现数据采集系统

2.进一步掌握微机硬件和软件综合设计方法

二、实验内容和要求

通过ADC0809的通道0(IN0)采集电位器的值,并将其处理后通过DAC0832输出,该输出直接连接到ADC0809的通道1(IN1),并将IN0和IN1采集到的数据分别在LED和CRT上显示。

要求:

1、设计简单操作界面,具有开始与结束运行控制的功能

2、IN0采集的电压值在LED上以十六进制显示

3、对IN0采集的通道进行如下处理:

(1)如果IN0<2.5V,则送00H到DAC0832

如果IN0≥2.5V,则送FFH到DAC0832

(2)DAC0832的输出接ADC0809的IN1,同时接示波器

(3)IN1采集的电压值以十进制在CRT上显示

4、ADC0809采用查询方式读取数据

5、显示须有一定的延时

三、硬件设计,接线图及简要说明

1、硬件原理框图

2、接线图

按上图接完电路后对应芯片的地址为:

(1)8255:

PA口地址:

3000H PB口地址:

3004HPC口地址:

3008H 控制端口地址:

300CH

(2)ADC0809:

IN0地址为:

3040H IN1地址为:

3044H

(3)DAC0832:

DAC0832地址为(单缓冲模式):

3080H

3、总体设计思想

程序特点:

(1)能够动态跟踪采集数据的变化情况。

通过不断循环采集。

(2)能够实现开始和随时结束采集的控制。

通过每次循环开始前判断键盘中有没有结束符输入。

(3)本次课设最大特点是利用DOS的02H号功能调用显示电压值0.00和5.00,使得程序简单清晰。

程序思想

(1)选通ADC0809通道0采集电阻电位,将其转化为数字信号。

(2)此时通过8255的PA0口不断读取ADC0809的EOC信号,一旦EOC信号变成高电位,CPU读取ADC转化的数字信号。

(3)同时将其转化成十六进制存放在变量BUF中,为LED灯的显示做准备。

(4)将BUF中存的十六进制数,通过动态扫描的方法显示在LED灯上。

(5)将第二步得到的数字信号与2.5V作比较,将比较结果送DAC0832,再将DAC0832得到的模拟量送ADC0809的通道1转化成数字量存入VV中,将VV对应的电压值送到屏幕上显示。

(6)用相同的方法从第一步开始循环,在循环前判断键盘上是否有结束符输入。

 

四、程序框图

1、主程序流程图

 

2、LED灯动态扫描显示程序流程图

3、CRT显示子程序流程图

五、实验结果、体会和建议

实验结果

通过调节电阻电位值,LED灯连续显示00H~FFH,而且高位的LED灯明显比低位稳定明亮;CRT上当电阻的电位大于等于2.5V时显示5.00,当电阻的电位值小于2.5V时显示0.00。

实验结果与要求相符。

实验体会

通过本次课程设计,我加深了对ADC0809、DAC0832、8255等芯片的认识,熟悉了LED数码管的使用,更加熟练地掌握了DOS的各种功能调用命令,计算机硬件技术基础知识的运用能力得到进一步提高。

这次的课设整体思路比较清晰,所以对编程思想来说比较清楚,就是将平时学习的各种接口芯片综合起来进行应用。

1、硬件连线方面

本次硬件连线较为简单,线路数目也不多。

需要注意的问题是:

要将同一根线连接的两个端口的高低位对好,需要颜色一致,否则容易出现混乱,影响结果。

2、软件编程方面

本次软件编程的程序较长,编写程序时需要采取分块的思路,先明确主要步骤有哪些,画出流程图,再进行语句编写。

ADC0809主要是明确通道0和通道1的地址,还有通过EOC的高低电平的查询判断判别信号是否转换完毕。

8255一般是用作接口通道,使用前要注意通过对控制端口的初始化来控制端口的工作方式,在本次课设中8255主要是用来为CPU提供查询EOC信号的通道,以及提供LED动态扫描显示的段码控制口和位码控制口。

CRT是显示ADC0809IN1采集的数字量对应的电压值,需要用DOS功能调用显示电压值0.00和5.00。

另外,本次编程涉及到的变量地址比较多,所以不再将地址直接列在各条程序语句中,而是将地址先用‘EQU’语句定义在程序开头,再在程序中直接使用变量名,大大方便了编程和修改。

3、数码管使用方面

虽然在之前的硬件实验中也用到过数码管,但对它的使用方法并不是非常了解,这也是本次课设中遇到的一个比较大的困难。

比如如何协调段码和位码,应当先将段码表对应好,通过8255的端口控制位码和段码,并且注意适当的延时保证显示效果。

4、实验中应该注意的问题

1芯片的地址一定要确保译码正确,否则芯片无法使用。

我们就遇到了数码管不亮灯情况,究其原因是8255芯片的片选地址接错了

2在DEBUG程序时,如果出现几十甚至上百个ERROR不要畏惧,很多ERROR是有关联的,改几个后你就会发现明显减少了,要注意避免出现中文逗号

3遇到程序出现很奇怪的问题时,最好用单步执行的方法,耐心寻找错误,用这种方法是最有效最踏实的方法,像器件损坏之类的问题都可以检查出来

4接线时一定注意线的顺序,看清楚每根线的颜色,避免接错

5数码管显示时,要延时适当时间,时间长短视显示效果而定

附录:

程序清单

IOY0EQU3000H

IOY1EQU3040H

IOY2EQU3080H

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

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

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

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

ADCSIN0EQUIOY1+00H*4;ADC0809的IN0地址

ADCSIN1EQUIOY1+01H*4;ADC0809的IN1地址

DACSEQUIOY2;DAC0832的端口地址

DATASEGMENT

BUFDB2DUP(?

VVDB?

;存储屏幕上要显示电压值对应的数字量

BUFFDB?

;存储LED灯要显示的两位十六进制

TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

MESDB'Welcome!

',0DH,0AH,'$'

MESSDB'Press1toBegin!

',0DH,0AH

DB'Press2toEnd!

',0DH,0AH,'$'

TIPMESDB'Start!

',0DH,0AH

DB'Press2toreturntomainmenu!

',0DH,0AH,'$'

DATAENDS

STACSEGMENTPARASTACK'STACK'

DB200HDUP(?

STACENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STAC

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES

MOVAH,09H

INT21H

LOPP:

MOVDX,OFFSETMESS

MOVAH,09H

INT21H;界面显示

LOP1:

MOVDL,0FFH

MOVAH,6

INT21H;等待键盘输入

CMPAL,31H

JZBEG

CMPAL,32H

JZEXIT

JMPLOP1;判断不同的输入执行不同的功能

EXIT:

MOVAH,4CH

INT21H

BEG:

MOVDX,OFFSETTIPMES

MOVAH,09H

INT21H

AD_GET:

MOVDX,ADCSIN0

OUTDX,AL;启动0809IN0转换

MOVDX,PCTL

MOVAL,90H

OUTDX,AL;对8255控制端口初始化,设置A口工作方式

MOVDX,PA8255

WAIT1:

INAL,DX

TESTAL,01H

JZWAIT1;查询等待0809转换完成

MOVDX,ADCSIN0

INAL,DX

XORAH,AH

PUSHAX;保护AX中的值

MOVCL,04H

SHLAX,CL

SHRAL,CL

MOVSI,OFFSETBUF

MOV[SI],AL

MOV[SI+1],AH

POPAX

CMPAL,80H;与2.5V比较,比较结果送入0832转换

JNBFULL

MOVAL,00H

JMPDA_OUT

FULL:

MOVAL,0FFH

DA_OUT:

MOVDX,DACS

OUTDX,AL

MOVDX,ADCSIN1

OUTDX,AL;启动0809IN1转换

MOVDX,PCTL

MOVAL,90H

OUTDX,AL;对8255控制端口初始化,设置A口工作方式

MOVDX,PA8255

WAIT2:

INAL,DX

TESTAL,01H

JZWAIT2;查询等待0809转换完成

MOVDX,ADCSIN1

INAL,DX

MOVVV,AL

CALLLED;动态显示LED灯

CALLDISP;将IN1采集到的数据转换成对应的电压值

MOVDL,0FFH

MOVAH,06H

INT21H

CMPAL,32H;判断是否有结束符输入,若有则结束采集

JNZAD_GET

JMPLOPP

 

LEDPROC;LED灯动态扫描显示程序

MOVSI,OFFSETBUF

MOVCL,02H;CL中的值用于选灯(位值)

DISI:

MOVAL,[SI]

MOVBX,OFFSETTAB

XLAT

MOVBUFF,AL

MOVDX,PCTL

MOVAL,80H

OUTDX,AL;对8255控制端口初始化,设置B口和C口工作方式

MOVDX,PB8255

MOVAL,BUFF

OUTDX,AL;输出段码

MOVAL,CL

MOVDX,PC8255

OUTDX,AL;输出位码

CALLDLY;调用延时程序,保证LED灯的显示效果

CMPCL,01H;判断动态扫描是否结束

JZQUIT

DECCL;位码向右移1位

INCSI;段码地址+1

JMPDISI

QUIT:

RET

LEDENDP

 

DISPPROC;CRT显示子程序

PUSHAX

PUSHDX

PUSHCX;保护现场,使用的寄存器有AX,DX,CX

MOVAH,2

MOVDL,08H

INT21H

INT21H

INT21H

INT21H

MOVAL,VV

CMPAL,80H;判断0809IN1转换结果的大小

JNBBIG

SMAL:

MOVDL,30H

MOVAH,02H

INT21H;输出电压值0.00

JMPDOT

BIG:

MOVDL,35H

MOVAH,02H

INT21H;输出电压值5.00

DOT:

MOVDL,2EH

MOVAH,02H

INT21H

MOVDL,30H

MOVAH,02H

INT21H

INT21H;输出两个0,使输出精度为小数点后两位

EXITY:

POPCX

POPDX

POPAX

RET

DISPENDP

DELAYPROC;副延时程序

PUSHCX

MOVCX,0FFFH

LOOP$

POPCX

RET

DELAYENDP

DLYPROC;主延时程序,两个延时程序的延时时间不同,方便配合使用

PUSHCX

MOVCX,0FFH

DLY1:

CALLDELAY

LOOPDLY1

POPCX

RET

DLYENDP

CODEENDS

ENDSTART

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1