《单片机基础(第3版)-第7章.ppt》由会员分享,可在线阅读,更多相关《单片机基础(第3版)-第7章.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7 7章章 单片机并行单片机并行I/OI/O扩展扩展7.1 单片机I/O扩展基础知识7.2 可编程并行接口芯片82557.3 键盘接口技术7.4 LED显示器接口技术7.5 打印机接口技术7.1 单片机单片机I/O扩展基础知识扩展基础知识 7.1.1 I/O接口电路的功能接口电路的功能外部设备的速度十分复杂,必须通过I/O接口电路实现。1.速度协调 面对各种设备的速度差异,单片机无法按固定的时序以同步方式进行I/O操作,只能以异步方式进行,也就是只有在确认设备已为数据传送做好准备的前提下才能进行I/O操作。为此需要接口电路产生状态信号或中断请求信号,表明设备是否做好准备。即通过接口电路来进
2、行单片机与外部设备之间的速度协调。2.输出数据锁存由于CPU与外设速度的不一致,需要有接口电路把输出数据先锁存起来,待输出设备为接收数据做好准备后,再传送数据。这就是接口电路的数据锁存功能。3.数据总线隔离线上可能连接着多个数据源(输入设备)和多个数据负载(输出设备)。一对源和负载的数据传送正在进行时,所有其他不参与的设备在电性能上必须与总线隔开。这就是接口电路的总线隔离功能。为了实现总线隔离,需要有接口电路提供具有三态缓冲功能的三态缓冲电路。4.数据转换外部设备种类繁多,不同设备之间的性能差异很大,信号形式也多种多样。单片机只能使用数字信号,如果外部设备所提供或需要的不是电压形式的数字信号,
3、就需要有接口电路进行转换,其中包括模/数转换和数/模转换等。5.增强驱动能力通过接口电路为输出数据提供足够的驱动功率,以保证外部设备能正常、平稳地工作。7.1.2 关于接口电路的更多说明1.接口与接口电路“接口”(Interface),具有界面、相互联系等含义,通过接口能使两个被连接的器件协同工作。单片机接口,则是研究单片机与外部设备之间的连接问题。单片机与外部设备之间接口的硬件电路称为接口电路,或称为I/O接口电路。2.口或端口为了实现I/O接口电路的界面功能,在接口电路中应包含一些寄存器,通常把接口电路中这些已编址并能进行读或(和)写操作的寄存器称为端口或简称口端口或简称口(Port)。完
4、整的接口功能是靠软硬件相完整的接口功能是靠软硬件相结合实现的,而口则是供用户使用的硬件内容,结合实现的,而口则是供用户使用的硬件内容,用户在进行扩展连接和编写相关程序时,要用到接口电路中的各个口,为此就需要知道这些口的设置和编址情况。7.1.3 I/O编址技术编址技术为了对I/O接口电路中的寄存器(端口)进行读/写操作,就需要对它们进行编址,所以就出现了I/O编址问题。有两种I/O编址方式:统一编址方式和独立编址方式。在80C51单片机系统中,采用统一编址方式。所谓统一编址方式统一编址方式,就是把I/O接口中的寄存器与外扩展的数据存储器中的存储单元同等对待,合在一起使用同一个64 KB的外扩展
5、地址空间。I/O和存储器的统一编址,使得I/O口也采用16位地址编址,并使用数据存储器读/写指令进行I/O操作,而不需要专门的I/O指令所谓独立编址方式独立编址方式,就是把I/O与存储器分开进行编址。这样,在一个单片机系统中就形成了两个独立的地址空间:存储器地址空间和I/O地址空间。独立编址方式的优点是两个地址空间相互独立界限分明,但同时也存在许多麻烦并增加系统开销,所以独立编址方式在单片机中较少采用。7.1.4 单片机单片机I/O控制方式控制方式 1.无条件方式无条件方式无条件传送也称为同步传送。只有那些能一直为I/O操作作好准备的设备,才能使用无条件传送方式。在进行无条件I/O操作时,无需
6、测试设备的状态,可以根据需要随时进行I/O操作。无条件传送适用于两类设备的I/O操作。一类是具有常驻的或变化缓慢的数据信号的设备,例如,机械开关、指示灯、发光二极管、数码管等。另一类则是工作速度非常快,足以和单片机同步工作的设备,例如数/模转换器(DAC)。2.查询方式查询方式查询方式又称有条件传送方式,在I/O操作前,要检测设备的状态,只有在确认设备已“准备好”的情况下,单片机才能执行I/O操作。检测也称为“查询”,所以就把这种有条件的I/O控制方式称为查询方式。为实现查询方式的I/O控制,需要由接口电路提供设备状态,接口电路中的状态寄存器或状态位就是为此而准备的。查询方式只适用于规模比较小
7、的单片机系统。3.中断方式中断方式中断方式与查询方式的主要区别在于如何知道外部设备是否为I/O操作做好准备。采用中断方式进行I/O控制时,当设备做好准备之后,就向单片机发出中断请求。单片机接收到中断请求之后作出响应,暂停正在执行的原程序,而转去执行中断服务程序,通过执行中断服务程序完成一次I/O操作,然后程序返回,单片机再继续执行被中断的原程序。中断方式效率较高,所以在单片机系统中被广泛采用。但中断请求是一种不可预知的随机事件,所以实现起来对单片机系统的硬件和软件都有较高的要求。7.2 可编程并行接口芯片可编程并行接口芯片82558255是Intel公司产品,因其工作方式和操作功能等可通过程序
8、进行设置和改变,称为可编程接口芯片。7.2.1 8255硬件逻辑结构8255的全称是“可编程并行输入/输出接口芯片”,具有通用性强且使用灵活等优点,可用于实现80C51系列单片机的并行I/O口扩展。8255是一个40引脚的双列直插式集成电路芯片,其引脚排列如下图。8255芯片引脚图按功能可把8255的内部结构分为3个逻辑电路部分,分别为:口电路、总线接口电路和控制逻辑电路。如下图。1.口电路8255共有3个8位口,其中A口和B口是单纯的数据口,而C口则既可以作数据口使用,又可以作控制口使用,主要用于实现A口和B口的控制功能。把A口和C口高位部分合在一起称为A组;把B口和C口低位部分合在一起称为
9、B组。2.总线接口电路总线接口电路用于实现8255和单片机芯片的信号连接。其中包括:数据总线缓冲器。与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送的。读/写控制逻辑。相关的控制信号有:/CS片选信号(低电平有效)。/RD读信号(低电平有效)。/WR写信号(低电平有效)。A0、A1低位地址信号,用于端口选择。8255共有4个可寻址的端口。RESET复位信号(高电平有效)。芯片复位后,控制寄存器清0,各端口被置为输入方式。3.A组和 B组控制电路A组控制和B组控制合在一起构成8255的控制电路,其中包括一个8位控制寄存器,用于存放编程命令和实现各口操作控制。4.中断控制电路825
10、5逻辑电路中还包含一个中断控制电路。中断控制电路中对应A、B两个口各有一个中断触发器,即触发器A和触发器B,用于对中断的允许和禁止进行控制。置位为允许,复位为禁止。对两个触发器的置位和复位控制是通过口C的有关位进行的。1.方式0(基本输入/输出方式)方式0适用于无条件数据传送。两个8位口(A口和B口)和两个4位口(C口高位部分和C口低位部分)都可以分别或同时设置为方式0。2.方式1(选通输入/输出方式)方式1是选通输入/输出方式。8255的“选通”是通过信号的“问”与“答”,以联络方式(或称握手方式)实现的。所以这种数据传送方式是有条件的,适用于以查询或中断方式进行控制。在方式1下,A口和B口
11、是数据口,C口是控制口,用于传送和保存数据口所需要的联络信号都有具体的定义。见后表。3.方式2(双向数据传送方式)方式2是在方式1的基础上加上双向传送功能,只有A口才能选择这种工作方式,这时A口既能输入数据又能输出数据。如果把A口置于方式2下,则B口只能工作于方式0。方式2适用于查询或中断方式的双向数据传送。在这种方式下需使用C口的5位口线作控制线。7.2.2 8255工作方式工作方式C口联络信号定义C口位线方式1方式2输入输出输入输出PC7/OBFA/OBFAPC6/ACKA/ACKAPC5IBFAIBFAPC4/STBA/STBAPC3INTRAINTRAINTRAINTRAPC2/STB
12、B/ACKBPC1IBFB/OBFBPC0INTRBINTRB7.2.3 8255的编程内容的编程内容8255是可编程接口芯片,主要编程内容是两条控制命令,即工作方式命令和C口位置位/复位命令。1.工作方式命令工作方式命令工作方式命令用于设定各数据口的工作方式及数据传送方向。命令的最高位(D7)是标志位,其状态固定为1。命令格式如下图所示。对工作方式命令有如下两点说明:A口有3种工作方式,而B口只有两种工作方式;在方式1和方式2下,对C口的定义(输入或输出)不影响作为联络信号使用的C口各位的功能。8255工作方式命令格式工作方式命令格式2.C口位置位口位置位/复位命令复位命令在方式1和方式2下
13、,C口用于定义控制信号和状态信号,因此,C口的每一位都可以进行置位或复位。对C口各位的置位或复位是由位置位/复位命令进行的。8255的位置位/复位命令格式如下图。3.初始化编程初始化编程8255初始化的内容就是向控制字寄存器写入命令。例如,若对8255各口作如下设置:A口方式0输入,B口方式1输出,C口高位部分为输出、低位部分为输入。设控制寄存器地址为0003H。按各口的设置要求,工作方式命令字为10010101,即95H。则初始化程序段应为:MOV R0,03H MOV A,95H MOVX R0,A8255端口选择及读端口选择及读/写控制表写控制表/CSA1A0/RD/WR选择端口端口操作
14、00001A口读端口A00101B口读端口B01001C口读端口C00010A口写端口A00110B口写端口B01010C口写端口C01110控制寄存器写控制命令1-数据总线缓冲器输出端呈高阻抗键盘是单片机不可缺少的人机交互设备。7.3.1 键扫描和键码生成 1.键盘举例为说明键盘的工作原理,以一个8行4列的矩阵键盘为例,如下图所示。键盘上有行线和列线之分,本键盘共有8条行线4条列线。在行线和列线的交点处有一个键,由于行线与列线分别与键的不同端相连,平时键处于断开状态,所以行线和列线互不相通。接口时,行线一端接输出口,另一端悬空;而列线一端经电阻接+5 V电源,另一端接输入口。由于列线通过电阻
15、与+5 V电源相连,所以列列线的初始状态为高电平线的初始状态为高电平。7.3 键盘接口技术键盘接口技术 键盘扫描示意图2.键码键码键盘上的每个键都担负一项处理功能,而处理功能是通过软件实现的,所以键盘接口必须有软件配合。为此,键盘上每个键都对应有一个处理程序段,键的功能是通过运行这个程序段实现的。为了在程序中能顺利地分支到键处理程序段,就需要对键进行编码,称为键码,以便能按键码进行程序分支。键的编码没有统一标准,存在多种多样的键编码方法。最常用的编码方法是以键在键盘矩阵中的位置,从最常用的编码方法是以键在键盘矩阵中的位置,从0开始按自然数顺序开始按自然数顺序进行编码,键码以十六进制数表示。进行
16、编码,键码以十六进制数表示。下表是键盘扫描示意图中各键的键码,左边第一列的内容对应各行的扫左边第一列的内容对应各行的扫描码,最后一行的内容是对应列有闭合键时的状态码描码,最后一行的内容是对应列有闭合键时的状态码(或称返回码或称返回码)。表中内容为键码,注意键码排列的规律性。键码表7FH1FH17H0FH07HBFH1EH16H0EH06HDFH1DH15H0DH05HEFH1CH14H0CH04HF7H1BH13H0BH03HFBH1AH12H0AH02HFDH19H11H09H01HFEH18H10H08H00HF7HFBHFDHFEH3.键盘扫描键盘扫描通常把键盘上被按下的键称为闭合键。为
17、了识别闭合键为了识别闭合键,有行扫描法和线反转法两种方法可供选用,在单片机中常用的是行扫描法,扫描法,简称扫描法。这里介绍的键盘扫描是由软件实现的,扫描过程也就是扫描程序的执行过程。开始前,通过程序反复不断地进行闭合键查找,即看看键盘中是否有闭合键,为此,为此,应先使行线输出全0,再读回列线状态,若列线状态为全1,则表明没有键被按下;若不为全1,则表明有键被按下。因为当有键被按下时,由于行线与列线在闭合键交点处接通,使穿过闭合键的那条列线变为低电平。发现闭合键后才接着进行键盘扫描发现闭合键后才接着进行键盘扫描,判定闭合的是哪个键;若无闭合键,就返回去重复进行闭合键的查找。键盘扫描过程是依次使行
18、线中的每一条输出低电平,接着输入列线状态进行有无闭合键的判定发现闭合键后,扫描并未结束。因为还要判定是否还有其他键被同时按下,所以扫描还应继续下去,直至最后在行线上输出7FH为止。4.键盘扫描程序流程键盘扫描程序流程 5.去抖动去抖动 每当确认有键被按下后,都应当进行去抖动处理。因为键在被按下时,由于机械触点的弹性以及电压突跳等原因,在触点闭合及释放的瞬间将出现电压抖动,如下图。去抖动处理有软件和硬件两种方法。软件去抖动方法是采用时间延迟以躲过抖动(延时时间为1020 ms即可),硬件方法是在键盘中附加去抖动电路,以抑制抖动的产生,具体可使用双稳态电路或滤波电路等,但硬件去抖动需增加成本。键闭
19、合和断开时的电压抖动7.3.2 用8255实现键盘接口 以8255作84键盘的接口为例。A口为输出口,接键盘行线。C口为输入口,以PC3PC0接键盘的4条列线。如下图。假定 A口地址为8000H,则B口地址为8001H,C口地址为8002H,控制寄存器地址为8003H。判断有无闭合键的子程序判断有无闭合键的子程序 判断有无闭合键的子程序为KS,以供在键盘扫描程序中调用。执行KS子程序的结果是:有闭合键,则有闭合键,则(A)0;无闭合键,则(A)0。程序如下:KS:MOV DPTR,#8000HMOV A,#00H;A口送00HMOVX DPTR,AINC DPTRINC DPTR;建立C口地址
20、MOVX A,DPTR;读C口CPL A;A取反,若无键按下,则全为0ANL A,#0FH;屏蔽A高半字节RET 键盘扫描程序键盘扫描程序 在单片机应用系统中常常是键盘和显示器同时存在,因此,可以把键盘程序和显示程序配合起来使用,即把显示程序作为键盘程序中的一个延时子程序使用。这样既不耽误显示驱动,又可以起到键盘定时扫描的作用。假定本系统中显示器驱动程序为DIR,执行时间约为6 ms。键盘扫描程序如下,程序中R2为扫描码寄存器,R4为行计数器。KEY:ACALL KS;检查是否有键闭合检查是否有键闭合JNZLK1;A非非0,则转移,则转移ACALL DIR;驱动显示器驱动显示器(延时延时6 m
21、s)AJMP KEYLK1:ACALL DIR;有键闭合有键闭合2次驱动显示器次驱动显示器ACALL DIR;延时延时12 ms进行去抖动进行去抖动ACALL KS;再检查是否有键闭合再检查是否有键闭合JNZ LK2;有键闭合有键闭合,转转LK2ACALL DIRAJMP KEY;无键闭合无键闭合,延时延时6 ms后转后转KEYLK2:MOV R2,#0FEH;扫描初值送扫描初值送R2MOV R4,#00H;扫描行号送扫描行号送R4LK4:MOV DPTR,#8000H;建立建立A口地址口地址MOV A,R2MOVX DPTR,A;扫描初值送扫描初值送A口口,扫描开始扫描开始INC DPTRI
22、NC DPTR;指向指向C口口MOVX A,DPTR;读读C口口JB ACC.0,LONE;ACC.01,第第0列无键闭合,转列无键闭合,转LONEMOV A,#00H;装第装第0列状态码起始值列状态码起始值AJMP LKPLONE:JB ACC.1,LTWO;ACC.11,第第1列无键闭合列无键闭合,转转LTWOMOV A,#08H;装第装第1列状态码起始值列状态码起始值AJMP LKPAJMP LKPLTWO:JB ACC.2,LTHR;ACC.2LTWO:JB ACC.2,LTHR;ACC.21,1,第第2 2列无列无闭合闭合,转转LTHRLTHRMOV A,#10H;MOV A,#10
23、H;装第装第2 2列状态码起始值列状态码起始值AJMP LKPAJMP LKPLTHR:JB ACC.3,NEXT;ACC.3LTHR:JB ACC.3,NEXT;ACC.31,1,第第3 3列无列无键闭合,则转键闭合,则转NEXTNEXTMOV A,#18H;MOV A,#18H;装第装第3 3列状态码起始值列状态码起始值LKP:ADD A,R4;LKP:ADD A,R4;计算键码计算键码PUSH ACC;PUSH ACC;保护键码保护键码LK3:ACALL DIR;LK3:ACALL DIR;延时延时6 ms6 msACALL KS;ACALL KS;查键是否继续闭合查键是否继续闭合,若闭
24、合若闭合再延时再延时JNZ LK3JNZ LK3POP ACC;POP ACC;若键起若键起,则键码送则键码送A ARETRETNEXT:INC R4;NEXT:INC R4;扫描行号加扫描行号加1 1MOV A,R2MOV A,R2JNB ACC.7,KND;JNB ACC.7,KND;第第7 7位为位为0,0,已扫完最已扫完最后一行,则转后一行,则转KNDKNDRL A;RL A;扫描码循环左移一位扫描码循环左移一位MOV R2,AMOV R2,AJMP LK4;JMP LK4;进行上一行扫描进行上一行扫描KND:AJMP KEY;KND:AJMP KEY;一轮扫描完毕一轮扫描完毕,开始新
25、的一开始新的一轮扫描轮扫描独立式按键独立式按键(K13、K14、K15、K16)KSCAN:MOV P1,#0F0H MOV A,P1 ANL A,#0F0H J1:JB ACC.4,J2 SJMP LOOP1 J2:JB ACC.5,J3 SJMP LOOP2 J3:JB ACC.6,J4 SJMP LOOP3 J4:JB ACC.7,DONE SJMP LOOP4 DONE:RET P1.0 P1.1 P1.2 P1.3 P1.47.4 LED显示器接口技术显示器接口技术在单片机应用系统中,最简单、最常见的显示器件是LED显示器。7.4.1 LED显示器概述LED是Light Emitti
26、ng Diode(发光二极管)的缩写,发光二极管是能将电信号转换为光信号的电致发光器件。数码管有7段数码管和8段数码管之分。7段数码管由7个发光二极管组成,而8段数码管则是在7段发光二极管的基础上再加一个圆点型发光二极管(在图中以dp表示),用于显示小数点。8段数码管中发光二极管的排列形状如下图(a)所示。8段LED显示器8段LED显示器数码管能够被广泛使用,与其具有的许多特点特点是分不开的,其中包括:发光响应快,亮度强,高频特性好;而且随着材料的不同,数码管还能发出红、黄、绿、蓝、橙等多种颜色的光。机械性能好,体积小,重量轻,价格低廉;能与CMOS和TTL电路配合使用;使用寿命长,可达105
27、106 h。工作电压低,驱动电流适中。每段工作电流为510 mA,一只数码管的7段LED全亮需要电流为3570 mA。这样大的电流需要由驱动电路提供,因此,使用时要注意数码管的驱动问题。公共引脚共有如下两种连接方法连接方法:共阴极接法。把发光二极管的阴极连在一起构成阴极公共引脚,如上图(b)所示。使用时阴极公共引脚接地,这样阳极引脚上加高电平的发光二极管就导通点亮,而加低电平的则不点亮。共阳极接法。把发光二极管的阳极连在一起作为阳极公共引脚,如上图(c)所示。使用时阳极公共引脚接+5 V。这样阴极引脚上加低电平的发光二极管即可导通点亮,而加高电平的则不点亮。7.4.2 LED显示器显示原理1.
28、段码所谓段码就是为数码管显示提供的各段状态组合,即字形代码。7段数码管的段码为7位,8段数码管的段码为8位,用一个字节即可表示。在段码字节中代码位与各段发光二极管的对应关系如下:段码D7D6D5D4D3D2D1D0段名dpgfedcba段码的值与数码管公共引脚的接法(共阳极和共阴极)有关。以8段数码管为例,显示十六进制数的段码值在下表中。数字共阳极段码共阴极段码数字共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF8EH71H7F8H07H灭
29、FFH00H880H7FHLED显示器显示方式显示器显示方式1、静态显示、静态显示 P0 P2MOV P0,#3FHMOV P2,#06H共阴极数码管共阴极数码管2、动态显示方式、动态显示方式 LED显示器多采用动态显示方式,全部数码管共用一套段码驱动电路。显示时通过位控信号采用扫描的方法逐位地循环点亮各位数码管。动态显示虽然在任一时刻只有一位数码管被点亮,但是由于人眼具有的视觉暂留效应,看起来与全部数码管持续点亮的效果完全一样。LED显示器动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。8255实现LED显示器接口后图使用8255作6位LED显示器接口的接口电路。其中P
30、C口为位码输出口,以PC5PC0输出位控线。由于驱动电流较大,输出加接74LS06进行反相并提高驱动能力。PA口为段码输出口,各段码线的负载电流约为8 mA,为提高显示亮度,加接74LS244进行段控输出驱动。使用8255作LED显示器接口,8255只能输出显示段码而不具有控制功能,动态控制要靠程序实现。对此有以下两点说明。为了存放段码,通常要在80C51的内部RAM中设置一个显示缓冲区,存储单元个数与LED显示器的位数相同,一个单元对应一个显示位。为了保证显示亮度,在扫描过程中,应在每一位数码管上都驻留一段时间(约约1 ms),以使数码管稳定地点亮一段时间,以保证其显示亮度。为此在扫描过程中
31、,位与位之间要加进一段时间延迟。8255作作6位位LED显示器接口电路显示器接口电路DIR:MOV R0,#70H;建立显示缓冲区首址 MOV R3,#0FEH;从右边开始显示 MOV A,R3;位控码初值LD0:MOV DPTR,#8002H;位控口地址 MOVX DPTR,A;输出位控码输出位控码 MOV DPTR,#8000H;段控口地址段控口地址 MOV A,R0;取出显示数据DIR0:ADD A,#0DH MOVC A,A+PC;取字形代码DIR1:MOVX DPTR,A;输出段控码输出段控码 ACALL DL;延时(100us左右)INC R0;转向下一缓冲单元 MOV A,R3
32、JB ACC.5,LD1;判断是否到最高位判断是否到最高位 RL A;MOV R3,A;位控码送R3保存 AJMP LD0;继续扫描继续扫描 LD1:RETDSEG:DB C0H;字形代码表(共阳极)DB F9H DB A4H1、添加、添加8255初始化程序初始化程序2、循环显示、循环显示87.5 打印机接口技术打印机接口技术7.5.1 微型打印机概述单片机系统的打印机多采用价格便宜、接口方便的微型打印机。P系列打印机与单片机之间可以通过一条20芯的扁平电缆线进行连接,信号为:DB7DB0数据线,数据的传输是单向的,即从单片机传向打印机。STB数据选通信号,低电平有效的打印机输入信号。该信号有
33、效时,打印数据送入打印机,在其上升沿时,将数据锁存。BUSY打印机“忙”信号,打印机输出的状态信号。ACK打印机应答信号,低电平有效。该信号是打印机已处理完所接收数据后的应答,亦即通知单片机可以发送新数据。ERR出错信号,打印机输出。7.5.2 打印机接口1.单片机与打印机直接连接打印机的接口信号比较少,所以打印机的接口比较简单,甚至可以不用接口电路而直接与单片机连接,如下图。打印机的8根数据线直接与80C51的P1口线连接,用一根地址线(P2.7)去选通80C51的读信号/RD和写信号/WR,选通后的/WR信号接打印机的STB信号,选通后的RD信号去控制打印机的BUSY(送口线P1.7)。在
34、打印机中只有一个数据寄存器,用于寄存打印数据。只使用地址线P2.7,数据口的地址为7FFFH。对于下图中的连接形式,只适宜使用查询方式控制打印,即对BUSY信号的状态进行查询。若要使用中断方式,应以ACK信号作中断请求,即把ACK信号与80C51的外中断引脚INT0或INT1相连。打印机与80C51直接连接2.使用8255作打印机接口如果80C51的口资源比较紧张,则需要使用接口芯片与打印机接口,例如,用8255作打印机接口芯片,如下图。8255与80C51之间的连接采用线选法进行I/O编址,以P0.7作为8255的片选信号。以两个最低位地址对应接8255的口选择端A0和A1,如果把没连接的地
35、址都假定为1,则8255的A口地址为7CH,B口地址为7DH,C口地址为7EH,控制寄存器地址为7FH。对于8255与打印机之间的连接,若采用查询方式进行打印驱动控制,则8255与打印机的连线内容为:A口(PA7PA0)与打印机数据线相连,传送打印数据。C口的PC0提供数据选通信号,接打印机的STB端,进行打印数据送打印机的选通控制。C口的PC7接打印机的BUSY端,以BUSY作为状态查询信号。可确定8255工作方式命令字为10001000(88H)。A口为方式0输出,D6D5D4000;B口不用,假定D2D100;C口高位输入,D31;C口低位输出,D00。8255作打印机接口为编写打印驱动
36、程序,在内部RAM中设置缓冲区,打印数据存放其中。设置两个参数,一个是缓冲区首址R1,另一个是缓冲区长度R2。送给打印机的选通信号STB是一个负脉冲,在打印数据从单片机送到8255后,在PC0端产生一个负脉冲。MOV R0,#7FH;控制寄存器地址MOV A,#88H;工作方式命令MOVX R0,A;写入工作方式命令TP:MOV R0,#7EH;C口地址TP1:MOVX A,R0;读C口JB ACC.7,TP1;BUSY=1,继续查询MOV R0,#7CH;A口地址MOV A,R1;取缓冲区数据MOVX R0,A;打印数据送8255INC R1;指向下一单元MOV R0,#7FH;控制口地址MOV A,#00H;输出STB脉冲,送出C口单一置复位命令字MOVX R0,AMOV A,#01HMOVX R0,ADJNZ R2,TP;数据长度减1,不为0继续RET 3.打印驱动程序打印驱动程序