《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx

上传人:b****2 文档编号:17619186 上传时间:2023-07-27 格式:DOCX 页数:29 大小:199.11KB
下载 相关 举报
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第1页
第1页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第2页
第2页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第3页
第3页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第4页
第4页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第5页
第5页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第6页
第6页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第7页
第7页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第8页
第8页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第9页
第9页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第10页
第10页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第11页
第11页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第12页
第12页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第13页
第13页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第14页
第14页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第15页
第15页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第16页
第16页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第17页
第17页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第18页
第18页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第19页
第19页 / 共29页
《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx

《《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx》由会员分享,可在线阅读,更多相关《《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx(29页珍藏版)》请在冰点文库上搜索。

《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告.docx

《汇编语言+微型计算机技术》数据采集系统的设计与实现汇编课设报告

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

课程设计报告

 

课设题目

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

系部

信息系

班级

计算机xxx

学生姓名

xxx

学号

xxx

序号

22

指导教师

徐阳

时间

2014.6.17~2014.6.29

 

 

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

一、设计目的

1.通过本设计,使学生综合运用《微型计算机技术》、《汇编语言程序设计》以及电子技术等课程的内容,为以后从事计算机检测与控制奠定一定的基础。

2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件的使用,掌握译码器74LS138的使用。

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

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

分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。

二、设计内容

1.功能要求

①利用《汇编语言+微型计算机系统》课程中所学的可编程接口芯片8253、8255A、ADC0809和微机内部的中断控制器8259A(从保留的IRQ2或TRQ10端引入)设计一个数据采集系统、并且编程与调试。

②用8253定时器定时10MS,每次定时10MS后启动一次模/数转换,要求对所接通道变化的模拟电压值进行采集。

③每次模/数转换结束后,产生一次中断,在中断服务程序中,采集来的数字量被读入微处理器的累加器AL中,然后通过8255A输出到8个LED发光二极管显示。

④最后不要8255芯片用数码管显示所采集后的信息(电压0-5.0的范围内变化)。

2.设计所需器材与工具

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

⑤可编程接口芯片四个分别为8253、8259、8255A、ADC0809和译码器芯片74LS138、74LS245等。

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

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

三、硬件设计及分析

1.总体结构图

8086

8255

8253

8259

ADC0809

D0~D7

CS2220H

D0~D7

CS210H

CS208H

D0~D7

D0~D7

PA口

Vccccc

IR0

IR3

IR7

CLK0

GATE0

OUT0

INT0

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—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显示得到结果

图3——ADC0809连接图

四、软件设计及分析

1.总体流程图

 

2.连线

①8255的连线:

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

②8259的连线:

CS59连地址译码区的218H-21FH,IR0接8253的OUT0端。

③8253的连线:

CS53片选孔用线连至译码处220H-227H这个孔,GATE0接电源+5V,CLK0接1MHz的频率。

④AD0809的连线:

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

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

3.主要程序编写及分析

简要介绍主要模块的核心代码编写思路,并要求分析可以进行的调整

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;以上为写(AD)

MOVDX,208H

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

OUTDX,AL

CALLDELAY;调用延迟(t>=100微秒)因为0809完成一次转换需要100微秒

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.运行hk88te这两个软件进行绘图和调试。

其运行环境如下图所示:

图7——运行环境

2.进行编译。

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

其图如下:

图8——串口测试

1.串口测试通过后就是编译并链接,其图如下:

图9——编译并连接

4.最后是进行全速运行,得出结果。

图10——全速运行

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;延迟(t>=100微秒)因为0809完成一次转换需要100微秒

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放在最前面。

六、总结与体会

通过本次的课程设计,让我学到了一些东西。

同时,通过在这个过程中遇到了问题,接着去解决问题。

我从中真明白了一些知识。

在课程设计的开头主要的是对各种软件的初始化的编程,其实在这些看是简单的初始化中,也是需要一定的知识的。

就如对8259A的初始化而言,在这中间就需要去特别的注意设置初始化命令字、设置中断类型号这两点,这就需要我们明白8259A的工作方式是通过初始化命令字(ICW1-ICW4)和操作命令字(OCW1-OCW3)来设置。

同时以及明白命令字和操作命令字的初始化编程。

在课设中最常说的就是8255软件的输入输出端口的设置。

如果说开始为A输入,B输出的方式。

如果需要改为A输出,B输入的方式。

该怎样去改,在课设中进过与老师、同学的讨论我知道的该如何的去修改。

在修改的过程中需要修改8255A中的控制字进行修改以及在输出的地方进行修改。

在课设中还遇到的问题就是在进行测试的时候。

最开始的时候出现的问题是所有的二极管全亮,但是转动滑动变阻器后没有出现二极管出现依次的亮和熄灭。

进过多电路连线的检查发现是有两根线连反了。

但是实验后任然不行。

接着用老师的方法进行调试,发现有方波产生。

这说明可能是模数转换器出现了故障,为了确定问题的所在,然后将MOVDX,218H/INAL,DX/MOVDX,219H/OUTDX,AL这段代码加入中断服务程序中看结果是不是一半的灯亮,一半的熄灭。

然而结果不是的,在将终端服务程序屏蔽的时候出现了上述的结果。

于是说明是终端服务程序的问题。

然后经过老师的修改就好了。

在本次课程设计中我最大的收获就是明白了几种硬件的初始化编程的方法以及对汇编语言的一些的了解。

七、附录

Z8279EQU212H

D8279EQU210H

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

LEDFEQEQU38H;扫描频率

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

当前位置:首页 > PPT模板 > 卡通动漫

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

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