微机原理与接口技术课程设计.docx

上传人:b****7 文档编号:10638867 上传时间:2023-02-22 格式:DOCX 页数:19 大小:134.98KB
下载 相关 举报
微机原理与接口技术课程设计.docx_第1页
第1页 / 共19页
微机原理与接口技术课程设计.docx_第2页
第2页 / 共19页
微机原理与接口技术课程设计.docx_第3页
第3页 / 共19页
微机原理与接口技术课程设计.docx_第4页
第4页 / 共19页
微机原理与接口技术课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术课程设计.docx

《微机原理与接口技术课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术课程设计.docx

微机原理与接口技术课程设计

物理与信息工程学院

课程设计报告

 

课程题目:

12位数据采集

专业:

电子信息工程

指导教师:

班级:

学号:

姓名:

同组成员:

2010年12月30日

 

目录

1.设计要求…………………………………………………………3

2.设计思想…………………………………………………………3

3.芯片介绍…………………………………………………………4

4.设计电路图………………………………………………………5

5.芯片的调试与测试…………………………………………6

(1)调试8254……………………………………………………6

(2)调试8255A和AD574…………………………………………8

6.程序流程图………………………………………………………10

7.设计源代码………………………………………………………11

8.设计结果与分析………………………………………………14

9.设计的体会………………………………………………………15

10.参考文献……………………………………………………15

 

12位数据采集系统

12-bitsystemfordatacollection

摘要:

利用8254的定时功能,产生一序列负脉冲信号,做8259A的中断源,CPU响应中断,执行中断程序,启动A/D转换,通过8255并口传输,将数据送到数据总线,再读入CPU,在显示器上显示。

SUMMARY:

usethetimingfuctionof8254,thenproduceaseriesofnegativepulseanduseitastheinterruptsourceof8259A;AsCPUresponedtheinterrupt,theAD574runthetransformationafterCPUoperatetheinterruptprograme,thenthedataisputtothedatabusbythe8255,attheend,CPUreadthedataandshowitinthescreenofthecomputer.

关键词:

定时器负脉冲中断A/D转换

KEY:

Timingsystem

negativepulse

interrupt

A/Dtransformation

 

一.设计要求:

(1)程序要求:

每秒钟产生一次中断,启动A/D转换,采集一次数据并显示。

(2)硬件要求:

计算机,8254,8255A,AD574,8259,TD-PIF-B

型实验仪。

(3)软件要求:

MASM编译软件

(4)操作系统:

WIN2000虚拟光驱

二.设计思想

(1)定时器-8254

将频率为10KHz的时钟信号送入8254进行10000分频,输出频率为1Hz的时钟负脉冲信号送到8259,使8259每秒钟产生一次中断。

(2)中断任务-8259

通过8254输入的时钟信号,定时向计算机系统的IRQ0申请中断。

(3)A/D转换-AD574

将AD574接成查询式模数转换形式,通过查询转换结束信号EOC来实现。

被转换的模拟电压,由电压为+10V的电源通过电位器分压来提供,最大值为+10V,只需要转换1-2路0-10V的模拟电压。

(4)数据传送-8255A

8255A用做计算机和AD574间的接口芯片,一方面,选用8255A的一个端口作数据口,AD574转换后的数字量经8255A的一个端口读入到计算机中,另一方面,选用8255A的一个端口作AD574的控制信号

(5)结果显示-缓冲区

数据通过8255A读入到BX的低12位,再调用显示子程序将数据在屏幕上显示。

三.芯片介绍

Intel8254是具有计数、定时功能的可编程间隔定时器。

8254内部具有3个独立的16位计数器通道,通过对它进行编程,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制格式进行计数,最高计数频率可以达到5MHz。

8255A是一种通用的可编程并行I/O接口芯片,通过对它进行编程,可以工作在不同的工作方式,由3个8位数据输出端口(A、B、C),数据总线缓冲器和读/写控制逻辑电路组成。

3个端口通过外部的24根输入输出线与外设交换数据或进行通信联络;双向三态8位数据缓冲器用作8255A和系统数据总线之间的接口;读/写电路用来管理所有内部或外部数据信息、控制字或状态字的传输过程。

8259是8086/8088系列的可编程中断控制器,由数据总线缓冲器,读写控制电路,级联缓冲/比较器,中断请求寄存器IRR,中断屏蔽寄存器IMR,优先级判别器PR,中断服务寄存器ISR,控制电路组成。

具有8级优先级控制,通过级联可以扩展到64级优先级控制;每一级中断可由程序单独屏蔽或允许;可提供中断类型号传送给CPU;可以通过编程选择多种不同工作方式。

AD574A是一种带有三态缓冲器的A/D转换器,可以直接与8位或16位微机接口,芯片内有高精度的参考电压源和时钟电路。

此外,芯片内部还含有逐次逼近式寄存器SAR、比较器、控制逻辑、DAC转换电路及三态输出缓冲器等。

四.设计电路图

5.芯片的调试与测试

(1)调试8254

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

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

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

INTR_IMEQU0FBH;INTR对应的中断屏蔽字

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

MESDB'Pressanykeytoexit!

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

CS_BAKDW?

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

IP_BAKDW?

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

IM_BAKDB?

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

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;显示退出提示

MOVAH,09H

INT21H

CLI

MOVAX,0000H;替换INTR的中断矢量

MOVES,AX

MOVDI,INTR_IVADD

MOVAX,ES:

[DI]

MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址

MOVAX,OFFSETMYISR

MOVES:

[DI],AX;设置当前中断处理程序入口偏移地址

ADDDI,2

MOVAX,ES:

[DI]

MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址

MOVAX,SEGMYISR

MOVES:

[DI],AX;设置当前中断处理程序入口段地址

MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR屏蔽位

INAL,DX

MOVIM_BAK,AL;保存INTR原中断屏蔽字

ANDAL,INTR_IM

OUTDX,AL

movdx,3083h;8254初始化程序

moval,00110101b

outdx,al

movdx,3080h

moval,85h

outdx,al

outdx,al

STI

WAIT1:

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

INT16H

JZWAIT1;无按键则跳回继续等待,有则退出

QUIT:

CLI

MOVAX,0000H;恢复INTR原中断矢量

MOVES,AX

MOVDI,INTR_IVADD

MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址

MOVES:

[DI],AX

ADDDI,2

MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址

MOVES:

[DI],AX

MOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字

MOVAL,IM_BAK

OUTDX,AL

STI

MOVAX,4C00H;返回到DOS

INT21H

MYISRPROCNEAR;中断处理程序MYISR

PUSHAX

MOVAL,39H

MOVAH,0EH

INT10H

MOVAL,20H

INT10H

OVER:

MOVDX,INTR_OCW2;向PC机内部8254发送中断结束命令

MOVAL,20H

OUTDX,AL

MOVAL,20H

OUT20H,AL

POPAX

IRET

MYISRENDP

CODEENDS

ENDSTART

(2)调试8255A和AD574

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

STR1DB'Pressanykeytoexit!

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

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR1

MOVAH,9h

INT21H

movdx,3043h;8255A初始化

moval,10010011b

outdx,al

break:

movah,11

int21h

cmpal,0

jnzexit

movdx,3000h;启动A/D转换

outdx,al

wat:

movdx,3042h;检测转换是否启动

inal,dx

testal,01h;检查STS是否为1

jnzwat;为0,则转换结束

movdx,3000h;读取转换数据

inal,dx

check:

;读取数据到BX低12位

movdx,3041h;8255B端口地址

inal,dx

movbh,al;高8位送到BH

movdx,3040h;A口端口地址

inal,dx

movbl,al;低4位送BL高4位

movcl,4

shrbx,cl;BX右移4位

calldisp;调用显示子程序

jmpbreak

exit:

movah,4ch

int21h

dispprocnear

movcx,0404h

lop:

rolbx,cl

movax,bx

andax,000fh

cmpal,0ah

jbnext

addal,07

next:

addal,30h

movdl,al

movah,2

int21h

decch

jnzlop

movdl,20h

movah,2

int21h

ret

dispendp

CODEENDS

ENDSTART

 

六.程序流程图

()

 

七.设计源代码

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

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

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

INTR_IMEQU0FBH;INTR对应的中断屏蔽字

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

MESDB'Pressanykeytoexit!

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

CS_BAKDW?

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

IP_BAKDW?

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

IM_BAKDB?

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

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;显示退出提示

MOVAH,09H

INT21H

CLI

MOVAX,0000H;替换INTR的中断矢量

MOVES,AX

MOVDI,INTR_IVADD

MOVAX,ES:

[DI]

MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址

MOVAX,OFFSETMYISR

MOVES:

[DI],AX;设置当前中断处理程序入口偏移地址

ADDDI,2

MOVAX,ES:

[DI]

MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址

MOVAX,SEGMYISR

MOVES:

[DI],AX;设置当前中断处理程序入口段地址

MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR屏蔽位

INAL,DX

MOVIM_BAK,AL;保存INTR原中断屏蔽字

ANDAL,INTR_IM

OUTDX,AL

movdx,3083h;8254初始化程序

moval,00110101b

outdx,al

movdx,3080h

moval,00h

outdx,al

outdx,al

movdx,3043h;8255A初始化程序

moval,10010011b

outdx,al

STI

WAIT1:

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

INT16H

JZWAIT1

QUIT:

CLI

MOVAX,0000H;恢复INTR原中断矢量

MOVES,AX

MOVDI,INTR_IVADD

MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址

MOVES:

[DI],AX

ADDDI,2

MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址

MOVES:

[DI],AX

MOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字

MOVAL,IM_BAK

OUTDX,AL

STI

MOVAX,4C00H;返回到DOS

INT21H

MYISRPROCNEAR;中断处理程序MYISR

PUSHAX

pushbx

pushcx

pushdx

movdx,3000h;启动A/D转换

outdx,al

wat:

movdx,3042h;检测转换是否启动

inal,dx

testal,01h;检查STS是否为1

jnzwat;为0,则转换结束

movdx,3000h;读取转换数据

inal,dx

check:

;读取数据到BX低12位

movdx,3041h;8255B端口地址

inal,dx

movbh,al;高8位送到BH

movdx,3040h;A口端口地址

inal,dx

movbl,al;低4位送BL高4位

movcl,4

shrbx,cl;BX右移4位

calldisp;调用显示子程序

OVER:

MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令

MOVAL,20H

OUTDX,AL

MOVAL,20H

OUT20H,AL

popdx

popcx

popbx

POPAX

IRET;中断返回

dispprocnear;数据显示子程序

movcx,0404h

lop:

rolbx,cl;bx左移四位

movax,bx

andax,000fh;ax低四位保留

cmpal,0ah;ax与十比较

jbnext;大于9加37H,否则加30H

addal,07

next:

addal,30h

movdl,al

movah,2

int21h

decch

jnzlop

movdl,20h

movah,2

int21h

ret

dispendp

MYISRENDP

CODEENDS

ENDSTART

8.实验结果与分析

当改变滑动变阻器时,采集的数据发生改变。

在设计指标的允许范围内,采集的数据存在误差。

九.设计的体会

在这次设计中主要是利用中断来工作的,在中断中先保护现场再读取数据、恢复现场、再执行中断命令;主要是有CPU以中断方式读取采集数据。

虽然这次设计很成功,但是也遇到了很多问题,但是经过我们不断的查询有关资料和努力调试,再加上同学和老师的指导和帮助终于把每个问题解决。

总之,这次设计给我收获还真不少,它不但使我增添了不少知识,增添了我们同学之间的友谊,更锻炼了我们的实践能力,使我们为以后工作积累了不少经验,最重要的是它给我们带来成功的喜悦,那是最有价值的,因为它使我们有了对实践和工作的乐趣。

十.参考文献

1、《微型计算机原理接口技术》周荷琴、吴秀清编著北京:

中国科技技术大学出版社。

 

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

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

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

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