南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

微机原理课程设计

数据采集系统(中断法)

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

一、 课设目的:进一步掌握微机原理知识,了解微机在实时采集数

据的应用,学习掌握编程和程序调试的方法。

二、 课设内容和要求:用中断法将ADC0809通道0外接0—5V电

压,转换成数字量后,在七段数码管LED上显示。以小数点后两位表示精度,显示模拟电压的十进制;0809通道0的数字量以线性控制方式DAC0832输出,当通道0的电压为5V时,0832的OUT为0V当通道0的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC0809通道1,转换后的数字量在CRT上以十六进制显示。ADC0809的采样脉冲CLK由定时器8254的OUT0提供;ADC0809的EOC信号用作8259中断请求信号。

三、 总体设计:

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的采样时钟脉冲。

四、硬件设计:因采用PC机和微机实验箱,硬件电路设计相对比较简单,主要利用微机实验箱上的8255并行口,ADC0809,DAC0832,七段数码管LED,8254定时/计数器,74LS574输出接口,电位器等

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

微机原理课程设计总结
微机原理课程设计总结

单元

微机原理课程设计总结

(图1:数据采集系统硬件连接示意图)

六、软件设计:本设计通过软件编程,实现模/数转换,0809分别对IN0 0—5V直流电压的采样和经线性控制后输出电压IN1采样,IN0

南京航空航天大学 微机原理课程设计 数据采集系统(中断法) 的值转换成十进制后,在七段数码管LED上显示IN1的值。CPU根据IN0的值,使八位二极管根据课设要求指示相应的范围。

1、设计思想:数据采集系统分成四个功能模块分别是主程序模块、量纲转换模块、数码管显示模块、中断服务子程序模块。

(1)主程序模块:根据课设要求采用中断方式采集数据,因此可把读取IN0的值保存和数字量经线性控制后送给0832输出,作为0809IN1的模拟电压和IN1的启动,读取以及IN0的BCD码转换,放在中断服务子程序模块中完成。在主程序模块上主要实现启动0809的IN0、显示模块的调用、和中断结束部分程序。

(2)量纲转换模块:量纲转换模块在中断服务子程序内完成,只有将IN0的数字量分别除以51,商存在显示IN0的个位存储单元;余数乘以十,再除以51,商存入十分位存储单元;余数再乘以十,除以51,若余数大于25则商加一,小于25则舍去。这样就实现了四舍五入的精度,再把商存入百分位存储单元;以供七段数码管显示调用。

(3)数码管显示模块:数码管显示模块相对简单,主要在显示个位是加上小数点的显示,可以通过查表获取个位断码后再加上80H来实现

(4)中断服务子程序:考虑到0832的输出时0809IN1的输入,因此,为防止在执行中断服务子程序时二次进入中断服务子程序中,故在进入中断服务子程序后关中断,而在退出中断服务子程序前开中断以便下次进入中断服务子程序。中断服务子程序模块主要完成对IN0

南京航空航天大学 微机原理课程设计 数据采集系统(中断法) 数据的读取和保存,对IN1的启动和读取,对IN0数据的BCD转换等任务。

2、参考流程:中断子程序和主程序流程图

图2:中断服务子程序流程图

微机原理课程设计总结

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

图3 数据采集系统主程序流程图

微机原理课程设计总结

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

;微机原理课设 CRLF MACRO ;宏定义回车,换行 MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH INT 21H ENDM Y0 EQU 3000H Y1 EQU 3020H Y2 EQU 3040H Y3 EQU 3060H Y7 EQU 30E0H PA55 EQU Y1+00H*4 ;8255A口地址

PB55 EQU Y1+01H*4 ;8255B口地址 PCTL EQU Y1+03H*4 ;8255控制寄存器地

AD0 EQU Y0 ;ADC0809端口IN0地

AD1 EQU Y0+10H ;ADC0809端口IN1

地址

INTR_IVADD EQU 01C8H ;INTR对应的中断矢量地址

INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的

OCW1地址

INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的

OCW2地址

INTR_IM EQU 0FEH ;INTR对应的中断屏蔽字

MY8259_ICW1 EQU Y7+00H ;实验系统中8259的ICW1端口地址 MY8259_ICW2 EQU Y7+04H ;实验系统中8259的ICW2端口地址 MY8259_ICW3 EQU Y7+04H ;实验系统中8259的ICW3端口地址 MY8259_ICW4 EQU Y7+04H ;实验系统中8259的ICW4端口地址 MY8259_OCW1 EQU Y7+04H ;实验系统中8259的OCW1端口地址 MY8259_OCW2 EQU Y7+00H ;实验系统中8259的OCW2端口地址 MY8259_OCW3 EQU Y7+00H ;实验系统中8259的OCW3端口地址 TIMER0 EQU 3060H ;Y3+00H*4 8254计数器0端 口地址

TCTL EQU 306CH ;Y3+03H*4 8254控制字端口地址

DATA SEGMENT MES0 DB ‘ SIGNAL GATHERING

PRORGRAM’,0DH,0AH,0DH,0AH DB ‘#####################################

######’,0DH,0AH,0DH,0AH DB ‘ PRESS 1 TO START GATHERING !’,0DH,0AH,0DH,0AH DB ‘ PRESS 2 TO

EXIT TO DOS !’,0DH,0AH,0DH,0AH DB

‘###########################################’,0DH,0AH,0DH,0AH,’$’

MES1 DB ‘The value of IN1 is: $’ CS_BAK DW ? IP_BAK DW ?

IM_BAK DB ? FLAG DB ? GW DB ? ;保存个位 SF DB ? ;保存十分位

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

BF DB ? ;保存百分位

IN0 DB ? IN1 DB ? DCTBL DB

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

77H,7CH,39H,5EH,79H,71H

DATA ENDS

STAC SEGMENT PARA STACK DW 256 DUP(0) STAC ENDS

CODE SEGMENT ASSUME

CS:CODE,SS:STAC,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MES0 MOV AH,9 INT 21H

LOP1: MOV DL,0FFH ;测试键盘输入 MOV AH,6 INT 21H JZ LOP1 CMP AL,’1′ JZ MAIN CMP AL,’2′ JZ EXIT0 JMP START EXIT0: JMP EXIT ;主程序模块

MAIN: CLI ;关中断

MOV AX, 0000H

MOV ES, AX ;替换INTR的中断矢量

MOV DI, INTR_IVADD ;保存INTR原中断处理程序入口偏移地址 MOV AX, ES:[DI] MOV IP_BAK,AX

MOV AX, OFFSET

MYISR ;设置当前中断处理程序入口偏移地址

MOV ES:[DI],AX ADD DI, 2 MOV AX, ES:[DI] ;保存INTR原中断处理程序入口段地址

MOV CS_BAK,AX MOV AX, SEG

MYISR ;设置当前中断处理程序入口段地址

MOV ES:[DI],AX MOV DX, INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位

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

MOV IM_BAK,AL

AND AL,0FBH OUT DX,AL

MOV DX,MY8259_ICW1 MOV AL,13H OUT DX,AL

MOV DX,MY8259_ICW2 MOV AL,08H OUT DX,AL

MOV DX,MY8259_ICW4 MOV AL,01H OUT DX,AL

MOV DX,MY8259_OCW3 MOV AL,0AH OUT DX,AL

MOV DX,MY8259_OCW1 MOV

AL,0FEH ;打开IR0屏蔽位 OUT DX,AL

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

;8254初始化

MOV DX,TCTL

MOV AL,16H ;计数器0方式3读低8位二进制计数 ,若为方式2亦可,”MOV AL,14H” OUT DX,AL

MOV DX,TIMER0

示高位

MOV CL,4 ROR AL,CL CALL CRT1

MOV AL,BL ;显示低位

AND AL,0FH

CALL CRT1 CRLF

MOV AL,4 OUT DX,AL

;8255初始化

MOV AL,80H 出、B输出,方式0 MOV

DX,PCTL ;8255控制字 OUT DX,AL

STI

;启动0809 IN0

LOP2: MOV DX,AD0 动0809IN0

OUT DX,AL CALL DELAY

MOV AX,0FFH

MOV FLAG,AL 标志符

CALL CHANGE 用量纲转换模块

LEA DX,MES1 MOV AH,9 INT 21H

MOV DX,AD1 IN1的值

IN AL,DX

NEG AL 变换

SHR AL,1 MOV BL,AL

AND AL,0F0H ;A输;开中断 ;启 ;设 ;调 ;读 ;线性 ;显

INT 21H

MOV AH,1 ;判断是否有按键按下 INT 16H

JZ LOP2 ;无按键继续循环,有则退出

;退出模块

EXIT: CLI ;关中断

MOV AX,0000H

MOV ES,AX MOV

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

MOV AX,IP_BAK

MOV ES:[DI],AX ADD DI,2

MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址 MOV ES:[DI],AX

MOV DX,INTR_OCW1 MOV

AL,IM_BAK ;恢复INTR原中断屏蔽寄存器的屏蔽字 OUT DX,AL STI ;开中断

MOV AX,4C00H ;退出系统

INT 21H

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

;量纲转换模块

CHANGE PROC MOV AL,IN0 XOR AH,AH MOV DL,51 MOV DH,10 DIV DL MOV GW,AL MOV AL,AH XOR AH,AH

MUL DH DIV DL

MOV SF,AL MOV AL,AH XOR AH,AH MUL DH DIV DL CMP AH,25 JB LOP3 ADD AL,1 LOP3:

MOV BF,AL 位

CALL DISP 显示模块 RET CHANGE ENDP

;数码显示模块 DISP PROC

MOV AL,GW XOR AH,AH MOV SI,AX LEA BX,DCTBL MOV AL,[BX+SI] ADD AL,80H MOV DX,3024H OUT DX,AL MOV DX,3020H

;存个位 存十分位 ;存百分调用数码 MOV AL,01H OUT DX,AL CALL DELAY

MOV AL,SF MOV SI,AX

MOV AL,[BX+SI] MOV DX,3024H OUT DX,AL MOV DX,3020H MOV AL,02H OUT DX,AL CALL DELAY

MOV AL,BF MOV SI,AX

MOV AL,[BX+SI] MOV DX,PB55 OUT DX,AL MOV DX,PA55 MOV AL,04H OUT DX,AL CALL DELAY RET DISP ENDP

;中断服务子程序

MYISR PROC NEAR

PUSH AX ;保护现场

PUSH BX PUSH CX PUSH DX

CLI ;关中断

CMP FLAG,0FFH JZ FLAG0

FLAG1: MOV DX,AD1 ;读IN1的值

IN AL,DX MOV IN1,AL JMP INTEXIT

; ;

南京航空航天大学 微机原理课程设计 数据采集系统(中断法) FLAG0:

MOV DX,AD0 IN AL,DX

MOV IN0,AL MOV DX,AD1 OUT DX,AL CALL DELAY

MOV AX,0 MOV FLAG,AL

INTEXIT:MOV DX,INTR_OCW2 ;发中断结束命令

MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL

POP DX ;恢复现场

POP CX POP BX POP AX

STI ;开中断

IRET ;返回主程序

MYISR ENDP

CRT1 PROC ;在屏幕上显示一位16进制字符 ADD AL,30H CMP AL,39H JBE D0 ADD AL,7 D0: MOV DL,AL MOV AH,2 INT 21H RET CRT1 ENDP

DELAY PROC NEAR ;延时

PUSH CX

MOV CX,0FFFFH LOOP $ POP CX RET DELAY ENDP

CODE ENDS

END START ;全程序终

课程硬件结束与软件编程源程序结束。

课设答辩: 提出的要求:

1.断开0832数据端,CS端,out端,IN1为什么有输出?

给出的答案:

修改程序:

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

主程序:

LEA DX,MES1

MOV AH,9 INT 21H

MOV AL,IN1 ;读IN1的值

MOV BL,AL

AND AL,0F0H ;显示高位

MOV CL,4 ROR AL,CL CALL CRT1

MOV AL,BL ;显示低位

AND AL,0FH

CALL CRT1 CRLF 中断程序:

MOV DX,AD0

IN AL,DX MOV IN0,AL NEG AL ADD AL,5 SHR AL,1

MOV DX,3040H

OUT DX,AL MOV DX,AD1 OUT DX,AL

LEA DX,MES2 MOV AH,9 INT 21H

MOV AL,IN0 ;读IN0的值

MOV BL,AL

AND AL,0F0H ;显示高位

MOV CL,4 ROR AL,CL CALL CRT1

MOV AL,BL ;显示低位

AND AL,0FH

CALL CRT1 CRLF

心得体会:

通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在设计完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。

南京航空航天大学 微机原理课程设计 数据采集系统(中断法)

幸好平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的很多程序都用到了。很多子程序的设计是固定的,因此可以直接从指导资料中调用,大多只需要修改几个参数就可以,这大大方便了我们的设计,为我们节省了很多的时间。

在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。

不可否认,本程序存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的工作也有指导作用。我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!

总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。感谢老师的悉心指导。

类似文章