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


发布时间:2020-06-02 20:31:00

点击下载

作者:徐爱钧

出版社:电子工业出版社

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

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

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

前言

随着科技进步的日新月异,各种新型单片机及其开发工具层出不穷,英国Labcenter公司推出的Proteus软件是一款极好的单片机开发平台,它以其特有的虚拟仿真技术很好地解决了单片机及其外围电路的设计和协同仿真问题,可以在没有单片机实际硬件的条件下,利用PC进行虚拟仿真实现单片机系统的软、硬件协同设计。采用Proteus虚拟仿真技术,可以在原理图设计阶段对系统性能进行评估,验证所设计电路是否达到技术指标要求,使设计过程变得简单容易。

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

深圳宏晶公司研发的STC系列增强型8051单片机,是中国本土单片机领域内的佼佼者,其最新推出的STC15系列单片机具有ISP(在系统编程)、IAP(在应用编程)和在线仿真调试功能,为单片机的学习和开发应用提供了更为方便的手段。结合Proteus软件平台,在成功进行虚拟仿真并获得期望结果的条件下,再利用STC15系列单片机制作实际硬件系统进行在线调试,可以达到事半功倍的效果。学生普遍反映,采用这种方式学习单片机知识,比以往单纯学习书本知识更易于接受,以原理图模型进行虚拟仿真有助于提高单片机系统设计能力,以STC15系列单片机制作实际硬件系统进行在线调试可以增加更多实践经验,从而达到理论与实际相结合,相辅相成,不断进步的目的。

本书是电子信息科学与工程类专业规划教材,并获得全国电子信息优秀教材奖。本书在第2版的基础上进行了修订,在构思及选材上,注意尽量符合单片机应用系统的发展要求,给出了在大量Proteus软件平台上予以实现的设计实例;增加了一章专门阐述STC15系列单片机新增功能及其特点,特别介绍了如何利用其ISP和IAP功能,实现单片机在线仿真调试的方法,以利于读者在学习利用Proteus虚拟仿真平台进行单片机应用系统设计的同时,采用STC15系列增强型8051单片机制作实际硬件系统。

全书共分为11章:

第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章阐述STC15系列单片机功能特点,详细介绍了其新增功能模块的应用方法,给出了具体编程实例。

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

本书每一章都配有Proteus设计范例,并随本书配套光盘提供给读者,配套光盘中包括完整的Proteus设计仿真演示视频和一个Proteus DEMO安装软件。读者也可以登录华信教育资源网(www.hxedu.com.cn),免费注册后下载。

通过本教程的学习,读者可以较快地掌握单片机基本原理及接口应用技术,为实际工作打下坚实的基础。为帮助读者更好地了解Proteus虚拟仿真在单片机教学中的应用,本书还制作了部分例子的演示视频,读者可以通过手机扫描本书二维码观看。

本书在修订过程中,朱镕涛、杨青胜、彭秀华、徐阳、杨晶晶、马雪、黄鹏、刘永伟、郑鹏鹏、刘冰、贺媛、许雪怡、方小玲、杨新浩、牛宣云等参加了部分章节的编写工作,全书由徐爱钧统稿。在编写过程中得到广州风标电子技术有限公司(Proteus中国大陆总代理)匡载华总经理的大力支持和热情帮助,在此一并表示感谢。由于作者水平有限,书中难免会有错误和不妥之处,恳请广大读者批评指正,读者可通过电子邮件ajxu@tom.com、ajxu41@sohu.com直接与作者联系。Proteus的DEMO软件可在Proteus官方网站http://www.labcenter.co.uk下载,或者与该软件的国内代理商广州风标电子技术有限公司联系,网址为http://www.windway.cn/。

徐爱钧 于长江大学

2014年6月第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)或3个(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:溢出标志。当两个带符号的单字节数进行运算,结果超出-128~+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所示。各引脚功能如下。图1.3 8051系列单片机引脚分配图

V(20):接地。ss

V(40):接+5 V电源。cc

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/0口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个机器周期,其余均为单周期或双周期指令。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载