利用8255A芯片实现流水灯闪烁设计 - 图文

更新时间:2023-11-29 20:49:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

利用8255A芯片实现流水灯闪烁设计

目录

摘要······················································2 第1章 利用8255A芯片实现流水灯闪烁设计的概述···········2 第2章 三种方案的论述与最终方案的确定····················2 2.1 2.2 2.3 第3章第4章第5章附录1 附录2 附录3 附录4 附录5 附录6

第一种方案的论述··································2 第二种方案的论述··································5 第三种方案(最终方案)的论证·······················10 测试结果及体会心得·······························13 致谢·············································14 参考文献·········································14 方案一 Proteus仿真电路效果图·····················15 方案一 源程序代码································16 方案二 Proteus仿真电路效果图·····················18 方案二 源程序代码································19 方案三(最终方案) Proteus仿真电路效果图·········20 方案三(最终方案) 源程序代码····················21 - 1 -

利用8255A芯片实现流水灯闪烁设计

摘要:

8255A是一种通用的可编程并行I/O接口芯片(Programmable Peripherial Interface),它是为Inter系列微处理器设计的配套电路,也可用于其它微处理器系统中。通过对它进行编程,芯片可工作于不同的工作方式。此次课程设计的目的就是利用端口和8255协同工作来实现LED显示功能,对8255A芯片进行编程使流水灯左移或右移,通过延时程序使流水灯进行顺序点亮。通过这次课程设计掌握8255A的功能特点、工作原理以及显示器接口的基本原理与方法技术。

关键词:

8086芯片 AT89C51单片机 8255A芯片 LED流水灯

第1章 利用8255A芯片实现流水灯闪烁设计的概述

流水灯在日常的生活中有着广泛的应用,例如,许多楼面上的彩灯广告就是应用了流水灯设计。此次的课程设计的题目是利用了端口和8255A协同工作来实现LED显示功能,编写程序,使用8255的A口和B口均为输出,接8个或16个发光二极管,实现流水灯的显示效果。在实验中8255A的A和B两个端口不能同时赋值,从而我们可以用通用寄存器BX对所需要赋值的数据进行存储,因为BX可以分从高8位寄存器BH和低8位寄存器BL两部分进行独立的操作,我们用寄存器BH对A口进行赋值,用寄存器BL对B口进行赋值,通过延时一段时间再对BH和BL进行移位和输出,实现了流水灯的效果。

第2章 三种方案的论述与最终方案的确定

2.1 第一种方案的论述

第一种方案,我们使用了8086CPU芯片与8255A芯片一起实现了流水灯闪烁的设计,同时还使用了地址锁存器74LS373芯片。74ls373是常用的地址锁存器芯片,它是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。在方案一中,当8086CPU的引脚ALE(地址锁存允许信号,输出,高电平有效,用作地址锁存器74LS373的锁存控制信号)处于下降沿时将8086CPU输出的地址信息进行锁存,以定义8255A的工作方式。下面先对74LS373芯片进行简介:

1.地址锁存器74LS373的内部电路与工作原理

- 2 -

利用8255A芯片实现流水灯闪烁设计

引脚功能图

注:管脚引出端功能符号:

D0~D7 数据输入端 OE 三态允许控制端(低电平有效) Q0~Q7 输出端 LE 锁存允许端

74373 三态缓冲输出的8D锁存器(3S,锁存允许输入有回环特性),其输出端 Q0~Q7 可直接与总线相连,74LS373的LE端直接与8086CPU的ALE信号连接。

1脚是三态允许控制端(OE),是低电平有效。当1脚是高电平时,不管输入3(D0)、4(D1)、7(D2)、8(D3)、13(D4)、14(D5)、17(D6)、18(D7)如何,也不管11脚(LE 锁存允许端)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态)。当1脚是低电平时,只要11脚(LE 锁存允许端)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3(D0)、4(D1)、7(D2)、8(D3)、13(D4)、14(D5)、17(D6)、18(D7)的状态。

11脚是锁存允许端(LE),当LE由高变低时,输出端8 位信息被锁存,直到LE 端再次有效。 当三态允许控制端OE为低电平时,三态门导通,允许Q0~Q7输出,OE为高电平时,输出悬空。当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,

- 3 -

利用8255A芯片实现流水灯闪烁设计

输出Q0~Q7 状态与输入端D1~D7状态相同;当LE发生负的跳变时,输入端D0~D7 数据锁入Q0~Q7。

2.方案一的工作流程简述 电路图硬件连接:

硬件连线图

注:8086CPU芯片与74LS373芯片在方案一中视为PC总线接口模块

① 8255A的引脚WR(写选通信号)、RD(读选通信号)分别连到PC总线接口模块的WR端口、RD端口。

② 8255A的数据端(AD0~AD7)、地址线(A0~A1)分别连到PC总线接口模块的数据线(D0~D7)、地址线(A1~A2)。

③ 8255模块选通线CS连到PC总线接口模块的IOY1(CS 片选信号,低电平有效,由地址总线经I/O端口译码电路产生)。

④ 8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16。

程序流程简述:

8255A的片选信号CS与地相连,处于低电平有效状态,8086CPU与8255A之间始终保持通信,8086CPU对8255A进行读/写等操作。当8086CPU的地址锁存信号ALE处于高电平有效时,在T1状态,8086CPU通过地址/数据总线上传送地址信息,在ALE的下降沿将地址信息锁存到地址锁存器74LS373中,定义了8255A的工作方式,使其A口和B口为输出口,定义了

- 4 -

利用8255A芯片实现流水灯闪烁设计

8255A各端口地址。8086CPU先后写A、B口的起始数据,并调用延时子程序点亮A口灯、B口灯。然后分别调用左移、右移指令将A口起始数据左移再写入A口、B口起始数据右移再写入B口,点亮下一站盏灯,以此循环实现流水灯效果。

程序框图

结论:第一种方案虽然实现了流水灯闪烁效果,但由于8086CPU芯片所需的程序无法通过KC51实现编程,不能达到本次课程设计的培训目的,即对单片机的程序编程进行训练掌握,要求较高,方案实现的难度较大,所以我们没有把方案一作为最终方案。

2.2 第二种方案的论述

第二种方案,我们使用了AT89C51单片机实现了流水灯闪烁设计。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外

- 5 -

利用8255A芯片实现流水灯闪烁设计

扩存储器。因此,方案二中设计的流水灯实际上是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。下面先对AT89C51单片机进行简介:

1. AT89C51单片机的简介

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS—51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可以提供许多高性价比的应用场合,可灵活应用于各种控制领域。

AT89C51管脚分布

注:管脚引出端功能符号:

◆VCC:供电电压。 ◆GND:接地。 ◆P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1

口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

- 6 -

利用8255A芯片实现流水灯闪烁设计

◆P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输

出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

◆P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出

4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

◆P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门

电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口。P3口同时为闪烁编程和编程校验接收一些控制信号。 ◆P3口管脚备选功能:

·P3.0 RXD(串行输入口) ·P3.1 TXD(串行输出口) ·P3.2 / INT0(外部中断0) ·P3.3 / INT1(外部中断1) ·P3.4 T0(记时器0外部输入) ·P3.5 T1(记时器1外部输入) ·P3.6 / WR(外部数据存储器写选通) ·P3.7 / RD(外部数据存储器读选通) ◆RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时

间。

◆ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地

位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端

- 7 -

利用8255A芯片实现流水灯闪烁设计

以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

◆PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器

周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

◆EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H—FFFFH),

不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

◆XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 ◆XTAL2:来自反向振荡器的输出。

AT89C51提供标准功能有:4K字节Falsh闪存存储器,128字节内部RAM,32个I/O口线,两个16位定时、计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。

2.方案二的工作流程简述

单片机的应用系统由硬件和软件组成,当我们完成了上述硬件原理图搭建之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,也是我们这次课程设计学习的重点和难点。

从电路原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高

- 8 -

利用8255A芯片实现流水灯闪烁设计

电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

在电路原理图中,我们还应注意的便是和AT89C51单片机接在一起的晶振电路,在电路图中为AT89C51单片机提供了频率参考作用。晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络。AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。

硬件原理图

结论:第二种方案也实现了流水灯闪烁效果,相对于第一种方案而言,更简单些,这也正是单片机能广泛应用于各种电路的原因。但由于该方案中,没有应用到8255A芯片实现接口扩展,而我们这次的课程设计中一个主要设计目的与要求便是:通过利用端口和8255协同工作来实现LED显示功能,对8255A芯片进行编程使流水灯左移或右移,实现流水灯闪烁效果。以此来掌握8255A的功能特点、工作原理以及显示器接口的基本原理与方法技术。所以我们没有把方案二作为最终方案。

- 9 -

利用8255A芯片实现流水灯闪烁设计

2.3 第三种方案(最终方案)的论证

第三种方案,我们使用了AT89C51单片机与8255A芯片一起实现了流水灯闪烁的设计。从前两种方案中,我们分别熟悉与掌握了地址锁存器74LS373芯片和AT89C51单片机。我们了解到74ls373是常用的地址锁存器芯片,它是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。而AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。在第三个方案中,我们将详细地介绍8255A的内部电路、功能特点、工作原理以及在电路中的功能扩展与应用,这也是我们这次课程设计中一个需要重点掌握的芯片。

1.可编程外围接口芯片8255A的简介

8255A是Intel公司生产的一种通用的可编程并行I/O接口芯片,它是为Inter系列微处理器设计的配套电路,也可用于其它微处理器系统中。通过对它进行编程,芯片可工作于不同的工作方式。8255A有3个8位并行I/O口,具有3个通道3种工作方式,其各口功能可由软件选择,使用灵活,通用性强。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口;同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。

8255的外部引脚和内部结构

- 10 -

利用8255A芯片实现流水灯闪烁设计

注:管脚引出端功能符号:

◆RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存

器)均被清除,所有I/O口均被置成输入方式。

◆CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,

允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输. ◆RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过

数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 ◆WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数

据或控制字写入8255。

◆D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入

输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

◆PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位

的数据输入锁存器。

◆PB0~PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓

冲器。

◆PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位

的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'

◆A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器. 当A0=0,A1=0时,PA口被选择; 当A0=0,A1=1时,PB口被选择; 当A0=1,A1=0时,PC口被选择; 当A0=1.A1=1时,控制寄存器被选择.

8255A的工作方式:

方式0:基本输入输出方式 适用于无条件传送和查询方式的接口电路 方式1:选通输入输出方式 适用于查询和中断方式的接口电路

- 11 -

利用8255A芯片实现流水灯闪烁设计

方式2:双向选通传送方式 适用于与双向传送数据的外设和查询和中断方式的接口电路

工作方式控制字 C口按位置位/复位控制字

8255A初始化编程:

8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。8255A由编程写入的控制字有两个:方式控制字和置位/复位控制字。方式控制字用于设置端口A, B, C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平。两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。

2.方案三的工作流程简述

方案三中AT89C51单片机的工作流程与方案一中的8086CPU的工作流程大致相同,但是相对于第一个方案而言,省略了地址锁存器74LS373芯片,直接通过P2.0、P2.1与8255A的A0、A1端相连,传送地址信号,定义8255A的工作方式,使其A口和B口为输出口,定义了8255A各端口地址。 8255A的片选信号CS与地相连,处于低电平有效状态,AT89C51与8255A之间始终保持通信,AT89C51对8255A进行读/写等操作。AT89C51单片机先后写A、B口的起始数据,并调用延时子程序点亮A口灯、B口灯。然后分别调用左移、右移指令将A口起始数据左移再写入A口、B口起始数据右移再写入B口,点亮下一站盏灯,以此循环实现流水灯效果。

与第二个方案相比较,结合了第二个方案的优点。在电路图中和AT89C51单片机接在一起的晶振电路,AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构

- 12 -

利用8255A芯片实现流水灯闪烁设计

成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中,在电路图中晶振电路为AT89C51单片机提供了频率参考作用。 开始 设置8255A工作方式 写入PA、PB口,并分别对其数值位移 延时 写入PA、PB口,并分别对其数值位移 延时 全部闪烁一次 程序流程图

第3章 测试结果及体会心得

我们把方案三确定为最终方案后,便开始在Proteus软件上绘制出了仿真效果图,并通过Keil软件编写出了相应的源程序汇编文件,导入到了仿真图中的AT89C51单片机上,并最终仿真成功,实现了流水灯闪烁的效果。但整个实验过程并不是一帆风顺的,更不是一蹴而就的。我们通过网上查找相关资料,在图书馆里查询与流水灯相关的书籍,搜集整理出了前面三种方案,并通过实际的仿真与比较,最终确定了方案三作为我们的最终方案。三个方案在仿真的过程中都出现了问题,不是源程序有误就是网上搜集到的相关资料是错误的,把我们带进了误区,但我们最终通过自己讨论研究和请教老师,解决了这些问题。把三个方案都通过Proteus软件仿真出来了。在这次课程设计中,我们分别熟悉掌握了地址锁存器74LS373芯片、AT89C51单片机、可编程外围接口芯片8255A的内部电路、功能特点、工作原理以及在电路中的功能扩展与应用等,使我们对这些芯片的认识更加深刻,并通过仿真电路图等实践操作更进一步掌握了这些芯片的实际应

- 13 -

利用8255A芯片实现流水灯闪烁设计

用效果与它们的优缺点、在提高我们理论知识水平与范围的同时,也提高了我们实践能力。“理论与实践相结合”永远使我们学习上一条不可绕过的道路,用理论指导实践,通过实践提高对理论知识的认知水平,这就是我们这次课程设计的一个较为深刻的体会。

第4章 致谢

在此,我们郑重感谢系里给我们提供的这次珍贵的锻炼机会以及张斌老师的热情指导与帮助。在我们遇到困难而无法解决的时候,张斌老师给我们提供了很多有用的方案建议,并为我们提供了对我们极为有用的资料;当我们有些问题不懂疑惑时,张斌老师也耐心给了我们做了清楚的解释,在此我们表示真挚的感谢。通过课程设计,我们学到了很多东西。我们队友之间的精密合作与默契对我们也是一个重要帮助,没有我们的合作,不可能会有所成功。感谢所有帮过我们的老师和同学们,他们都很热情帮助我们,为我们提供了他们力所能及的帮助,在此我们对他们表示真挚的感谢。

第5章 参考文献

[1] 孙俊逸,盛秋林,张铮等 单片机原理及应用[M]。北京:清华大学出版社,2001。 [2] 蔡美琴,MCS-51系列单片机系统及其应用[M]。北京:高等教育出版社,2000。 [3] 孙育才,孙华芳,王荣兴 单片机原理及应用[M]。北京:电子工业出版社,2003。 [4] 李鸿,单片机原理及应用[M]。湖南:湖南大学出版社,2004。

[5] 丁元杰,单片微机原理及应用第二版[M]。北京:机械工业出版社,2001。 [6] 潘新民,王燕芳 编著.微型计算机控制技术。北京:高等教育出版社,2004。 [7] 马忠梅 单片机的C语言应用程序设计[M]。北京:北京北航出版社,2003。 [8] 范立南 单片微机接口与控制技术[M]。沈阳:辽宁大学出版社,1996。 [9] 张友德 单片微型机原理、应用与实践[M]。上海:复旦大学出版社,1992。

[10] 李华 MCS-51系列单片机实用接口技术[M]。北京:北京航空航天大学出版社,1993。 [11] 何希庆,高伟 MCS-51单片机原理、实验、实例[M].。山东:山东大学出版社,1989。 [12] 张毅刚,彭喜元,姜守达 新编MCS-51单片机应用设计[M]。哈尔滨:哈尔滨工业大学出版

社,2003。

- 14 -

利用8255A芯片实现流水灯闪烁设计

附录1 方案一 Proteus仿真电路效果图

- 15 -

本文来源:https://www.bwwdw.com/article/8jit.html

Top