单片机原理实用教程——基于Proteus虚拟仿真(第2版)(含CD光盘1张)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-24 23:31:33

点击下载

作者:徐爱钧

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

单片机原理实用教程——基于Proteus虚拟仿真(第2版)(含CD光盘1张)

单片机原理实用教程——基于Proteus虚拟仿真(第2版)(含CD光盘1张)试读:

前言

近年来单片机技术得到了突飞猛进的发展,以单片机为核心设计各种智能化电子设备,周期短、成本低、易于更新换代、维修方便,已成为电子设计中最为普遍的应用手段。目前各种单片机开发工具层出不穷,英国Labcenter公司推出的Proteus软件是一款极好的单片机开发平台,它以其特有的虚拟仿真技术很好地解决了单片机及其外围电路的设计和协同仿真问题,可以在没有单片机实际硬件的条件下,利用PC进行虚拟仿真实现单片机系统的软、硬件协同设计。采用Proteus虚拟仿真技术,可以在原理图设计阶段对系统性能进行评估,验证所设计电路是否达到技术指标要求,使设计过程变得简单容易。

Proteus软件涵盖了PIC、AVR、MCS8051、68HC11、ARM等微处理器模型,以及多种常用电子元器件,包括74系列、CMOS4000系列集成电路、A/D和D/A转换器、键盘、LCD显示器、LED显示器,还2提供示波器、逻辑分析仪、通信终端、电压/电流表、IC/SPI终端等各种虚拟仪表,这些都可以直接用于仿真设计,极大地提高了设计效率和设计水平。

Proteus软件已有20多年的历史,在国外应用较为普遍,尤其在教育界的口碑极佳。Proteus软件被引入国内,在多所高等工科院校中获得成功应用。单片机教学中采用Proteus软件,使单片机的学习过程变得直观形象。可以直接在基于原理图的虚拟模型上进行编程,并实现源码级的程序仿真调试。例如,有显示及输出,还能看到程序运行后的输入、输出效果,配合各种虚拟仪表来展现整个单片机系统的运行过程,很好地解决了长期以来困扰单片机教学过程中软件和硬件无法很好结合的难题。采用PC进行虚拟仿真实验要比采用单片机实验箱更为有效,可以根据需要随时对原理电路图进行修改,并立即获得仿真结果。由于在PC上修改原理电路图要比在实验箱上修改硬件电路容易得多,而且还可以根据设计要求采用不同元器件,或者修改元器件参数以获得不同输出结果。在成功进行虚拟仿真并获得期望结果的条件下,再制作实际硬件进行在线调试,可以获得事半功倍的效果。学生普遍反映,在Proteus软件平台上学习单片机知识,比以往单纯学习书本知识更易于接受,以原理图虚拟模型进行程序仿真调试更易于提高单片机编程能力,还可以通过绘制和修改原理电路图增加很多实践经验。

本书是湖北省省级精品课程《单片机原理与应用》教材,并获得全国电子信息优秀教材二等奖,教程在构思及选材上,注意尽量符合单片机应用系统的发展要求,并给出了在Proteus软件平台上予以实现的设计实例。2009年出版以来已3次重印,得到读者广泛好评。这次再版进行了修订,将原书内容安排做了调整以更利于学习,同时增加单片机高级语言程序设计的内容。

全书共分为10章:

第1章阐述8051单片机的基本组成、存储器结构及CPU时序。

第2章阐述8051单片机的指令系统与汇编语言程序设计。

第3章~第5章分别阐述8051单片机的中断系统、定时器/计数器,以及串行口的工作原理与应用方法。

第6章阐述8051单片机系统扩展的方法。

第7章阐述DAC及ADC接口技术,介绍了传统并行接口及新型串行接口D/A、A/D转换器芯片与单片机的接口方法。

第8章阐述键盘与显示器接口技术,介绍了LED/LCD显示器、矩阵键盘与单片机的接口方法。

第9章阐述单片机高级语言Keil C51应用程序设计,介绍了C51的基本语句、数据类型、Keil C51对ANSI C的扩展及库函数等。

第10章阐述Proteus虚拟仿真技术,介绍了在ISIS集成环境中绘制原理电路图、汇编语言源代码调试,以及与Keil环境联机仿真,给出了6个完整的Proteus虚拟仿真设计实例及其汇编和C51源程序。

本教程每一章都配有Proteus设计范例,并随本书配套光盘提供给读者,配套光盘中还包括一个完整的Proteus设计仿真演示视频和一个Proteus DEMO安装软件。通过本教程的学习,可以较快地掌握单片机基本原理及接口应用技术,为实际工作打下坚实的基础。在编写过程中得到广州风标电子技术有限公司(Proteus中国大陆总代理)匡载华总经理的大力支持和热情帮助,聂红、朱镕涛、杨青胜、彭秀华、徐阳、刘冰、贺媛、许雪怡、陈夔蛟、方小玲、吴雄慧、郑鹏鹏、秦波、黄存坚、朱艳丽等参加了部分章节的编写工作,在此一并表示感谢。由于作者水平有限,书中难免会有错误和不妥之处,恳请广大读者批评指正,读者可通过电子邮件ajxu@tom.com、ajxu41@sohu.com直接与作者联系。Proteus的DEMO软件可在Proteus官方网站http://www.labcenter.co.uk下载,或者与该软件的国内代理商广州风标电子技术有限公司联系,网址为http://www.windway.cn/。

徐爱钧 于长江大学

2011年2月第1章 8051单片机的基本组成1.1 8051单片机的特点与基本结构

8051系列单片机是在美国Intel公司于20世纪80年代推出的MCS-51系列高性能8位单片机的基础上发展而来的,它在单一芯片内集成了并行I/O口、异步串行口、16位定时器/计数器、中断系统、片内RAM和片内ROM以及其他一些功能部件。现在8051系列单片机已经有了很大的发展,除Intel公司之外,Philips、Siemens、AMD、Fujutsu、OKI、Atmel、SST、Winbond等公司都推出了以8051为核心的新一代8位单片机,这种新型单片机的集成度更高,在片内集成了更多的功能部件,如A/D、PWM、PCA、WDT及高速I/O口等。不同公司推出的8051具有各自的功能特点,但它们的内核都是以Intel公司的MCS-51为基础的,并且指令系统兼容,从而给用户带来了广阔的选择范围,同时又可以采用相同的开发工具。

8051系列单片机可分为无片内ROM型和带片内ROM型两种。对于无片内ROM型的芯片,必须外接EPROM才能应用(典型芯片为8031)。带片内ROM型的芯片又分为片内EPROM型(典型芯片为87C51)、片内Flash型(典型芯片为89C51)、片内掩模ROM型(典型芯片为8051),一些公司还推出了一种带有片内一次性可编程ROM(One Time Programming,简称OTP)的芯片(典型芯片为97C51)。一般来说,片内EPROM型或片内Flash型芯片适合于开发样机和需要现场进一步完善的场合,当样机开发基本成功后,可以采用OTP型芯片进行小批量试生产,完全成功后再采用带掩模ROM的8051进行大批量生产。

8051系列单片机在存储器的配置上采用所谓的“哈佛”结构,即在物理上具有独立的程序存储器和数据存储器,而在逻辑上则采用相同的地址空间,利用不同的指令和寻址方式进行访问,可分别寻址64 KB的程序存储器空间和64 KB的数据存储器空间,充分满足工业测量控制的需要。8051系列单片机共有111条指令,其中包括乘除指令和位操作指令。中断源有5个(8032/8052为6个),分为两个优先级,每个中断源的优先级是可编程的。

在8051系列单片机的内部RAM区中开辟了4个通用工作寄存区,共有32个通用寄存器,可以适用于多种中断或子程序嵌套的情况。另外还在内部RAM中开辟了1个位寻址区,利用位操作指令可以对位寻址区中每个单元的每一个位直接进行操作,特别适合于解决各种开关控制和逻辑问题。ROM型8051在单芯片应用方式下其4个并行I/O口(P0~P3)都可以作为输入/输出之用,在扩展应用方式下则需要采用P0和P2口作为片外扩展地址总线之用。8051单片机内部集成了两个(8032/8052为3个)16位定时器/计数器,可以十分方便地进行定时和计数操作,还集成了一个全双工的异步串行接口,可同时发送和接收数据,为单片机之间的相互通信或与上位机通信带来极大的方便。

8051单片机的基本组成如图1.1所示,一个单片机芯片内包括:

● 中央处理器CPU,它是单片机的核心,用于产生各种控制信号,并完成对数据的算术逻辑运算和传送;

● 内部数据存储器RAM,用以存放可以读/写的数据;

● 内部程序存储器ROM,用以存放程序指令或某些常数表格;

● 4个8位的并行I/O接口P0、P1、P2和P3,每个口都可以用做输入或者输出;

● 两个(8051)或三个(8052)定时器/计数器,用来作为外部事件计数器,也可用来定时;

● 内部中断系统具有5个中断源,两个优先级的嵌套中断结构,可实现二级中断服务程序嵌套,每一个中断源都可用软件程序规定为高优先级中断或低优先级中断;

● 一个串行接口,可用于异步接收/发送器;

● 内部时钟,但晶体和微调电容需要外接,振荡频率可以高达40 MHz。

以上各部分通过内部总线相连接。图1.1 8051单片机的基本组成

在很多情况下,单片机还要和外部设备或外部存储器相连接,连接方式采用三总线(地址、数据、控制)方式,但在8051单片机中,没有单独的地址总线和数据总线,而是与通用并行I/O口中的P0口及P2口共用的,P0口分时作为低8位地址线和8位数据线,P2口则作为高8位地址线用,可形成16条地址线和8条数据线。

一定要建立一个明确的概念,即单片机在进行外部扩展时的地址线和数据线都不是独立的总线,而是与并行I/O口公用的,这是8051单片机结构上的一个特点。

图1.2所示为8051单片机内部结构图,其中中央处理器CPU包含运算器和控制器两大部分,运算器完成各种算术和逻辑运算,控制器在单片机内部协调各功能部件之间的数据传送和运算操作,并对单片机外部发出若干控制信息。

1.运算器

运算器以算术逻辑单元ALU为核心,加上累加器ACC、暂存寄存器TMP和程序状态字寄存器PSW等所组成。ALU主要用于完成二进制数据的算术和逻辑运算,并通过对运算结果的判断影响程序状态字寄存器PSW中有关位的状态。累加器ACC是一个8位的寄存器(在指令中一般写为A),它通过暂存寄存器TMP与ALU相连,ACC的工作最为繁忙,因为在进行算术逻辑运算时,ALU的一个输入多为ACC的输出,而大多数运算结果也需要送到ACC中,在进行乘除运算时,B寄存器用来存放一个操作数,它也用来存放乘除运算后的一部分结果,在不进行乘除操作时,B寄存器可用做通用寄存器。程序状态字寄存器PSW也是一个8位寄存器,用于存放运算结果的一些特征,格式如下:图1.2 8051单片机的内部结构

其中D7~D0各标志位的意义如下:

CY:进位标志。在进行加法或减法运算时,若运算结果的最高位有进位或借位,CY=1,否则CY=0,在执行位操作指令时,CY作为位累加器。

AC:辅助进位标志。在进行加法或减法运算时,若低半字节向高半字节有进位或借位,AC=1,否则AC=0,AC还作为BCD码运算调整时的判别位。

F0:用户标志。用户可根据自己的需要对F0赋以一定的含义,例如,可以用软件来测试F0的状态以控制程序的流向。

RS1和RS0:工作寄存器组选择。可以用软件来置位或复位。它们与工作寄存器组的关系如表1.1所示。表1.1 RS1和RS0与工作寄存器组的关系

OV:溢出标志。当两个带符号的单字节数进行运算,结果超出-12~+127的范围时,OV=1,表示有溢出,否则OV=0表示无溢出。

D1:PSW中的D1位为保留位,对于8051来说没有意义,对于8052来说为用户标志,与F0相同。

P:奇偶校验标志。每条指令指行完毕后,都按照累加器A中“1”的个数来决定P值,当“1”的个数为奇数时,P=1,否则P=0。

2.控制器

控制器包括定时控制逻辑、指令寄存器、指令译码器、程序计数器PC、数据指针寄存器DPTR、堆栈指针SP、地址寄存器和地址缓冲器等。它的功能是对逐条指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工作。下面简单介绍其中主要部件的功能。

程序计数器PC:用于存放下一条将要执行指令的地址。当一条指令按PC所指向的地址从程序存储器中取出之后,PC的值会自动增加,即指向下一条指令。

堆栈指针SP:用来指示堆栈的起始地址。8051单片机的堆栈位于片内RAM中,而且属于“上长型”堆栈,复位后SP被初始化为07H,使得堆栈实际上由08H单元开始。必要时可以给SP装入其他值,重新规定栈底的位置。堆栈中数据操作规则是“先进后出”,每往堆栈中压入一个数据,SP的值自动加1,随着数据的压入,SP的值将越来越大,当数据从堆栈弹出时,SP的值将越来越小。

指令译码器:当指令送入指令译码器后,由译码器对该指令进行译码,即把指令转变成为所需要的电平信号,CPU根据译码器输出的电平信号使定时控制电路产生执行该指令所需要的各种控制信号。

数据指针寄存器DPTR:它是一个16位寄存器,由高位字节DPH和低位字节DPL组成,用来存放16位数据存储器的地址,以便对片外64 KB的数据RAM区进行读/写操作。

采用40引脚双列直插封装(DIP)的8051单片机引脚分配如图1.3所示,其引脚功能如下。

V(20):接地。ss

V(40):接+5 V电源。cc图1.3 8051系列单片机引脚分配图

XTAL1(19)和XTAL2(18):在使用单片机内部振荡电路时,这两个端子用来外接石英晶体和微调电容,如图1.4(a)所示。在使用外部时钟时,则用来输入时钟脉冲,但对NMOS和CMOS芯片接法不同,图1.4(b)所示为NMOS芯片8051外接时钟,图1.4(c)所示为CMOS芯片80C51外接时钟。图1.4 80C51单片机的时钟接法

RST/V(9):RST是复位信号输入端。当此输入端保持两个机PD器周期(24个振荡周期)的高电平,就可以完成复位操作。此引脚的第二功能是V,即备用电源输入端,当主电源发生故障,降低到PD规定的低电平以下时,V将为片内RAM提供备用电源,以保证存储PD在RAM中的信息不丢失。(30):ALE是地址锁存允许信号,在访问外部存储器时,用来锁存由P0口送出的低8位地址信号。在不访问外部存储器时,ALE以振荡频率1/6的固定速率输出脉冲信号。因此它可用做对外输出的时钟。但要注意,只要外接有存储器,则ALE端输出的就不再是连续的周期脉冲信号了。第二功能是用于对8751片内EPROM编程的脉冲输入端。(29):它是外部程序存储器ROM的读选通信号。在执行访问外部ROM指令的时候,会自动产生信号,而在访问外部数据存储器RAM或访问内部ROM时,不产生信号。(31):访问外部存储器的控制信号。当为高电平时,访问内部程序存储器,但当程序计数器PC的值超过0FFFH(对于8051/8051/8751单片机)或1FFFH(对于8052单片机)时,将自动转向执行外部程序存储器内的程序。当保持低电平时,则只访问外部程序存储器,而不管是否有内部程序存储器。该引脚的第二功能V为对8751片内EPROM的21V编程电源输入。PP

P0.0~P0.7(39~32):双向I/O口P0。P0口首先作为双向I/O功能,其第二功能是在访问外部存储器时,可分时用做低8位地址和8位数据线,在对8751编程和校验时,用于数据的输入和输出。P0口能以吸收电流的方式驱动8个LS型TTL负载。

P1.0~P1.7(1~8):双向I/O口P1。P1口能驱动(吸收或输出电流)4个LS型TTL负载。在对EPROM编程和程序验证时,它接收低8位地址。在8052单片机中,P1.0还用作定时器2的计数触发输入端T2,P1.1还用做定时器2的外部控制端T2EX。

P2.0~P2.7(21~28):双向I/O口P2。P2口可以驱动(吸收或输出电流)4个LS型TTL负载。其第二功能是在访问外部存储器时,输出高8位地址。在对EPROM编程和校验时,它接收高位地址。

P3.0~P3.7(10~17):双向I/O口P3。P3口能驱动(吸收或输出电流)4个LS型TTL负载。P3口的每条引脚都有各自的第二功能。1.2 8051单片机的存储器结构

图1.5所示为8051系列单片机的存储器结构图。在物理上它有4个存储器空间:片内程序存储器和片外程序存储器;片内数据存储器和片外数据存储器。在访问这几个不同的存储器时应采用不同形式的指令。

8051系列单片机的程序存储器ROM地址空间为64 KB,其中带片内ROM型单片机具有4 KB的片内ROM。CPU的控制器专门提供一个控制信号来区分片内ROM和片外ROM的公用地址区:当接高电平时,单片机从片内ROM的4 KB存储器区取指令,当指令地址超过0FFFH后,就自动地转向片外ROM取指令;当接低电平时,所有的取指操作均对片外程序存储器进行,这时片外程序存储器的地址范围为0000H~0FFFFH。

目前一些新型的8051单片机已经可以将64 KB的ROM存储器全部集成到芯片内部,使用时将接高电平,可以减少外部辐射干扰。对于无ROM型的单片机,端必须接地。程序存储器中有些单元是保留给系统使用的:0000H~0002H单元是所有执行程序的入口地址,复位后CPU总是从0000H单元开始执行指令;0003H~002AH单元均匀地分为五段,用于5个中断服务程序的入口。图1.5 8051系列单片机存储器结构图

8051系列单片机的片外数据存储器RAM也有64 KB的寻址区,在地址上是与ROM重叠的。8051单片机通过不同的信号来选通ROM或RAM。当从外部ROM中取指令时,用选通信号,而从外部RAM中读/写数据时则采用读/写信号或来选通,因此不会因地址重叠而发生混乱。在某些特殊应用场合,如单片机的开发系统等,需要执行存放在数据存储器RAM内的程序,这时可采用将和信号作逻辑与的方法,将8051单片机的外部程序存储器和数据存储器合并为一个64 KB的存储器空间和信号逻辑与的结果产生一个低电平有效的读选通信号,用于合并的存储器空间寻址。

8051系列单片机的片内数据存储器RAM有256字节,其中00H~7FH地址空间是直接寻址区,该区域内00H~1FH地址为工作寄存器区,安排了4组工作寄存器,每组占用8个地址单元,记为R0~R7,在某一时刻,CPU只能使用其中任意一组工作寄存器,究竟选择哪一组工作寄存器由程序状态字寄存器PSW中RS0和RS1的状态决定,见表1.1。片内RAM的20H~2FH地址单元为位寻址区,共16字节,每个字节的每一位都规定了位地址,该区域内每个地址单元除了可以进行字节操作之外,还可进行位操作,图1.6所示为片内RAM的位地址分配。图1.6 8051单片机片内RAM的位地址分配

片内RAM的80H~FFH地址空间是特殊功能寄存器(SFR)区,8051 子系列单片机只在该区域内安排了21个特殊功能寄存器,8052子系列单片机则在该区域内安排了26个特殊功能寄器,同时扩展了128字节的间接寻址片内RAM,地址也为80H~FFH,与SFR区地址重叠,但在使用时,可通过指令加以区别。表1.2所示为8051单片机特殊功能寄存器地址及符号表,表中带*号的为可位寻址的特殊功能寄存器。

内部RAM中的各个单元,都可以通过其地址来寻找,而对于工作寄存器,一般使用R0~R7表示,对于特殊功能寄存器,也是直接用其符号名较为方便。需要指出的是,8051单片机的堆栈必须使用片内RAM,而片内RAM空间十分有限,因此要仔细安排堆栈指针SP的值,以保证不会发生堆栈溢出而导致系统崩溃。表1.2 8051单片机特殊功能寄存器地址及符号表1.3 CPU时序

8051单片机内部有一个高增益反相放大器,用于构成振荡器,反相放大器的输入端为XTAL1,输出端为XTAL2,分别是8051的第19脚和18脚。在XTAL1和XTAL2之间接一个石英晶体及两个电容,就可以构成稳定的自激振荡器,当振荡在6~12 MHz时通常取30pF左右的电容进行微调,如图1.7所示。晶体振荡器的振荡信号经过片内时钟发生器进行二分频,向CPU提供两相时钟信号P1和P2。时钟信号的周期称为状态时间S,它是振荡周期的两倍,在每个状态的前半周期P1信号有效,在每个状态的后半周期P2信号有效,CPU就以这两相时钟信号为基本节拍指挥单片机各部分协调工作。

CPU执行一条指令所需要的时间是以机器周期为单位的,8051单片机的一个机器周期包括12个振荡周期,分为6个S状态:S1~S6,每个状态又分为两拍,即前面介绍的P1和P2信号,因此一个机器周期中的12个振荡周期可表示为S1P1,S1P2,S2P1,…,S6P1,S6P2。当采用12 MHz的晶体振荡器时,一个机器周期为1μs。CPU执行一条指令通常需要1~4个机器周期,指令的执行速度与其需要的机器周期数直接有关,所需机器周期数越少,速度越快。8051单片机只有乘、除两条指令需要4个机器周期,其余均为单周期或双周期指令。图1.7 8051的片内振荡器及时钟发生电路

图1.8所示为几种典型的取指令和执行周期时序,从图中可以看到,在每个机器周期之内,地址锁存信号ALE两次有效,第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间。单周期指令的执行从S1P2开始,此时操作码被锁存在指令寄存器内。若是双字节指令,则在同一机器周期的S4状态读第2个字节。若是单字节指令,在S4状态仍进行读,但操作无效,且程序计数器PC的值不加1。图1.8 8051单片机的取指令和执行周期时序

图1.8(a)和图1.8(b)分别为单字节单周期和双字节单周期指令的时序,它们都在S6P2结束时完成操作。

图1.8(c)为单字节双周期指令的时序,在两个机器周期内进行4次操作,由于是单字节指令,所以后面的3次操作无效。

图1.8(d)为CPU访问片外数据存储器指令“MOVX”的时序,它是一条单字节双周期指令,在第一个机器周期的S5状态开始送出片外数据存储器的地址,进行数据的读/写操作。在此期间没有ALE信号,所以在第二个周期不会产生取指操作。1.4 复位信号与复位电路

8051单片机与其他微处理器一样,在启动时都需要复位,使CPU和系统的各个部件都处于一种确定的初始状态。复位信号从单片机的RST引脚输入,高电平有效,其有效电平应维持至少两个机器周期,若采用6 MHz的晶体振荡器,则复位信号至少应持续4μs以上,才可以保证可靠复位。

复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图1.9(a)所示,只要电源V电压上升时间不超过1 ms,通过在V和RST引脚之cccc间加一个22μF的电容,RST和V引脚(即地)之间加一个1 kΩ的电ss阻,就可以实现上电自动复位。

按键手动复位电路如图1.9(b)所示,它是在上电自动复位电路的基础上增加一个电阻R1和一个按键Reset实现的,它不仅具有上电自动复位的功能,在按下Reset按钮后,电容C通过R1放电,同时电源V通过R1和R2分压,而R2要比R1大许多,大部分电压降落在R2cc上,从而使RST端得到一个高电平导致单片机复位。图1.9 复位电路

上述电路中的电阻、电容参数适用于6 MHz的外接晶振,能保证复位信号持续两个机器周期的高电平。复位电路虽然简单,但其作用非常重要,一个实际单片机应用系统能否正常工作,首先要检查能否产生正确的复位信号。复位以后,单片机内部各寄存器的状态如表1.3所示。

复位不影响片内RAM的内容,当加上电源电压V以后,RAM的cc内容是随机的。表1.3 复位后单片机内部各寄存器的状态1.5 并行I/O端口结构

8051单片机有4个并行I/O口,称为P0、P1、P2、P3,每个口都有8根引脚,共有32根I/O引脚,它们都是双向通道,每一条I/O引脚都能独立地用做输入或输出,作为输出时数据可以锁存,作为输入时数据可以缓冲。P0~P3口各有一个锁存器,分别对应4个特殊功能寄存器地址:80H、90H、A0H、B0H。图1.10所示为P0~P3各口中的一位的逻辑图。这4个I/O口的功能不完全相同,它们的负载能力也不相同,P1、P2、P3都能驱动4个LS型TTL门电路,并且不需外加电阻就能直接驱动MOS电路。P0口在驱动TTL电路时能带动8个LS型TTL门电路,但驱动MOS电路时,若作为地址/数据总线,可直接驱动;而作为I/O口时,则需外接上拉电阻才能驱动MOS电路。图1.10 8051单片机并行I/O口一位的逻辑图

P0口为三态双向口,它可作为输入/输出端口使用,也可作为系统扩展时的低8位地址/8位数据总线使用。P0口内部有一个2选1的MUX开关,当8051以单芯片方式工作而不需要外部扩展时,内部控制信号将使MUX开关接通到锁存器,此时P0口作为双向I/O端口,由于P0口没有内部上拉电阻,通常要在外部加一个上拉电阻来提高驱动能力。当8051需要进行外部扩展时,内部控制信号将使MUX开关接通到内部地址/数据线,此时P0口在ALE信号的控制下分时输出低8位地址和8位数据信号。

P1口为准双向口,它的每一位都可以分别定义为输入或输出使用。P1口作为输入口使用时,有两种工作方式,即所谓的“读端口”和“读引脚”。读端口时实际上并不从外部读入数据,而只把端口锁存器中的内容读入内部总线,经过某种运算和变换后,再写回端口锁存器,属于这类操作的指令很多,如对端口内容取反等。读引脚时才真正地把外部的输入信号读入内部总线。

逻辑图中各有两个输入缓冲器,CPU根据不同的指令分别发出“读端口”或“读引脚”信号,以完成两种不同的操作。在读引脚,也就是从外部输入数据时,为了保证输入正确的外部输入电平信号,首先要向端口锁存器写入一个“1”,然后再进行读引脚操作,否则,端口锁存器中原来状态有可能为“0”,加到输出驱动场效应管栅极的信号为“1”,该场效应管导通,对地呈现低阻抗。这时即使引脚上输入的是“1”信号,也会因端口的低阻抗而使信号变化,使得外加的“1”信号写入时不一定是“1”。若先执行置“1”操作,则可使驱动场效应管截止,引脚信号直接加到三态缓冲器,实现正确的写入。正是由于P1口在进行输入操作之前需要有这样一个附加准备动作,故称之为“准双向口”。

P1口作为输出口时,如果要输出“1”,只要将“1”写入P1口的某一位锁存器,使输出驱动场效应管截止,该位的输出引脚由内部上拉电阻拉成高电平,即输出为“1”。要输出“0”时,将“0”写入P1口的某一位锁存器,使输出驱动场效应管导通,该位的输出引脚被接到地端,即输出为“0”。

P2口也是一个准双向口,它有两种使用功能:作为普通I/O端口或作为系统扩展时的高8位地址总线。P2口内部结构与P0口类似,也有一个2选1的MUX开关,P2口作为I/O端口使用时,内部控制信号使MUX开关接通到锁存器,此时P2口的用法与P1口相同。P2口作为外部地址总线使用时,内部控制信号使MUX开关接通到内部地址线,此时P2口的引脚状态由所输出的地址决定。需要特别指出的是,只要进行了外部系统扩展,由于对片外地址的操作是连续不断的,此时P0口和P2口就不能再用做I/O端口了。

P3口为多功能口,除了用做通用I/O口之外,它的每一位都有各自的第二功能,详见表1.4。P3口作为通用I/O口时其使用方法与P1口相同,P3口的第二功能可以单独使用,即不用做第二功能的引脚仍可以作为通用I/O口线使用。

8051单片机没有独立的对外地址、数据和控制“三总线”,当需要进行外部扩展时就要采用I/O口的复用功能,将P0口、P2口用做地址/数据总线,P3口用其第二功能,形成外部地址、数据和控制总线,如图1.11所示。

P0口在进行外部扩展时分时复用,在读/写片外存储器时,P0口先送出低8位地址信号,该信号只能维持很短的时间,然后P0口又送出8位数据信号。为了使在整个读/写片外存储器期间,都存在有效的低8位地址信号,必须在P0口上外接一个地址锁存器,在ALE信号有效期间将低8位地址锁存于锁存器内,再从这个锁存器对外输出低8位地址。

P2口在进行外部扩展时只用做高8位地址线,在整个读/写期间P2口输出信号维持不变,因此P2口不需外接锁存器。一般在片外接有存储器时,P0和P2口不能再用做通用I/O口,此时只有P1口可作为通用I/O口用,P3口中没有使用第二功能的引脚还可以用做I/O口线。另外还要注意,外接程序存储器ROM的读/写选通信号为,而外接数据存储器RAM的读/写选通信号为和,从而保证外部ROM和外部RAM不会发生混淆。表1.4 P3口的第二功能定义图1.11 单片机与外部存储器、I/O端口的连接复习思考题1

1.8051单片机包含哪些主要逻辑功能部件?画出它的基本结构图。

2.8051单片机有几个存储器地址空间?画出它的存储器结构图。

3.简述8051单片机片内RAM存储器的地址空间分配。

4.简述8051单片机复位后内部各寄存器的状态。

5.程序计数器PC有何作用?用户是否能够对它直接进行读/写?

6.什么叫堆栈?堆栈指针SP的作用是什么?SP的默认初值是多少?

7.如何调整8051单片机的工作寄存器区?如果希望使用工作寄存器3区,应如何设定特殊功能寄存器PSW的值?

8.简述8051单片机的P0~P3口各有什么特点,以P1口为例说明准双向I/O端口的意义。

9.8051单片机有没有专门的外部“三总线”?它是如何形成外部地址总线和数据总线的?

10.试画出单片机与外部存储器,I/O端口的连接图,并说明为什么外扩存储器时P0口要加接地锁存器,而P2口却不用加接。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载