多模块系统综合设计 doc.docx

上传人:b****6 文档编号:5842516 上传时间:2023-01-01 格式:DOCX 页数:42 大小:111.15KB
下载 相关 举报
多模块系统综合设计 doc.docx_第1页
第1页 / 共42页
多模块系统综合设计 doc.docx_第2页
第2页 / 共42页
多模块系统综合设计 doc.docx_第3页
第3页 / 共42页
多模块系统综合设计 doc.docx_第4页
第4页 / 共42页
多模块系统综合设计 doc.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

多模块系统综合设计 doc.docx

《多模块系统综合设计 doc.docx》由会员分享,可在线阅读,更多相关《多模块系统综合设计 doc.docx(42页珍藏版)》请在冰豆网上搜索。

多模块系统综合设计 doc.docx

多模块系统综合设计doc

多模块系统综合设计

一﹑实验目的:

1﹑熟悉微机系统硬件的综合设计方法;

2﹑掌握多模块程序设计的规则和方法。

二﹑实验内容

在以前单元接口实验的基础上,把多个接口部件连接成一个多功能的微机综合应用系统。

系统包括以下可选功能:

(1)用中断方式统计单次脉冲(键入)次数并在LED显示器上显示;

(2)扫描4*4键盘,若按下0~9键,则在LED显示器最左边两位显示其数值;如为A--F功能键,则分别实现下列功能:

A:

LED显示器左二位显示‘A’,同时发光二极管左循环流水灯显示。

B:

LED显示器左二位显示‘B’,同时发光二极管右循环流水灯显示。

C:

LED显示器左二位显示‘C’,同时发光二极管闪烁显示。

D:

LED显示器左二位显示‘D’,同时右四位显示‘HELP’。

E:

LED显示器左二位以16进制显示8位乒乓开关的状态。

F:

LED显示器左二位显示‘F’,同时回到主程序。

(3)多种波形发生器,用PC键盘输入来控制DAC0832的输出波形,如按‘1’输出锯齿波,按‘2’输出三角波,按‘3’输出方波,按‘4’输出正弦波,按‘5’退出程序。

并用示波器观测输出波形。

三、实验要求

1.基本要求

(1)系统至少包括两种功能模块;由PC键盘控制选择实现功能

(2)软件采用多模块程序结构

2.提高要求

(1)三种或更多功能模块

(2)改善人机接口

四、实验报告要求

(1)实验目的和内容

(2)总体设计

(3)硬件设计:

原理图(接线图)及简要说明

(4)程序框图和清单

(5)实验结果和体会

 

多模块系统综合设计

一、总体设计

(1)系统运行时,首先执行主程序模块,显示功能菜单,供选择运行各模块或返回DOS。

(2)利用8259实现脉冲计次;8255管理键盘和发光二极管。

两片8位锁存器实现六位LED显示器动态刷新控制。

二﹑硬件设计

1.主要硬件单元:

实验平台上有:

4*4键盘电路﹑电平开关电路﹑发光二极管显示电路﹑七段数码显示电路﹑单脉冲发生电路。

实验主板上有:

分频电路﹑地址译码器﹑可编程并行接口8255单元﹑模数转换ADC08单元﹑数模转换DAC0832单元。

各硬件单元的电路原理图请参见实验箱简介,此处不再累述。

2.硬件主要跳线连接

请参见表3-1

表3-1对应跳线连接表

实验平

台引脚

实验主

板引脚

备注

实验平

台引脚

实验主

板引脚

备注

CS0

CS-55

8255片选:

280H~283H

CS4

CS-DA

0832片选:

290H~293H

L1

PA0

8255的A口用于控制LED流水灯的接线对照

ROW1

PC0

8255的C口用于键盘操作,即接受小键盘的行(COL)﹑列(ROW)电位状态信息

L2

PA1

ROW2

PC1

L3

PA2

ROW3

PC2

L4

PA3

ROW4

PC3

L5

PA4

COL1

PC4

L6

PA5

COL1

PC5

L7

PA6

COL1

PC6

L8

PA7

COL1

PC7

P0

PB0

8255的B口接受乒乓开关状态接线对照

CS3

CS-AD

0809片选:

28BH~28FH

P1

PB1

+5R

REF

0809接正参考电压+5R

P2

PB2

Q0

CLK-AD

给0809加外部时钟:

Q0

P3

PB3

A0

A

0809接受输入信号的通道号由地址线的A0~A2决定

P4

PB4

A1

B

P5

PB5

A2

C

P6

PB6

IN4

VOUT1

DA的输出接AD4号口

P7

PB7

IRQ3

PLUS

单脉冲(PLUS)申请中断

CS1

CS1

LED数码管位选地址:

284H~287H

CS2

CS2

LED数码管位选地址:

288H~28BH

三﹑软件设计

1.功能模块的划分:

根据要求可把整个程序划分为六个功能模块:

并行接口芯片8255A的A口LED流水灯显示模块,B口读乒乓开关数值模块,C口简易键盘操作模块;8259的系统硬中断模块;D/A的波形输出模块,以及D/A﹑A/D联调模块。

其中8255的A口﹑C口两个功能设计到一个程序中(SY8255.ASM),B口的功能模块设计在SY82552.ASM中,8259的系统硬中断模块在SY8259.ASM中,D/A的波形输出模块在SYAD2.ASM中,D/A﹑A/D联调模块在SYAD1.ASM中,其中SYAD2.ASM由SYAD1.ASM调用形成A/D-D/A综合功能的大模块,SY82552.ASM由SY8255.ASM调用形成接口芯片8255A综合功能的大模块,各个大模块由主程序SY.ASM调用。

各个源程序文件分别汇编,生成各自的目标文件,然后用‘LINK’命令连接,生成可执行文件SY.EXE。

其示意图如图1:

连接命令格式:

LINKSY+SYAD1+SYAD2+SY8255+SY82552+SY8259

2.各模块的具体分析:

(1)主程序模块:

功能:

判断键入的数字键,分情况调用各个功能模块。

若键入‘1’,则调用8259功能模块,若为‘2’,则调用8255A综合功能模块,若为‘3’,则调用A/D-D/A综合功能大模块,若为‘4’,则退出返回DOS环境。

SY8255.ASMSY82552.ASMSYAD1.ASMSYAD2.ASMSY8259.ASMSY.ASM

MASMMASMMASMMASMMASMMASM

SY8255.OBJSY82552.OBJSYAD1.OBJSYAD2.OBJSY8259.OBJSY.OBJ

LINKLINK

8255大功能模块A/D-D/A大功能模块8259功能模块主程序模块

LINK

可执行文件SY.EXE

图1

流程框图及程序清单:

源程序如下:

;主程序模块SY.ASM

EXTRNADDA:

FAR,F8259:

FAR,F8255:

FAR;指出外部模块定义的标志符

DATASEGMENTPUBLIC'DATA';所有程序共用一个数据段,即一个DS值

MESSDB0DH,0AH,0DH,0AH

DB'**********MAINMENU***********',0DH,0AH

DB'PRESS1TOMAKE8259INTERRUPT!

',0DH,0AH

DB'PRESS2TOTHEOPERATIONOF8255A!

',0DH,0AH;主菜单

DB'PRESS3TOTHEOPERATIONOFDA/AD!

',0DH,0AH

DB'PRESS4TOQUITDOS!

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

DATAENDS

STACKSEGMENTparastack'stack'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

BIG:

LEADX,MESS

MOVAH,09H

INT21H

BIG1:

MOVAH,08H

INT21H

CMPAL,'1'

JZF59

CMPAL,'2'

JZF55

CMPAL,'3'

JZAD

CMPAL,'4'

JZQIT

JMPBIG1

F59:

CALLF8259

MOVAL,00H

JMPBIG

F55:

CALLF8255

MOVAL,00H

JMPBIG

AD:

CALLADDA

MOVAL,00H

JMPBIG

QIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

流程图请见图2

开始

显示主菜单

等待键盘按键

YNY

键号是'1'调用8259模块是否返回?

N

YNY

键号是'2'调用8255模块是否返回?

N

YNY

键号是'3'调用A/D-D/A模块是否返回?

N

Y

键号是'4'返回DOS

N

图2主程序模块

(2)8259系统硬中断模块:

功能:

可编程中断控制器采用PC机内的8259A,用单脉冲发生单元申请中断(IRQ3),利用中断服务子程序统计脉冲开关按下的次数,并用两位数码管显示开关按下次数。

流程框图及程序清单

流程框图如图3

开始

关中断

保护0AH号中断向量

置中断向量

开放IRQ2中断屏蔽位

开中断

AL=60H,60H次中断一循环

N

NUM=60H

Y

NUM=0

N

有键按下吗

Y

返回DOS

图3系统硬中断

源程序如下:

;系统硬中断模块sy8259.asm

DATASEGMENTPUBLIC'DATA';各模块共用一个DS值

MESS1DB'PressanytoquitMAINMENU!

',0DH,0AH,'$'

MESS2DB'A8259interrupt,pressanytoquitMAINMENU!

',0DH,0AH,'$'

MY1db0h

DCTBLDB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h

INTMASKDB0

CSREGDW?

IPREGDW?

NUMDW?

NUM2DW?

DATAENDS

stacsegmentparastack'stack'

db128dup(?

stacends

codesegment

assumecs:

code,ss:

stac,ds:

data,ES:

DATA

PUBLICF8259;F8259定义为外部过程

F8259PROCFAR

start:

MOVAX,00H

MOVNUM,AX

MOVNUM2,AX

CLI;关中断

movax,data

movds,ax

movax,stac

movss,ax

LEADX,MESS1

MOVAH,09H

INT21H

moval,0ah

movah,35h

int21h

MOVAX,ES;保护0AH号中断向量(IRQ3对应0AH号)

MOVCSREG,AX

MOVIPREG,BX

pushds

MOVAX,CS

MOVDS,AX

movdx,offsetINTPROC;置中断向量(如口地址为CS:

DX)

MOVAL,0aH

MOVAH,25H

INT21H

popds

inal,21h

andal,0f7h;写屏蔽操作命令字OCW1,开IRQ3中断屏蔽位

out21h,al

sti;开中断

LOP1:

NOP

NOP

NOP

NOP

NOP

NOP

CALLDISP

MOVAX,NUM

CMPAX,060H

JNZLOP2

MOVAX,00H

MOVNUM,AX

MOVNUM2,AX

LOP2:

NOP

MOVDL,0FFH

MOVAH,06H

INT21H

JZLOP1

inal,21h

oral,08h;恢复OCW1内容

out21h,al

MOVDX,IPREG

MOVAX,CSREG

MOVDS,AX

MOVAL,0ah;恢复0AH号中断向量

MOVAH,25H

INT21H

STI;开中断

RET

F8259ENDP

INTPROCPROCNEAR;中断服务子程序

PUSHDS

pushax

MOVAX,DATA

MOVDS,AX

NOP

MOVAX,NUM

INCAX;脉冲开关按一次,中断次数NUM就加1

MOVNUM,AX

NOP

MOVAL,20H

OUT20H,AL;置中断方式字OCW2为非特殊的EOI中断结束

popax

POPDS

IRET;中断返回

INTPROCENDP

DISPPROCNEAR;两位LED显示中断次数子程序

PUSHDS

PUSHCX

PUSHAX

MOVCX,NUM

MOVAX,CX

MOVBX,NUM2

CMPAX,BX

JZDISP0

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS2

MOVAH,09H

INT21H

MOVNUM2,CX

DISP0:

MOVCX,NUM

MOVAX,CX

ANDAL,0FH

MOVAH,AL

MOVAL,CL

MOVCL,04H

SHRAL,CL

MOVCH,AL

MOVCL,AH

DISPL:

movdx,288h

moval,02h

outdx,al

movdx,284h

moval,cl

movah,0

leabx,dctbl

movsi,ax

moval,[bx+si]

outdx,al

CALLDELAY1

DISPH:

movdx,288h

moval,01h

outdx,al

movdx,284h

moval,ch

movah,0

leabx,dctbl

movsi,ax

moval,[si+bx]

outdx,al

CALLDELAY1

POPAX

POPCX

POPDS

RET

DISPENDP

DELAY1PROCNEAR;延迟子程序

PUSHCX

MOVCX,0F00H

LOOP$

POPCX

RET

DELAY1ENDP

DELAY2PROCNEAR

PUSHAX

PUSHCX

MOVCX,030H

DL21:

CALLDELAY1

LOOPDL21

POPCX

POPAX

RET

DELAY2ENDP

codeends

end

(3)并行接口8255A综合模块:

功能:

利用8255的A口输出控制发光二极管,B口输入接收8位乒乓开关状态,C口接收小键盘行列状态实现一定的功能,采用反转法判断所按实验平台上的小键盘为何键,在数码管上显示按键信息:

按0到9数字键就在左边两个数码管上显示其数值;如为A--F功能键,则分别实现下列功能:

A:

数码管左二位显示‘A’,同时L1到L8左循环流水灯显示。

B:

数码管左二位显示‘B’,同时L1到L8右循环流水灯显示。

C:

数码管左二位显示‘C’,同时L1到L8闪烁显示。

D:

数码管左二位显示‘D’,同时右四位数码管显示‘HELP’。

E:

数码管左二位以16进制显示8位乒乓开关的状态。

F:

数码管左二位显示‘F’,同时回到主程序。

其中,B口接受并显示乒乓开关状态由小模块SY82552完成,并受大模块SY8255调用。

其它功能由SY8255完成。

模块SY8255的流程框图及程序清单

流程框图如图4

开始

显示主菜单

调键盘扫描子程序

YY

是A键执行A功能PC键盘按键否

NYNY

是B键执行B功能PC键盘按键否

NYNY

是C键执行C功能PC键盘按键否

NYNY

是D键执行D功能PC键盘按键否

NYNY

是E键执行E功能PC键盘按键否

NYY

是F键返回

N

是数字键,左二位

数码管显示其数值

图4SY8255模块

源程序如下:

;8255功能模块sy8255.asm

PA55EQU280H

PB55EQU281H

PC55EQU282H;定义8255各口地址

P55CTLEQU283H

DATASEGMENTPUBLIC'DATA'

TABLEDB0EEH,0DEH,0BEH,07EH,0EDH,0DDH,0BDH,07DH

DB0EBH,0DBH,0BBH,07BH,0E7H,0D7H,0B7H,077H

DCTBLDB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh

DB77h,7Ch,39h,5Eh,79h,71h

MESDB'***********SUBMAINMENU***********',0DH,00AH

DB'Pressanykeyonthesmallkeyboard!

',0DH,0AH

DB'PressNUMkeytodisplaynumontheled!

',0dh,0ah

DB'PressAforleftcycle!

',0DH,0AH

DB'PressBforrightcycle!

',0DH,0AH

DB'PressCforalternatelydisplay!

',0DH,0AH

DB'PressDtodisplayHELPontherightfourled!

',0DH,0AH

DB'PressEtodisplaythedataofpingpangonthelefttowled!

',0DH,0AH

DB'PressFtoquittoMAINMENU!

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

MESSDB'*****Pressanykeytomainmenu!

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

KEYCDB?

KEYRDB?

KEYDB?

NUM1DB?

NUM2DB?

DATAENDS

STACKSEGMENTPARASTACK'STACK'

DB50DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

PUBLICF8255;F8255定义为外部过程

EXTRNF82552:

FAR;F82552为外部过程名

F8255PROCFAR

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES

MOVAH,09

INT21H

LOP1:

CALLTESTKEY;调用检测小键盘按键子程序,键号在

CALLDISP;变量KEY(默认为0)

MOVAL,KEY

CMPAL,0AH

JZA0

CMPAL,0BH

JZB0

CMPAL,0CH

JZC0

CMPAL,0DH

JZDE

CMPAL,0EH

JZEE

CMPAL,0FH

JZFF

MOVDL,0FFH

MOVAH,6

INT21H

JZLOP1;无PC键按下,则循环

JMPSTART;按键不是'A-F’,则重新检测﹑显示

A0:

LEADX,MESS

MOVAH,9

INT21H

CALLDISP

MOVDX,PA55

MOVAL,0FEH

A1:

OUTDX,AL

PUSHAX

CALLDISP

POPAX

CALLDELAY2

ROLAL,1

PUSHAX

PUSHDX

MOVDL,0FFH

MOVAH,06H

INT21H

POPDX

POPAX

JZA1

MOVKEY,00H

JMPSTART

B0:

LEADX,MESS

MOVAH,9

INT21H

CALLDISP

MOVDX,PA55

MOVAL,0FEH

B1:

OUTDX,AL

PUSHAX

CALLDISP

CALLDELAY2

CALLDISP

POPAX

RORAL,1

PUSHAX

PUSHDX

MOVDL,0FFH

MOVAH,06H

INT21H

POPDX

POPAX

JZB1

MOVKEY,00H

JMPSTART

DE:

JMPD0

EE:

JMPE0

FF:

JMPF0

C0:

LEADX,MESS

MOVAH,9

INT21H

CALLDISP

MOVDX,PA55

MOVAL,55H

C1:

OUTDX,AL

CALLDELAY2

NOTAL

PUSHAX

PUSHDX

MOVDL,0FFH

MOVAH,06H

INT21H

POPDX

POPAX

JZC1

MOVKEY,00H

JMPSTART

E0:

CALLDISP

CALL

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

当前位置:首页 > 经管营销

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

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