《8255A应用举例必看课件》由会员分享,可在线阅读,更多相关《8255A应用举例必看课件(17页珍藏版)》请在金锄头文库上搜索。
1、例1 :CPU通过通过8255A控制控制8个开关和发光二个开关和发光二极管,要求发光二极管的亮灭和开关状态一极管,要求发光二极管的亮灭和开关状态一致,设计电路并编写程序。致,设计电路并编写程序。解析:可以认为,处于方式解析:可以认为,处于方式0输出工作状态输出工作状态的的PA、PB、PC端口实际上等同一个锁存端口实际上等同一个锁存器,而处于方式器,而处于方式0输入工作状态的输入工作状态的PA、PB、PC端口实际上等同一个缓冲器。端口实际上等同一个缓冲器。 电路如图所示。电路如图所示。图图1 8255控制开关、发光二极管电路控制开关、发光二极管电路 首先根据电路确定首先根据电路确定8255A 4
2、个端口的个端口的地址。确定端口地址用下述方法进行,为地址。确定端口地址用下述方法进行,为了能够访问了能够访问8255A,必须使,必须使8255A的片选的片选信号信号CS=0, A9A4的信号必须如下:的信号必须如下:A9 A8 A7 A6 A5 A4 A3 A2 1 0 0 1 1 0 0 0 PA端口端口 0 1 PB端口端口 1 0 PC端口端口 1 1 控制端口控制端口 而A3、A2 的组合和各个端口地址的关系的组合和各个端口地址的关系也如上所示,由于也如上所示,由于A1、A0没有参与译码,没有参与译码,其值对访问端口没有影响。综合以上讨论可其值对访问端口没有影响。综合以上讨论可以得出,
3、以得出, PA 、PB、 PC和控制端口的地址和控制端口的地址分别是分别是260H、 264H、 268H和和 26CH。 在确定工作方式控制字时必须知道,在确定工作方式控制字时必须知道, PA端口为方式端口为方式0输出,输出, PB端口为方式端口为方式0输入输入,而,而PC端口没有参与电路工作,其输入输端口没有参与电路工作,其输入输出方式随意,由此可确定控制字为出方式随意,由此可确定控制字为82H。 1 0 0 0 0 0 1 0 控制电路工作并使其保证开关状态和控制电路工作并使其保证开关状态和发光二极管亮灭一致的程序如下:发光二极管亮灭一致的程序如下: MOV DX,26CH MOV AL
4、, 82H OUT DX,AL MOV DX,264H IN AL,DX NOT AL MOV DX,260H OUT DX,AL例例2: 用一片用一片8255A连接连接8个个7段数码显示管,规定段数码显示管,规定8255A的的端口地址范围为端口地址范围为340H34FH,用用74LS138译码器实现译码器实现8255A的片选电路,并根据电路编写在的片选电路,并根据电路编写在8个个7段数码管上显段数码管上显示数字示数字07的程序。的程序。解:在设计电路前,首先要了解解:在设计电路前,首先要了解7段数码管,掌握数码管显示段数码管,掌握数码管显示数字的原理。数字的原理。 图图2-给出了共阴极给出了
5、共阴极7段数码管逻辑结构图段数码管逻辑结构图。 bcadfegabcdefgcomabcdefgcom(a)7段发光二极管标号段发光二极管标号(b)对应电路图)对应电路图(c)引脚分布)引脚分布图图2- 共阴极共阴极7段数码管逻辑结构段数码管逻辑结构 从图从图2-1可以看出。当可以看出。当com端接低电平,端接低电平,ag端端接高电平,对应的发光二极管就发亮。接高电平,对应的发光二极管就发亮。如果想在如果想在7段数码管上显示数字段数码管上显示数字0,需要在,需要在com端接低电平,端接低电平,a 、 b 、 c 、 d 、 e 、f端接高电平,端接高电平,g端接低电平。端接低电平。 七段数码管
6、的字形代码表如下:七段数码管的字形代码表如下:显示字形显示字形 g fe d c b a 段码段码 0 0 111 1 1 1 3fh 1 0 110 0 0 030h 2 1 011 0 1 15bh 3 1 001 1 1 14fh 4 1 100 1 1 066h 5 1 101 1 0 16dh 6 1 111 1 0 17dh 7 0 000 1 1 107h 一片一片8255A只需个端口地址,而题中给出的只需个端口地址,而题中给出的地址范围由地址范围由16个地址,这意味着低位地址中有个地址,这意味着低位地址中有些地址可以不参加地址译码。设计电路的第一部些地址可以不参加地址译码。设计
7、电路的第一部还需要设计出片选电路。必须用指定地址范围内还需要设计出片选电路。必须用指定地址范围内状态不变的地址信号作为片选电路的输入信号。状态不变的地址信号作为片选电路的输入信号。A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 1 0 1 0 0 0 0 0 0 340H 1 1 0 1 0 0 1 1 1 1 34FH 从上述分析中可以看出,指定地址范围内状态从上述分析中可以看出,指定地址范围内状态不变的地址信号是不变的地址信号是A9 A8 A7 A6 A5 A4 它们的状它们的状态分别是态分别是110100,这意味着,这意味着A9 A4上出现的信号状上出现的信号状态为态为1
8、10100,8255 A的的CS必须为低电平。必须为低电平。 下面讨论如何用下面讨论如何用74LS138译码器实现这一功能。译码器实现这一功能。 设计片选电路的基本原则是:用设计片选电路的基本原则是:用A9 A4作为作为74LS138的输入,用的输入,用74LS138其中一个输出其中一个输出Yi去连去连接接8255的的CS,当且仅当,当且仅当 A9 A4=110100时,时, Yi才能变为低电平。才能变为低电平。图图2-2中,用中,用A6、A5、A4 分别连接分别连接74LS138的的 G 、 G2A 、G2B, 只有当只有当A6A5A4 =100时时74LS138才能进行译码操作,用才能进行
9、译码操作,用A9 、A8、 A7分别分别 连接连接74LS138的的C、B、A,而用,而用Y6输出连接输出连接8255的的CS,这样,只有当,这样,只有当A9 A8A7=110时,时, Y6输出为低电平。输出为低电平。图图-用用74LS138译码器实现译码器实现8255的片选电路的片选电路 用一片用一片8255A连接连接8个个7段数码管。且使段数码管。且使8个个7段数码管显示段数码管显示8个不同的数字。开始,似乎感到个不同的数字。开始,似乎感到有点困难。实际上,任何时刻只显示一个有点困难。实际上,任何时刻只显示一个7段数段数码管,其余码管,其余7个个7段数码管都没有显示状态,段数码管都没有显示
10、状态,CPU通过通过8255A逐个显示逐个显示7段数码管,并在不同的段数码管,并在不同的7段段数码管上显示不同的数字。在逐个显示完数码管上显示不同的数字。在逐个显示完8个数个数码管后,又开始新一轮的逐个显示过程,当这个码管后,又开始新一轮的逐个显示过程,当这个循环周期间隔足够短时,由于人的眼睛有滞后效循环周期间隔足够短时,由于人的眼睛有滞后效应,使得人们发现每一个数码管都出于显示状态,应,使得人们发现每一个数码管都出于显示状态,且显示不同的数字。且显示不同的数字。 从电路中可以得出,从电路中可以得出,8255A 4个端口的地址个端口的地址分别是:分别是: 340H(PA端口)、端口)、 344
11、H (PB端口端口) 348H (PC端口)、端口)、 34CH(控制口)(控制口) 程序的设计思路是先通过程序的设计思路是先通过PB端口选中某个数端口选中某个数码管(使其公共端为低电平),然后再从码管(使其公共端为低电平),然后再从PA端口端口输出选中的数码管所对应的显示码,在完成当前输出选中的数码管所对应的显示码,在完成当前数码管显示后,显示下一个数码管,在完成一轮数码管显示后,显示下一个数码管,在完成一轮显示后,开始下一轮的显示。显示后,开始下一轮的显示。data segment org 100h buff1 db 3fh, 30h, 5bh, 4fh,66h,6dh,7dh,07h ;
12、定义定义07 的显示码的显示码 buff2 db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,7fh ;定义位码定义位码data endscode segment assume cs:code,ds:data start: mov dx, 34Ch ;设置设置8255控制端口地址控制端口地址 mov al, 80h ;使使8255的的A口、口、B口、口、C口为方式口为方式0输出输出 out dx, al yyy1:mov si, offset buff1 ;设置显示码指针设置显示码指针 mov di, offset buff2 ;设置控制码指针设置控制码指针 mov
13、cx, 8 ;每一轮循环中显示的数码管的数目每一轮循环中显示的数码管的数目 yyy2: mov dx, 340h ;先使所有数码管变黑先使所有数码管变黑 mov al , 0 out dx, al mov dx , 344h ;选中一个数码管选中一个数码管 mov al, di out dx, al mov dx, 340h ;输出该数码管对应的显示码输出该数码管对应的显示码 mov al, si out dx, al inc si ;选择下一个数码管所对应的显示码选择下一个数码管所对应的显示码 inc di ;选择下一个数码管选择下一个数码管 loop yyy2 ; 显示下一个数码管显示下一个数码管 jmp yyy1 ;开始新的一轮的显示开始新的一轮的显示 mov ah, 4ch int 21hcode ends end start