计算机毕业设计微机原理并行打印机控制.docx

上传人:b****6 文档编号:8090691 上传时间:2023-01-28 格式:DOCX 页数:17 大小:150.56KB
下载 相关 举报
计算机毕业设计微机原理并行打印机控制.docx_第1页
第1页 / 共17页
计算机毕业设计微机原理并行打印机控制.docx_第2页
第2页 / 共17页
计算机毕业设计微机原理并行打印机控制.docx_第3页
第3页 / 共17页
计算机毕业设计微机原理并行打印机控制.docx_第4页
第4页 / 共17页
计算机毕业设计微机原理并行打印机控制.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

计算机毕业设计微机原理并行打印机控制.docx

《计算机毕业设计微机原理并行打印机控制.docx》由会员分享,可在线阅读,更多相关《计算机毕业设计微机原理并行打印机控制.docx(17页珍藏版)》请在冰豆网上搜索。

计算机毕业设计微机原理并行打印机控制.docx

计算机毕业设计微机原理并行打印机控制

并行打印机控制

1概述

打印机是微机系统中主要的硬拷贝输出设备,可以打印文字、数字和图形等,常用的打印机有针式打印机、喷墨打印机和激光打印机,常用的打印机接口类型有标准并行接口、串行USB接口等,除此外还发展了增强型并行接口、扩展型并行接口等。

本次课设采用的是并行接口,能够满足数据传输速度快、传输距离短等条件限制的要求。

本次课设采用8255A工作方式0,其A口充当打印机数据线,C口的PC0接打印机选通信号线

,C口的PC4接打印机“忙”线BUSY,B口不用,8255A的初始化可以通过74LS138译码器来实现。

为了用键盘来设定打印内容,可以先定义一个数据段,然后调用DOS的1号功能完成数据存储。

在满足一定的条件下,CPU现将打印内容依次送到8255A,然后再送到打印机打印,数据全部传送并打印完毕后退出程序。

2并行接口简介

一般来说,外设接口可以分为两类:

[1]串行接口:

一组数据按位顺序在一根线上一次传输。

[2]并行接口:

一组数据在多根线上同时传输。

并行接口连接CPU与并行外设,实现两者间的并行通信,在信息传送过程中,起到输出锁存或输入缓冲的作用。

并行接口的典型硬件结构包括:

[1]一个或一个以上具有锁存或缓冲的数据端口

[2]与CPU进行数据交换所必须的控制和状态信号

[3]与外设进行数据交换所必须的控制和状态信号

[4]端口译码电路

[5]控制电路

3可编程并行接口芯片8255A

3.1可编程接口的概念

8255A是常用的可编程接口芯片,可编程接口芯片即指电路的工作状态可由计算机指令编程控制的芯片。

目前所用的接口芯片大部分是多通道、多功能的。

多通道即指一个接口芯片一面与CPU连接,另一面可接几个外设。

多功能即指一个接口芯片能实现多种接口功能。

接口芯片中的各硬件单元不是固定接死而是可以通过编程来控制。

编程控制是指通过计算机指令选择通用接口中的不同通道和不同功能。

8255A是一个通用的可编程的并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。

3.28255A的内部结构

3.2.1并行输入/输出端口

8255A的内部结构如图1所示。

8255A芯片包括3个8位端口:

A口、B口和C口,它们均可作为CPU与外设通信时的缓冲器或锁存器,用作缓冲器时是输入接口,用作锁存器时是输出接口。

3.2.2A组和B组控制

8255A的3个端口都没有自己独立的控制部件,内部将端口分为两组,A组由A口和C口的高4位组成,B组由B口和C口的低4位组成。

3.2.3读/写控制电路

8255A的读/写控制电路接收来自CPU的控制命令,并根据命令向片内各功能部件发出操作命令。

例如

为低电平时表示8255A芯片被选中,该片选信号由CPU的地址线通过译码产生。

控制8255A和CPU之间的数据或信息的传输方向。

端口选择控制由A1和A0的组合状态提供,这两个控制信号提供4个端口地址,即A、B、C三个端口和一个控制端口地址。

3.2.4数据总线缓冲器

这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。

输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。

3.38255A的管脚

8255A是一个标准的40管脚芯片(见附录),可分为3个部分:

与外设连接的I/O线,与CPU连接的系统总线以及电源线。

图18255A内部结构图

3.3.1与外设连接的管脚

8255A共有3个8位数据端口,与外设连接的管脚共有24位。

其中A口为PA0至PA7,B口为PB0至PB7,C口为PC0至PC7,特别地,C口可有若干根复用线用于联络信号或状态信号,其具体定义与端口的工作方式有关。

3.3.2与CPU连接的管脚

与CPU连接的管脚包括:

D0至D7:

8位,双向,三态数据线,用来与系统数据总线相连;

RESET:

复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式;

片选,输入,用来决定芯片是否被选中;

读信号,输入,控制8255A将数据或状态信息送给CPU;

写信号,输入,控制CPU将数据或控制信息送到8255A;

A1A0状态组合与端口操作关系如表1所示:

3.3.3电源线与地线

8255A的电源引脚为Vcc和GND,Vcc一般取+5V,与其他常用芯片相同。

表1A1A0组合与端口操作关系

A1

A0

功能

0

0

0

1

0

读端口A数据

0

1

0

1

0

读端口B数据

1

0

0

1

0

读端口C数据

0

0

1

0

0

写数据到端口A

0

1

1

0

0

写数据到端口B

1

0

1

0

0

写数据到端口C

1

1

1

0

0

写命令到控制寄存器

X

X

X

X

1

数据总线呈高阻状态

1

1

0

1

0

非法条件

X

X

1

1

0

数据总线呈高阻状态

3.48255A的工作方式及编程

3.4.18255A的工作方式

8255A有3中工作方式:

[1]方式0——基本输入/输出方式

[2]方式1——选通输入/输出方式

[3]方式2——双向传输方式

方式0主要工作在无条件的输入/输出方式下,A口、B口和C口均可工作在此方式下被设置成输入/输出口,但不能既做输入口又做输出口C口的输出位可由用户直接独立设置为0或1。

方式1主要工作在异步或条件传输方式下,需要先检查状态然后才能传输数据,仅有A口和B口可工作在方式1,由于条件传输需要联络线,所以C口的某些位分别作为A口和B口提供3根联络线,以便于8255A和CPU之间传送信息和中断请求信号。

方式2的双向传输方式是指在同一端口内分时进行输入/输出操作。

只有A口可以工作在此方式下,需要由C口提供PC3至PC7共5个控制信号进行联络。

这种联络信号是由8255A内部规定的,而不由使用者指定。

此方式应用于并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行的场合。

3.4.28255A的编程

8255A的编程就是用户在使用8255A之前,用软件来定义端口的工作方式,选择所需要的功能,工作方式是由方式控制字来决定的。

(1)方式控制字

8255A分为A口、B口和C口即A、B两组,其控制字格式如图2所示:

D7D6D5D4D3D2D1D0

1

A组控制B组控制

图2方式控制字

D7=1为控制字的标志,A组由D6、D5、D4和D3组成,B组由D2、D1、D0组成,各口工作方式的选择如表2所示:

表2工作方式选择

D6D5

00

01

1X

D2

0

1

A口

方式0

方式1

方式2

B口

方式0

方式1

对应的各口I/O选择如表3所示:

表3各口输入/输出选择

D4

A口

D1

B口

D3

C口上半部

D0

C口下半部

0

输出

0

输出

0

输出

0

输出

1

输入

1

输入

1

输入

1

输入

(2)C口清0/置1控制字

清0称为复位操作,置1称为置位操作,其格式如图3所示:

D7D6D5D4D3D2D1D0

0

X

X

X

PC0至PC7的编码

图3C口置位复位控制字

D7=0为该控制字的标志,D6、D5和D4没有定义,可为任意态,通常取0,D3、D2和D1共组成8种编码对应C口的PC0至PC7,D0=0将D3D2D1编码所对应的C口某位清0,D0=1则是进行对应的置1操作。

例如要对C口的PC2为进行置1操作,则D7D6D5D4=0,D3D2D1=010,D0=1,控制字为00000101B,相应的置1程序段如下:

MOVDX,控制口地址

MOVAL,00000101B

OUTDX,AL

特别注意:

该控制字是通过写入8255A的控制寄存器来达到对C口的指定位进行置位/复位操作的,对A口和B口均不适用。

3.4.38255A的初始化

初始化就是在完成硬件连接之后,使用8255A接口芯片时,我们要对它进行编程,即将相关的方式控制字和C口置位/复位控制字送入8255A,以设定接口芯片的工作方式和选择芯片的接口功能。

这是8255A进入工作状态前,必须要做的工作。

需要特别注意的是:

两种不同类型的控制字都是写入同一个端口,或者说在"out"指令中,使用的是同一个端口地址。

初始化完成后:

当数据端口作为输入接口时,执行输入IN指令从输入设备得到外设数据;

当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备。

474LS138译码器

由于在设定8255A初始化编写控制字时需要利用译码器,我选用了常用的74LS138译码器,它有3个输入控制使能端,C、B、A共3个输入端,对应8种状态组合,还有8个输出端,输出为低电平有效,其功能表如表4所示:

表474LS138功能表

输入

输出

G

C

B

A

X

H

X

X

X

X

H

H

H

H

H

H

H

H

X

X

H

X

X

X

H

H

H

H

H

H

H

H

L

X

X

X

X

X

H

H

H

H

H

H

H

H

H

L

L

L

L

L

L

H

H

H

H

H

H

H

H

L

L

L

L

H

H

L

H

H

H

H

H

H

H

L

L

L

H

L

H

H

L

H

H

H

H

H

H

L

L

L

H

H

H

H

H

L

H

H

H

H

H

L

L

H

L

L

H

H

H

H

L

H

H

H

H

L

L

H

L

H

H

H

H

H

H

L

H

H

H

L

L

H

H

L

H

H

H

H

H

H

L

H

H

L

L

H

H

H

H

H

H

H

H

H

H

L

5打印机并行标准接口信号

打印机并行标准接口(Centronics)信号如表5所示:

表5Centronics标准引脚信号

引脚

名称

方向

功能

1

数据选通,有效时接收数据

2-9

DATA1至DATA8

数据线

10

响应信号,有效时准备接收数据

11

BUSY

忙信号,有效时不能接收数据

12

PE

纸用完

13

SLCT

选择联机,指出打印机不能工作

14

自动换行

31

打印机复位

32

ERROR

出错

36

SLCTIN

有效时打印机不能工作

简写

,用于数据选通,来自CPU的数据选通信号使打印机控制器转入数据接收处理。

DATA1至DATA8是与计算机相连的8根数据线。

简写

,是打印机对CPU的回答信号,表示已处理好CPU所发来的数据。

用于初始化输入,是来自CPU的信号,它对打印机进行初始化。

BUSY是“忙”线,高电平有效,表示打印机忙,不能接收数据。

忙的原因:

[1]打印机脱机。

[2]打印机正在接收数据。

[3]打印纸用完。

[4]打印机故障。

打印机接收CPU数据过程是:

当CPU准备好输出打印的一个数据时,通过并行接口送给打印机的数据引脚D0至D7同时将数据选通信号

送给打印机。

答应应急收到该信号后,把数据锁存到内部缓冲区,同时在BUSY信号线上发出忙信号。

打印机处理完数据后撤销忙信号,同时向CPU发送响应信号

,CPU根据BUSY信号和

信号判断是否发送下一个打印数据。

6并行打印机控制设计

6.1硬件接线图

本设计所需的硬件设施主要有PC机、打印机、8255A芯片和74LS138芯片以及导线若干,示意图如图4所示。

在Protel99se中硬件接线图如图5所示。

8086CPU8255A打印机

图4并行打印机控制设计硬件接线示意图

说明:

CPU与8255A对应的8位数据线以及读/写信号线相连,8255A选择工作方式0,在实验室8086CPU提供起始地址为300H,因此选择A9至A3以及M/

参与74LS138译码。

CPU提供A15至A0共16根地址线,选择A15至A10不定义,即为0。

A9和A8都为1,相与后输出接译码器的高电平有效使能端。

A7不定义,即为0。

M/

和A6都为0,分别接到译码器的低电平有效使能端。

A2和A1分别接8255A的A1和A0。

A5A4A3全为0,接到译码器的3个信号输入端,则译码器输出端为

A0不用,即为0。

则完整的16根地址线A15至A0为:

XXXXXX1100000000B,其中高位X取0,则有输出端输出地址为:

1100000000B,即300H,将

输出接到8255A的选通信号端

即可。

对于8255A的3个8位输出端,选择A口的PA0至PA7分别接到打印机的D0至D7,作为打印机的数据线。

C口的PC0接打印机的

,作为打印机的数据选通信号,PC7接打印机的BUSY线,用于接收打印机是否“忙”的信息。

则有A口为输出方式,C口高4位为输入方式,低4位为输出方式,B口没用,设为输出方式。

由此知8255A在方式0下的方式控制字为:

10001000B,即88H,则可对8255A进行初始化。

对于C口,初始化后,首先要使打印机的数据选通信号线无效,即为高电平,PC0置1控制字为00000001B。

一定条件下,CPU将打印内容下先送到8255A再送到打印机,使打印机选通信号有效,PC0清0控制字为00000000B,打印机接收数据打印后再次使选通信号无效,循环完成打印。

图5硬件接线图

6.2程序设计

6.2.1程序流程图

图6程序流程图

6.2.2源程序

A_PORTEQU300H

B_PORTEQU302H

C_PORTEQU304H

CTRL_PORTEQU306H

DATASEGMENT

BUFFDB200DUP(?

MESSAGEDB'pleaseinputinformationandstrike"Enter"toprint'

DB0dh,0ah

DB'strike"Esc"toexit',0dh,0ah,'$';系统提示信息

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,200;循环次数设定

LEASI,BUFF

MOVAH,09H;显示系统提示信息

LEADX,MESSAGE

INT21H

L1:

MOVAH,1;键盘设定打印内容

INT21H

MOV[SI],AL;将打印内容存入BUFF中

CMP[SI],1BH;判断是否是ESC键

JEFINISH;若是则退出

CMPAL,0DH;回车键结束数据输入

JEL2;转入打印程序

INCSI;转入循环存数

LOOPL1

L2:

MOVDX,CTRL_PORT;初始化8255A

MOVAL,88H;初始化控制字10001000B

OUTDX,AL

MOVAL,0FH;使数据选通信号

为高电平

OUTDX,AL;置pc0=1,置1控制字00000001B

MOVCX,200;设置循环次数

LEADI,BUFF

L3:

MOVAL,[DI];从BUFF中取数据

MOVBL,AL;保存数据

L4:

MOVDX,C_PORT;判断打印机的状态

INAL,DX;查看BUSY信息

TESTAL,80H;检测pc7口状态

JNZL3;若忙,则等待

MOVDX,A_PORT;送数据到8255A

MOVAL,BL

OUTDX,AL

CMPAL,0DH;判断回车键

JNEL5

MOVDL,0AH;若是回车键,则输出一行空行

MOVAH,02H

INT21H

L5:

MOVDX,CTRL_PORT;送数据选通信号

MOVAL,0H;

清0,清0控制字00000000B

OUTDX,AL

NOP;延时

NOP

MOVAL,1H;

置1,置1控制字00000001B

OUTDX,AL

INCDI

LOOPL3;进行下一轮循环

FINISH:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.2.3程序调试及结果分析

根据题意要求,本程序主要需要完成以下三个步骤:

[1]设定数据段用于存放需要打印的内容。

[2]通过并行接口讲一个打印数据由CPU送入8255A锁存,在打印机BUSY信号不忙,将打印机数据选通信号

信号置为有效,8255A将打印数据再送给打印机,然后置

无效完成本次打印任务。

[3]步骤[2]完成后,通过程序中的循环结构依次完成打印数据由CPU经8255A再到打印机打印。

在Masmforwindows实验集成环境2007中调试程序过程如下:

完成汇编和连接后按运行屏幕分两行显示:

pleaseinputinformationandstrike“Enter”toprint

strike“Esc”toexit

按Esc后退出程序。

在汇编连接后在DOS环境下进行调试,利用Addwatch查看用于存放打印机打印内容的数据段BUFF,显示:

BUFFbyte[200]“”,按F9运行程序后,根据屏幕显示内容输入打印字符例如“hjsdfhsjdfhh”,再按Esc,利用Addwatch查看BUFF,显示“BUFFbyte[200]hjsdfhsjdfhh←”。

由于程序设计由按下回车键“Enter”来结束打印字符的输入,再转入打印阶段,受硬件条件限制没有接到打印机,按照这运行后因无外设程序不再响应。

通过调试运行的结果发现,用键盘来设定打印内容的要求已经达到。

至于打印阶段,可以从上文的程序及下文的流程图来检验:

8255A完成初始化后CPU将打印字符由数据缓冲器送到打印机,打印机不忙并置选通信号有效,接受数据打印再封锁选通信号执行打印,再由循环控制完成所有打印任务。

 

心得体会

通过学习先期课程C语言、软件技术基础和VB,我对程序设计有了一定的了解,学习到了程序设计的一般方法和步骤。

模拟电子技术和数字电子技术的学习使我对硬件有了更深的认识。

综合到微机原理与接口技术,我发现自己还有很多知识还很不全面。

在本次设计并行打印机控制接口过程中,我重温了相关知识,有了进一步的提高。

特别地对于8255A这一微机系统中应用最广泛的并行I/O接口芯片,我更了解了其内部结构、各管脚功能、工作方式、初始化以及如何进行并行接口的设计。

在设计的过程中,我曾遇到一些难题,查阅资料特别是在同学的帮助下基本解决。

同时更感觉到自己所学的知识非常有限,不能很好的应用到实际问题中来,以后要加强相关知识的学习,提高自己的理论水平和动手能力。

 

参考文献

[1]周佩玲.微机原理与接口技术第2版.北京:

电子工业出版社,2008.3

[2]谭浩强编著.C语言程序设计.北京:

清华大学出版社,1999

[3]赵国相.微机计算机原理与接口技术第四版.北京:

科学出版社,2004.4

[4]耿恒山.微机原理与接口第一版.北京:

中国水利水电出版社,2005.10

[5]杨立.微型计算机原理与接口技术第一版.北京:

中国水利水电出版社,2005.4

[6]段承先编著.微型计算机原理及接口技术.北京:

兵器工业出版社,2000

[7]谢瑞和.微型计算机原理与接口技术教程第一版.北京:

科学出版社,2005.8

[8]康华光主编.电子技术基础数字部分第五版.北京:

高等教育出版社,2006.1

 

附录

1、8255A管脚如图7所示:

图78255A管脚图

2、74LS138管脚如图8所示:

图874LS138管脚图

3、常见DOC功能调用指令如表6所示:

表6DOC功能调用指令表

01H

单字符输入,键盘读取

02H

单字符输出,屏幕显示

06H

单字符输入/输出,01H和02H功能组合

09H

多字符输出,屏幕显示

0AH

多字符输入,送到缓冲区

4CH

过程终止,结束当前程序

 

成绩评定依据:

评分项目

分值

评分

1.选题合理、目的明确

10

2.设计方案正确,具有可行性、创新性

20

3.设计结果(例如:

硬件成果、软件程序)

25

4.态度认真、学习刻苦、独立完成任务

15

5.设计报告规范化、参考文献充分(不少于5篇)

10

6.答辩

20

总分

最终评定成绩(以优、良、中、及格、不及格评定)

指导教师签字:

年月日

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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