单片机并行I-O口的扩展方法

单片机并行I-O口的扩展方法
单片机并行I-O口的扩展方法

单片机并行I/O口的扩展方法

摘要:由于在MCS-51单片机开发中P0口经常作为地址/数据复用总线使用,P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等)使用,所以对于51单片机的4个I/O口,其可以作为基本并行输入/输出口使用的只有P1口。因此在单片机的开发中,对于并行I/O口的扩展十分重要,主要分析3种扩展并行I/O口的方法。关键词: MCS-51单片机; 并行I/O口; 扩展

MCS-51单片机有4个并行的I/O口,分别为P0口、P1口、P2口和P3口,4个并行I/O 口在单片机的使用中非常重要,可以说对单片机的使用就是对这4个口的使用。这4个并行I/O口除了作为基本的并行I/O口使用,还常作为其他功能使用,如P0口经常作为地址/数据复用总线使用[1], P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等等)使用。这样,单片机只有P1口作为基本的并行I/O口使用,如果在单片机的使用中对并行I/O口需求较多,对于并行I/O口的扩展就非常重要了。下面通过具体的实例(8位流水灯设计)来给出几种不同的并行I/O口扩展方法。为了更好地说明以下几种不同的并行I/O口扩展方法,假设利用单片机实现流水灯的设计。采用单片机的P1口设计流水灯,电路。

由图1可知,8只LED直接连接在单片机的P1口上,通过对单片机进行编程即可以实现8只发光二极管产生流水灯。1 使用单片机的串行口扩展并行I/O口单片机有一个全双工的串行口[2],这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为移位寄存器使用。当单片机的串行口工作在模式0时,若外接一个串入/并出的移位寄存器(74LS164),就可以扩展一个8 bit并行输出口;若外接一个并入/串出的移位寄存器(74LS165),就可以扩展一个8 bit并行输入口。,单片机外接一个串入/并出的移位寄存器(74LS164),这样就可以扩展8 bit并行输出口。

当单片机的串行口工作在模式0(作为移位寄存器使用)时需要注意:单片机原来的串行通信引脚RXD和TXD在这种工作方式下给出新的定义,原来用于串行接收数据的引脚RXD在这种工作模式下既可以接收也可以发送数据; 原来的串行发送引脚TXD在这种工作模式下则作为移位寄存器的脉冲输入端使用(通常接时钟端)。单片机和串入/并出移位寄存器74LS164的连接:单片机的串行通信接收引脚RXD连接到串入/并出移位寄存器74LS164的输入引脚;单片机的串行通信发送引脚TXD连接到串入/并出移位寄存器74LS164的脉冲输入端;串入/并出移位寄存器74LS164的输出引脚连接8只发光二极管。这样,选择单片机的串行口工作模式0,通过通信引脚RXD发送实现流水灯的串行数据,然后通过74LS164转换成并行数据后传送给发光二极管,即可实现流水灯。这里需要注意74LS164数据的转换时间问题。从图2可以看出,同样设计一个8位流水灯,采用上述方法只需要使用单片机的两个串行通信引脚RXD和TXD就可以完成。此时,对于P3口的其他位可以作为第二功能使用(定时、中断等)。2 使用8255A(或8155)扩展并行I/O口可编程并行接口芯片8255A[3]有3个并行的I/O口,分别为PA、PB和PC,这3个并行I/O口都可以通过编程决定它们的工作情况。8255A与单片机的连接。

从图3中可以看出单片机与8255A的连接情况,利用单片机的P0口来分时传送地址和数据:P0口与8255A的8 bit数据线连接,用来传送数据和8255A的编程控制字;P0口连接地址锁存器74LS373输入端,74LS373的输出端连接8255A 的地址线A0、A1和片选信号CS。通过A0、A1(即P0.0、P0.1)的4种不同组合(00~11)选择8255的3个并行的I/O口之一和控制口。这样,通过对单片机和8255A编程,即可实现流水灯。从图3可知,利用这种方法

扩展I/O口一次可以扩展3个并行的I/O口。同样,也可以使用可编程并行接口芯片8155来进行并行I/O口的扩展。8155有两个8 bit和一个6 bit的并行I/O口,同时它还有256 B 的静态RAM和一个14 bit的计数器。3 使用芯片74LS138扩展并行I/O口 74LS138 为3 线~8 线译码器,可将地址输入端(A、B、C)的二进制编码在输出端Y0~Y7对应地以低电平译出。比如:ABC=110时,则Y6输出端输出低电平信号。74LS138与单片机的连接。

图4中,单片机的引脚P2.5、P2.6和P2.7分别连接74LS138的3个输入端A、B和C,74LS138的8个不同的输出端Y0~Y7分别连接8只发光二极管。这样,A、B和C的8种不同组合(000~111)分别选择74LS138的8个不同的输出端Y0~Y7,即可实现流水灯。4 几种扩展并行I/O口方法比较

使用单片机的串行口扩展并行I/O口时,单片机与串入/并出的移位寄存器(74LS164)连接比较简单,只需连接串行发送或接收引脚和移位脉冲引脚即可。但是这种扩展方法只能扩展一个8 bit并行I/O口,若需扩展更多的并行I/O口时就需要更多的移位寄存器芯片;在使用这种方法扩展并行I/O口时,需要了解串入/并出移位寄存器74LS164和并入/串出移位寄存器74LS165芯片的工作原理,还需要了解单片机的串行工作方式0工作模式。同时,如果单片机工作时需要进行串行通信,则这种方法就不能使用了。使用并行接口芯片8255A 扩展并行I/O口时,单片机与8255A的连接比较复杂,需要考虑数据线、地址线和控制线之间的连接,同时需要根据地址线的连接情况给出8255A各个并行I/O口的正确地址及8255A 控制口的地址。另外,需要对8255A的编程控制字的定义及写入方法有很好的了解。但是这种扩展方法可以同时扩展3个8 bit并行I/O口,在需要扩展多个并行I/O口时此种方法比较好。使用芯片74LS138扩展并行I/O口时,单片机与74LS138的连接比较简单,只需连接3个引脚即可。这种扩展方法也只能扩展一个8 bit并行I/O口,若需扩展更多的并行I/O 口就需要更多的3线~8线芯片。但是,如果在单片机扩展其他的芯片时不需要使用高位的3根地址线(即P2.5~P2.7),则这种方法就能很好地把这3根地址线利用起来。

-单片机的并行扩展技术

第六章单片机的并行扩展技术 6·1 什么是并行外围扩展? 并行外围扩展有哪两种方式?这两种方式本质上的区别是什么? 答:(1)并行外围扩展 单片机的并行外围扩展是指单片机与外围扩展单元采用并行接口的连接方式,数据传输为并行传送方式。并行扩展体现在扩展接口数据传输的并行性。 (2)并行外围扩展的方式 并行外围扩展方式有两种I/O方式与总线方式。题图6-1是80C5l两种并行外围扩展接口示意图。图中的并行口数据宽度为8位。 ①并行I/O口方式: I/O口并行扩展由I/O口完成与外围功能单元的并行数据传送任务,单片机与外围功能单元数据传送过程中的握手交互也由I/O口来完成的。 ②并行总线方式:并行扩展采用三总线方式,即数据传送由数据总线DB完成;外围功能单元寻址由地址总线AB完成;控制总线CB则完成数据传输过程中的传输控制,如读、写操作等。 (3)两种方式本质上的区别 两种并行外围扩展方式本质上的区别列于题表6-1中。 6·2 单片抗应用系统中有哪几种键盘类型?为什么这些键盘都是通过I/O 口扩展? 答: (1)单片机应用系统中的键盘类型 与通用计算机键盘相比,单片机应用系统中的键盘种类很多,键盘中按键数量的设置依系统操作要求而定。一般说来,单片机应用系统中键盘有独立式和行列式两种,如题图6-2 所示。

题图6-2 ①独立式键盘: 独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立如题图6-2(a)所示。I/O口通过按键与地相连。I/O口有上拉电阻,无键按下时,引脚端为高电平;有键按下时,引脚端电平被拉低。1/0端口有内部上拉电阻时,外部可不接上拉电阻。 ②行列式键盘: 行列式键盘采用行列电路结构。行列交点处通过按键相连,列线为输出口,行线为输人口,如题图6-2(b)所示。列线口输出全零电平时,若没有键按下则行线引脚上全部为高电平"1"状态;若有任何一个按键按下则行线引脚上为非全"1"状态;在有键按下后,通过列线逐个送"0",然后逐行检查哪根行线为"0"状态,即可查出是哪个键按下。 (2)键盘通过I/O口扩展 键盘所采用的I/O口并行扩展电路都是外设接口的典型电路。这类接口只有操作原理 时序,没有器件的时序协议,故而都适宜于通过I/O口扩展。 6·3 请叙述行列式键盘的工作原理。中断方式与查询方式的键盘其硬件和软件有何不同? 答: (1)行列式键盘的工作原理 行列式键盘采用行列电路结构。行列交点处通过按键相连,列线为输出口,行线为输入口,如题图6-2(b)申所示。 其工作原理是:列线口输出全零电平时,若没有键按下则行线引脚上全部为高电平"1"状态,若有任何一个按键按下则行线引脚上为非全"1"状态;在有键按下后,通过列线逐个送"0",然后逐行检查哪根行线为"0"状态,即可查出是哪个键按下。 (2)中断方式与查询方式的键盘的区别 单片机对键盘的操作方式可分为查询方式和中断方式。题图6 - 2中为查询方式键盘的接口电路; 题图6-3所示为中断方式键盘的接口电路。 在查询方式中,单片机要不断查询键盘中有无键按下。中断方式下单片机不必查询键盘情况,只需开放键盘中断请求。当有键按下时,会请求中断,在中断服务程序中再检查是哪个键按下。

第3章 单片机并行存储器扩展练习题

第3章单片机并行存储器扩展 (一)填空题 1.使用8KB×8位的RAM芯片,用译码法扩展64KB×8位的外部数据存储器,需要(8) 片存储芯片,共需使用(16 )条地址线,其中(13 )条用于存储单元选择,(3)条用于芯片选择。 2.三态缓冲器的三态分别是(低电平)、(高电平)和(高阻抗)。 3.80C51单片机系统整个存储空间由4部分组成,分别为(256 )个地址单元的内部(数 据)存储器,(4kb )个地址单元的内部(程序)存储器,(64kb)个地址单元的外部(数据)存储器,(60kb )个地址单元的外部(程序)存储器。 4.在80C51单片机系统中,为外扩展存储器准备了(16)条地址线,其中低位地址线由 (p0口)提供,高位地址线由(P2口)提供。 5.在80C51单片机系统中,存储器并行外扩展涉及的控制信号有(ALE)、(WR)、 (RD)、(PSEN)和(CE),其中用于分离低8位地址和数据的控制信号是(ALE),它的频率是晶振频率的(6)分之一。 6.起止地址为0000H ~ 3FFFH的外扩展存储器芯片的容量是(16KB)。若外扩展存 储器芯片的容量为2KB,起始地址为3000H,则终止地址应为(37FFH)。 7.与微型机相比,单片机必须具有足够容量的程序存储器是因为它没有(外存)。 8.在存储器扩展中,无论是线选法还是译码法,最终都是为扩展芯片的(片选)引脚端 提供信号。 9.由一片80C51和一片2716组成的单片机最小系统。若2716片选信号CE接地,则该存 储芯片连接共需(11)条地址线。除数据线外,系统中连接的信号线只有(PSEN)和(ALE)。 (二)单项选择题 1. 下列有关单片机程序存储器的论述中,错误的是(D) (A)用户程序保存在程序存储器中 (B)断电后程序存储器仍能保存程序 (C)对于程序存储器只使用MOVC一种指令 (D)执行程序需要使用MOVC指令从程序存储器中逐条读出指令 2. 下列有关单片机数据存储器的论述中,错误的是(A)

单片机并行口实验报告

单片机并行口实验报告

实验二并行口实验报告 班级: 学号: 姓名: 教师:

一、实验目的 通过实验了解8051并行口输入方式和输出方式的工作原理及编程方法。 二、实验内容 1、输出实验 如图4-1所示。以8031的P2口为输出口。通过程序控制发光二极管的亮灭。 2、输入实验 如图4-1所示。以8031的P1口为输入口。用开关向P1.0~P1.3输入不同的状态,控制P2口P2.4~P2.7发光二极管的亮灭。 3、查询输入输出实验 如图1-1所示。以8051的P1.6或P1.0为输入位,以P2口为输出,二进制计数记录按键的次数。

图1-1 三、编程提示 1、输出实验程序 (1)设计一组显示花样,编程使得P2口按照设计的花样重复显示。 (2)为了便于观察,每一状态加入延时程序。 2、输入实验程序 开关打开,则输入为1;开关闭合,则输入为0。读取P1.0~ P1.3的状态,并将它们输出到P2.4~ P2.7,驱动发光二极管。所以发光二极管L1~L4的亮灭应与开关P1.0~ P1.3的设置相吻合。 3、查询输入输出程序 (1)编程计数P1.0按键次数,按键不去抖动。 (2)编程计数P1.6按键次数,按键不去抖动。 (3)编程计数P1.0按键次数,按键软件延时去抖动。 观察(1)、(2)、(3)、的结果。 四、实验器材 计算机,目标系统实验板 五、实验步骤 1、在KEILC中按要求编好程序,编译,软件调试,生成.HEX文件。 2、断开电源,按图1-1所示,连好开关及发光二极管电路。

3、下载程序。 4、调试运行程序,观察发光二极管状态。 六、C源程序清单 1、#include #define uchar unsigned char #define ON 0 #define OFF 1 sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7; void delay1(void); void main(void) { led1=led2=led3=led4=led5=led6=led7=led8=O FF; while(1) { led1=led8=ON; delay1(); led2=led7=ON;

MCS-51单片机存储器的扩展

第八章MCS-51单片机存储器的扩展 第一节MCS-51单片机存储器的概述 (一)学习要求 1、熟悉MCS-51 单片机的系统总线及系统总线扩展结构 2、掌握常用的片选方法:线选法和全地址译码法。 (二)内容提要 1、三总线的扩展方法 单片机内资源少,容量小,在进行较复杂过程的控制时,它自身的功能远远不能满足需要。为此,应扩展其功能。 MCS-51单片机的扩展性能较强,根据需要,可扩展。三总线是指地址总线、数据总线、控制总线。 1)地址总线 MCS-51 单片机地址总线宽度为16 位,寻址范围为64K。 地址信号:P0 作为地址线低8 位,P2 口作为地址线高8 位。 2)数据总线 MCS-51 单片机的数据总线宽度为8 位。 数据信号:P0 口作为8 位数据口,P0 口在系统进行外部扩展时与低8 位地址总线分时复用。 3)控制总线 主要的控制信号有/WR 、/RD 、ALE 、/PSEN 、/EA 等。 2、系统的扩展能力 MCS-51 单片机地址总线宽度为16 位,因此它可扩展的程序存储器和数据存储器的最大容量是64K(216)。 1)线选法 线选法就是将多余的地址总线(即除去存储容量所占用的地址总线外)中的某一根地址线作为选择某一片存储或某一个功能部件接口芯片的片选信号线。一定会有一些这样的地址线,否则就不存在所谓的“选片”的问题了。每一块芯片均需占用一根地址线,这种方法适用于存储容量较小,外扩芯片较少的小系统,其优点是不需地址译码器,硬件节省,成本低。缺点是外扩器件的数量有限,而且地址空间是不连续的。 2)全地址译码法 由于线选法中一根高位地址线只能选通一个部件,每个部件占用了很多重复的地址空间,从而限制了外部扩展部件的数量。采用译码法的目的是减少各部件所占用的地址空间,以增加扩展部件的数量。 3)译码器级连 当组成存储器的芯片较多,不能用线选法片选,又没有大位数译码器时,可采用多个小位数译码器级连的方式进行译码片选. 4)译码法与线选法的混合使用 译码法与线选法的混合使用时,凡用于译码的地址线就不应再用于线选,反之,已用于线选的地址线就不应再用于译码器的译码输入信号. (三)习题与思考题 1. 简要说明MCS-51 单片机的扩展原理。

单片机并口扩展

单片机IO口扩展技术 2010-05-09 18:13 0 引言 在单片机家族的众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术、高可靠性和高性价比,占领了工业测控和自动化工程应用的主要市场,并成为国内单片机应用领域中的主流机型。 MCS-51单片机的并行口有P0、P1、P2和P3,由于P0口是地址/数据总线口,P2口是高8位地址线,P3口具有第二功能,这样,真正可以作为双向I/O口应用的就只有P1口了。这在大多数应用中是不够的,因此,大部分MCS-51单片机应用系统设计都不可避免的需要对P0口进行扩展。 由于MCS-51单片机的外部RAM和I/O口是统一编址的,因此,可以把单片机外部64K字节RAM空间的一部分作为扩展外围I/O口的地址空间。这样,单片机就可以像访问外部RAM存储器单元那样访问外部的P0口接口芯片,以对P0口进行读/写操作。用于P0口扩展的专用芯片很多。如8255可编程并行P0口扩展芯片、8155可编程并行P0口扩展芯片

等。本文重点介绍采用具有三态缓冲的74HC244芯片和输出带锁存的74HC377芯片对P0口进行的并行扩展的具体方法。 1 输入接口的扩展 MCS-51单片机的数据总线是一种公用总线,不能被独占使用,这就要求接在上面的芯片必须具备“三态”功能,因此扩展输入接口实际上就是要找一个能够用于控制且具备三 态输出的芯片。以便在输入设备被选通时,它能使输入设备的数据线和单片机的数据总线直接接通;而当输入设备没有被选通时,它又能隔离数据源和数据总线(即三态缓冲器为高阻抗状态)。 1.1 74HC2244芯片的功能 如果输入的数据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。74HC244芯片的引脚排列如图1所示。

单片机并行I-O口的扩展方法

单片机并行I/O口的扩展方法 摘要:由于在MCS-51单片机开发中P0口经常作为地址/数据复用总线使用,P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等)使用,所以对于51单片机的4个I/O口,其可以作为基本并行输入/输出口使用的只有P1口。因此在单片机的开发中,对于并行I/O口的扩展十分重要,主要分析3种扩展并行I/O口的方法。关键词: MCS-51单片机; 并行I/O口; 扩展 MCS-51单片机有4个并行的I/O口,分别为P0口、P1口、P2口和P3口,4个并行I/O 口在单片机的使用中非常重要,可以说对单片机的使用就是对这4个口的使用。这4个并行I/O口除了作为基本的并行I/O口使用,还常作为其他功能使用,如P0口经常作为地址/数据复用总线使用[1], P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等等)使用。这样,单片机只有P1口作为基本的并行I/O口使用,如果在单片机的使用中对并行I/O口需求较多,对于并行I/O口的扩展就非常重要了。下面通过具体的实例(8位流水灯设计)来给出几种不同的并行I/O口扩展方法。为了更好地说明以下几种不同的并行I/O口扩展方法,假设利用单片机实现流水灯的设计。采用单片机的P1口设计流水灯,电路。 由图1可知,8只LED直接连接在单片机的P1口上,通过对单片机进行编程即可以实现8只发光二极管产生流水灯。1 使用单片机的串行口扩展并行I/O口单片机有一个全双工的串行口[2],这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为移位寄存器使用。当单片机的串行口工作在模式0时,若外接一个串入/并出的移位寄存器(74LS164),就可以扩展一个8 bit并行输出口;若外接一个并入/串出的移位寄存器(74LS165),就可以扩展一个8 bit并行输入口。,单片机外接一个串入/并出的移位寄存器(74LS164),这样就可以扩展8 bit并行输出口。 当单片机的串行口工作在模式0(作为移位寄存器使用)时需要注意:单片机原来的串行通信引脚RXD和TXD在这种工作方式下给出新的定义,原来用于串行接收数据的引脚RXD在这种工作模式下既可以接收也可以发送数据; 原来的串行发送引脚TXD在这种工作模式下则作为移位寄存器的脉冲输入端使用(通常接时钟端)。单片机和串入/并出移位寄存器74LS164的连接:单片机的串行通信接收引脚RXD连接到串入/并出移位寄存器74LS164的输入引脚;单片机的串行通信发送引脚TXD连接到串入/并出移位寄存器74LS164的脉冲输入端;串入/并出移位寄存器74LS164的输出引脚连接8只发光二极管。这样,选择单片机的串行口工作模式0,通过通信引脚RXD发送实现流水灯的串行数据,然后通过74LS164转换成并行数据后传送给发光二极管,即可实现流水灯。这里需要注意74LS164数据的转换时间问题。从图2可以看出,同样设计一个8位流水灯,采用上述方法只需要使用单片机的两个串行通信引脚RXD和TXD就可以完成。此时,对于P3口的其他位可以作为第二功能使用(定时、中断等)。2 使用8255A(或8155)扩展并行I/O口可编程并行接口芯片8255A[3]有3个并行的I/O口,分别为PA、PB和PC,这3个并行I/O口都可以通过编程决定它们的工作情况。8255A与单片机的连接。 从图3中可以看出单片机与8255A的连接情况,利用单片机的P0口来分时传送地址和数据:P0口与8255A的8 bit数据线连接,用来传送数据和8255A的编程控制字;P0口连接地址锁存器74LS373输入端,74LS373的输出端连接8255A 的地址线A0、A1和片选信号CS。通过A0、A1(即P0.0、P0.1)的4种不同组合(00~11)选择8255的3个并行的I/O口之一和控制口。这样,通过对单片机和8255A编程,即可实现流水灯。从图3可知,利用这种方法

第04讲:MCS-51单片机的并行IO口M

单片机技术 电气学院:易先军第02章:MCS-51单片机结构原理 RE: ●硬件编程结构及引脚[已介绍] ●CPU主要部件与特殊功能寄存器(SFR)[已介绍] ●片内外存储器的组织结构和编址[已介绍] ●并行I/O口【本次课内容!】 ●中断及中断系统 ●定时/计数器、串行口(外设) 4、MCS51单片机的并行I/O口 所谓并行I/O口,即各位的数据同时被输入或输出,它的最大特点是速度快。 (1)结构特点 MCS-51系列单片机的32根I/O线分为四个双向并行口P0~P3,每根I/O 线由一个锁存器(相当于特殊功能寄存器中的一位),一个输出驱动器(场效应管FET)和一个输入缓冲器(三态门)组成。由于功能的不同,P0~P3各口的结构有所区别。各锁存器由D触发器构成,在CPU“写锁存器” 信号的作用下,内部总线的数据写入D触发器。两个三态门分别用来读锁存器或读引脚的信息。 P1、P2、P3口均有内部上拉电阻,而P0口的引脚是通过场效应管接到VCC。显然,当P0口的上、下两只场效应管均关断时,引脚相当于“浮空”状态,即可作为高阻抗的输入端口(∴P0口为真正的双向口)。P0、P2口的驱动器的输出与多路转换器MUX的状态有关,P3口的驱动器也与输出功能的类型有关,这些均为这些端口的多重作用创造了条件。(2)输入功能 单片机有两种读一个端口的方法:读锁存器和读引脚。 ①读锁存器:在CPU“读锁存器”信号的作用下,锁存器的 状态通过三态门送到内部总线,然后读到CPU中进行处理,而处理后的值将被重新写入锁存器。能实现这种功能的指令称为“读—修改—写”指令,它们有: ANL(逻辑与指令) 例如:ANL P1,A ORL(逻辑或指令) 例如:ORL P2,A XRL(逻辑异或指令) 例如:XRL P3,A INC(增量指令) 例如:INC P2 DEC(减量指令) 例如:DEC P1 DJNZ(循环判跳指令)例如:DJNZ P2,LOOP JBC(位测试转移指令)例如:JBC P1. 1, LOOP MOV(位传送指令) 例如:MOV P1.3, C CPL(位取反指令) 例如:CPL P1.0 CLR (位清“0”指令) 例如:CLR P1.0 SETB(位置位指令) 例如:SETB P3.3 !读锁存器操作的共同点(特征):先读入并行I/O口锁存器中的内容,作一定的修改,然后再写入该口的锁存器中(读出—修改—写回)。 上述的后五条指令,属于位操作指令,实际上也是先要将8位锁存器的内容一起读入,再按指定位进行修改,然后再一起写入锁存器中。②CPU“读引脚”信号时,接在该端口引脚的外部信号通过三态门读到内部总线,并送CPU处理,因而实现了数据的输入。 但必须注意,在读引脚时,该端口的锁存储器必须事先写“1”。这是因为该端口既是输出端同时也是外部信号的输入端。比如:假设该端口的状态此时为0,则驱动器的下方场效应管会导通,此时相当于输出“0”;如果有一外部输入信号是高电平且加到该引脚上,则该引脚会被强行箝拉到低电平,故造成读到CPU中的数据为“0”,同时也可能造成器件损坏! 而事先给锁存器写“1”,对于P0口,此时上、下两只场效应管均夹断,则构成高阻输入;对于P1、P2和P3口,此时的输出给拉成高电平,故其电平状态取决于外部信号。(在复位时,各端口的锁存器均置成“1”!)

单片机实验-单片机并行IO口的应用实验

单片机并行I/O口的应用实验 一、实验目的 1、熟悉Proteus软件和Keil软件的使用方法。 2、熟悉单片机应用电路的设计方法。 3、掌握单片机并行I/O口的直接应用方法。 4、掌握单片机应用程序的设计和调试方法。 二、实验内容或原理 1、利用单片机并行I/O口控制流水灯。 2、利用单片机并行I/O口控制蜂鸣器。 三、设计要求 1、用Proteus软件画出电路原理图。要求在P1.0至P1.7口 线上分别接LED0至LED7八个发光二极管,在P3.0口线上 接一蜂鸣器。 2、编写程序:要求LED0至LED7以秒速率循环右移。 3、编写程序:要求LED0至LED7以秒速率循环左移。 4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、实验程序流程框图和程序清单。 4、电路原理图。 5、实验结果 6、实验总结。 7、思考题。 五、思考题 1、编程实现LED0至LED7以十六进制计数规律亮灯? 原理图:

程序清单: /*(1)LED0~LED7以秒速率循环右移 蜂鸣器逐位报警*/ ORG 0000H MAIN:MOV A, #11111110B;赋初值 LOOP:MOV P1,A ;赋值给P1口 CPL P3.0 ;低电平有效 LCALL DELAY ;调用延时电路 SETB P3.0 ;控制蜂鸣器叫的时间间隔 LCALL DELAY RL A LJMP LOOP DELAY:MOV R7,#0FFH LOOP1:MOV R6,#0F4H LOOP2:MOV R5,#02H DJNZ R5,$ ;"$"当前的PC值,R5的内容减1不为零,继续执行该语句 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET END /*(2)LED0~LED7以十六进制计数规律亮灯*/ ORG 0000H MOV A,#0FFH LOOP: MOV P1,A LCALL DELAY DEC A CJNE A, #0FFH,LOOP MOV A, #0FFH LJMP LOOP DELAY:MOV R7, #0A7H LOOP1:MOV R6, #0ABH LOOP2:MOV R5, #10H DJNZ R5, $ ;"$"当前的PC值。R5的内容减1不为零 DJNZ R6, LOOP2 DJNZ R7, LOOP1 RET END

单片机并口简单应用(流水灯)实验报告.doc

实验一单片机并口简单应用(流水灯) 实验目的 1、了解单片机汇编语言程序的基本结构 2、了解单片机汇编语言程序的设计和调试方法 3、掌握顺序控制程序的简单编程 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、流水灯硬件电路 如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。 图4-1 流水灯电路图 2、单片机流水灯程序设计 由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。 (1)控制三极管导通程序 控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。 第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。为1,三极管截止。

两种方法的程序流程如图4-2所示。 图4-2 流水灯位选信号控制 (2)产生流水灯效果程序 三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。 程序流程图如图4-3所示。 图4-3 流水灯程序流程图

实验内容 1、直接输出法输出数据序列 2、查表法输出数据序列 实验步骤及调试信息 1、新建实验项目shiyan1 2、输入实验程序并补充完整 3、编译下载实验程序,并修改错误(按附录说明) 原因:缺少主程序 4、加入主程序重新产生代码并装入,出现以下错误。

单片机IO口扩展技术

单片机IO口扩展技术 ] 0 引言 在单片机家族的众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术、高可靠性和高性价比,占领了工业测控和自动化工程应用的主要市场,并成为国内单片机应用领域中的主流机型。 MCS-51单片机的并行口有P0、P1、P2和P3,由于P0口是地址/数据总线口,P2口是高8位地址线,P3口具有第二功能,这样,真正可以作为双向I/O口应用的就只有P1口了。这在大多数应用中是不够的,因此,大部分MCS-51单片机应用系统设计都不可避免的需要对P0口进行扩展。 由于MCS-51单片机的外部RAM和I/O口是统一编址的,因此,可以把单片机外部64K字节RAM空间的一部分作为扩展外围I/O口的地址空间。这样,单片机就可以像访问外部RAM存储器单元那样访问外部的P0口接口芯片,以对P0口进行读/写操作。用于P0口扩展的专用芯片很多。如8255可编程并行P0口扩展芯片、8155可编程并行P0口扩展芯片等。本文重点介绍采用具有三态缓冲的74HC244芯片和输出带锁存的74HC377芯片对P0口进行的并行扩展的具体方法。 1 输入接口的扩展 MCS-51单片机的数据总线是一种公用总线,不能被独占使用,这就要求接在上面的芯片必须具备“三态”功能,因此扩展输入接口实际上就是要找一个能够用于控制且具备三态输出的芯片。以便在输入设备被选通时,它能使输入设备的数据线和单片机的数据总线直接接通;而当输入设备没有被选通时,它又能隔离数据源和数据总线(即三态缓冲器为高阻抗状态)。 1.1 74HC2244芯片的功能 如果输入的数据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。74HC244芯片的引脚排列如图1所示。 74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1C和2G作为它们的选通工作信号。当1 C和2G都为低电平时,输出端Y和输入端A状态相同;当1G和2G都为高电平时,输出呈高阻态。

C51单片机并行口扩展的设计与实现

第27卷第4期 辽 宁 工 学 院 学 报 V ol.27,No.4 2007年 8 月 Journal of Liaoning Institute of Technology Aug. 2007 收稿日期:2006-12-11 作者简介:郭延锋(1971-),女,河北涞源人,讲师。 C51单片机并行口扩展的设计与实现 郭延锋,王 昊,张 军 (辽宁工业大学 计算机科学与工程学院,辽宁 锦州 121001) 摘 要:介绍了C51单片机的基本功能,C51单片机有4个I/O 口,但真正可供用户使用的并行口,只有P1口。在此基础上以实例的方法介绍了一种C51单片机并行口的扩展方法,详述了其原理和设计思想,以此来满足较复杂的应用系统的使用。 关键词:选通信号;并行口;模拟信号 中图分类号:TP368 文献标识码:B 文章编号:1005-1090(2007)04-0242-02 Design and Realization of C51 Singlechip Parallel Interface Expanded GUO Yan-feng, WANG Hao, ZHANG Jun (Computer Science & Engineering College, Liaoning University of Technology, Jinzhou 121001, China ) Key words: strobe signal; parallel interface; analog signal Abstract: The basic function of C51 singlechip having 4 I/O interfaces was described. However, only P1 can be used as a parallel interface. Moreover, a sort of expanding method of parallel interface for C51 singlechip was presented based on the examples. Its principle and design idea were specified in detail so as to satisfy still more complicated application system. C51单片机是最常用的系列,MCS -51系列单片机有4个I/O 口(P0、P1、P2、P3口),但对一个稍微复杂的应用系统来说,真正可供用户使用的并行口,只有P1口可用,用户不得不扩展并行口以满足实际的需要。 本文介绍的方法是将P1口扩展成一个或几个8位并行口,在每一个8位口上接入8个发光二极管作为输出,二极管是做开关量来使用的,在这里设计了软件程序,做到对开关量的开断控制。为配合开关量的控制本文设计了两个共阴极LED 数码管,用来显示当前发光二极管发亮的序号,做到更加直观的双重控制效果,然后再将P0口通过D/A 转换器和一放大器输出一个模拟信号,其结果可以通过示波器看出。这样整个系统既有数字信号输出和模拟信号输出,也有数码管显示功能,具有很强的实用性。 1 基于89C51的系统硬件设计 1.1 并行口扩展的电路设计 AT89C51单片机有4个I/O 口(P0、P1、P2、P3),通常仅使用P1口作为并行口,而令其余口(P2、P3)处于闲置状态,所以本文就是使用闲置不用的P2口作为选通信号线来将P1口进行并行口扩展。这种扩展并行口的方式,连线简单,不占用存储器空间,编程也方便灵活。在本文的设计中,采用芯片74HC573(带三态输出的八进制透明D 型锁存器)对P1口进行了一个8位并行口的扩展,选通信号选用P2口的P2.2引脚。 1.2 模拟信号输出的电路设计 模拟信号的输出需要用到D/A 转换器,本文使用最常用的8位D/A 转换器DAC0832来转换数字电压信号。因DAC0832是并行D/A 转换集成电路,

单片机串并口转换实验

我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。在单片机开发试板上也是完美运行。今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能 #include 本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。实验者请按上图连接好实验电路。 #include

#include< intrins.h > #define uchar unsigned char #define uint unsigned int #define ulong unsigned long code uint a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; sbit SO=P1^0; //定义165的输出 sbit STCP=P1^1; sbit DS=P1^2; sbit SHCP=P1^3; sbit SHLD=P1^4; sbit CLK=P1^5; sbit cs573=P1^6; /**************************************************/ void delay(ulong X) //延时函数,采用了形参传递函数

{ while(X--); } /**************************************************/ void LED(); //函数声明 /**************************************************/ void main() //主函数 { while(1) { LED (); } } /****************************************************/

1单片机并口简单应用(流水灯)

试验1单片机并口简单应用(流水灯) 实验目的 1、了解单片机C 语言程序的基本结构 2、了解单片机C 语言程序的设计和调试方法 3、掌握顺序控制程序的简单编程 4、熟悉51单片机的端口使用 实验仪器 单片机开发试验仪、稳压电源、计算机 实验原理 1、硬件电路 如图1所示,流水灯硬件电路由发光二极管、单片机并口( P0)、限流电阻等组成。 发 光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。 因此,二极管公共端阳极就接成高电平,然后再按一定规则从 P0 口输出数据,发光二极管 就会点亮。 图1流水灯电路图 2、程序流程图如下。 RST KMC P0.1PC 1 刃河 P03W03 RIAM M 眄 邮 ras^s POFAMV P2.CA5 RStN P2JW1 羸 喙低1? F2J6M< 唧邓 P :JO PUMOD pf 1 P3.1O pf J 砰酗1: p:』 阴冊 PU 內如 Pr5 P3.SJ1 FJ6 P36vfi Pf.7 <3?TD - -rb 2 - -- fl- - _OJ- I ? Dr —- -R " "nl H 吧血 D5H R6渤 1 FL £ J Rv 渤 AT2K;1

开始 P0 口输出 OXFE P0 口状重新赋值OXFE 实验内容: 1、开发板接线图 ??????? ???????? ???????? / □ TT 2 ■ 二 I M e -t 4- w ? I t - % r 二 b t-f !I L O

2、开发环境设置 打开keil 软件,版本卩Vision2 ,口vision3,口vision4 都一样,在这里用口vision4 版本演示,打开之后如下图,有的时候会默认打开上次使用的工程,单击 F二吕wh Debus F怎忙二口丹曰ha■二李loo La ME u X-E-&n Fr?js-ct.?? Project 菜单,选择Close Project 关闭了默认打开的工程,显示下图界面: 我们要建立新的工程,选择Project T new卩vision projiect

单片机并行IO口的应用实验

一、实验目的 1熟悉Proteus软件和Keil软件的使用方法。 2熟悉单片机应用电路的设计方法。 3、掌握单片机并行I/O 口的直接应用方法。 4、掌握单片机应用程序的设计和调试方法。 二、设计要求 1用Proteus软件画出电路原理图。要求在P1.0至P1.7 口线上分别接LEDO至LED7八个发光二极管,在P3.0 口线上接一蜂鸣器。 2、编写程序:要求LED0至LED7以秒速率循环右移。 3、编写程序:要求LED0至LED7以秒速率循环左移。 4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。 三、实验程序流程框图和程序清单 延时程序流程框图 Y 返回

实验程序流程框图

汇编程序 ORG 0000H MOV A, #11111110B MOV P3, #0FFH MAIN : MOV RO, #07H L00P1: LCALL DELAY MOV P3, A RL A CLR P2.0 LCALL DELAY SETB P2.0 DJNZ R0, LOOP1 MOV R0, #07H L00P2: LCALL DELAY MOV P3, A RR A CLR P2.0 LCALL DELAY SETB P2.0 DJNZ R0, LOOP2 LJMP MAIN DELAY: MOV R7, #17H DL1: MOV R6, #98H DL0: MOV R5, #46H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END C语言程序: #in clude #i ncludevi ntri ns.h> un sig ned char temp; int i; void delay(void); sbit speaker=P2A0; void mai n() { temp=0xfe; P3=temp;

单片机并行IO口的应用实验

一、实验目的 1、熟悉Proteus 软件和Keil 软件的使用方法 。 2、熟悉单片机应用电路的设计方法 。 3、掌握单片机并行I/O 口的直接应用方法 。 4、掌握单片机应用程序的设计和调试方法。 二、设计要求 1、用Proteus 软件画出电路原理图。要求在P1.0至P1.7口线上分别接 LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。 2、编写程序:要求LED0至LED7以秒速率循环右移。 3、编写程序:要求LED0至LED7以秒速率循环左移。 4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。 三、实验程序流程框图和程序清单 延时程序流程框图: 延时程序入口 设置循环体1的循环次数为 设置循环体2的循环次数为 设置循环体3的循环次数为 判断循环体3是否到达循环次 数 判断循环体2是否到达循环次 数 判断循环体1是否到达循环次 数 执行循环体 N Y 执行循环体 Y N 返回 执行循环体 Y N

实验程序流程框图: 开始 初始化 #FE A,#FF P1,设置 循环次数为七次 (A) P1,延迟 左移一位 P3.0清零 延迟 再将 P3.0置1 判断是否循环7次 延迟,(A) P1,左移一 位 P3.0清零 延迟 再将 P3.0置1 判断是否循环7次N 设置循环次数为7次 Y N Y 结束

汇编程序: ORG 0000H MOV A, #11111110B MOV P3, #0FFH MAIN : MOV R0, #07H LOOP1: LCALL DELAY MOV P3, A RL A CLR P2.0 LCALL DELAY SETB P2.0 DJNZ R0, LOOP1 MOV R0, #07H LOOP2: LCALL DELAY MOV P3, A RR A CLR P2.0 LCALL DELAY SETB P2.0 DJNZ R0, LOOP2 LJMP MAIN DELAY: M OV R7, #17H DL1: MOV R6, #98H DL0: MOV R5, #46H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END

相关文档
最新文档