微机原理与接口技术课程设计.docx
- 文档编号:10638867
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:19
- 大小:134.98KB
微机原理与接口技术课程设计.docx
《微机原理与接口技术课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术课程设计
物理与信息工程学院
课程设计报告
课程题目:
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、《微型计算机原理接口技术》周荷琴、吴秀清编著北京:
中国科技技术大学出版社。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)