8051单片机工作原理_--_单片机入门经典教程

更新时间:2023-04-19 20:43:01 阅读量: 实用文档 文档下载

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

第一课:初识单片机

记得在我们网站的论坛里,曾经有一位网友问了一个问题,什么是单片机?单片机是怎样的一个东东?单片机可以实现些什么功能?它主要应用在哪些领域?在我们单片机自学网的网上课堂的第一节课,我们就上面的这些问题与大家先做一个初步的探讨。

在进入课程的讲解之前,大家先一起来看看单片机吧。下图是一片40脚的89C51及一片20脚的89C2051的单片机。

单片机的外形从上图中我们已初步认识了,那么什么叫单片机呢?

所谓单片机,通俗的来讲,就是把中央处理器CPU(Central Processing Unit),存储器(memory),定时器,I/O(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。单片机又称为“微控制器MCU”。中文“单片机”的称呼是由英文名称“Single Chip Microcomputer”直接翻译而来的。

单片机的主要分类:

1、按应用领域可分为:家电类,工控类,通信类,个人信息终端类等等;

2、按通用性可分为:通用型和专用型。

通用型单片机的主要特点是:内部资源比较丰富,性能全面,而且通用性强,可履盖多种应用要求。所谓资源丰富就是指功能强。性能全面通用性强就是指可以应用在非常广泛的领域。通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。

专用型单片机的主要特点是:针对某一种产品或某一种控制应用而专门设计的,设计时已使结构最简,软硬件应用最优,可靠性及应用成本最佳。专用型单片机用途比较专一,出厂时程序已经一次性固化好,不能再修该的单片机。例如电子表里的单片机就是其中的一种。其生产成本很低。

在我们的这个网上课堂中,介绍的是MCS-51系列单片机,MCS-51单片机也是一种通用单片机,其结构及原理对所有的单片机都适用。

3、按总线结构可分为总线型和非总线型。如我们常常见到的89C51单片机就是总线结构,在后面讲解单片机的内部结构时,我们就可以看到,89C51单片机内部有数据总线,地址总线,还有控制总线(WR,RD,EA,ALE等)。从上图中看到的20引脚的89C2051单片机,就是一种非总线型的。其外部的引脚很少,可使成本降低。

单片机特点:

(1)受集成度限制,片内存储器容量较小,一般内ROM:8KB以下;

(2)内RAM:256KB以内。

(3)可靠性高

(4)易扩展

(5)控制功能强

(6)易于开发

单片机的发展过程:

1971年intel公司研制出世界上第一个4位的微处理器;

1973年intel公司研制出8位的微处理器8080;

1976年intel公司研制出MCS-48系列8位的单片机,这也是单片机的问世。

80年代初,intel公司在MCS-48单片机基础上,推出了MCS-51单片机。也就是说,51单片机最早的出现是在80年代初

微处理器与单片机:

微处理器:

计算机系统核心部件(CPU)并不是一台完整的计算机

单片机:

将CPU和其它接口电路集成在一个芯片之中,使其具有计算机的基本功能。

从上面的描述可知,微处理器只是一个CPU,而单片机则是由CPU与其它的接口电路组合而成的,所以CPU不等于单片计算机。也可以这样说,CPU只是计算机其中的一个部件而已。

主要的单片机厂商:

我国目前最常用的单片机有如下几家:

Intel---------(MCS51系列,MCS96系列)

Atmel-------(AT89系列,MCS51内核)

Microchip---(PIC系列)

Motorola----(68HCXX系列)

Zilog--------(Z86系列)

Philips------(87,80系列,MCS51内核)

Siemens-----(SAB80系列,MCS51内核)

NEC---------(78系列)

Epson--------(系列)

在我们网站的论坛,同时在其它网站我看到很多朋友都在讨论一个问题:学8位的51单片机有前途吗?

是的,在现今的单片机领域中,单片机的种类层出不穷,功能也越来越强,从表层看来好象学8位的51单片机已不符合现在的发展需求。让人感觉到“没有前途”。做过单片机开发的朋友都知道,其实在大部份的工控或测控设备中,8位的51单片机还能足够满足大部份的控制要求,加之51单片机的价格优势。这就使8位的51单片机在以后很长的一段时间内还有存在的空间,也就是说还是单片机应用的一个主流。试想一下,在战场上,原本可以用高炮实现打击的目标我们可能会用导弹去打吗?再者,如果把51单片机学好了,以后转行去学习或应用其它的单片机,也就是一个了解及熟悉的过程了。因为MCS-51单片机是一个通用的单片机,其内部的结构及工作原理与其它的单片机都是相通的。

第二课:MCS-51单片机简述

MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。以后我们将用89C51、89S51来完成一系列的实验。

MCS-51系列单片机

MCS-51系列单片机分为两大系列,即51子系列与52子系列。

51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951

52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952

这两大系列单片机的主要硬件特性如下表:

从上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。

8051与80C51的区别:

80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的。

8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。这两种单片机是完全可移植的。

既然这两种单片机外形及内部结构都一样,那它们之间的主要差别在哪里呢?

8051与80C51单片机的主要差别就在于芯片的制造工艺上。80C51的制造工艺是在8051基础上进行了改进。

8051系列单片机采用的是HMOS工艺:高速度、高密度;

80C51系列单片机采用的是CHMOS工艺:高速度、高密度、低功耗;

也就是说80C51单片机是一种低功耗单片机。

经常有网友问我们,我想学单片机,但单片机的类型很多,我该学哪种型号的单片机呢?

这里我提点我自已的想法,个人认为,初学单片机最好从8051开始,因为51单片机是一种通用型的单片机,性价比较高,虽然是8位的单片机,但现在应用的量及范围还很大。同时,因51单片机发展的历史长,学习的资料相对较多而且较完善。致于用哪个具体型号的单片机?你可以用89C51来做实验,也可以用89S51或者2051来做实验,这个就不太重要了,前面说了,51单片机是一种通用型单片机,即然是通用,那么它的指令系统都是一样的,不同的是它的制造工艺及内部资源有点差别,这个是结合实际需要选型的问题了。所以,学习单片机,你可以只选择一种型号,例如AT89S51或者AT89C2051。

思考题:

1、MCS-51系列单片机各种芯片的配置有何不同?

2、MCS-51单片机内部程序存储器ROM和内部数据存储器RAM的空量分别是多少?

3、8051与80C51的差别在哪里?

第三课:单片机相关常用名词解释

总线:

指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。

地址总线(AB):地址总线是单向的,用于传送地址信息。地址总线的宽度为16位,因此基外部存储器直接寻址64K,16位地址总线由P0口经地址锁存器提供低8位地址(A0~A7),P2口直接提供高8位地址(A8~A15)。

数据总线(DB):一般为双向,用于CPU与存储器,CPU与外设、或外设与外设之间传送数据信息(包括实际意义的数据和指令码)。数据总线宽度为8位,由P0口提供。

控制总线(CB):是计算机系统中所有控制信号的总称,在控制总线中传送的是控制信息。由P3口的第二功能状态和4根独立的控制总线,RESET、EA、ALE、PSEN组成。

存储器:

用来存放计算机中的所有信息:包括程序、原始数据、运算的中间结果及最终结果等。只读存储器(ROM):

只读存储器在使用时,只能读出而不能写入,断电后ROM中的信息不会丢失。因此一般用来存放一些固定程序,如监控程序、子程序、字库及数据表等。ROM按存储信息的方法又可分为以下几种

1、掩膜ROM:

掩膜ROM也称固定ROM,它是由厂家编好程序写入ROM(称固化)供用户使用,用户不能更改内部程序,其特点是价格便宜。

2、可编程的只读存储器(PROM):

它的内容可由用户根据自已所编程序一次性写入,一旦写入,只能读出,而不能再进行更改,这类存储器现在也称为OTP(Only Time Programmable)。

3、可改写的只读存储器EPROM:

前两种ROM只能进行一次性写入,因而用户较少使用,目前较为流行的ROM芯片为EPROM。因为它的内容可以通过紫外线照射而彻底擦除,擦除后又可重新写入新的程序。

4、可电改写只读存储器(EEPROM):

EEPROM可用电的方法写入和清除其内容,其编程电压和清除电压均与微机CPU的5V工作电压相同,不需另加电压。它既有与RAM一样读写操作简便,又有数据不会因掉电而丢失的优点,因而使用极为方便。现在这种存储器的使用最为广泛。

随机存储器(RAM):

这种存储器又叫读写存储器。它不仅能读取存放在存储单元中的数据,还能随时写入新的数据,写入后原来的数据就丢失了。断电后RAM中的信息全部丢失。因些,RAM常用于存放经常要改变的程序或中间计算结果等信息。

RAM按照存储信息的方式,又可分为静态和动态两种。

1、静态SRAM:其特点是只要有电源加于存储器,数据就能长期保存。

2、动态DRAM:写入的信息只能保存若干ms时间,因此,每隔一定时间必须重新写入一次,以保持原来的信息不变。

可现场改写的非易失性存储器:

这种存储器的特点是:从原理上看,它们属于ROM型存储器,从功能上看,它们又可以随时改写信息,作用又相当于RAM。所以,ROM、RAM的定义和划分已逐渐的失去意义。1、快擦写存储器(FLASH)

这种存储器是在EPROM和EEPROM的制造基础上产生的一种非易失性存储器。其集成度高,制造成本低于DRAM,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后可不丢失信息的特点,所以发展迅速。

2、铁电存储器FRAM

它是利用铁电材料极化方向来存储数据的。它的特点是集成度高,读写速度快,成本低,读写周期短。

时钟周期:计算机在时钟信号的作用下,以节拍方式工作。因此必须有一个时钟发生电路,输入微处理器的时钟信号的周期称为时钟周期。

机器周期:机器完成一个动作所需的时间称为机器周期,一般由一个或一个以上的时钟周期组成。在我们讲述的MCS-51系列单片机中,一个机器周期由12个时钟周期组成。

指令周期:执行一条指令(如“MOV A,#34H”,该指令的含义是将立即数34H传送到微处理器内的累加器A中)所需时间称为指令周期,它由一个到数个机器周期组成。指令周期的长短取决于指令的类型,即指令将要进行的操作步聚及复杂程度。

汇编:是能完成一定任务的机器指令的集合。

二进制数:只有0和1两个数码,基数为二。

16进制数:采用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等16个数码,其中A-F 相应的十进数为10-15,基数是16。

指令:是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。

字节:8位二进制数组成一个字节,在存储器中以字节为单位存储信息。

字:2个字节组成一个字。

双字:2个字组成一个双字。

补码:机器数可用不同的码制来表示,补码表示法是最常用的一种,正数采用符号-绝对值表示,即数的最高有效位为0,数的其余部分则表示数的绝对值;负数的表示要麻烦一些,先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位加1,就可以得到该负数的补码表示了。

段地址:8086CPU将1MB的存储器空间分成许多逻辑段,每个段最大限制为64KB,段地址就是逻辑段在主存中的起始位置。为了能用16位寄存器表示段地址,8086规定段地址必须是模16地址,即为xxxx0H形式,省略低4位0,段地址就可以用16位数据表示,它通常被保存在16位的段寄存器中。

偏移地址:存单元距离段起始位置的偏移量简称偏移地址,由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。

物理地址:在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址,把段地址左移4位再加上偏移地址就形成物理地址。

代码段:程序员在编制程序时要把存储器划分成段,代码段用来存放程序的指令序列,代码段的段地址存放在CS中,指令指针寄存器IP指示代码段中指令的偏移地址,处理器利用CS:IP取得下一条要执行的指令。

数据段:数据段存放当前运行程序所用的数据,数据段的段地址存放在DS中。

附加段:附加段是附加的数据段,也用于数据的保存,另外,串操作指令将附加段作为其目的操作数的存放区域。附加段的段地址存放在ES中。

堆栈段:堆栈段是堆栈所在的主存区域,堆栈段的段地址存放在SS中,堆栈指针寄存器SP 指示堆栈栈顶的偏移地址,处理器利用SS:SP操作堆栈中的数据。

堆栈:堆栈是一个"后进先出"的主存区域,位于堆栈段中,使用SS段寄存器记录其段地址。它只有一个出入口,即当前栈顶,栈顶是地址较小的一端(低端),它用堆栈指针寄存器SP 指定。堆栈有两种以字为单位的基本操作,对应两条基本指令:进栈指令PUSH和出栈指令POP。

伪指令:汇编语言程序的语句除指令外还包括伪指令和宏指令,伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,完成诸如数据定义、分配存储区、指示程序结束等功能。

宏指令:宏是源程序中一段有独立功能的程序代码,它只需要在源程序中定义一次,就可以多次调用,调用时只需要用一个宏指令语句就可以了。宏指令是用户自定义的指令,在编程时将多次使用的功能用一条宏指令来代替。

子程序:子程序又称为过程,它相当于高级语言中的过程和函数。在一个程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,以便需要时可以调用它;某些常用的特定功能的程序段也可编制成子程序的形式供用户使用。

中断:中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。

中断处理程序:当中断发生时,处理器中止当前正在运行的程序,而转到处理特殊事件的程序段中去执行,这种处理中断的子程序就是中断处理程序,又称为中断服务程序。中断处理程序的入口地址被安排在中断向量表中。

BIOS中断:在存储器系统中,从地址0FE000H开始的8K ROM中装有BIOS(Basic Input/Output System)例行程序。驻留在ROM中的基本输入输出程序BIOS提供了系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。BIOS中断给程序员编程带来很大方便,程序员不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中断调用BIOS中的程序。

暂存器:用来暂存由数据总线或通用寄存器送来的操作数,并把它作为另一个操作数。

中断:中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

掉电保护:指在正常供电电源掉电时,迅速用备用直流电源供电,以保证在一段时间内信息不会丢失,当主电源恢复供电时,又自动切换为主电源供电。

寄存器寻址:操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。

波特率:即每秒钟传送二进制数的位数,波特率越高,数据传输的速度越快。

D/A转换:即将二进制数量转换成与其量值成正比的电流信号或电压信号。

A/D转换:即将模拟量转换成相应的数字量,然而送计算机处理。

串行方式:指数据的各位分时传送,只需一条数据线,外加一条公共信号地线和若干条控制信号线。

并行方式:指数据的各位同时传送,每一条数据都需要一条传输线。

伪指令:用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。

SLEEP MODI睡觉模式:保证程序内部运行,但与外部的传输等动作已停止的一种运行模式。linking连接:把编译后生成的*.obj文件与其它*.obj文件合并成机器能识别的机器文件。

I2C:输入与输出共用一条传输线,而时钟由另一条线控制的一种串行传输方式。

SFR特殊功能寄存器区:8051把CPU中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器集中安排到一个区域,离散地分布在地址从80H到FFH范围内,这个区域称为特殊功能寄存器区SFR。

这一节的目的是让大家对单片机相关的概念做一个感性的了解,具体的内容我们将在后面的相关章节做详细的讲解。

第四课:计算机中数的表示及运算

数字:

谈到数字,有很多同学可能会觉的很可笑,数字?不就是1234……..这些吗?是的,在日常的生活当中,我们用的一般都是十进制,但在计算机中,它只能识别二进制数,所以在这里我还得跟大家共同分析一下:

1、十进制:

十进制就是基数为“十”,所使用的数码为0~9共10个数字。逢十进一。是我们每天都会运用到的,在这里就不多谈了。

2、二进制:

二进制的基数为“二”,其使用的数码只有0和1两个。在计算机中容易实现,在常用的的实现方式中如:可以用电路的高电平表示1,低电平表示0;或者三极管截止时集电极的输出表示1,导通时集电极输出表示0。

3、十六进制:

由于二进制位数太长,不易记忆和收写,所以人们又提出了十六进制的书写形式。我们在汇编语言中多数用十六进制。

计算机只识别和处理数字信息,数字是以二进制数表示的;它易于物理实现,同时,资料存储、传送和处理简单可靠;运算规则简单,使逻辑电路的设计、分析、综合、方便,使计算器具有逻辑性。

一、用数制及转换

1、各种进位计数及其表示方法

数字符号:0、1、2、……9——数码。数码的个数——基数。

进位规则:逢十进一

例如,十进制数,10个数码;采用“逢十进一”

30681=3×104+0×103+6×102+8×101+1×100

例如,二进制数,2个数码,采用“逢二进一”

(11010100)2=1×27+1×26+0×25+1×24+0×23+1×22+0×21+0×20

总之,N进制数,N个数码,“逢N进一”

2、数制之间的转换

任意进制之间相互转换,整数部分和小数部分必须分别进行,

十进制转换成二进制——短除取余法

十进制小数转换成二进制小数——乘2取整法。

二进制转换成十进制——展开求和法。

(101101)2=1×25+0×24+1×23+1×22+0×21+1×20

=32+0+8+4+0+1

=45

二进制转换成八进制、十六进制与此类似。

二、机器数及其编码

1、机器数与真值

机器只认识二进制数:0、1。

这是因为,电路状态常有两个,如通、断;高电平、低电平;…可用0、1表示。

这种0、1、0、1…1在机器中的表现形式——机器数。一般为8位。

2、机器数的编码及运算

对带符号数而言,有原码、反码、补码之分,计算机内一般使用补码。

1)原码

将数“数码化”,原数前“+”用0表示,原数前“-”用1表示,数值部分为该数本身,这样的机器数叫原码。

设X——原数;则[X]原=X(X0)

[X]原=2n-1–X(X0),n为字长的位数。

如,[+3]原=00000011B

[-3]原=27-(-3)=10000011B

0有两种表示方法:00000000+0

10000000-0

原码最大、最小的表示:+127、-128

2)反码

规定正数的反码等于原码;负数的反码是将原码的数值位各位取反。

[X]反=X(X0)

[X]反=(2n–1)+X(X0)

如,[+4]反=[+4]原=00000100B

[-4]反=(28–1)+(-5)=11111111-00000101=11111010B

反码范围:-128~+127

两个0;+0——00000000B

-0——11111111B

3)补码

补码的概念:现在是下午3点,手表停在12点,可正拨3点,也可倒拨9点。即是说-9的操作可用+3来实现,在12点里:3、-9互为补码。

运用补码可使减法变成加法。

规定:正数的补码等于原码。

负数的补码求法:1)反码+1

2)公式:[X]补=2n+X(X<0)

如,设X=-0101110B,则[X]原=10101110B

则[X]补=[X]反+1=11010001+00000001=11010010B

如,[+6]补=[+6]原=00000110B

[-6]补=28+(-6)=10000000–00000110=11111010B

8位补码的范围–128~+127。

0的个数:只一个,即00000000

而10000000B是-128的补码。

原码、反码、补码对照表:表1-2P10

4)补码的运算

当X≥0时,[X]补=[X]反=[X]原

[[X]补]补=[X]原

[X]补+[Y]补=[X+Y]补

[X-Y]补=[X+(-Y)]补

例:已知X=52Y=38求X-Y

计算机在做算术运算时,必需检查溢出,以防止发生错误

5)运算的溢出问题

资料字长(位数)有一定限制,所以资料的表示应有一个范围。如字长8位时;补码范围-128~+127

若运算结果超出这个范围,便溢出。

例:

错:两个负数相加和为正数。

可见:结果正确(无溢出)时,Cs+1=Cs

结果错误(溢出)时,Cs+1≠Cs

溢出判断:溢出=Cs+1Cs(即结果是0为无溢出;1为有溢出)

1、十进制数的编码

对机器:二进制数方便,

对人:二进制数不直观,习惯于十进制数。

在编程过程中,有时需要采用十进制运算,但机器不认识十进制数。怎么办?

可以将十进制的字符用二进制数进行编码:

这叫做二进制数对十进制编码——BCD码。

上述每4位二进制数表示一个十进制字符,这4位中各位的权依次是:8、4、2、1——8421BCD码。

BCD码的运算:

(1)BCD码加法规则

两个BCD数相加时,“某位”的和小于10则保持不变;

两个BCD数相加时,“某位”的和大于9,则和数应加6修正。

(2)BCD码减法规则

两个BCD数相减时,“某位”的差未发生借位,则差数保持不变;

两个BCD数相减时,“某位”发生了借位,其差应减6修正。

这里“某位”指BCD数中的“个位”、“十位”、“百位”、……

三、字符信息的表示

计算机能识别0、1、0、1、……;这些0、1、0、1、……有的代表

数值,有的仅代表要处理的信息(如字母、标点符号、数字符号等文字符号),所以,计算机不仅要认识各种数字,还要能识别各种文字符号。人们事先已对各种文字符号进行二进制数编码:

如,美国信息交换标准码——ASCII码,用一个字节表示一个字符。

低7位是字符的ASCII码值;最高位是通信时的校验位。

思考题:真值与码值有何区别?原码、反码、补码三者之间如何换算?

第五课:常用逻辑电路

常用逻辑电路

在逻辑电路中,输入和输出只有两种状态,即高电平和低电平。通常以逻辑“1”和“0”表示电平高低。

1、与门

是一个能够实现逻辑乘运算的、多端输入、单端输出的逻辑电路。

逻辑解释:

即如右边图所示,当开关A与B当中只有全部闭合(即为高电平1)时,才会有输出(即灯泡才会亮)所以在与门电路中,只有输入的全部条件为高电平“1”时输会有输出。

语言表达为:“有0出0,全1出1”

2、或门

是一个能够实现逻辑加运算的、多端输入、单端输出的逻辑电路。

逻辑解释:

即如右边图所示,当开关A与B当中只要有一个开关闭合(即为高电平1)时,就会有输出(即灯泡才会亮)所以在或门电路中,只要输入的为高电平“1”就会有输出。

语言表达为:“有1出1,全0出0”。

3、非门

是一个能够实现逻辑非运算的、单端输入、单端输出的逻辑电路。非就是反,就是否定,也就是输入与输出的状态总是相反。

逻辑解释:

如右边图所示,当开关K断开时灯亮,开关闭合时灯灭。如以开关断开为灯亮,开关接通为灭为结果,则开关K与灯泡的因果关系为非逻辑关系。

语言表达为:“有0出1,有1出0”。

复合逻辑门电路:

4.与非门

将一个与门与一个非门联接起来就构成了一个与非门。

根据与门和非门的逻辑功能,可以列出与非门逻辑关系真值表。其逻辑功能的特点是:“当输入全为1,输出为0;只要输入有0,输出就为1”。

5.或非门

将一个或门与一个非门联接起来就构成了一个或非门。

根据或门和非门的逻辑功能,可以列出与非门逻辑关系真值表。

其逻辑功能的特点是:

“当输入全为0,输出为1;只要输入有1,输出就为0”。

6.异或门

异或门只有两个输入端和一个输出端,。

其逻辑功能的特点是:“当两个输入端一个为0,另一个为1时输出为1,当两个输入端均为1或均为0时,输出为0”。

真值表如下:

异或门的作用是:把两路信号进行比较,判断是否相同。当两路输入信号不同,即一个为高电平,一个为低电平时,输出为高电平。反之当两个输出端信号相同时,即为高电平或低电平时,输出为低电平”。

触发器:

触发器是计算机记忆装置的基本单元,它具有把以前的输入‘记忆’下来的功能,一个触发器能储存一位二进制代码。下面我们简单的来介绍计算机中常用的几中触发器。1.R-S触发器

R-S触发器的逻辑符号如下图所示,它有两个输入端,两个输出端。其中,S为置位信号输入端,R为复位信号输入端;Q和Q非为输出端。规定Q为高、Q非为低时,该触发器为1状态;反之为0状态。其真值表如下。

2.D触发器

D触发器又称数据触发器,它的逻辑符号如下图所示,R、S分别为强制置0、置1端,触发器的状态是由时钟脉冲CLK上升沿到来时D端的状态决字。当D=1时,触发器为1状态;反之为0状态。其真值表如下

3.J-K触发器

J-K触发器的逻辑符号如下,R、S分别为强制置0、置1端。K为同步置0输入端。触发器的状态是由时钟脉冲CLK下降沿到来时J、K端的状态决定,其真值表如下

J-K触发器的逻辑功能比较全面,因此在各种寄存器、计算器、逻辑控制等方面应用最为广泛。但在某些情况,如二进制计数、移位元、累加等,多用D触发器。由于D触发器线路简章,所以大量应用于移位寄存器等方面。

寄存器:

寄存器是由触发器组成的,一个触发器是一个一位寄存器。多个触发器就可以组成一个多位的寄存器。由于寄存器在计算机中的作用不同,从而被命名不同,常用的有缓冲寄存器、移位寄存器、计数器等。下面我们就简单的来介绍下这些寄存器的电路结构及工作原理。1.缓冲寄存器

它是用来暂存某个数据,以便在适当的时间节拍和给定的计算步骤将数据输入或输出到其它记忆单元中去,下图是一个并行输入、并行输出的4位缓冲器的电路原理图,它由4

个D触发器组成。

启动时,先在清零端加清零脉冲,把各触发器置0,即Q端为0。然后,把数据加到触发器的D输入端,在CLK时钟信号作用下,输入端的信息就保存在各触发器中(D0~D3)。2.移位寄存器

移位寄存器能将所储存的数据逐位向左或向右移动,以达到计算机运行过程中所需的功能,请看下图

启动时,先在清零端加清零脉冲,使触发器输出置0。然后,第一个数据D0加到触发器1的串行输入端,在第一个CLK脉冲的上升沿Q0=Q0,Q1=Q2。Q3=Q0。其后,第二个数据D1加到串行输入端,在第二个CLK脉冲到达时,Q0=Q1,Q1=Q0,Q2=Q3=0。以此类推,当第四个CLK来到之后,各输出端分别是Q0=Q3,Q1=Q2,Q2=Q1,Q3=Q0。输出数据可用串行的形式取出,也可用并行开式取出。

3.计数器

计数器也是由若干个触发器组成的寄存器,它的特点是能够把存款在其中的数据加1或减1。计数器的种类也很多,有行波计数器、同步计数器等,下面我们就以行波计数器向大家作个介绍。

下图就是一个由J-K触发器组成的行波计数器的工作原理图。这种计数器的特点是:第一个时钟脉冲促使其最低有效位加1,使其由0变1;第二个时钟脉冲促使最低有效位由1变0。同时推动第二位,使其由0变1;同理,第二位由1变0时又去推动第三位,使其由0变1,这样有如水波前进一样逐位进位下去。

上图中的这个计数器是4位的,因此可以计0~15的数。如果要计更多的数,需要增加位数,

如8位计数器可计0~255的数,16位则可计0~65535的数。

4.三态门(三态缓冲器)

为减少信息传输线的数目,大多数计算机中的信息传输线均采用总线形式,即凡要传输的同类信息都走同一组传输线,且信息是分时传送的。在计算机中一般有三组总线,即数据总线、地址总线和控制总线。为防止信息相互干扰,要求凡挂在总线上的寄存器或内存等,它的传输端不仅能呈现0、1两个信息状态,而且还应能呈现第三种状态——高阻抗状态(又称高阻状态),即此时好像它们的输出被断开,对总线状态不起作用,此时总线可由其它器件占用。三态门即可实现上述的功能,它除具有输入输出端之外,还有一控制端,请看下图。

当控制端E=1时,输出=输入,此时总线由该器件驱动,总线上的数据由输入数据决定;

当控制端E=0时,输出端呈高阻抗状态,该器件对总线不起作用。当寄存器输出端接至三态门,再由三态门输出端与总线连接起来,就构成三态输出的级冲寄存器。如下图所示就是一个4位的三态输出缓冲寄存器。由于这里采用的是单向三态门,所以数据只能从寄存器输出到数据总线。如果要实现双向传送,则要用双向三态门。

在这里有个问题问下大家,前面我们已把触发器,寄存器的概念跟大家讲解了一下,那么触发器、寄存器、内存,这三者之间是一个什么样的关系呢?

答:通过前面的学习,我们知道触发器是计算机记忆装置的基本单元,一个触发器能储存一位二进制代码。寄存器是由触发器组成的。一个触发器就职一个一位的寄存器,多个触发器就可以组成一个多位的寄存器。内存是由大量寄存器组成的,其中每一个寄存器就称为一个存储单元。它可以存放一个有独立意义的二进制代码。

第六课:51单片机的结构及其组成

在前面的五节课当中,我们讲述的都是一些基础概念的知识,从这节开始,我们就正式的切入到我们所在学习的对象--51单片机。

学习单片机的内部结构之前,我们先了解下我们现在正在使用的计算机的几大组成部份:

计算机的五个组成部份:

运算器:用于实现算术和逻辑运算。计算机的运算和处理都在这里进行;

控制器:是计算机的控制指挥部件,使计算机各部份能自动协调的工作;

存储器:用于存放程序和数据;(又分为内存储器和外存储器,内存储器就如我们电脑的硬盘,外存储器就如我们的U盘)

输入设备:用于将程序和数据输入到计算机(例如我们电脑的键盘、扫描仪);

输出设备:输出设备用于把计算机数据计算或加工的结果以用户需要的形式显示或保存(例如我们的打印机)。

注:

1、通常把运算器和控制器合在一起称为中央处理器(Central Processing Unit),简称CPU。

2、通常把外存储器、输入设备和输出设备合在一起称之为计算机的外部设备。

上面讲的是我们的个人办公计算机,那么51单片机的内部又有些什么部件组成呢?

1、中央处理单元(8位)

数据处理、测试位,置位,复位位操作

2、只读存储器(4KB或8KB)

永久性存储应用程序,掩模ROM、EPROM、EEPROM

3、随机存取内存(128B、128B SFR)

在程序运行时存储工作变量和资料

4、并行输入/输出口(I/O)(32条)

作系统总线、扩展外存、I/O接口芯片

5、串行输入/输出口(2条)

串行通信、扩展I/O接口芯片

6、定时/计数器(16位、加1计数)

计满溢出、中断标志置位、向CPU提出中断请求,与CPU之间独立工作

7、时钟电路

内振、外振。

8、中断系统

五源中断、2级优先。

结构特点:

MCS-51系列单片机为哈佛结构(而非普林斯顿结构)

1)内ROM:4KB

2)内RAM:128B

3)外ROM:64KB

4)外RAM:64KB

5)I/O线:32根(4埠,每埠8根)

6)定时/计数器:2个16位可编程定时/计数器

7)串行口:全双工,2根

8)寄存器区:工作寄存器区、在内128B RAM中,分4个区,

9)中断源:5源中断,2级优先

10)堆栈:最深128B

11)布尔处理机:位处理机,某位单独处理

12)指令系统:五大类,111条

上图就是我们要研究学习的对象,51单片机摧部结构图了。大家看看上图,中间的一条双横线就是51单片机的内部总线了。其它的部件都是通过内部的总线与CPU相联接的,在第一节课时我们已跟大家讲述过,8051单片机是总线结构的。下面我们就51单片机内部的单个部件与大家进行讲解。

中央处理器(CPU):

刚跟大家讲过,需要提醒的是MCS-51的CPU能处理8位二进制数或代码。CPU是单片机的主要核心部件,在CPU里面包含了运算器、控制器以及若干寄存器等部件给成。

内部数据存储器(RAM):

MCS-51单片机芯片共有256个RAM单元,其中后128单元被专用寄存器占用(稍后我们详解),能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。地址范围为00H~FFH(256B)。是一个多用多功能数据存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。

内部程序存储器(ROM):

在前面也已讲过,MCS-51内部有4KB/8KB字节的ROM(51系列为4KB,51系列为8KB),用于存放程序、原始数据或表格。因此称之为程序存储器,简称内部RAM。地址范围为0000H~FFFFH(64KB)。

定时器/计数器

51系列共有2个16位的定时器/计数器(52系列共有3个16位的定时器/计数器),以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。定时时靠内部分频时钟频率计数实现,做计数器时,对P3.4(T0)或P3.5(T1)端口的低电平脉冲计数。

并行I/O口

MCS-51共有4个8位的I/O口(P0、P1、P2、P3)以实现数据的输入输出。具体功能在后面章节中将会详细论述。

串行口

MCS-51有一个可编程的全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为移位器使用。RXD (P3.0)脚为接收端口,TXD(P3.1)脚为发送端口。

中断控制系统

MCS-51单片机的中断功能较强,以满足不同控制应用的需要。51系列有5个中断源(52系列有6个中断源),即外中断2个,定时中断2个,串行中断1个,全部中断分为高级和低级共二个优先级别,优先级别的设置我们也将在后面进行详细的讲解。

定时与控制部件

MCS-51单片机内部有一个高增益的反相放大器,基输入端为XTAL1输出端为XTAL2。MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。

思考题:

1、MCS-51单片机的片内总体结构9个部件分别是什么?名起什么作用?这9大部件之间有什么联系?

2、怎样通过MCS-51单片机片内总体结构图来区分8051、8751、8031芯片?

第七课:51单片机的引脚

当我们拿到一块单片机芯片时,看到这么多的“大腿”,他们都有干什么用的?在这节课我们就针对这个问题进行讲解。

引脚功能:

MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图:

l P0.0~P0.7P0口8位双向口线(在引脚的39~32号端子)。

l P1.0~P1.7P1口8位双向口线(在引脚的1~8号端子)。

l P2.0~P2.7P2口8位双向口线(在引脚的21~28号端子)。

l P3.0~P3.7P2口8位双向口线(在引脚的10~17号端子)。

这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,初学者很难理解,这里都是按我自已的表达方式来写的,相信你也能够理解。

P0口有三个功能:

1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)

2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)

3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口只做I/O口使用:其内部有上拉电阻。

P2口有两个功能:

1、扩展外部存储器时,当作地址总线使用

2、做一般I/O口使用,其内部有上拉电阻;

P3口有两个功能:

除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。

有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,

即:编程脉冲:30脚(ALE/PROG)

编程电压(25V):31脚(EA/Vpp)

接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢?这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。

(注:这些引脚的功能应用,除9脚的第二功能外,在“新动力2004版”学习套件中都有应用到。)

在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。

ALE/PROG地址锁存控制信号:

在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。(在后面关于扩展的课程中我们就会看到8051扩展EEPROM电路,在图中ALE与74LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。ALE有可能是高电平也有可能是低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号负跳变(即由正变负)将P0口上低8位地址信号送入锁存器。当ALE是低电平时,P0口上的内容和锁存器输出一致。关于锁存器的内容,我们稍后也会介绍。

在没有访问外部存储器期间,ALE以1/6振荡周期频率输出(即6分频),当访问外部存储器以1/12振荡周期输出(12分频)。从这里我们可以看到,当系统没有进行扩展时ALE会以1/6振荡周期的固定频率输出,因此可以做为外部时钟,或者外部定时脉冲使用。

PORG为编程脉冲的输入端:在第五课单片机的内部结构及其组成中,我们已知道,在8051单片机内部有一个4KB或8KB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序的,那么我们是怎样把编写好的程序存入进这个ROM中的呢?实际上是通过编程脉冲输入才能写进去的,这个脉冲的输入端口就是PROG。

PSEN外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作。

1、内部ROM读取时,PSEN不动作;

2、外部ROM读取时,在每个机器周期会动作两次;

3、外部RAM读取时,两个PSEN脉冲被跳过不会输出;

4、外接ROM时,与ROM的OE脚相接。

参见图2—(8051扩展2KB EEPROM电路,在图中PSEN与扩展ROM的OE脚相接)

EA/VPP访问和序存储器控制信号

1、接高电平时:

CPU读取内部程序存储器(ROM)

扩展外部ROM:当读取内部程序存储器超过0FFFH(8051)1FFFH(8052)时自动读取外部ROM。

2、接低电平时:CPU读取外部程序存储器(ROM)。在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的。

3、8751烧写内部EPROM时,利用此脚输入21V的烧写电压。

RST复位信号:

当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。

XTAL1和XTAL2:

外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

VCC:电源+5V输入

VSS:GND接地。

思考题:

1、I/O是什么?I/O口是什么?

2、MCS-51单片机各引脚的功能是什么?

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

Top