微机原理课程设计报告--数据采集系统三(中断法)

更新时间:2024-06-21 13:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计报告纸

微机原理课程设计

课设题目:数据采集系统三(中断法) 实验者姓名: 实验者学号: 学院:

- 1 -

课程设计报告纸

数据采集系统三(中断法)

一、实验目的

进一步掌握微机原理知识,了解微机在实时采集过程中的应用,学习、掌握编程和程序调试方法。

二、实验内容

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

3、要有较好的人机对话界面;控制程序的运行。

三、总体设计

1 、ADC 0809的IN0采集电位器0 — 5V电压,IN1采集0832输出的模拟量。 2 、DAC 0832将ADC 0809的IN0数字量后重新转换成模拟量输出。 3、8259用于检测ADC 0809转换是否结束和向CPU发送INTR信号 4、 8255为七段LED数码管显示提供显示驱动信息。 5、七段LED数码管显示ADC 0809的IN0的值。 6、8254提供ADC 0809的采样时钟脉冲。

7、有良好的人—机对话界面。系统运行时,显示主菜单,开始数据采集, 在数据采集时, 主键盘有键按下, 退出返回DOD系统。

四、硬件设计

因采用了PC机和微机实验箱, 硬件电路设计相对比较简单, 主要利用微机实验箱

上的8255并行口、ADC 0809、DAC 0832、七段LED数码管单元、8254定时/计数器、74LS574输出接口、电位器等单元电路, 就构成了数据采集系统, 硬件电原理框图4-3-1所示。

- 2 -

12 3课程设计报告纸 4XD0-XD7/Y2DXIOWXD0-XD7XIOWXIORXA2XA3/Y3XD0-XD7XIOWXIORC/Y0XD0-XD7XIOWXIORINTR/Y7XD0-XD7XIOWXIORXA2XA3/Y1XA5XA6XA7D0-D7CSWRD0-D7WRRDA0A1CSD0-D7WRRDCSD0-D7WRRDINTRCSD0-D7WRRDA0A1CSABCRfe083208324Iout12Iout23A1LM32465+5V1.8432MHZ4B7LM32411GATE011OUT10K+5V8254CLK0OUT0CLKABCIN0IN1EOCIR00809XA2XA3XA48259A0A2PA0-PA5L1-L68255PB0-PB7A,B-G,Dp数码管键盘单元B74138/G/Y0/Y1/Y2/Y3/Y4/Y5/Y6/Y7 A 12TitleSizeBDate:File:NumberRevision 8-Jan-2011 Sheet of - 3 - D:\\protel 99se\\Library\\Sch\\sy.ddbDrawn By:3 4

课程设计报告纸

五、软件设计

本设计通过软件编程,实现模/数转换器0809分别对IN0 0-5V直流电压的采样,和

经0832线性控制后输出电压的IN1采样,IN0的值转换成十进制后,在七段数码管上显示; IN1的值在显示器上显示。CPU 根据IN0的值,使八位发光二极管根据题目的要求,指示相应的范围。 1、设计思想

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

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

设置键盘扫描模块,采用行列反转发,先PC4-PC7输出低电平,然后读入PC0-PC3.再让PC0-PC3输出低电平,读入PC4-PC7.合并扫描值,获得按键值。 (3) 量纲转换模块

量纲转换模块在中断服务程序内完成,只要将IN0的数字量分别除以51, 商存入显示IN0的个位存储单元; 余数乘以十,再除以51, 商存入十分位存储单元; 余数再乘以十,除以51, 若余数大于25,则商加1, 小于25则舍去, 这样就达到四舍五入的精度, 再把商存入百分位存储单元; 以供七段数码管显示时调用,BCD码转换模块可参考图10所示的流程图。

(4) 数码管显示模块

数码管显示模块比较简单,自编程序可参考实验指导书图1-6所示的流程图,也可参考实验8255并行口中的显示模块,应注意的是在显示个位时, 要加上小数点的显示,这可以在查表获取个位段码后,再加上80H来实现,注意每一位显示后要适当延迟时间。 (5) 中断服务子程序模块

考虑到0832的输出是0809 IN1的输入,因此,为防止在执行中断服务子程序时,二次进入中断服务子程序, 故在进入中断服务子程序后,应关闭中断,而在退出中断前开中断,以便下次中断进入。中断服务子程序模块主要完成对IN0数据的读取和保存,对IN1的启动和读取,对IN0数据的BCD转换等任务。

1、 程序流程图

数据采集三主程序流程图如图4-3-2所示; 中断服务子程序如图4-3-3所示。数码管显示子程序流程图如图3-4-7所示,键盘扫描流程图如图 4-3-4所示。

- 4 -

课程设计报告纸

初 始 化 显示提示信息 关中断 保存原中断向量表内容 设置新的中断向量表 保存原中断屏蔽寄存器值 允许IRQ2中断 8254初始化 开中断 启动0809 IN0 FLAG=0FFH IN0值量纲转换后送显存 调用数码管显示子程序 将IN1的值进行ASCII码转换 显示器显示IN1的值 N 有键按下吗? Y 恢复原中断屏蔽寄存器值 恢复原中断向量表内容 结 束

图4-3-2 数据采集三主程序流程图

- 5 -

课程设计报告纸

- 6 -

返回主程序 发中断结束命令 保护现场 ; 关中断 Y FLAG=01H ? 读IN0值, 保存 N 读IN1值, 保存 IN0值按要求变换后,送0832输出 启动IN1 FLAG=0 恢复现场 ; 开中断 图4-3-3 中断服务子程序流程图

课程设计报告纸

N 返回 N CX=0? CX-1 N DL+1,SI+1 AL=[SI]? Y 键值=DL 键值缓冲区移位 AL=0? Y 行值为0,读列值,屏蔽低四位后保存 列值为0,读行值,屏蔽高四位后保存 AL=合并行列后取反 SI=键盘扫描码首址,CX=16,DL=0 N 图4-3-4 键盘扫描程序流程图

- 7 -

课程设计报告纸

六、试验所遇问题及解决方法

问题:在转动电位器,始终没有反应,电路也检查多遍。

分析:电路连接可能存在不稳定性,也有可能是机器有些损坏啥的。 解决方法:换了个微机实验机器,然后把线路很稳定的连接,转动电位器终于出现正确的反应。

七、心得体会及建议

体会:通过这次微机原理的课程设计,实验制作,让我了解了设计电

路的程序,也让我了解了关于数据采集系统三(中断法)的原理和设计理念,加强了自身动手、思考和解决问题的能力。在此次的数据采集设计过程中,我更进一步的熟悉了机箱的结构及掌握了各芯片的工作原理和其具体的使用方法,巩固和加强了课本知识。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。

通过课程设计,我真正领悟到了“苦中作乐”这词的真正含义,设计连接电路确实有些辛苦,但是还是很有乐趣的,当一个一个的问题被自己发现,然后自己一步一步的按照实验原理去解决问题,知道最后完全解决问题之后,一种难以言明的喜悦心情和成就感瞬间充斥整个大脑和身体,我想这也算是课程设计的乐趣所在了。

通过这次课程设计我还知道了,理论与实际相结合是和重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来才能更好的提高我们的能力,更好更全面地发展我们的各项能力,可以说,这次课程设计,我受益匪浅。

- 8 -

课程设计报告纸

建议:1.希望老师们能在上课期间增加必要的试验箱器件知识,同时在课外

增加一些汇编语言在生活中应用的相关知识介绍,帮助学生提高工程意识,在后期学习当中有一种将知识运用于实践的思想。

2.希望老师可以提前布置和安排微机原理课设的任务,老师们也知道,一方面;我们也可以多多准备一下,另一方面,随着期末考试的紧逼,后续课程的复习也是大家要付出很多时间的。

以上两点建议希望老师们能接纳,先谢谢老师了。

八、源程序

;*************回车宏定义********* CRLF MACRO

MOV DL, 0DH MOV AH,02H INT 21H ;宏定义了回车

ENDM ;*********端口地址定义*********** Y0 EQU 3000H ;片选Y0对应的端口始地址,0809,0832 Y2 EQU 3040H ;片选Y2对应的端口始地址 IN1 EQU Y0+01H*4

ADCS EQU Y0 ;AD0809的端口地址 DACS EQU Y2 ;DAC0832的端口地址 Y3 EQU 3060H

TIMER0 EQU Y3+00H*4 ;8254计数器0端口地址,8254 TIMER1 EQU Y3+01H*4 ;8254计数器1端口地址 TIMER2 EQU Y3+02H*4 ;8254计数器2端口地址 TCTL EQU Y3+03H*4 ;8254控制寄存器端口地址 Y1 EQU 3020H ;片选Y1对应的端口始地址,8255 PA55 EQU Y1+00H*4 ;8255的A口地址 PB55 EQU Y1+01H*4 ;8255的B口地址 PC55 EQU Y1+02H*4 ;8255的C口地址 PCTL EQU Y1+03H*4 ;8255的控制寄存器地址

INTR_IVADD EQU 01C8H ;INTR对应的中断矢量地址,8259 INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址 INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址

- 9 -

课程设计报告纸

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

Y7 EQU 30E0H ;片选Y7对应的端口始地址

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端口地址

;*********************************堆栈段定义**************************************** STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS

;*********堆栈段定义***************************************************************** DATA SEGMENT

DCTBL DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;数码管的段码表 DB 77h,7Ch,39h,5Eh,79h,71h,00H N DB 2

IN0IN DB ? IN1OUT DB ? A3 DB ? B DB 3 DUP(?) D1 DB 0AH E1 DB 33H

FLAG DB ? MES4 DB 0DH,0AH,'++++++ WELCOME TO WEI JI YUAN LI KE SHE: ++++++',0DH,0AH,'$' MES0 DB 0DH,0AH,'******** DATA COLECTION SYSTEM ********',0DH,0AH,'$' MES1 DB 0DH,0AH,'------------ ZUO ZHE :LIU JING AND WANG ZHI MING',0DH,0AH,'$' MESS DB 0DH, 'PRESS ANY KEY TO END THE SYSTEM!',0DH,0AH,0DH, 0AH,'$' MES2 DB 0DH, 'IN1OUT DATA : $',0DH,'$' CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量 IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量 IM_BAK DB ? DATA ENDS

;*********代码段定义*********** CODE SEGMENT

ASSUME CS:CODE,SS:STACK1,DS:DATA

START: MOV AX, DATA MOV DS, AX

- 10 -

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

课程设计报告纸

MOV AL, 10000000B ;8255初始 MOV DX, PCTL OUT DX, AL

MOV DX, OFFSET MES4

MOV AH, 9 ;显示MES4 INT

21H

MOV DX, OFFSET MES0

MOV AH, 9 ;显示MES0 INT 21H

MOV DX, OFFSET MES1

MOV AH, 9 ;显示MES1 INT

21H

MOV DX, OFFSET MESS

MOV AH, 9 ;显示MESS INT 21H

CLI ; 8259初始 MOV MOV MOV MOV MOV MOV MOV ADD MOV MOV MOV

AX, 0000H

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

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

IP_BAK,AX

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

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

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

MOV ES:[DI],AX

MOV DX, INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL, DX ;保存INTR原中断屏蔽字 MOV AND OUT MOV MOV OUT

MOV MOV OUT MOV MOV OUT

IM_BAK,AL

AL, INTR_IM ;允许PC机内部8259的IR2中断 DX, AL

DX, MY8259_ICW1 ; 初始化实验系统中8259的ICW1 AL, 13H ;边沿触发、单片8259、需要ICW4 DX, AL

DX, MY8259_ICW2

AL, 08H ;初始化实验系统中8259的ICW2 DX, AL

DX, MY8259_ICW4 ;初始化实验系统中8259的ICW4 AL, 01H DX, AL

- 11 -

;非自动结束EOI

MOV DX,MY8259_OCW3

课程设计报告纸

MOV AL, 0AH

OUT DX, AL

MOV DX, MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV

AL, 0FCH

;打开IR0的屏蔽位

OUT DX, AL

MOV DX, TCTL ;8254初始 MOV AL, 17H OUT DX, AL MOV DX, TIMER0; MOV AL,2 OUT DX,AL STI S33:

MOV AL, 0

MOV DX, ADCS OUT DX,

AL

;启动0809 IN0

MOV FLAG,0FFH

CALL DISPINT0

MOV DX, OFFSET MES2

MOV AH, 9 ;显示MES2 INT 21H MOV AL,IN1OUT CALL DISPINT1 MOV DL,0FFH MOV AH,6 INT 21H JZ S33 QUIT: CLI MOV MOV MOV MOV MOV ADD MOV MOV MOV MOV

AX, 0000H

;恢复INTR原中断矢量

ES, AX

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

AX, CS_BAK ES:[DI],AX

DX, INTR_OCW1

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

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

OUT DX, AL

STI EXIT: MOV AH, 4CH INT

21H

;返回到DOS

- 12 -

课程设计报告纸

;***********************数码管显示INT1**************************** DISPINT1 PROC

PUSH AX

MOV BL,AL ; 屏幕显示 AND AL, 0F0H MOV CL, 4 ROR AL, CL CALL CRT1 MOV AL, BL AND AL, 0FH CALL CRT1 CRLF POP AX RET

DISPINT1 ENDP CRT1

PROC

AL, 30H AL, 39H

D0

AL, 7 ;在屏幕上显示一位16进制字符

ADD

CMP JBE ADD

; 显示高位

;显示低位

D0: MOV DL, AL

MOV AH, 2 INT 21H RET CRT1 ENDP

;***********************数码管显示INT0**************************** DISPINT0 PROC PUSH DS

PUSH AX MOV AL,IN0IN ;转换IN0个位 十分位 百分位 MOV AH,0 DIV E1

MOV SI,OFFSET B MOV [SI],AL MOV AL,AH MOV AH,0 MUL D1 DIV E1 INC SI MOV [SI],AL MOV AL,AH MOV AH,0

- 13 -

课程设计报告纸

MUL D1 DIV E1 INC SI

CMP AH,19H JNBE S11 MOV AL,0 JMP S2 S11: INC AL

S2: MOV [SI],AL

MOV CL, 8 ;从最左边开始显示 MOV MOV

SI, OFFSET B

AL, [SI]

LEA BX, DCTBL XLAT ;输出段码 ADD AL,80H MOV DX, PB55 OUT MOV MOV OUT CALL INC MOV LEA XLAT MOV OUT MOV MOV OUT CALL INC ROL MOV LEA XLAT MOV OUT MOV MOV OUT CALL

DX, AL

DX, PA55

AL, CL ;输出位码 DX, AL

DELAY

SI ;段码地址+1 AL, [SI] BX, DCTBL DX, PB55

DX, AL DX, PA55

AL, CL ;输出位码 DX, AL

DELAY

SI ;段码地址+1 CL, 1 ;位码向左移1位 AL, [SI] BX, DCTBL DX, PB55

DX, AL DX, PA55

AL, CL ;输出位码 DX, AL DELAY ;输出三位码

- 14 -

ROL CL, 1 ;位码向左移1位

课程设计报告纸

MOV SI, OFFSET B

MOV AL,[SI] CMP AL,2 JB A2 MOV MOV OUT JMP G3

A2:MOV DX, PC55 MOV AL, 00H OUT DX, AL MOV DX, TCTL ;8254计数器1控制蜂鸣器 MOV AL, 77H OUT DX, AL MOV DX, TIMER1; MOV AL,00 OUT DX,AL MOV AL,01 OUT DX,AL G3: POP POP

AX DS

DX, PC55

AL, 0FFH DX, AL

RET

DISPINT0 ENDP MYISR PROC

NEAR ;中断处理程序MYISR

PUSH AX

PUSH DX

CLI ;关中断 MOV DX,MY8259_OCW3 IN AL,DX AND AL,03H CMP AL,01H JE IROISR JMP OVER IROISR: CMP FLAG,0FFH JE S MOV DX,IN1

IN AL,DX MOV IN1OUT,AL ; A2为IN1 AD后的值 JMP OVER S: MOV DX,ADCS

IN AL, DX MOV IN0IN, AL ; A1为IN0 MOV AH,0

- 15 -

课程设计报告纸

DIV N ; IN0 AD后线性转换给0832的值 NEG AL ADD AL,80H MOV BL,AL CMP BL,40H JB SS1 SUB BL,4 SS1: MOV AL,BL

MOV A3,AL MOV DX,DACS OUT DX,AL MOV DX,IN1 ; 启动IN1 OUT DX,AL MOV AL,0

MOV FLAG,AL

OVER: MOV DX,INTR_OCW2 ; 向PC机内部8259发送中断结束命令 MOV OUT MOV

AL, 20H

DX, AL

AL, 20H

OUT 20H, AL STI

POP DX POP AX IRET MYISR ENDP DELAY PROC PUSH MOV

NEAR ;延时

CX

CX, 0FFFFH

LOOP $ POP CX RET DELAY ENDP CODE ENDS END START

- 16 -

课程设计报告纸

DIV N ; IN0 AD后线性转换给0832的值 NEG AL ADD AL,80H MOV BL,AL CMP BL,40H JB SS1 SUB BL,4 SS1: MOV AL,BL

MOV A3,AL MOV DX,DACS OUT DX,AL MOV DX,IN1 ; 启动IN1 OUT DX,AL MOV AL,0

MOV FLAG,AL

OVER: MOV DX,INTR_OCW2 ; 向PC机内部8259发送中断结束命令 MOV OUT MOV

AL, 20H

DX, AL

AL, 20H

OUT 20H, AL STI

POP DX POP AX IRET MYISR ENDP DELAY PROC PUSH MOV

NEAR ;延时

CX

CX, 0FFFFH

LOOP $ POP CX RET DELAY ENDP CODE ENDS END START

- 16 -

本文来源:https://www.bwwdw.com/article/bmi3.html

Top