数据采集系统的设计与实现.docx

上传人:b****6 文档编号:3977246 上传时间:2022-11-26 格式:DOCX 页数:21 大小:86.52KB
下载 相关 举报
数据采集系统的设计与实现.docx_第1页
第1页 / 共21页
数据采集系统的设计与实现.docx_第2页
第2页 / 共21页
数据采集系统的设计与实现.docx_第3页
第3页 / 共21页
数据采集系统的设计与实现.docx_第4页
第4页 / 共21页
数据采集系统的设计与实现.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数据采集系统的设计与实现.docx

《数据采集系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《数据采集系统的设计与实现.docx(21页珍藏版)》请在冰豆网上搜索。

数据采集系统的设计与实现.docx

数据采集系统的设计与实现

 

《汇编语言+微型计算机技术》

课程设计报告

 

课设题目

数据采集系统的设计与实现

系部

班级

学生姓名

学号

序号

指导教师

时间

 

目录

一、设计目的3

二、设计内容3

三、硬件设计及分析4

1.总体结构图4

2.各部件端口地址设计及分析4

3.各部件的组成及工作原理5

四、软件设计及分析7

1.总体流程图7

2.主要程序编写及分析8

五、系统调试12

1.调试环境介绍12

2.各部件的调试13

3.调试方法及结果19

六、总结与体会20

七、附录20

 

数据采集系统的设计与实现

一、设计目的

1.通过本设计,使学生综合运用《微型计算机技术》、《汇编语言程序设计》以及电

子技术等课程的内容,为以后从事计算机检测与控制工作奠定一定的基础。

2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编

程器件的使用,掌握译码器74LS138的使用。

3.学会用汇编语言编写一个较完整的实用程序。

4.掌握微型计算机技术应用开发的全过程:

分析需求、设计原理图、选用元器件、

布线、编程、调试、撰写报告等步骤。

二、设计内容

1.功能要求

①利用《微型计算机技术》课程中所学习的可编程接口芯片8253、8255A、

ADC0809和微机内部的中断控制器8259A(从保留的IRQ2或IRQ10端引入)设计一

个模拟电压采集系统,并且编程与调试。

②用8253定时器定时10MS,每次定时10MS后启动一次模/数转换,要求对所

接通道变化的模拟电压值进行采集。

③每次模/数转换结束后,产生一次中断,在中断服务程序中,采集来的数字

量被读入微处理器的累加器AL中,然后通过8255A输出到8个LED发光二极管显

示。

2.设计所需器材与工具

④微机原理与接口综合仿真实验平台。

⑤可编程芯片8253、8255A、ADC0809和译码器芯片74LS138、74LS245等。

⑥可调电位器4.7KΩ一个。

⑦其它逻辑器件、导线若干。

三、硬件设计及分析

1.总体结构图

图1总体结构图

2.各部件端口地址设计及分析

1、端口地址的设计

①8255的CS55连至译码处的200H-207H插孔(A口地址为200H,B口地址为201H,C口地址为202H,控制口地址为203H)。

②8259的CS59连地址译码区的218H-21FH(ICW1的地址为218H,ICW2的地址为219H)。

③8253的CS53片选孔用线连至译码处220H-227H这个孔(端口地址为223H、计数器0的地址为220H、计数器1的地址为221H、计数器2的地址为222H)。

④AD0809的连线:

CS79接译码处210H-217H这个插孔。

AD0809的CS09接译码处208H-20FH这个插孔(假输出时用端口地址208H)。

2、各个分析并调整、修改

①8255有两根地址线(A0、A1),所以它有四个地址可用,它们分别为控制端口D、A口、B口、C口,并且从A到D依次递加;所以想要调整它们的地址其实很简单,例如把片选改为208H,四个地址分别为208H、209H、20AH、20BH。

②8259只有一根地址线A0,所以它只有两根地址线可用,一个为偶地址一个为奇地址,ICW1用偶地址,ICW2、ICW4用奇地地;调整与修改:

例如把片选改为200H,那么ICW1用200H,ICW2、ICW4用201H。

③8253和8255差不多,它也有两个地址线(A0、A1),初始化的过程和调整、修改完全可以参照8255.

④AD0809的CS79接译码处210H-217H这个插孔。

AD0809的CS09接译码处208H-20FH这个插孔(假输出时用端口地址208H),调整与修改更简单,只需要改变片选即可。

3.各部件的组成及工作原理

1、8253模块(数据显示模块)

分析:

数据显示模块是由8255A与74LS245所组成的。

8255A有三个并行输入/输出接口,分别为A、B、C三个端口。

分别为:

方式0:

基本的输入输出方式,即无须联络就可以直接进行的I/O方式。

其中A、B、C口的高四位或低四位可分别设置成输入或输出。

方式1:

选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0。

方式2:

双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。

然后根据在程序中是设置的那种工作方式去与74LS245进行连接。

在程序中我所使用的是B口输入,A口输出的输出方式。

在这个模块中最主要的就是去怎样设置好输入与输出端口。

这就要要求我们在对8255A进行初始化的时候就要考虑清楚这个问题。

2、8259模块(中断管理)

分析:

中断管理模块主要74LS138来完成,74LS138为3-8译码器,可以产生8片选,但是在这个程序中只要用四个片选,即200-207、208-20F、210-217、218-21F。

74LS138其工作原理如下:

当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平。

可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。

同时,中断管理模块需要做的工作有设置中断向量。

在对中断进行设置的时候可以对中断类型号进行修改。

其实中断类型号的设置在对8259进行初始化的时候就完成了。

3、8253模块(定时模块)

分析:

8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

8253可编程计数器/定时器,内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

工作原理:

8253具有3个独立的计数通道,采用减1计数方式。

在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。

当计数脉冲是已知周期的时钟信号时,计数就成为定时。

4、ADC0809模块(数据采集)

分析:

数据采集模块是用ADC0809来完成的,通过ADC0809来进行模数转换,ADC0809所采集的模拟信号转换为数字信号。

这个模块是用来对数据进行采集、处理、转换的部分。

在这个模块里我们要注意的是如何去处理在设计过程中该怎样去处理送入软件里面的信号的频率,我们在实验中ADC0809所接入的频率为0.25MHZ,但是也可以去使用0.5MHZ的这样一个频率,因为是8253的

ADC0809是模/数转换器。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

IN3连接一个滑动电阻器,通过该电阻器改变电阻得到不同的电压值,经过数据采集并转换后通过LED显示得到结果

四、软件设计及分析

1.总体流程图

1.主程序流程图

将8259A、8255A、8253初始化后,通过开始中断、等待中断来进行数据传输。

图2主程序流程图

2.中断服务程序

启动摸/数转换,对数据进行转换,然后通过8255A输出。

返回开中断来进行循环。

图3中断服务程序

2.主要程序编写及分析

1、8259模块(中断管理)

;初始化8259

MOVDX,220H;设置输出端口的偶地址

MOVAL,13H;设置ICW1初始化命令字

OUTDX,AL;将ICW1输出到偶地址端口

MOVDX,221H;ICW2

MOVAL,8;设置中断类型号为8(引脚IR0)

OUTDX,AL;将ICW2输出到奇地址端口

MOVAL,1;"1"表示用于8位以上的微机

OUTDX,AL;将ICW4输出到奇地址端口

;开始设置中断向量表

MOVAX,0;初始化DS

MOVDS,AX;中断向量表在主存的0段值内

LEAAX,INT0;中断服务首地址

MOVDS:

[4*8],AX;取偏移地址,将IP存入

MOVAX,CS;取中段服务子程序的段地址到AX中

MOVDS:

[4*8+2],AX;取偏移地址,将cs存入

简要分析:

首先对ICW1、ICW2、ICW4进行初始化,然后设置中断向量表,在对中断进行设置的时候可以对中断类型号进行修改。

其实中断类型号的设置在对8259进行初始化的时候就完成了。

每次中断时ADC0809就会采集数据。

2、8253模块(定时模块)

;初始化8253

MOVDX,203H;控制端口

MOVAL,00110110B

OUTDX,AL

MOVDX,200H;计数器0

MOVAX,10000

OUTDX,AL;先送低8位

MOVAL,AH

OUTDX,AL;后送高8位

MOVDX,203H;控制端口

MOVAL,01110110B

OUTDX,AL

MOVDX,200H;计数器1

MOVAX,10000

OUTDX,AL;先送低8位

MOVAL,AH

OUTDX,AL;后送高8位

简要分析:

首先对8253进行初始化,我选用了两个计数器(计数器0,计数器1),两个计数器将1MHz放大了两次,目的让中断的时间变大。

3、ADC0809模块(数据采集)

PUSHCS;开始获取数据段

POPDS

CALLDELAY;调用延迟

;开始初始化六个数码管

MOVDX,Z8279

MOVAL,LEDMOD

OUTDX,AL

MOVAL,LEDFEQ

OUTDX,AL

MOVCX,06H

XZ:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPXZ

MOVDX,D8279

MOVAL,5eH

OUTDX,AL

MOVDX,D8279

MOVAL,77H

OUTDX,AL

MOVDX,208H

MOVAL,0;假输出(启动转换)

OUTDX,AL

CALLDELAY

INAL,DX;从0809中获取数据到CPU的AL中

;MOVCL,04H

;RORAL,CL;循环移位

;ANDAL,0FH;逻辑与指令:

屏蔽AL中的高四位

MOVCL,05H

MULCL;无符号数乘法指令:

Cl乘以Al存放到AX中

MOVCL,0FFH

DIVCL;除法指令:

获取电压值

PUSHAX

MOVDX,Z8279

MOVAL,81H

OUTDX,AL

POPAX

LEABX,LEC

XLAT

MOVDX,D8279;将AL中内容写到数码管上

OUTDX,AL

CALLDELAY

MOVAL,AH

MOVCL,0AH

MULCL

MOVCL,0FFH

DIVCL

PUSHAX

MOVDX,Z8279

MOVAL,80H

OUTDX,AL

POPAX

LEABX,LED

XLAT

MOVDX,D8279;将AL中内容写到数码管上

OUTDX,AL

MOVDX,220H

MOVAL,20H

OUTDX,AL

IRET

简要分析:

首先是初始化数码管,调用中断服务子程序后,利用一个假输出启动A/D转换,然后调用延迟,接着从ADC8089中获取数据到CPU中,最后将采集过来的树转换成十进制的数送给数码管。

五、系统调试

1.调试环境介绍1.运行k88te这两个软件进行绘图和调试。

其运行环境如下图所示:

图4运行环境

2.进行编译。

3.将试验箱与电脑连接好后先进行串口测试。

其图如下:

图5串口测试

 

2.各部件的调试

(1)8255A的检测

①方法:

观看8个LED灯的状态。

②主要连线步骤:

将K0-K7分别连至8255A的PB0-PB7(B口作为输入),将L0-L7分别连线连至8255A的PA0-PA7(A口作为输出),8255A的CS55连至译码处的200H-207H插孔(A口地址为200H,B口地址为201H,C口地址为202H,控制口地址为203H)。

③用来检测的代码如下

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,203H;控制端口

MOVAL,82H

OUTDX,AL

JM:

MOVDX,201H

INAL,DX;B口输入

MOVDX,200H

OUTAL,DX;A口输出

JMPJM

CODEENDS

ENDSTART

④检测现象与结果:

运行时若看见8个LED灯全亮,则说明芯片是好的,否则说明芯片有问题。

(2)8259的检测

①方法:

利用流水灯的实验。

②主要连线步骤:

8259模块的CS59连地址译码区的210H-217H,IR0接“脉冲源“区的UP。

8255A连至200H-207H,8255A的PC0-PC7(C口作为输出)分别链接发光二极管的L7-L0。

③用来检测的代码如下

CODESEGMENT'CODE'

ASSUMECS:

CODE

START:

MOVDX,203H;8255A

MOVAL,80H

OUTDX,AL

MOVDX,210H;ICW1

MOVAL,13H

OUTDX,AL

MOVDX,211H;ICW2

MOVAL,8

OUTDX,AL

MOVAL,1;ICW4

OUTDX,AL

MOVAX,0

MOVDS,AX

LEAAX,INT0

MOVDS:

[4*8],AX

MOVAX,CS

MOVDS:

[4*8+2],AX

MOVDX,202H

MOVBL,0FH

MOVAL,BL

OUTDX,AL

STI

ABC:

HLT

JMPABC

INT0:

ROLBL,1

MOVDX,202H

MOVAL,BL

OUTDX,AL

MOVDX,210H

MOVAL,20H

OUTDX,AL

IRET

CODEENDS

ENDSTART

④检测现象与结果:

运行时若看见八个LED灯从左到右像流水一样每四个一亮,则说明芯片是好的,否则说明芯片有问题。

(3)8253的检测

①方法:

观看1个LED灯的状态。

②主要连线:

GATE0-GATE1连至电源+5V,CLK0接OUT1,OUT0用线连至一个发光管(L0),CLK1接1MHz,CS53片选孔用线连至译码处208H-20FH这个孔。

③用来的检测的代码如下

CODESEGMENT'CODE'

ASSUMECS:

CODE

START:

MOVDX,20BH;控制端口

MOVAL,00110110B

OUTDX,AL

MOVDX,208H;计数器0

MOVAX,1000

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,20BH;计数器1

MOVAL,01110110B

OUTDX,AL

MOVDX,209H

MOVAX,1000

OUTDX,AL

MOVAL,AH

OUTDX,AL

CODEENDS

ENDSTART

④检测现象与结果:

运行时若看见LED每隔1S闪烁一次,则说明芯片是好的,否则说明芯片有问题。

(4)AD0809的检测

①方法:

利用A/D转换实验检测。

②主要连线步骤:

CS79接译码处210H-217H这个插孔。

AD0809的CS09接译码处208H-20FH这个插孔,AD0809的09IN0接至电位器VIN的中心抽头插孔,CLOCK的频率一般不要超过05Hz(在实验板上经过分频后,分别产生有1MHz、0.5MHz及0.25MHz的脉冲信号(),可以用来作为AD0809的CLOCK脉冲信号)。

③检测的代码如下

Z8279EQU212H

D8279EQU210H

LEDMODEQU00;左边输入,八位显示外部译码八位显示

LEDFEQEQU38H;扫描频率

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

PUSHCS

POPDS

CALLDELAY

MOVDX,D8279

MOVAL,LEDMOD

OUTDX,AL

MOVAL,LEDFEQ

OUTDX,AL

MOVCX,06H

XZ:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPXZ

MOVDX,D8279

MOVAL,5EH

OUTDX,AL

MOVDX,D8279

MOVAL,77H

OUTDX,77H

NOP

BG:

MOVDX,208H

MOVAL,0;假输出的作用:

启动转换

OUTDX,AL

CALLDELAY

INAL,DX;从0809中获取数据到CPU的AL中

MOVCL,04H

RORAL,CL;循环右移四位

ANDAL,0FH;逻辑与(安按位相与)

PUSHAX

MOVDX,Z8279

MOVAL,81H

OUTDX,AL

POPAX

LEABX,LED;取偏移地址

XLAT

MOVDX,D8279;将AL中的内容写到数码管上

OUTDX,AL

CALLDELAY

JMPBG

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H

DB5EH,79H,71H

DELAYPROCNEAR

PUSHCX

MOVCX,0F00H

LOOP$

POPCX

RET

DELAYENDP

CODEENDS

ENDSTART

④测试现象与结果:

运行时若看见一个数码管的数字从零变到F则说明该芯片是好的,否则是有问题。

3.调试方法及结果

1.当输出端口为A时,程序的输出端口应为218H

将输出端口A改为B端口时,灯不亮。

然后将程序的输出端口改为219H时,灯亮。

将输出端口A改为C端口时,灯不亮。

然后将程序的输出端口改为21AH时,灯亮

结果:

在输出时

A端口218H

B端口219H

C端口21AH

才能确保实验的正确。

2.4个接口芯片的端口地址可以改变,程序也就改变

当改变芯片的端口地址时,我将程序的初始化地址与芯片的端口地址保持一致,运行时不能产生中断循环,经检查是没有将结束端口与8259A的地址保持一致。

3.初始化顺序也可以改变

在改变程序初始化顺序时,将8255A、8253放在8259A的前面,实验不能正常运行。

将8259放在最前面,8255A、8253随意放置,实验可以正常运行。

结果:

在初始化时必须将8253A放在最前面。

六、总结与体会

通过这次汇编课程设计,将课程所学知识有效的结合在一起进行运用,在很大程度上加深了对课堂知识的理解,对8253,8259,8255等有关芯片的使用有了进一步的加深,当然这得益于在课设过程中和同学及老师的交流,这对于每个人来说都是极其必要的。

很感谢学校每学期末进行的课程设计这项活动,还记得大一时第一次做这个时,当时还很吃力,不过后来改变了对课程设计这项活动的看法,以积极的心态去做,并抱着学习的态度去进行,我想一定会得到意想不到的收获,果然事实上证明我是对的。

常说“实践是检验真理的唯一标准”,

对我们而已,课本上所学的知识终究还是死的,为了验证它的正确如否,就必须通过我们的双手自己亲自去实践,而课程设计就是给了我们这样的机会,所以……

七、附录

DATASEGMENT

LED1DBBFH,86H,DBH,CFH,E6H,EDH

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

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVDX,223H;初始化8255A

MOVAL,80H

OUTDX,AL

MOVDX,218H;初始化D8279

MOVAL,00

OUTDX,AL

MOVAL,38H

OUTDX,AL

MOVCX,06H

XZ:

MOVDX,218H

MOVAL,00H

OUTDX,AL

LOOPXZ

MOVDX,218H

MOVAL,5EH

OUTDX,AL

MOVDX,218H

MOVAL,77H

OUTDX,AL

NOP

PUSHAX;初始化Z8279

MOVDX,21AH

MOVAL,81H

OUTDX,AL

POPAX

MOVAL,13H;初始化8259,ICW1

MOVDX,210H

OUTDX,AL

MOVAL,8;ICW2

MOVDX,211H

OUTDX,AL

MOVAL,1;ICW4

OUTDX,AL

LEAAX,INT0(/INT1)

MOVDS:

[4*8],AX

MOVAX,CS

MOVDS:

[4*8+2],AX

MOVAL,36H;初始化8253

MOVDX,20BH

OUTDX,AL

MOVAX,1000

MOVDX,208H

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVAL,76H

MOVDX,20BH

OUTDX,AL

MOVAX,2000

MOVDX,209H

OUTDX,AL

MOVAL,AH

OUTDX,AL

STI;开中断

REPEAT:

HLT;等待中断

JMPREPEAT

INTO:

;中断服务子程序(LED显示)

MOVDX,200H;启动A/D

MOVA

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

当前位置:首页 > 高中教育 > 小学教育

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

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