1、计算机毕业设计微机原理并行打印机控制并行打印机控制1 概述打印机是微机系统中主要的硬拷贝输出设备,可以打印文字、数字和图形等,常用的打印机有针式打印机、喷墨打印机和激光打印机,常用的打印机接口类型有标准并行接口、串行USB接口等,除此外还发展了增强型并行接口、扩展型并行接口等。本次课设采用的是并行接口,能够满足数据传输速度快、传输距离短等条件限制的要求。本次课设采用8255A工作方式0,其A口充当打印机数据线,C口的PC0接打印机选通信号线,C口的PC4接打印机“忙”线BUSY,B口不用,8255A的初始化可以通过74LS138译码器来实现。为了用键盘来设定打印内容,可以先定义一个数据段,然后
2、调用DOS的1号功能完成数据存储。在满足一定的条件下,CPU现将打印内容依次送到8255A,然后再送到打印机打印,数据全部传送并打印完毕后退出程序。2 并行接口简介一般来说,外设接口可以分为两类:1串行接口:一组数据按位顺序在一根线上一次传输。2并行接口:一组数据在多根线上同时传输。并行接口连接CPU与并行外设,实现两者间的并行通信,在信息传送过程中,起到输出锁存或输入缓冲的作用。并行接口的典型硬件结构包括:1一个或一个以上具有锁存或缓冲的数据端口2与CPU进行数据交换所必须的控制和状态信号3与外设进行数据交换所必须的控制和状态信号4端口译码电路5控制电路3 可编程并行接口芯片8255A3.1
3、可编程接口的概念8255A是常用的可编程接口芯片,可编程接口芯片即指电路的工作状态可由计算机指令编程控制的芯片。目前所用的接口芯片大部分是多通道、多功能的。 多通道即指一个接口芯片一面与CPU连接,另一面可接几个外设。多功能即指一个接口芯片能实现多种接口功能。接口芯片中的各硬件单元不是固定接死而是可以通过编程来控制。编程控制是指通过计算机指令选择通用接口中的不同通道和不同功能。8255A是一个通用的可编程的并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。3.2 8255A的内部结构3.2.
4、1并行输入/输出端口8255A的内部结构如图1所示。8255A芯片包括3个8位端口:A口、B口和C口,它们均可作为CPU与外设通信时的缓冲器或锁存器,用作缓冲器时是输入接口,用作锁存器时是输出接口。3.2.2 A组和B组控制 8255A的3个端口都没有自己独立的控制部件,内部将端口分为两组,A组由A口和C口的高4位组成,B组由B口和C口的低4 位组成。3.2.3读/写控制电路 8255A的读/写控制电路接收来自CPU的控制命令,并根据命令向片内各功能部件发出操作命令。例如为低电平时表示8255A芯片被选中,该片选信号由CPU的地址线通过译码产生。和控制8255A和CPU之间的数据或信息的传输方
5、向。端口选择控制由A1和A0的组合状态提供,这两个控制信号提供4个端口地址,即A、B、C三个端口和一个控制端口地址。3.2.4数据总线缓冲器这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。3.3 8255A的管脚8255A是一个标准的40管脚芯片(见附录),可分为3个部分:与外设连接的I/O线,与CPU连接的系统总线以及电源线。图1 8255A内部结构图3.3.1与外设连接的管脚8255A共有3个8位数据端口,与外设连接的管脚共有24位。其中A口为PA0至PA7,B口为PB0至PB7,C
6、口为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,
7、与其他常用芯片相同。表1 A1A0组合与端口操作关系A1A0功 能00010读端口A数据01010读端口B数据10010读端口C数据00100写数据到端口A01100写数据到端口B10100写数据到端口C11100写命令到控制寄存器XXXX1数据总线呈高阻状态11010非法条件XX110数据总线呈高阻状态3.4 8255A的工作方式及编程3.4.1 8255A的工作方式8255A有3中工作方式:1方式0基本输入/输出方式2方式1选通输入/输出方式3方式2双向传输方式方式0主要工作在无条件的输入/输出方式下,A口、B口和C口均可工作在此方式下被设置成输入/输出口,但不能既做输入口又做输出口C口的
8、输出位可由用户直接独立设置为0或1。方式1主要工作在异步或条件传输方式下,需要先检查状态然后才能传输数据,仅有A口和B口可工作在方式1,由于条件传输需要联络线,所以C口的某些位分别作为A口和B口提供3根联络线,以便于8255A和CPU之间传送信息和中断请求信号。方式2的双向传输方式是指在同一端口内分时进行输入/输出操作。只有A口可以工作在此方式下,需要由C口提供PC3至PC7共5个控制信号进行联络。这种联络信号是由8255A内部规定的,而不由使用者指定。此方式应用于并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行的场合。3.4.2 8255A的编程8255A的编
9、程就是用户在使用8255A之前,用软件来定义端口的工作方式,选择所需要的功能,工作方式是由方式控制字来决定的。(1)方式控制字8255A分为A口、B口和C口即A、B两组,其控制字格式如图2所示: D7 D6 D5 D4 D3 D2 D1 D01 A组控制 B组控制图2 方式控制字D7=1为控制字的标志,A组由D6、D5、D4和D3组成,B组由D2、D1、D0组成,各口工作方式的选择如表2所示:表2 工作方式选择D6D500011XD201A口方式0方式1方式2B口方式0方式1对应的各口I/O选择如表3所示:表3 各口输入/输出选择D4A口D1B口D3C口上半部D0C口下半部0输出0输出0输出0
10、输出1输入1输入1输入1输入(2)C口清0/置1控制字清0称为复位操作,置1称为置位操作,其格式如图3所示:D7 D6 D5 D4 D3 D2 D1 D00XXXPC0至PC7的编码图3 C口置位复位控制字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程序段如下:MOV DX,控制口地址MOV AL,00
11、000101BOUT DX,AL特别注意:该控制字是通过写入8255A的控制寄存器来达到对C口的指定位进行置位/复位操作的,对A口和B口均不适用。3.4.3 8255A的初始化初始化就是在完成硬件连接之后,使用8255A接口芯片时,我们要对它进行编程,即将相关的方式控制字和C口置位/复位控制字送入8255A,以设定接口芯片的工作方式和选择芯片的接口功能。这是8255A进入工作状态前,必须要做的工作。需要特别注意的是:两种不同类型的控制字都是写入同一个端口,或者说在out指令中,使用的是同一个端口地址。初始化完成后:当数据端口作为输入接口时,执行输入IN指令从输入设备得到外设数据;当数据端口作为
12、输出接口时,执行输出OUT指令将把CPU的数据送给输出设备。4 74LS138译码器由于在设定8255A初始化编写控制字时需要利用译码器,我选用了常用的74LS138译码器,它有3个输入控制使能端,C、B、A共3个输入端,对应8种状态组合,还有8个输出端,输出为低电平有效,其功能表如表4所示:表4 74LS138功能表输入输出GCBAXHXXXXHHHHHHHHXXHXXXHHHHHHHHLXXXXXHHHHHHHHHLLLLLLHHHHHHHHLLLLHHLHHHHHHHLLLHLHHLHHHHHHLLLHHHHHLHHHHHLLHLLHHHHLHHHHLLHLHHHHHHLHHHLLHHL
13、HHHHHHLHHLLHHHHHHHHHHL5 打印机并行标准接口信号 打印机并行标准接口(Centronics)信号如表5所示:表5 Centronics标准引脚信号引脚名 称方向功 能1入数据选通,有效时接收数据2-9DATA1至DATA8入数据线10出响应信号,有效时准备接收数据11BUSY出忙信号,有效时不能接收数据12PE出纸用完13SLCT出选择联机,指出打印机不能工作14入自动换行31入打印机复位32ERROR出出错36SLCTIN入有效时打印机不能工作简写,用于数据选通,来自CPU的数据选通信号使打印机控制器转入数据接收处理。DATA1至DATA8是与计算机相连的8根数据线。简
14、写,是打印机对CPU的回答信号,表示已处理好CPU所发来的数据。用于初始化输入,是来自CPU的信号,它对打印机进行初始化。BUSY是“忙”线,高电平有效,表示打印机忙,不能接收数据。忙的原因:1打印机脱机。2打印机正在接收数据。3打印纸用完。4打印机故障。打印机接收CPU数据过程是:当CPU准备好输出打印的一个数据时,通过并行接口送给打印机的数据引脚D0至D7同时将数据选通信号送给打印机。答应应急收到该信号后,把数据锁存到内部缓冲区,同时在BUSY信号线上发出忙信号。打印机处理完数据后撤销忙信号,同时向CPU发送响应信号,CPU根据BUSY信号和信号判断是否发送下一个打印数据。6 并行打印机控
15、制设计6.硬件接线图本设计所需的硬件设施主要有PC机、打印机、8255A芯片和74LS138芯片以及导线若干,示意图如图4所示。在Protel99se中硬件接线图如图5所示。8086CPU 8255A 打印机图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,分别
16、接到译码器的低电平有效使能端。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位
17、为输出方式,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_PORT EQU 300HB_PORT EQU 302HC_PORT EQU 304HCTRL_P
18、ORT EQU 306HDATA SEGMENT BUFF DB 200 DUP(?) MESSAGE DBplease input information and strike Enter to print DB 0dh,0ah DBstrike Esc to exit,0dh,0ah,$ ;系统提示信息 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,200 ;循环次数设定 LEA SI,BUFF MOV AH,09H ;显示系统提示信息 LEA DX,MESSAGE INT 2
19、1H L1:MOV AH,1 ;键盘设定打印内容 INT 21H MOV SI,AL ;将打印内容存入BUFF中 CMP SI,1BH ;判断是否是ESC键 JE FINISH ;若是则退出 CMP AL,0DH ;回车键结束数据输入 JE L2 ;转入打印程序 INC SI ;转入循环存数 LOOP L1 L2:MOV DX,CTRL_PORT ;初始化8255A MOV AL,88H ;初始化控制字10001000B OUT DX,AL MOV AL,0FH ;使数据选通信号为高电平 OUT DX,AL ;置pc0=1,置1控制字00000001B MOV CX,200 ;设置循环次数 L
20、EA DI,BUFF L3:MOV AL,DI ;从BUFF中取数据 MOV BL,AL ;保存数据 L4:MOV DX,C_PORT ;判断打印机的状态 IN AL,DX ;查看BUSY信息 TEST AL,80H ;检测pc7口状态 JNZ L3 ;若忙,则等待 MOV DX,A_PORT ;送数据到8255A MOV AL,BL OUT DX,AL CMP AL,0DH ;判断回车键 JNE L5 MOV DL,0AH ;若是回车键,则输出一行空行 MOV AH,02H INT 21H L5:MOV DX,CTRL_PORT ;送数据选通信号 MOV AL,0H ;清0,清0控制字000
21、00000B OUT DX,AL NOP ;延时 NOP MOV AL,1H ;置1,置1控制字00000001B OUT DX,AL INC DI LOOP L3 ;进行下一轮循环FINISH:MOV AH,4CH INT 21H CODE ENDS END START6.2.3程序调试及结果分析 根据题意要求,本程序主要需要完成以下三个步骤: 1设定数据段用于存放需要打印的内容。2通过并行接口讲一个打印数据由CPU送入8255A锁存,在打印机BUSY信号不忙,将打印机数据选通信号信号置为有效,8255A将打印数据再送给打印机,然后置无效完成本次打印任务。3步骤2完成后,通过程序中的循环结构
22、依次完成打印数据由CPU经8255A再到打印机打印。在Masm for windows实验集成环境2007中调试程序过程如下:完成汇编和连接后按运行屏幕分两行显示:please input information and strike“Enter” to print strike“Esc” to exit按Esc后退出程序。在汇编连接后在DOS环境下进行调试,利用Add watch查看用于存放打印机打印内容的数据段BUFF,显示:BUFF byte 200 “ ”,按F9运行程序后,根据屏幕显示内容输入打印字符例如“hjsdfhsjdfhh”,再按Esc,利用Add watch查看BUFF,显
23、示“BUFF byte 200 hjsdfhsjdfhh ”。由于程序设计由按下回车键“Enter”来结束打印字符的输入,再转入打印阶段,受硬件条件限制没有接到打印机,按照这运行后因无外设程序不再响应。 通过调试运行的结果发现,用键盘来设定打印内容的要求已经达到。至于打印阶段,可以从上文的程序及下文的流程图来检验:8255A完成初始化后CPU将打印字符由数据缓冲器送到打印机,打印机不忙并置选通信号有效,接受数据打印再封锁选通信号执行打印,再由循环控制完成所有打印任务。心得体会通过学习先期课程C语言、软件技术基础和VB,我对程序设计有了一定的了解,学习到了程序设计的一般方法和步骤。模拟电子技术和
24、数字电子技术的学习使我对硬件有了更深的认识。综合到微机原理与接口技术,我发现自己还有很多知识还很不全面。在本次设计并行打印机控制接口过程中,我重温了相关知识,有了进一步的提高。特别地对于8255A这一微机系统中应用最广泛的并行I/O接口芯片,我更了解了其内部结构、各管脚功能、工作方式、初始化以及如何进行并行接口的设计。在设计的过程中,我曾遇到一些难题,查阅资料特别是在同学的帮助下基本解决。同时更感觉到自己所学的知识非常有限,不能很好的应用到实际问题中来,以后要加强相关知识的学习,提高自己的理论水平和动手能力。参考文献1周佩玲.微机原理与接口技术第2版.北京:电子工业出版社,2008.32谭浩强
25、编著.C语言程序设计.北京:清华大学出版社,19993 赵国相.微机计算机原理与接口技术第四版.北京:科学出版社,2004.44耿恒山.微机原理与接口第一版.北京:中国水利水电出版社,2005.105杨立.微型计算机原理与接口技术第一版.北京:中国水利水电出版社,2005.46段承先编著.微型计算机原理及接口技术.北京:兵器工业出版社,20007谢瑞和.微型计算机原理与接口技术教程第一版.北京:科学出版社,2005.88康华光主编.电子技术基础数字部分第五版.北京:高等教育出版社,2006.1附录1、8255A管脚如图7所示:图7 8255A管脚图2、74LS138管脚如图8所示:图8 74LS138管脚图3、常见DOC功能调用指令如表6所示:表6 DOC功能调用指令表01H单字符输入,键盘读取02H单字符输出,屏幕显示06H单字符输入/输出,01H和02H功能组合09H多字符输出,屏幕显示0AH多字符输入,送到缓冲区4CH过程终止,结束当前程序成绩评定依据:评 分 项 目分值评分1选题合理、目的明确102设计方案正确,具有可行性、创新性203设计结果(例如:硬件成果、软件程序)254态度认真、学习刻苦、独立完成任务155设计报告规范化、参考文献充分(不少于5篇)106答辩20总分最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1