南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx

上传人:b****5 文档编号:8108975 上传时间:2023-01-28 格式:DOCX 页数:20 大小:291.56KB
下载 相关 举报
南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx_第1页
第1页 / 共20页
南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx_第2页
第2页 / 共20页
南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx_第3页
第3页 / 共20页
南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx_第4页
第4页 / 共20页
南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx

《南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx》由会员分享,可在线阅读,更多相关《南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx(20页珍藏版)》请在冰豆网上搜索。

南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统.docx

南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统

硬件技术基础课程设计

—数据采集系统

(二)

学生姓名

学号

学校

南京航空航天大学

学院

自动化学院

专业

自动化专业

班级

同实验者

指导老师

2014年6月

实验目的

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

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

二、实验设备

1.微机

2.微机接口实验箱

实验内容

通过ADC0809的通道O(INO)采集电位器的值,并将其处理后通过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采用定时方式读取数据。

定时由8253实现,采用查询方式判断定时结束

5、显示须有一定的延时

四、实验总框图

五、实验电路图

1.ADC0809电路图

XIOR^

.RD

I0Y1二

-CS

DAC0832电路图

XD0-XD7

即_D7

2.

0809

-D7

3.

4.

10Y2

XIOW

8253电路图

xpay)7

XIO%育WR

XIOR*-RD

XA2..A0

XA3..Al

10Y3肯.CS

XDOXD7

XIO备

iy-D7i肯WR;RD

X1OR*

XA2

二AO

XA3-

[OYO

rCS

8255电路图

8255

OKi

丄-

|a■

B••

C**

INO

INI

8432MHZ

XAd

ADJ(电位器)

□UT0(0832)

XA2

XA3

0832

8253

PCO-PC2■

GATFX)

CLK0

OUTO

LI-L3

+5V

盲盲1.8432MHZ

•PC*7(8255)

数码管

德盘单元

 

5.电路实物图

六、

程序流程图及程序

1、

程序流程图:

初始化

输入1

YES

系统6号功能输出提示信息

NO

输出到DATA中

于2.5V

ES

送00H到0832

转换过程

YES

NO

输入2

启动8253定时

YES

NO

NO

定时结束

启动ADC0809

进行IN0转换

ES

查询8255

PC.7

输出到DATA中

送OFF倒0832

除33H

INCDI

调用

NO

输入ESC

INCDI

YES

NO

C劝0

调用2号功能输出

的第到个单向

输出到DI指向

"的第二个单元

调用十六进制转十进制子程序

TRANSF

BC显示子程序

DISPBCD

CR显示子程序

DISPCER

•的第到个单向

启动ADC0809

进行IN0转换

转换过程

启动0832

数模转换

转换过程

调用十六进制转十进制子程序

TRANSF

系统6号功能输出

提示信息

ES

余数乘10

除33H

余数乘10

除33H

2、

程序见附件

取出DI指向

单元中数据

查表

YES

取出DI指向单元中数据

1«——

调用2号功能输出

1—

INCDI

—"cX为0^:

 

七、实验结果、分析及所提问问题

1.实验结果

通过ADC0809的通道O(INO)采集电位器的值并经AD转换后在LED上以精度为百分位的十进制实时动态显示,通过DAC0832转换后输出到ADC0809在转换,最后输出到CRT

结果如下:

1)第一组:

2)

第二组:

 

2.实验分析:

1)CRT上显示:

当IN0小于2.5V时CRT理论显示应为0.00V,但由于ADC0809和DAC0832误差,CRT上动态显示0.00V附近的值,比如0.01V,0.02V;由于器件存在零点漂移,所以会存在变动。

当大于或等于2.5V时,CRT上理论显示5.00V,实际也为5.00V没有存在误差。

2)BCD上结果

由于BCD是实时显示的是采样的电位器上的电位。

由于电位器存在比较大的误差,所以会BCD最后一位(百

分位)一直在跳动。

3.提问问题及回答:

(提问时未加批注)

1)MOVAL,88H语句什么意思?

回答:

这个根据控制字写8255控制字,具体为PA、PBPC下C口口作为输出,PC上C口作为输入,其中PA口输出数据岛BCDPB口未用、PC口下C口输出选择工作的工作的BCD,PC.7作为数据定时器的定时查询端

口,以确保转换完成。

2)MOVDX,TC中TC是什么?

回答:

TC是定时器8253控制字的偏移地址,代表定义的常值,当写控制字时必须先写地址,具体为30CCH,

8253芯片偏移地址为30C0H

3)TESTAL,80H为什么是80H

回答:

这条语句用来查询是否定时到时间,由于电路中链接的PC.7对应的PC口的最高位,当定时未到时间时

(默认转换未结束),该位用8253输入的是低电平,而当定时结束时,该位为高电平输入,从而根据PC.7的高低电平实现查询转换是否结束。

4)MOVDATA2,AL语句什么意思?

回答:

把IN1输入的ADC0809转换结果存入预留的DATA2中,以便后面装换,输出。

八、实验总结及建议

1.总结:

遇到的第问题以及解决的办法:

1)8522的端口A地址信号给错,T8255A少打了一个A

解决办法:

把端口A的地址补全(错误书因为把T8255A少打了一个A)。

对这类问题其实还是比较麻烦的,检查一个几百行的代码是一件费时费力的事,不仅需要要足够的耐性,还有有一定的毅力。

不过每次检查出错误会以后都会有很大的成就感

2)数码管一直未未亮,同时CRT上也没显示

解决办法:

在我们小组多次分析电路原理及代码,得出理论无错以后,我们从头到尾把链接的电路检查了5遍,第一遍查

出有一根线接错,在我们改正后,检查了第2、3、4遍,但都没有查出错误,我们初步怀疑硬件硬件存在问题。

我们那个时候还不知道怎么查错误,然后我们找到了我班里的大牛华仔(外号)来给我们分析了一遍,他的没有查出错误,原理和代码他也看了一遍也没有问题。

这时我们才肯定是硬件出了问题,然后在华仔的帮助下,通过把BCD

直接接到数据端口,跳过8255芯片,然后BCD也没亮,在把数据线接到LED上,发现也没亮,差不多可以确定CPU应该出了问题。

3)BCD和CRT同步显示

解决办法:

但未能肯定,我们这时直接换了一个实验箱,然后就成功显示了数据,不过不幸的是,这个实验箱依然存在问

题,但IN1口接输入时,BCD和CRT同时为显示0.00V或者5.00V。

IN1不接时BCD和CRT可以同步显示INO的采样值,在检查了2遍链接后,又一次请了大神,大神说了一句我们也出现了这个问题,最后我们换了一个实验箱才

解决的。

这时已经是下午1点多了,无奈,我们也在换端口地址后,从IN2,IN3等输入,依然没有解决,没办法,

我们就换了第二次实验箱。

也许是运气差到一定程度后就变好了,在10多分钟的链接电路后,竟然一次性成功了,

一点问题都没有。

对于以上出现的问题,硬件的出现问题的可能性为95%,但还有5%的可能性是我们没查出问题。

每一次实验,对于我们这些经验不多的新手说,都是一个比较大的挑战,当遇到硬件错误时,更是如此。

其实对于我们来说,最大的挑战无非就是硬件出问题,然后我们慢慢排查,这是一个很提升能力的过程,同时一个很艰难的过程。

总的来说,遇到了很多问题,在解决问题的过程中自己的能力得到很大的提升。

每一次课程设计都能让我的动手能力的到锻炼。

从组装万用表,数电的数字闹钟,自控的倒立摆系统的控制都能明显感觉自己在不断的进步。

2.建议

1)此次课设短短的时间两天内完成根本不可能,就代码就写了2天,而后查错这类的也花了不少时间,如果不是

子啊为开始时就开始准备,那么用两天根本完不成。

所以希望以后课设能有充分的时间准备;

2)实验箱存在的问题比较多,希望下次使用,能确保实验箱的完好,以便

九、参考文献:

南京航空航天大学自编

南京航空航天大学电工电子实验中心自编

《硬件技术基础》万晓东、陈则王、孔德明编著

《微机原理及课程设计指导书》王卫喜编著

十、附件:

附件1:

程序

IOYOEQU3000H;8255端口地址

IOY1EQU3040H;0809端口地址

IOY2EQU3080H;0832端口地址

IOY3EQU30C0H;8253端口地址

T8255A

EQUIOY0

;8255A端口地址

T8255C

EQUIOY0+08H;8255C端口地址

T8255D

EQUIOY0+0CH

;8255控制端口地址

IN0EQUIOY1

;0809IN0选通信号

IN1EQUIOY1+04H;

0809IN1选通信号

CS_DA

EQUIOY2;

0832端口地址

T0EQUIOY3

;8253定时器0选通信号

TCEQUIOY3+0CH

;8253控制端口地址

DATA

SEGMENT

;数据段定义

DATA1

DB?

;存放IN0转换结果

DATA2

DB?

;存放IN1转换结杲

NUM1

DB3DUP⑺

;存放IN0转换个位,十分位,百分位

NUM2

DB3DUP⑺

;存放IN1转换的个位,十分位,百分位

TAB1

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;定义数码管断码表

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

 

MES

DB'

DB'

DB'

DB

Interface',0DH,0AHPress1totransfrom!

Press2toEndProgro0DH,0DH,0AH,'$'

;提示信息

',0DH,0AH

m!

',0DH,0AH

MES1

DB0DH,0AH,0DH,0AH

;提示信息

DATA

DB'

DB

ENDS

START!

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

',0DH,0AH

STACK1

DB

STACK1

SEGMENT

100DUP⑺

ENDS

PARASTACK'STACK'

;定义堆栈段

CODESEGMENT

;定义代码段

ASSUMEDS:

C0DE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA;标准序

MOVDS,AX

MOVDX,OFFSETMES;输出提示信息

MOVAH,09H

INT21H

LOOP1:

MOVDL,0FFH

MOVAH,6

;调用系统6号功能输入数据

INT21H

CMPAL,31H

;判断输入是否为1

JZBEGIN

;为1转到开始程序

CMPAL,32H

JZEXIT

;为2结束,返回DOS

JMPLOOP1

EXIT:

MOVAH,4CH;返回DOS

INT21H

BEGIN:

MOVDX,OFFSETMES1

MOVAH,09H

INT21H

ADC0809:

MOVDX,T8255D

MOVAL,88H

OUTDX,AL

MOVDX,IN0OUTDX,AL

MOVDX,TC

MOVAL,31H

OUTDX,AL

MOVDX,T0

MOVAX,75HOUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,T8255C

WAIT0:

INAL,DXTESTAL,80HJZWAIT0

MOVDX,IN0

INAL,DX

MOVDATA1,ALCMPAL,80H

MOVAL,0FFH

JNBDAC0832

MOVAL,0

;写8255控制字地址

;写8255控制字

;启动转换IN0端

该句为提问句1)

;写8253控制字地址该句为提问句2)

;写8253初值

;8255C口地址,PC.7于判断定时结束信号输入

;如果PC.7为1,则输入结束该句为提问句3);转换未结束,继续等待

;把IN0口地址压人DS

;输入转换的数据IN0到AL中

;和2.5V进行比较

;小于2.5V时给AL赋0

 

;DA转换进行选通启动转换

DAC0832:

MOVDX,CS_DA

OUTDX,AL

MOVDX,IN1

OUTDX,AL

MOVDX,TC;初始化8253

MOVAL,31H

OUTDX,AL

MOVDX,T0;取定时器0,并赋初值

MOVAX,75H

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,T8255C;

8255C端口地址

WAIT1:

;等待转换结束

IN

AL,DX

TEST

AL,80H;

查询转换是否结束

JZ

WAIT1

MOV

DX,IN1

IN

AL,DX

MOV

DATA2,AL

;把转换结果存在

DATA2中该句为提问句4)

MOV

AL,DATA1

;取IN0通道转换结果

MOVDI‘OFFSETNUM1;

CALLTRNSF;调用数码管转换程序

MOVDI,OFFSETNUM1;

CALLDISP;调用数码管显示子程序

MOVAL,DATA2;取IN1通道转换结果

MOVDI,OFFSETNUM2;NUM2地址送入DI

CALLTRNSF;调用转换程序

MOVDI,OFFSETNUM2;NUM2地址送入DI

CALL

DISPCRT

;调用CRT显示子程序

MOV

DL,0FFH

;调用系统6号功能进行从键盘输入

MOV

AH,6

INT

21H

CMP

AL,1BH

;当输入ESC时还回系统DOS

JNZ

ADC0809

JMP

START

;不满足返回时,从新开始

TRNSFPROC

;AD转换结果转换为十进制子程序

PUSH

AX

;保护现场

PUSH

DX

MOV

AH,0

MOV

DX,33H

;FFH对应的模拟量为5V,33H对应1V

DIV

DL

;AX除以51,商tAL,余数tAH

MOV

[DI],AL

;将AL结果存于NUM1,即存入个位存储单兀

MOV

AL,AH

MOV

DX,0AH

MUL

DL

;余数乘以10

MOV

DX,33H

DIV

DL

;再除以51,商tAL,余数tAH

INCDI

MOV

[DI],AL;

;将十分位存于NUM1的第二个单兀

MOV

AL,AH

MOV

DX,0AH

MUL

DL

;余数乘以10

MOV

DX,33H

DIV

DL

;再除以51,

商tAL,余数tAH

INC

DI

MOV

[DI],AL

;将百分位存于NUM1

第三个单元

;恢复现场

CEND:

POPDX

POPAX

RET

TRNSFENDP

MOV

AL,[DI]

;将个位内容tAL

LEA

BX,TBL1

XLAT

;查表显示

ADD

AL,80H

;加小数点

MOV

DX,T8255A

OUT

DX,AL

;8255的A口作为段控

MOV

AL,01H

OUT

DX,AL

CALL

DELAY

 

MOVCX,02H

LOOP1:

INC[DI];十分位,百分位显示

MOV

AL,[DI]

;将十分位内容tal

LEA

BX,TBL1

XLAT

;查表显示

MOV

DX,T8255A

OUT

DX,AL

;8255的B口作为段控

MOV

DX,T8255C

;8255的C口作为位控

 

MOVAL,02HOUTDX,ALCALLDELAY

COMCX,00H

JNZ

LOOP1

POP

BX

;恢复现场

POP

AX

POP

DS

RET

DELAY

PROC

PUSH

MOV

NEAR

CX

BX,0040H

DEL1:

MOV

CX,0FFFFH

LOOP

$

DEC

BX

JNZ

DEL1

POP

CX

RET

DELAY

ENDP

CODE

ENDS

DISPBCDENDP

ENDSTART

;延时子程序

 

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

当前位置:首页 > 工作范文 > 行政公文

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

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