微机原理课设.docx
- 文档编号:23285508
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:22
- 大小:72.04KB
微机原理课设.docx
《微机原理课设.docx》由会员分享,可在线阅读,更多相关《微机原理课设.docx(22页珍藏版)》请在冰豆网上搜索。
微机原理课设
微
机
原
理
课
程
设
计
-----数据采集
专业:
信息工程
学号:
040820201
姓名:
张鹤方
一、课设目的:
进一步掌握微机原理知识,了解微机在实时采集过程中的应用,学
习、掌握编程和程序调试方法。
二、仪器设备:
微机,微机接口实验箱,示波器,三用表等。
三、课设内容和要求:
用中断法,将ADC0809通道0外接0-5V电压,转换成数字量后:
(1)在七段LED数码管上,以小数点后两位(几十毫伏)的精度,显示其模拟电压的十进值;
(2)0809通道0的数字量以线性控制方式送DAC0832输出,当通道0的电压为5V时,0832的OUT为0V,当通道0的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC0809通道1,转换后的数字量在CRT上以十六进制显示。
(3)ADC0809的CLK脉冲,由定时器8254的OUT0提供;ADC0809的EOC信号,用作8259中断请求信号。
(4)要有较好的人机对话界面,控制程序的运行。
四、总体设计:
(1)ADC0809的IN0采集电位器0—5V电压,IN1采集0832输出的模拟量。
(2)DAC0832将ADC0809的IN0数字量后重新转换成模拟量输出。
(3)8259用于检测ADC0809转换是否结束和向CPU发送INTR信号
(4)8255为七段LED数码管显示提供显示驱动信息。
(5)七段LED数码管显示ADC0809的IN0的值。
(6)8254提供ADC0809的采样时钟脉冲。
(7)有良好的人—机对话界面。
系统运行时,显示主菜单,开始数据采集,在数据采集时,主键盘有键按下,退出返回DOD系统。
五、硬件设计:
因采用了PC机和微机实验箱,硬件电路设计相对比较简单,主要利用微机实验箱上的8255并行口、ADC0809、DAC0832、七段LED数码管单元、8254定时/计数器、74LS574输出接口、电位器等单元电路,就构成了数据采集系统,硬件电原理框图4-3-1所示。
图4-3-1数据采集系统三电原理框图
六、软件设计
本设计通过软件编程,实现模/数转换器0809分别对IN00-5V直流电压的采样,和经0832线性控制后输出电压的IN1采样,IN0的值转换成十进制后,在七段数码管上显示;IN1的值在显示器上显示。
CPU根据IN0的值,使八位发光二极管根据题目的要求,指示相应的范围。
1、设计思想
数据采集系统分成六个功能模块,分别是主程序模块、量纲转换模块、数码管显示模块、中断服务子程序模块。
(1)主程序模块
根据题目要求,采用中断方式实现数据采集,因此可把读取IN0的值并保存,和此数字量经线性控制后送给0832输出,作为0809IN1的模拟电压和IN1的启动、读取以及IN0的BCD码转换,放在中断服务子程序模块中完成。
所以,在主程序模块上主要实现启动0809IN0、显示模块的调用、和中断结束部分程序。
(2)量纲转换模块
量纲转换模块在中断服务程序内完成,只要将IN0的数字量分别除以51,商存入显示IN0的个位存储单元;余数乘以十,再除以51,商存入十分位存储单元;余数再乘以十,除以51,若余数大于25,则商加1,小于25则舍去,这样就达到四舍五入的精度,再把商存入百分位存储单元;以供七段数码管显示时调用,BCD码转换模块可参考图10所示的流程图。
(3)数码管显示模块
数码管显示模块比较简单,自编程序可参考图1-6所示的流程图,也可参考实验8255并行口中的显示模块,应注意的是在显示个位时,要加上小数点的显示,这可以在查表获取个位段码后,再加上80H来实现,注意每一位显示后要适当延迟时间。
(4)中断服务子程序模块
考虑到0832的输出是0809IN1的输入,因此,为防止在执行中断服务子程序时,二次进入中断服务子程序,故在进入中断服务子程序后,应关闭中断,而在退出中断前开中断,以便下次中断进入。
中断服务子程序模块主要完成对IN0数据的读取和保存,对IN1的启动和读取,对IN0数据的BCD转换等任务。
2.参考流程图:
数据采集三主程序流程图如图4-3-2所示;中断服务子程序如图4-3-3所示。
数码管显示子程序流程图如图3-4-7所示,
图4-3-2数据采集三主程序流程图
2.接口部件的程序段:
MOVAX,DATA
MOVDS,AX
MOVAL,10000000B;8255初始化
MOVDX,PCTL
OUTDX,AL
MOVDX,OFFSETMES0
MOVAH,9;显示MESS
INT21H
MOVDX,OFFSETMESS
MOVAH,9;显示MESS
INT21H
CLI;8259初始化
MOVAX,0000H
MOVES,AX;替换INTR的中断矢量
MOVDI,INTR_IVADD;保存INTR原中断处理程序入口偏移地址
MOVAX,ES:
[DI]
MOVIP_BAK,AX
MOVAX,OFFSETMYISR;设置当前中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,ES:
[DI];保存INTR原中断处理程序入口段地址
MOVCS_BAK,AX
MOVAX,SEGMYISR;设置当前中断处理程序入口段地址
MOVES:
[DI],AX
MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位
INAL,DX;保存INTR原中断屏蔽字
MOVIM_BAK,AL
ANDAL,INTR_IM;允许PC机内部8259的IR2中断
OUTDX,AL
MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4
OUTDX,AL
MOVDX,MY8259_ICW2
MOVAL,08H;初始化实验系统中8259的ICW2
OUTDX,AL
MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4
MOVAL,01H;非自动结束EOI
OUTDX,AL
MOVDX,MY8259_OCW3
MOVAL,0AH
OUTDX,AL
MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1
MOVAL,0FCH;打开IR0的屏蔽位
OUTDX,AL
MOVDX,TCTL;8254初始
MOVAL,17H
OUTDX,AL
MOVDX,TIMER0;
MOVAL,3
OUTDX,AL
STI
七、程序清单:
(见附件)
八、实验体会
课设过程中遇到许多问题,对某些芯片的结构功能不是很了解,最初编写期间,没有对所有芯片都很透彻的了解所以程序编译不成功出现很多比较低级的错误。
而对于一些端口的控制字,命令字的编写都很不熟练,经过本次课程设计,也真正做到加强了对课程的掌握情况,在源程序编写阶段真的要做到做好每个细节,因为任何一个端口地址的定义,命令字的写入都关系的芯片能否正常运行。
(1)修改程序中数码管显示的CL处置实现从左边第三位开始显示。
(2)通过修改实现LED灯在<0.5时高四位亮,第四位灭,>4.5时,全部亮。
修改部分程序:
CMPIN0IN,0E6H
JAS4
CMPIN0IN,18H
JBS5
MOVDX,PC55
MOVAL,00H
OUTDX,AL
JMPS6
S5:
MOVDX,PC55
MOVAL,0F0H
OUTDX,AL
JMPS6
S4:
MOVDX,PC55
MOVAL,0FFH
OUTDX,AL
S6:
MOVAL,IN1OUT
CALLDISP1
MOVDL,0FFH
MOVAH,6
INT21H
JZS33
(3)修改8354的关键字,实现从0通道改成2通道。
OUTDX,AL
MOVDX,TCTL;8254初始
MOVAL,97H
OUTDX,AL
MOVDX,TIMER2;
MOVAL,3
OUTDX,AL
STI
连线上做相应的改动在老师给分配实现新功能后,也由于时间关系做的比较匆忙,只是修改程序,而出现连线错误等问题。
以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
本次课程设计的许多程序都是之前实验中用到的,平时做了很多实验,写了很多小程序。
但这次是一个综合的程序,平时的很多程序都用到了。
很多子程序的设计是固定的,因此可以直接从指导资料中调用,大多只需要修改几个参数就可以,这大大方便了我们的设计,为我们节省了很多的时间。
饿我们在课堂上学习的理论知识到最后都要用到实践中来。
课设过程就是检查基础知识是否掌握牢固的过程。
难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,自己解决不了时,去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。
在调试过程中遇到的一些问题,自己能够冷静的面对,找到错误所在,并向老师和同学请教一些自己还不懂的地方,最终完成了课设的内容。
附件:
程序清单
微机原理课设代码-数据采集器
CRLFMACRO
MOVDL,0DH
MOVAH,02H
INT21H;宏定义了回车
ENDM
Y0EQU3000H;片选Y0对应的端口始地址,0809,0832
Y2EQU3040H;片选Y2对应的端口始地址
IN1EQUY0+01H*4;
ADCSEQUY0;AD0809的端口地址
DACSEQUY2;DAC0832的端口地址
Y3EQU3060H
TIMER0EQUY3+00H*4;8254计数器0端口地址,8254
TIMER1EQUY3+01H*4;8254计数器1端口地址
TIMER2EQUY3+02H*4;8254计数器2端口地址
TCTLEQUY3+03H*4;8254控制寄存器端口地址
Y1EQU3020H;片选Y1对应的端口始地址,8255
PA55EQUY1+00H*4;8255的A口地址
PB55EQUY1+01H*4;8255的B口地址
PC55EQUY1+02H*4;8255的C口地址
PCTLEQUY1+03H*4;8255的控制寄存器地址
INTR_IVADDEQU01C8H;INTR对应的中断矢量地址,8259
INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址
INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址
INTR_IMEQU0FBH;INTR对应的中断屏蔽字
Y7EQU30E0H;片选Y7对应的端口始地址
MY8259_ICW1EQUY7+00H;实验系统中8259的ICW1端口地址
MY8259_ICW2EQUY7+04H;实验系统中8259的ICW2端口地址
MY8259_ICW3EQUY7+04H;实验系统中8259的ICW3端口地址
MY8259_ICW4EQUY7+04H;实验系统中8259的ICW4端口地址
MY8259_OCW1EQUY7+04H;实验系统中8259的OCW1端口地址
MY8259_OCW2EQUY7+00H;实验系统中8259的OCW2端口地址
MY8259_OCW3EQUY7+00H;实验系统中8259的OCW3端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
DCTBLDB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh;数码管的段码表
DB77h,7Ch,39h,5Eh,79h,71h,00H
NDB2
IN0INDB?
IN1OUTDB?
A3DB?
BDB3DUP(?
)
D1DB0AH
E1DB33H
FLAGDB?
MES0DB'++++++*-----DATACOLECTIONSYSTEM-----*+++++++',0DH,0AH,’$’
MESSDB0DH,0AH,'Presskeyboardanykeytoend!
',0DH,0AH,0DH,0AH,'$'
MES2DB0DH,'IN1OUTDATA:
$',0DH,'$'
CS_BAKDW?
;保存INTR原中断处理程序入口段地址的变量
IP_BAKDW?
;保存INTR原中断处理程序入口偏移地址的变量
IM_BAKDB?
;保存INTR原中断屏蔽字的变量
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK1,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,10000000B;8255初始
MOVDX,PCTL
OUTDX,AL
MOVDX,OFFSETMES0
MOVAH,9;显示MESS
INT21H
MOVDX,OFFSETMESS
MOVAH,9;显示MESS
INT21H
CLI;8259初始
MOVAX,0000H
MOVES,AX;替换INTR的中断矢量
MOVDI,INTR_IVADD;保存INTR原中断处理程序入口偏移地址
MOVAX,ES:
[DI]
MOVIP_BAK,AX
MOVAX,OFFSETMYISR;设置当前中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,ES:
[DI];保存INTR原中断处理程序入口段地址
MOVCS_BAK,AX
MOVAX,SEGMYISR;设置当前中断处理程序入口段地址
MOVES:
[DI],AX
MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位
INAL,DX;保存INTR原中断屏蔽字
MOVIM_BAK,AL
ANDAL,INTR_IM;允许PC机内部8259的IR2中断
OUTDX,AL
MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4
OUTDX,AL
MOVDX,MY8259_ICW2
MOVAL,08H;初始化实验系统中8259的ICW2
OUTDX,AL
MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4
MOVAL,01H;非自动结束EOI
OUTDX,AL
MOVDX,MY8259_OCW3
MOVAL,0AH
OUTDX,AL
MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1
MOVAL,0FCH;打开IR0的屏蔽位
OUTDX,AL
MOVDX,TCTL;8254初始
MOVAL,97H
OUTDX,AL
MOVDX,TIMER0;
MOVAL,3
OUTDX,AL
STI
S33:
MOVAL,0
MOVDX,ADCS;启动0809IN0
OUTDX,AL
MOVFLAG,0FFH
CALLDISP
MOVDX,OFFSETMES2
MOVAH,9;显示MES2
INT21H
MOVAL,IN1OUT
CALLDISP1
MOVDL,0FFH
MOVAH,6
INT21H
JZS33
QUIT:
CLI
MOVAX,0000H;恢复INTR原中断矢量
MOVES,AX
MOVDI,INTR_IVADD;恢复INTR原中断处理程序入口偏移地址
MOVAX,IP_BAK
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址
MOVES:
[DI],AX
MOVDX,INTR_OCW1
MOVAL,IM_BAK;恢复INTR原中断屏蔽寄存器的屏蔽字
OUTDX,AL
STI
EXIT:
MOVAH,4CH;返回到DOS
INT21H
DISP1PROC
PUSHAX
MOVBL,AL;屏幕显示
ANDAL,0F0H
MOVCL,4;显示高位
RORAL,CL
CALLCRT1
MOVAL,BL
ANDAL,0FH;显示低位
CALLCRT1
CRLF
POPAX
RET
DISP1ENDP
CRT1PROC
ADDAL,30H
CMPAL,39H
JBED0
ADDAL,7;在屏幕上显示一位16进制字符
D0:
MOVDL,AL
MOVAH,2
INT21H
RET
CRT1ENDP
DISPPROC
PUSHDS
PUSHAX
MOVAL,IN0IN;转换IN0个位十位百分位
MOVAH,0
DIVE1
MOVSI,OFFSETB
MOV[SI],AL
MOVAL,AH
MOVAH,0
MULD1
DIVE1
INCSI
MOV[SI],AL
MOVAL,AH
MOVAH,0
MULD1
DIVE1
INCSI
CMPAH,19H
JNBES11
MOVAL,0
JMPS2
S11:
INCAL
S2:
MOV[SI],AL
MOVCL,8;从最左边开始显示
MOVSI,OFFSETB
MOVAL,[SI]
LEABX,DCTBL
XLAT;输出段码
ADDAL,80H
MOVDX,PB55
OUTDX,AL
MOVDX,PA55
MOVAL,CL;输出位码
OUTDX,AL
CALLDELAY
INCSI;段码地址+1
ROLCL,1;位码向左移1位
MOVAL,[SI]
LEABX,DCTBL
XLAT
MOVDX,PB55
OUTDX,AL
MOVDX,PA55
MOVAL,CL;输出位码
OUTDX,AL
CALLDELAY
INCSI;段码地址+1
ROLCL,1;位码向左移1位
MOVAL,[SI]
LEABX,DCTBL
XLAT
MOVDX,PB55
OUTDX,AL
MOVDX,PA55
MOVAL,CL;输出位码
OUTDX,AL
CALLDELAY;显示三位后返回
POPAX
POPDS
RET
DISPENDP
MYISRPROCNEAR;中断处理程序MYISR
PUSHAX
PUSHDX
CLI;关中断
MOVDX,MY8259_OCW3
INAL,DX
ANDAL,03H
CMPAL,01H
JEIROISR
JMPOVER
IROISR:
CMPFLAG,0FFH
JES
MOVDX,IN1
INAL,DX
MOVIN1OUT,AL;A2为IN1AD后的值
JMPOVER
S:
MOVDX,ADCS
INAL,DX
MOVIN0IN,AL;A1为IN0
MOVAH,0
DIVN;IN0AD后线性转换给0832的值
NEGAL
ADDAL,7FH
MOVBL,AL
CMPBL,40H
JBSS1
SUBBL,4
SS1:
MOVAL,BL
MOVA3,AL
MOVDX,DACS
OUTDX,AL
MOVDX,IN1;启动IN1
OUTDX,AL
MOVAL,0
MOVFLAG,AL
OVER:
MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令
MOVAL,20H
OUTDX,AL
MOVAL,20H
OUT20H,AL
STI
POPDX
POPAX
IRET
MYISRENDP
DELAYPROCNEAR;延时
PUSHCX
MOVCX,0FFFFH
LOOP$
POPCX
RET
DELAYENDP
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理