电子工程师自学速成(设计篇)_第1页
电子工程师自学速成(设计篇)_第2页
电子工程师自学速成(设计篇)_第3页
电子工程师自学速成(设计篇)_第4页
电子工程师自学速成(设计篇)_第5页
已阅读5页,还剩500页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子工程师自学速成(设计篇)目录TOC\h\h第1章单片机入门\h1.1概述\h1.1.1什么是单片机\h1.1.2单片机应用系统的结构与工作过程\h1.1.3单片机的开发过程\h1.1.4单片机的应用\h1.2单片机基础知识\h1.2.1单片机基础电路\h1.2.2数制与数制的转换\h1.2.3单片机中数的表示及运算\h第2章单片机硬件原理\h2.1单片机的结构\h2.1.1CPU\h2.1.2时钟振荡器\h2.1.3中断控制器\h2.1.4ROM\h2.1.5RAM\h2.1.6定时器/计数器\h2.1.7串行通信口\h2.1.8I/O接口\h2.1.9总线控制器\h2.2MCS-51系列单片机的引脚功能\h2.2.1基本工作条件引脚\h2.2.2输入/输出引脚\h2.2.3控制引脚\h2.3单片机的基本工作条件与工作时序\h2.3.1基本工作条件\h2.3.2工作时序\h2.4单片机的I/O接口\h2.4.1P0端口\h2.4.2P1端口\h2.4.3P2端口\h2.4.4P3端口\h2.5单片机的存储器\h2.5.1存储器基础知识\h2.5.2程序存储器\h2.5.3数据存储器\h第3章单片机的开发过程\h3.1单片机的硬件开发过程\h3.1.1明确单片机应用系统要实现的功能\h3.1.2选择单片机型号\h3.1.3设计单片机外围电路\h3.2单片机的软件开发过程\h3.2.1编写程序\h3.2.2编译或汇编程序\h3.2.3仿真、调试程序\h3.2.4用编程器将程序写入单片机\h第4章单片机编程\h4.1编程基础知识\h4.1.1指令和程序\h4.1.2编程语言\h4.1.3汇编语言指令格式\h4.1.4从实例了解单片机编程\h4.2寻址方式\h4.2.1立即寻址\h4.2.2直接寻址\h4.2.3寄存器寻址\h4.2.4寄存器间接寻址\h4.2.5变址寻址\h4.2.6相对寻址\h4.2.7位寻址\h4.3指令系统\h4.3.1数据传送类指令\h4.3.2算术运算类指令\h4.3.3逻辑运算类指令\h4.3.4程序控制类指令\h4.3.5位操作类指令\h4.4伪指令\h4.4.1汇编起始指令(Origin)\h4.4.2定义字节指令(DefineByte)\h4.4.3定义字指令(DefineWord)\h4.4.4定义预留存储单元指令(DefineSpace)\h4.4.5等值指令(Equate)\h4.4.6数据地址赋值指令\h4.4.7位地址符号赋值指令\h4.4.8汇编结束指令\h第5章中断技术\h5.1概述\h5.1.1什么是中断\h5.1.2中断的有关概念\h5.1.3中断的处理过程\h5.2中断系统的结构\h5.2.1中断源寄存器\h5.2.2中断允许寄存器IE\h5.2.3中断优先级控制寄存器IP\h5.3中断程序的编写\h5.3.1从实例了解中断程序的编写\h5.3.2中断程序的编写方法\h第6章定时器/计数器\h6.1概述\h6.1.1定时器\h6.1.2计数器\h6.2定时器/计数器的结构与工作原理\h6.2.1定时器/计数器的结构\h6.2.2定时器/计数器的工作原理\h6.3定时器/计数器的控制\h6.3.1定时器/计数器控制寄存器TCON\h6.3.2工作方式控制寄存器TMOD\h6.3.3定时器/计数器的工作方式\h6.4定时器/计数器的应用\h6.4.1利用定时器/计数器控制发光二极管的发光时间\h6.4.2利用定时器/计数器产生脉冲信号\h第7章串行通信技术\h7.1概述\h7.1.1串行通信方式\h7.1.2串行通信的数据传送方向\h7.2串行通信口的结构与工作原理\h7.2.1串行通信口的结构\h7.2.2串行通信口的工作原理\h7.3串行通信口的控制\h7.3.1串行控制寄存器SCON\h7.3.2电源控制寄存器PCON\h7.44种工作方式与波特率的设置\h7.4.1方式0\h7.4.2方式1\h7.4.3方式2\h7.4.4方式3\h7.4.5波特率的设置\h7.5串行通信口的应用\h7.5.1单工通信\h7.5.2双工通信\h第8章接口技术\h8.1输入接口\h8.1.1开关量输入接口\h8.1.2键盘输入接口\h8.1.3模拟量输入接口\h8.2输出接口\h8.2.1开关量输出接口\h8.2.2数字量输出接口\h8.2.3显示输出接口\h第9章Protel软件入门\h9.1概述\h9.2Protel99SE基础知识\h9.2.1Protel99SE的运行环境\h9.2.2Protel99SE的组成\h9.2.3Protel99SE设计电路的流程\h9.3Protel99SE使用入门\h9.3.1设计数据库文件的建立、关闭与打开\h9.3.2Protel99SE设计界面的介绍\h9.3.3文件管理\h9.3.4系统参数的设置\h第10章设计电路原理图\h10.1电路原理图编辑器\h10.1.1电路原理图编辑器界面介绍\h10.1.2图纸大小的设置\h10.1.3图纸的方向、标题栏、边框和颜色的设置\h10.1.4图纸网格的设置\h10.1.5图纸文件信息的设置\h10.1.6光标与网格形状和颜色的设置\h10.1.7系统字体的设置\h10.2电路原理图的设计\h10.2.1装载元件库\h10.2.2查找元件\h10.2.3放置元件\h10.2.4元件的编辑\h10.2.5绘制导线和节点\h10.2.6电源和接地符号的放置\h10.2.7输入/输出端口的放置\h10.2.8元件标号的查找、替换与重排\h10.3图形的绘制和文本、图片的编辑\h10.3.1直线的绘制\h10.3.2矩形的绘制\h10.3.3多边形的绘制\h10.3.4椭圆弧线的绘制\h10.3.5椭圆的绘制\h10.3.6扇形的绘制\h10.3.7曲线的绘制\h10.3.8文本的插入与设置\h10.3.9图片的插入与设置\h10.4层次原理图的设计\h10.4.1主电路与子电路\h10.4.2由上向下设计层次原理图\h10.4.3由下向上设计层次原理图\h10.5原理图报表的生成\h10.5.1ERC报表的生成\h10.5.2网络表的生成\h10.5.3元件清单表的生成\h10.5.4交叉参考元件表的生成\h10.5.5层次项目组织表的生成\h10.5.6原理图的打印输出\h第11章制作新元件\h11.1元件库编辑器\h11.1.1元件库编辑器的启动\h11.1.2元件库编辑器介绍\h11.2新元件的制作与使用\h11.2.1绘制新元件\h11.2.2修改已有的元件\h11.2.3绘制复合元件\h11.2.4新元件的使用\h11.3元件报表的生成与元件库的管理\h11.3.1元件报表的生成\h11.3.2元件库的管理\h第12章手工设计PCB\h12.1PCB设计基础\h12.1.1PCB的基础知识\h12.1.2PCB的设计过程\h12.1.3PCB编辑器\h12.1.4PCB设计前的设置\h12.1.5PCB编辑器参数设置\h12.2手工设计PCB的具体方法\h12.2.1放置对象\h12.2.2手工布局\h12.2.3手工布线\h第13章自动设计PCB\h13.1基础知识\h13.1.1PCB的自动设计流程\h13.1.2利用原理图生成网络表\h13.2自动设计PCB的具体方法\h13.2.1自动规划PCB\h13.2.2装载元件封装和网络表\h13.2.3自动布局元件\h13.2.4手工调整布局\h13.2.5自动布线\h13.2.6手工调整布线\h13.3PCB的显示\h13.3.1单层显示模式\h13.3.2三维显示模式\h13.4PCB报表的生成及PCB的打印\h13.4.1引脚报表的生成\h13.4.2电路板信息报表的生成\h13.4.3网络状态报表的生成\h13.4.4设计层次报表的生成\h13.4.5NC钻孔报表的生成\h13.4.6元件报表的生成\h13.4.7电路特性报表的生成\h13.4.8元件位置报表的生成\h13.4.9PCB的打印\h第14章制作新元件封装\h14.1元件封装库编辑器\h14.1.1元件封装库编辑器的启动\h14.1.2元件封装库编辑器介绍\h14.2制作新元件封装的方法\h14.2.1手工制作新元件封装\h14.2.2利用向导制作新元件封装\h14.3元件封装的管理\h14.3.1查找元件封装\h14.3.2更改元件封装名称\h14.3.3放置元件封装\h14.3.4删除元件封装\h14.3.5编辑元件封装引脚焊盘\h第1章单片机入门\h1.1概述\h1.1.1什么是单片机单片机是单片微型计算机(SingleChipMicrocomputer)的简称,由于单片机主要用于控制领域,所以国际上通常将单片机称作微型控制器(MicrocontrollerUnit,MCU)。单片机与微型计算机都是由CPU、存储器和输入/输出接口(I/O接口)等组成的,但两者又有所不同,微型计算机和单片机的基本结构分别如图1-1(a)和图1-1(b)所示。图1-1微型计算机与单片机的结构从图1-1可以看出,将CPU、存储器和输入/输出接口等部件安装在电路板上,外部输入/输出设备通过电路板上的接插件与输入/输出接口连接起来就组成了微型计算机;如果将CPU、存储器和输入/输出接口等做在一块集成电路内部,这种集成电路就是单片机,输入/输出设备通过单片机的引脚与内部输入/输出接口连接。图1-2所示就是一个具有40个引脚的单片机,其内部集成了CPU、存储器和输入/输出接口等电路。图1-2一种单片机的外形微型计算机可以根据需要更换电路板上的CPU、存储器和输入/输出接口部件,从而提升性能和扩展功能;而单片机是无法更换CPU、存储器和输入/输出接口的(因为它们都做在一块集成电路内部),如果要进行复杂的控制,可以选用功能强大的单片机。与单片机相比,微型计算机具有性能高、功能强的特点,但其价格昂贵,并且体积大,所以在一些不是很复杂的控制方面,如电动玩具、缤纷闪烁的霓虹灯和家用电器中完全可以采用价格低廉的单片机来进行控制。\h1.1.2单片机应用系统的结构与工作过程1.结构将CPU、存储器和输入/输出接口等制作在一块集成电路中就构成了单片机,但单独一块单片机集成电路是无法工作的,必须给它加一些外围电路,构成单片机应用系统才可以工作。典型的单片机应用系统的结构如图1-3所示。从图1-3中可以看出,一个典型的单片机应用系统包括单片机、输入电路和输入部件、输出电路和输出部件。2.工作过程图1-4所示为VCD影碟机托盘进出单片机控制电路,下面以它为例来说明单片机应用系统的工作过程。图1-3典型的单片机应用系统的结构图1-4VCD影碟机托盘进出单片机控制电路当按“出盒”键后,影碟机的托盘被推出机器,在托盘上放好光盘,然后往机器内轻推托盘,托盘马上将托盘检测开关S压上闭合,在A点得到一个低电平,该电平送到单片机后,单片机马上输出控制信号(高电平),该信号通过R2送到驱动管VT的基极,VT导通,有电流通过电动机,电动机运转将托盘收回到机器内;一旦托盘完全进入机器,与托盘联动的托盘检测开关S断开,A点得到一个高电平,该电平送入单片机后,单片机马上输出控制信号(低电平),驱动管VT截止,电动机停转。\h1.1.3单片机的开发过程单片机的开发主要指单片机应用系统的开发,包括硬件开发和软件开发。硬件开发是指根据单片机要实现的控制功能开发出实际的电路,如设计图1-4所示的VCD影碟机托盘进出单片机控制电路就是硬件开发。软件开发是指为单片机编写程序,使单片机在程序的控制下,接收输入端送入的信号并发出相应的控制信号,驱动硬件电路工作,从而实现相应的控制功能。如在图1-4所示的电路中,单片机要随时检测输入端有无信号输入,如果有信号输入,是高电平还是低电平,若是低电平输入应发出什么控制信号,若是高电平输入又应发出什么控制信号,这些都是由单片机内部的程序决定的。单片机的开发一般按图1-5所示的流程来进行,单片机的详细开发过程将在第3章介绍。图1-5单片机开发流程\h1.1.4单片机的应用单片机的应用非常广泛,已深入到工业、农业、商业、教育、国防及日常生活等各个领域。下面简单介绍一下单片机在其中一些领域的应用。1.单片机在家电方面的应用单片机在家电方面的应用主要有:彩色电视机、影碟机内部的控制系统,数码相机、数码摄像机中的控制系统,中高档电冰箱、空调器、电风扇、洗衣机、加湿机和消毒柜中的控制系统,中高档微波炉、电磁灶和电饭煲中的控制系统等。2.单片机在通信方面的应用单片机在通信方面的应用主要有:移动电话、传真机、调制解调器和程控交换机中的控制系统,智能电缆监控系统,智能线路运行控制系统,智能电缆故障检测仪等。3.单片机在商业方面的应用单片机在商业方面的应用主要有:自动售货机、无人值守系统、防盗报警系统、灯光音响设备和IC卡等。4.单片机在工业方面的应用单片机在工业方面的应用主要有:数控机床、数控加工中心、无人操作、机械手操作、工业过程控制、生产自动化、远程监控、设备管理、智能控制和智能仪表等。5.单片机在航空、航天和军事方面的应用单片机在航空、航天和军事方面的应用主要有:航天测控系统、航天制导系统、卫星遥控遥测系统、载人航天系统、导弹制导系统和电子对抗系统等。6.单片机在汽车方面的应用单片机在汽车方面的应用主要有:汽车娱乐系统、汽车防盗报警系统、汽车信息系统、汽车智能驾驶系统、汽车全球卫星定位导航系统、汽车智能化检验系统、汽车自动诊断系统和交通信息接收系统等。\h1.2单片机基础知识\h1.2.1单片机基础电路单片机内部主要由数字电路组成。为了在分析单片机内部电路结构时更容易理解,这里简单介绍一下单片机中常用的基础电路。1.与门与门如图1-6所示。它是一个由二极管和电阻构成的电路,其中A、B为输入端,Y为输出端,+5V电压经R1、R2分压,在E点得到3V的电压。图1-6二极管与电阻构成的与门(1)工作原理当A、B两端同时输入低电平(0V)时,由于E点电压为3V,所以二极管VD1、VD2都导通,E点电压马上下降到0.7V(低电平),即当A、B端均输入低电平“0”时,Y端输出低电平“0”。当A端输入低电平(0V)、B端输入高电平(5V)时,由于E点电压为3V,所以二极管VD1马上导通,E点电压下降到0.7V。此时VD2正端电压为0.7V,负端电压为5V,VD2处于截止状态,即当A端输入低电平“0”、B端输入高电平“1”时,Y端输出低电平“0”。当A端输入高电平(5V)、B端输入低电平(0V)时,VD1截止,VD2导通,E点电压为0.7V(低电平),即当A端输入高电平“1”、B端输入低电平“0”时,Y端输出低电平“0”。当A、B端同时输入高电平(5V)时,VD1、VD2均不能导通,E点电压为3V(高电平),即当A、B两端都输入高电平“1”时,Y端输出“1”。由此可见,与门的特点是:只有输入端都输入高电平时,输出端才会输出高电平;只要有一个输入端输入低电平,输出端就会输出低电平。(2)真值表真值表是列举电路的各种输入值和对应输出值的表格,它能使人们直观地看出电路的输入与输出之间的关系。表1-1是上述与门的真值表。(3)逻辑表达式真值表虽然能直观描述电路的输入和输出之间的关系,但比较麻烦且不便记忆,为此可以用一个关系式来表示电路的输入与输出之间的关系,该关系式称为逻辑表达式。上述与门的逻辑表达式为:式中:A、B之间的“·”表示“与”,读作“A”与“B”(或“A”乘“B”)。(4)逻辑符号图1-6所示的与门由4个元器件组成,在画图和分析时很不方便,为此可用一个简单的符号来表示整个与门,该符号称为逻辑符号。与门的逻辑符号如图1-7所示,其中旧符号是指早期采用的符号,常用符号是指有些国家采用的符号,新标准符号是指我国公布的最新的标准符号。表1-1与门的真值表图1-7与门逻辑符号2.或门(1)逻辑符号或门的逻辑符号如图1-8所示。(2)逻辑表达式或门的逻辑表达式为:(3)真值表或门的真值表见表1-2。图1-8或门逻辑符号表1-2或门的真值表由或门的真值表可以看出,或门的特点是:只要有一个输入端输入高电平,输出端就会输出高电平;只有输入端都为低电平时,输出端才输出低电平。3.非门(1)逻辑符号非门的逻辑符号如图1-9所示。(2)逻辑表达式非门的逻辑表达式为:式中:“-”表示非(或相反)。(3)真值表非门的真值表见表1-3。图1-9非门逻辑符号表1-3非门的真值表由非门的真值表可以看出,非门的特点是:输入状态与输出状态总是相反。4.与非门与非门由一个与门和一个非门组成,其逻辑结构及逻辑符号如图1-10所示。图1-10与非门的逻辑结构及逻辑符号(1)工作过程分析与非门的工作过程比较简单,下面以图1-10(a)来说明。当A端输入“0”、B端输入“1”时,与门的C端(输出端)会输出“0”,C端的“0”送到非门的输入端,结果非门的Y端(输出端)输出“1”。A、B端的其他3种输入情况读者可以按上述方法分析,这里不再赘述。(2)逻辑表达式与非门的逻辑表达式为:根据逻辑表达式很容易求出输入值和对应的输出值,例如当A=0、B=1时,Y=1。(3)真值表与非门的真值表见表1-4。表1-4与非门的真值表由与非门的真值表可以看出,与非门的特点是:只有输入端都为高电平时,输出端才输出低电平;只要有一个输入端为低电平,输出端就为高电平。5.或非门或非门由一个或门和一个非门组合而成,其逻辑结构及逻辑符号分别如图1-11(a)和图1-11(b)所示。(1)工作过程分析或非门的工作过程比较简单,下面以图1-11(a)来说明。当A端输入“0”、B端输入“1”时,或门的C端(输出端)会输出“1”,C端的“1”送到非门的输入端,结果非门的Y端(输出端)输出“0”。A、B端的其他3种输入情况读者可以按上述方法分析,这里不再赘述。(2)逻辑表达式或非门的逻辑表达式为:例如当A=0、B=1时,Y=0。(3)真值表或非门的真值表见表1-5。图1-11或非门的逻辑结构及逻辑符号表1-5或非门的真值表由或非门的真值表可以看出,或非门的特点是:只有输入端都为低电平时,输出端才为高电平;只要输入端有一个为高电平,输出端就为低电平。6.三态门(1)逻辑符号三态门的逻辑符号如图1-12所示。图1-12三态门逻辑符号三态门有输入端、输出端和控制端三端,它的输出不但取决于输入,还与控制端有关。以图1-12(a)所示的高电平有效型三态门为例,若控制端EN=1,输出端与输入端反相,即如果A=1时,输出端Y=0;若EN=0,输入端与输出端之间相当于开路,三态门处于高阻状态(又称悬浮状态或禁止状态),输入信号无法通过三态门。(2)三态门的应用在单片机中三态门常用于数据传送电路,利用它不但可以进行单向数据传送,还能进行双向数据传送。用三态门构成的数据传送电路如图1-13所示。图1-13三态门数据传送电路图1-13(a)所示为三态门构成的单向数据传送电路。当控制端EN=1时,两个三态门都导通,存储器输出的数据可以通过这两个三态门送到两根数据总线上。图1-13(b)所示为三态门构成的双向数据传送电路。当控制端EN=1时,三态门A导通,三态门B处于禁止状态,存储器输出的数据可以通过三态门A送到数据总线上;当控制端EN=0时,三态门A处于禁止状态,三态门B导通,数据总线上的数据可以通过三态门B送入存储器。7.寄存器单片机内部有大量寄存器,寄存器是一种能够存储数据的电路,由触发器构成。(1)触发器触发器是一种具有记忆存储功能的电路,由门电路组成。常见的触发器包括:RS触发器、D触发器和JK触发器等,其中D触发器最为常用。D触发器的逻辑符号如图1-14所示。图1-14D触发器逻辑符号从图1-14中可以看出,D触发器的端子包括:输入端D、输出端Q、反相输出端、时钟脉冲输入端CLK、置“0”端R和置“1”端S。数据存储过程:当D触发器的D端输入数据“1”时,数据并不能马上被存入触发器,只有CLK端时钟脉冲信号上升沿(即低电平转为高电平时)到来时,“1”才能被存入触发器,存入后Q端输出“1”,端输出“0”。也就是说,只有时钟脉冲上升沿到来时,D触发器才能将输入端的数据存储起来,并从Q端输出。D触发器的置“0”和置“1”:当置“0”端R为低电平时,触发器被置“0”,即Q端为“0”;当置“1”端S为低电平时,触发器被置“1”,即Q端为“1”。(2)寄存器寄存器是单片机内部的基本存储单元,由触发器构成,一个触发器就是1位寄存器。图1-15所示是一种由D触发器构成的4位寄存器。图1-15由D触发器构成的4位寄存器在工作时,寄存器先让清0线为低电平,该低电平送到各触发器的CLR端(实际为D触发器的R端),将各触发器清0,Y3Y2Y1Y0=0000;然后将数据送到各触发器输入端,当CLK端的时钟脉冲上升沿到来时,输入端的数据就被存入到各触发器中,并从输出端输出。8.锁存器锁存器也是一种能存储数据的电路。其特点是当锁存信号没有到来时,输出端的状态随输入端状态的变化而变化;当锁存信号来到时,输入端的数据被锁存到输出端,即当输入端的信号再变化时输出端也不会发生变化。下面以图1-16为例来说明锁存器的工作原理。图1-16锁存器示意图当锁存器的控制端EN=1时,锁存器输出端Y与输入端A的状态保持一致,即A端数据变化时,Y端数据也变化;当锁存器的控制端EN由“1”变为“0”时,输入端此刻的数据马上被锁存到输出端,在EN=0期间,输出端的数据始终保持不变,不会随输入端而变化;当EN又变为“1”时,即取消锁存,输出端又会随输入端的变化而变化。\h1.2.2数制与数制的转换1.数制数制就是数的进位制。日常生活中经常会接触到0、7、8、9、168、295等这样的数字,它们的进位制为十进制。另外,还有二进制和十六进制等。(1)十进制数十进制数有以下特点。①有10个不同的数码:0、1、2、3、4、5、6、7、8、9。任意一个十进制数均可以由这10个数码组成。②遵循“逢十进一”的计数原则。对于任意一个十进制数N,它都可以表示成:式中:m和n为正整数;an−1,an−2,…,a−m称为数码;10称作基数;10n−1,10n−2,…,10−m是各位数码的“位权”。例如:根据上面的方法可以将十进制数3259.46表示为3259.46=3×103+2×102+5×101+9×100+4×10−1+6×10−2。(2)二进制数十进制是最常见的数制,此外,还有二进制、八进制、十六进制等。在数字电路中,二进制用得最多。1)二进制数的特点二进制数有以下特点。①有两个数码:0和1。任何一个二进制数都可以由这两个数码组成。②遵循“逢二进一”的计数原则。对于任意一个二进制数N,它都可以表示成:式中:m和n为正整数;an−1,an−2,…,a−m称为数码;2称作基数;2n−1,2n−2,...,2−m是各位数码的“位权”。例如:二进制数11011.01可表示为11011.01B=1×24+1×23+0×22+1×21+1×20+0×2−1+1×2−2。注:为了说明数据为二进制数,一般在数据后加上“B”,十六进制数加上“H”。2)二进制数的四则运算。①加法运算。加法运算的法则是:“逢二进一”。具体有:当遇到“1+1”时向相邻高位进1。例如:求1011B+1011B=?可以用与十进制数相同的竖式计算即1011B+1011B=10110B②减法运算。减法运算的法则是:“借一当二”。具体有:当遇到“0−1”时,需向高位借1当2用。例如:求1100B−111B=?即1100B−111B=101B③乘法运算。乘法运算的法则是:“各数相乘,再作加法运算”。具体有:例如:求1101B×101B=?即1101B×101B=1000001B④除法运算。除法运算的法则是:“各数相除,再作减法运算”。具体有:例如:求1111B÷101B=?即1111B÷101B=11B(3)十六进制数十六进制数有以下特点。①有16个数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。这里的A、B、C、D、E、F分别代表10、11、12、13、14、15。②遵循“逢十六进一”的计数原则。对于任意一个十六进制数N,它都可以表示成:式中:m和n为正整数;an−1,an−2,…,a−m称为数码;16称作基数;16n−1,16n−2,…,16−m是各位数码的“位权”。例如:十六进制数3A6.DH可表示为3A6.DH=3×162+10×161+6×160+13×16−1。2.数制的转换(1)二、十六进制数转换成十进制数二、十六进制数转换成十进制数的方法是:将二、十六进制数各位数码与位权相乘后求和,就能得到十进制数。下面举例说明。二进制数转换成十进制数:101B=1×22+0×21+1×20=4+0+1=5十六进制数转换成十进制数:C6H=12×16+6×160=198(2)十进制数转换成二、十六进制数十进制数转换成二进制数的方法是:采用除2取余法,即将十进制数依次除2,并依次记下余数,一直除到商数为0,最后把全部余数按相反次序排列,就能得到二进制数。十进制数转换成十六进制数的方法与转换成二进制数基本相同,不同之处在于采用除16取余法。例如:将十进制数29转换成二进制数。即29=11101B例如:将十进制数181转换成十六进制数。即181=B5H(3)二进制数与十六进制数的相互转换①二进制数转换成十六进制数。二进制数转换成十六进制数的方法是:从小数点起向左、右按4位分组,不足4位的,整数部分可在最高位的左边加“0”补齐,小数点部分可在最低位右边加“0”补齐,每组用其对应的十六进制数代替,将各个十六进制数依次写出即可。例如:将二进制数1011000110.111101B转换为十六进制数。注:十六进制的16位数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,它们分别与二进制数0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111相对应。②十六进制数转换成二进制数。十六进制数转换成二进制数的过程与上述方法相反。其过程是:从左到右将待转换的十六进制数中的每个数码依次用4位二进制数表示。例如:将十六进制数31AB.6DH转换成二进制数。\h1.2.3单片机中数的表示及运算单片机中的数是以二进制表示的,分为有符号数和无符号数两种。1.有符号数的表示方法有符号数是指有“+(正)”、“−(负)”符号的数。由于单片机采用二进制数,所以只有“1”和“0”两种数字,其中用“0”表示“+”,用“1”表示“−”。单片机中的数据一般只有8位,一般规定最高位为符号位,因为要用1位表示数的符号,所以只有7位用来表示数值,可以表示−127~+128。有符号数的表示方法有3种:原码、反码和补码。同一有符号数,用3种表示方法得到的数是不同的。下面用3种方法来表示两个有符号数+1011101和−1011101。(1)原码用“1”表示“−”,用“0”表示“+”,其他各数保持不变,采用这种方法表示出来的数称为原码。+1011101用原码表示是01011101,可写成[01011101]原。−1011101用原码表示是11011101,可写成[11011101]原。(2)反码反码是在原码的基础上求得的。对于正的有符号数,其反码与原码相同;对于负的有符号数,其反码除符号位与原码相同外,其他各位数由原码各位数取反得到。+1011101用反码表示是01011101,可写成[01011101]反。−1011101用反码表示是10100010,可写成[10100010]反。(3)补码补码是在反码的基础上求得的。对于正的有符号数,其补码与反码、原码相同;对于负的有符号数,其补码除符号位与反码一致外,其他数由反码加1得到。+1011101用补码表示是01011101,可写成[01011101]补。−1011101用补码表示是10100011,可写成[10100011]补。2.有符号数的运算用原码表示有符号数简单、直观,但在单片机中,如果采用原码进行减法运算,需要很复杂的硬件电路;如果用补码,可以将减法运算变为加法运算,从而省去减法器而简化硬件电路。例如:用二进制减法运算和补码加法运算分别计算35−21。①二进制减法运算:35−21=00100011−00010101=00001110②用补码加法运算。先将算式转换成补码形式,35−21=[+35]+[−21]=[00100011]原+[10010101]原=[00100011]反+[11101010]反=[00100011]补+[11101011]补。再对补码进行二进制加法运算:从上面的运算过程可以看出,补码的符号也参与运算,在8位单片机中,由于数据长度只能有8位,上式结果有9位,第9位会自然丢失,补码加法的运算结果与二进制减法的运算结果是一样的,都是00001110=14。由此可见,用补码的形式进行运算,可以将减法运算转换为加法运算,运算结果仍是正确的,所以单片机普遍采用补码的形式表示有符号数。3.无符号数的表示方法无符号数因为不用符号位,8位全部用来表示数据,所以这种方法可以表示的数据范围是0~255。8位二进制数的不同表示方式的换算关系见表1-6。表1-68位二进制数的不同表示方式的换算关系续表从表1-6中可以看出,对于同一个二进制数,当采用不同的表示方式时,得到的数值是不同的,特别是大于10000000的有符号数。若想确切知道单片机中的二进制数所对应的十进制数是多少,先要了解该二进制数是有符号数还是无符号数,再换算出该二进制数对应的十进制数。\h第2章单片机硬件原理\h2.1单片机的结构单片机的种类很多,其中以Intel公司生产的MCS-51系列单片机应用最为广泛。由于各种单片机的工作原理基本相同,所以本书就以MCS-51系列单片机为例来介绍单片机技术。MCS-51系列单片机的具体型号很多,如Intel公司生产的8031、8051、8751、8032、8052和Atmel公司生产的AT89C51、AT89S51等都属于MCS-51系列单片机。MCS-51系列单片机的内部组成基本相同,具体如图2-1所示。图2-1MCS-51系列单片机的内部组成从图2-1可以看出,单片机内部主要由CPU、时钟振荡器、中断控制器、程序存储器(ROM)、随机存取存储器(RAM)、两个定时器/计数器、串行通信口、输入/输出(I/O)接口和总线控制器组成。\h2.1.1CPUCPU(中央处理器)是单片机的核心部件,决定了单片机的主要功能和特性。工作时,CPU从ROM中调取程序并进行运算,然后发出控制信号通过总线送到I/O接口,再由I/O接口将控制信号送到外围的输出电路。\h2.1.2时钟振荡器时钟振荡器的功能是产生时钟信号送给单片机内部各电路,并且控制这些电路,使它们有节拍地工作。时钟信号频率越高,内部电路工作速度越快。\h2.1.3中断控制器当CPU执行正常的程序时,如果在INT0或INT1端给中断控制器送入一个中断请求信号(一般为低电平信号),中断控制器马上让CPU停止正在执行的程序,转而去执行ROM中特定的某段程序,执行完该段程序后再继续执行先前中断的程序。MCS-51系列单片机中断控制器可以接受5个中断请求:两个外部中断请求、两个定时器/计数器中断请求和串行通信口中断请求。\h2.1.4ROMROM(只读存储器,又称程序存储器)是一种具有存储功能的电路,断电后其中的信息不会消失。ROM主要用来存储程序代码。欲使单片机完成不同的控制功能,可以将不同的程序写入到ROM中。工作时,CPU会自动从ROM中读取程序再进行运算,然后通过I/O接口向外部电路输出相应的控制信号。早期的ROM一般是单独的芯片,没有集成在单片机内部(如8031单片机内部就没有ROM,需要外接),现在的单片机基本上都将ROM集成在内部。ROM主要有下面几种。(1)MaskROM(掩膜ROM)MaskROM中的内容由厂家生产时一次性写入,以后不能改变。这种ROM成本低,适用于大批量生产。(2)PROM(可编程ROM)PROM中没有内容,编程者可将程序写入内部,但只能写一次,以后不能更改。如果PROM在单片机内部,PROM中的程序写错了,整个单片机便不能使用。(3)EPROM(紫外线可擦写PROM)EPROM是一种可擦写的PROM,采用EPROM的单片机上面有一块透明的石英窗口,平时该窗口被不透明的标签贴封,当需要擦除EPROM内部的信息时,可撕开标签,再用紫外线照射透明窗口15~30min,即可将内部的信息全部擦除,然后重新写入新的信息。(4)EEPROM(电可擦写PROM)EEPROM也是一种可反复擦写的存储器,但它不像EPROM需要用紫外线来擦除信息,该ROM只要加适当的擦除电压,就可以轻松快速地擦除其中的信息,然后重新写入信息。EEPROM反复擦写可达1000多次,目前主流单片机内部就采用这种ROM。\h2.1.5RAMRAM(随机存取存储器,又称可读写存储器、数据存储器)也是一种存储电路。RAM的特点是:可以存入信息(称作写),也可以将信息取出(称作读),断电后存储的信息会全部消失。单片机的RAM主要用来存储一些临时数据。\h2.1.6定时器/计数器定时器/计数器就像单片机的内部时钟或计数器,可以根据需要将它设为定时器或计数器。如果要求CPU在一段时间(如5ms)后执行某段程序,可让定时器/计数器工作在定时状态,定时器/计数器开始计时,当计到5ms后马上产生一个请求信号送到中断控制器,中断控制器则输出信号让CPU停止正在执行的程序,转而去执行ROM中特定的某段程序。如果定时器/计数器工作在计数状态,可以从T0或T1端输入脉冲信号,定时器/计数器开始对输入的脉冲进行计数,当计数到某个数值时,马上输出一个信号送到中断控制器,让中断控制器控制CPU去执行ROM中特定的某段程序。\h2.1.7串行通信口串行通信口是单片机和外部设备进行串行通信的接口。当单片机要将数据传送给外部设备时,可以通过串行通信口将数据由TXD端输出;外部设备送来的数据可以从RXD端输入,通过串行通信口将数据送入单片机。串行是指数据传递的一种方式,串行传递数据时,数据是一位一位进行传递的。\h2.1.8I/O接口MCS-51系列单片机有4组I/O接口,它们分别是P0、P1、P2和P3端口。单片机通过这些端口与外部设备连接。这4组端口都是复用端口,既可作为输出端口,也可以作为输入端口,具体作为哪种端口由单片机内部的程序来决定。当这些端口用作输入端口时,可以外接键盘、各种传感器和检测开关等输入部件;如果用作输出端口,可以接发光二极管、继电器等输出部件。单片机在工作时,输入部件通过输入端口将输入信号送入内部,CPU根据输入信号来执行ROM中的相关程序,然后从输出端口输出控制信号,控制输出部件工作。\h2.1.9总线控制器单片机内部用ROM来存储写入的程序,但内部的ROM容量通常较小,只能存储一些不复杂的程序,如果遇到一些大型复杂的程序,所占容量大,单片机内部的ROM将无法完全装下,解决这个问题的方法就是使用外接存储器。总线控制器主要用于控制外接存储器,使它能像单片机内部的存储器一样使用。\h2.2MCS-51系列单片机的引脚功能学习单片机技术,一定要了解单片机中各引脚的功能。MCS-51系列单片机共有40个引脚,各引脚的排列如图2-2所示。MCS-51系列单片机的40个引脚根据功能可以分作3类:基本工作条件引脚、输入/输出(I/O)引脚和控制引脚。\h2.2.1基本工作条件引脚单片机基本工作条件引脚有电源引脚、复位引脚和时钟引脚,只有具备了基本工作条件,单片机才能开始工作。图2-2MCS-51系列单片机各引脚排列图(1)电源引脚40脚为电源正极引脚(VCC),20脚为电源负极引脚(VSS)。电源正极引脚一般接5V电源,电源负极引脚接地。(2)复位引脚9脚为复位引脚(RST/VPD)。在单片机接通电源后,为了使内部电路正常工作,需要复位电路为它提供复位信号,使内部电路进入初始状态,然后才开始工作。MCS-51系列单片机采用高电平复位,即外接复位电路给复位引脚送入高电平信号后,就可以对单片机内部电路进行复位。9脚还具有掉电保持功能,为了防止掉电使单片机内部RAM中的数据丢失,可在该脚再接一个备用电源,掉电时,由备用电源为该脚提供4.5~5.5V的电压,可保持RAM中的数据不会丢失。(3)时钟引脚18、19脚为时钟引脚(XTAL2、XTAL1)。单片机内部有大量的数字电路,这些数字电路工作时需要时钟信号进行控制,才能有次序、有节拍地工作。单片机内部的时钟振荡器与时钟引脚外接的定时电路构成时钟振荡电路,产生时钟信号供给内部电路使用;另外,也可以由外部的振荡器产生时钟信号,通过时钟引脚送入单片机,供给内部电路。\h2.2.2输入/输出引脚MCS-51系列单片机有P0、P1、P2和P3共4组I/O接口,每组接口又有8个引脚:P0端口引脚P0.0~P0.7,P1端口引脚P1.0~P1.7,P2端口引脚P2.0~P2.7,P3端口引脚P3.0~P3.7。这4组接口既可用作输入端口将外部信号输入单片机,也可以用作输出端口将信号从单片机内输出。另外,这些接口还具有一些其他功能,具体说明如下。P0端口(32~39脚)的功能有:输入8路信号,输出8路信号,用作8位数据总线,或用作16位地址总线中的低8位地址总线。P1端口(1~8脚)的功能有:输入8路信号,输出8路信号。P2端口(21~28脚)的功能有:输入8路信号,输出8路信号,用作16位地址总线中的高8位地址总线。P3端口(10~17脚)的功能有:输入8路信号,输出8路信号。P3端口的8个引脚还具有其他功能,具体说明如下。P3.0:用作串行数据输入端(RXD)。P3.1:用作串行数据输出端(TXD)。P3.2:用作外部中断0请求信号输入端()。P3.3:用作外部中断1请求信号输入端()。P3.4:用作定时器/计数器T0的外部脉冲信号输入端(T0)。P3.5:用作定时器/计数器T1的外部脉冲信号输入端(T1)。P3.6:该端在写片外RAM时,输出写控制信号()。P3.7:该端在读片外RAM时,输出读控制信号()。P0、P1、P2、P3端口具有多种功能,具体应用哪一种功能,由单片机内部的程序来决定。需要注意的是,在某一时刻,端口的某一引脚只能用作一种功能。\h2.2.3控制引脚控制引脚的功能主要有:当单片机外接存储器(RAM或ROM)时,通过控制引脚控制外接存储器,使单片机能像使用内部存储器一样使用外接存储器;在向单片机编程(即向单片机内部写入编好的程序)时,编程器通过控制引脚使单片机进入编程状态,然后才能将程序写入单片机。控制引脚的功能说明如下。EA/VPP(31脚):存储器使用控制输入端/编程电压输入端。当EA=1(高电平)时,单片机使用内部存储器;当EA=0(低电平)时,单片机使用外接存储器。在用编程器往单片机写入程序时,要在该脚加12~25V的编程电压。PSEN(29脚):程序存储允许输出端。它是外部ROM读选通控制端,当单片机要从外接ROM中读取信息时,该端要输出一个低电平给外接ROM。ALE/(30脚):低8位地址锁存允许信号输出端/编程脉冲输入端。在外接存储器时,如图2-3所示,该脚输出控制信号到单片机的外接锁存器,让锁存器将P0端口送来的8位地址信号锁存起来,当作低8位地址信号A0~A7(高8位地址A8~A15由P2端口送出),这样P0端口不用再输出8位地址信号,就可以空闲下来,用来传送8位数据信号。在单片机编程时,编程器由该脚将编程脉冲输入单片机。图2-3单片机外接存储器\h2.3单片机的基本工作条件与工作时序\h2.3.1基本工作条件单片机是一种大规模的数字集成电路,它的基本工作条件是电源、复位信号和时钟信号,只有具备了这些条件,单片机才能开始工作。1.电源的提供单片机内部有各种电路,这些电路在工作时需要提供电源。40脚为电源正极引脚(VCC),20脚为电源负极引脚(VSS)。电源正极引脚一般接5V电源,负极引脚接地。2.复位电路单片机内部有大量的数字电路,在为这些电路提供电源的同时,还要给它们提供复位信号,让这些电路都进入初始状态,然后才开始工作。单片机的复位电路如图2-4所示,9脚为复位引脚(RST)。图2-4单片机的复位电路在接通+5V电源的瞬间,由于C1来不及充电,其两端的电压UC1为0V,R2两端的电压UR2为5V(UC1+UR2=5V),即单片机的9脚为高电平,该高电平信号进入9脚,对内部电路进行复位,让内部电路都进入初始状态。随着+5V电源对C1不断充电,C1两端的电压迅速上升,而R2两端的电压则迅速下降,当C1两端电压充到5V时,R2两端电压为0V,单片机9脚变为0V(低电平),复位完成,单片机的内部电路开始工作。由于该复位过程在单片机接通电源时就会自动进行,故又称上电复位。如果单片机工作不正常,可按一下复位开关S,在按下开关时,+5V电源通过R1加到9脚,9脚为高电平,该高电平对内部电路进行复位,使内部电路全部回到初始状态,当S断开时,9脚变为低电平,复位结束,单片机内部电路全部恢复到起始状态,然后重新开始工作。该复位过程称作手工复位。3.时钟电路为了让单片机的内部电路有次序、有节拍地工作,需要为这些电路提供时钟脉冲信号,让时钟信号来控制它们工作。有的电路来一个时钟脉冲就工作一次,有的电路需要来多个时钟脉冲才工作一次,如果没有时钟脉冲到来,这些电路就不能正常工作。时钟信号频率越高,这些电路的工作速度越快。18、19脚为时钟信号引脚(XTAL2、XTAL1)。单片机可采用两种时钟电路来提供时钟信号,如图2-5所示。图2-5单片机的时钟电路图2-5(a)采用了内时钟电路,单片机内部的反相放大器与XTAL2、XTAL1引脚外接的反馈兼选频电路(C1、C2、晶振)构成时钟振荡器,产生时钟信号提供给单片机的内部电路。如果晶振的频率为12MHz,则时钟振荡器产生的时钟信号频率为12MHz。图2-5(b)采用了外时钟电路,单片机外部的振荡电路产生的时钟信号经放大器放大后,进入XTAL2引脚,送给单片机的内部电路。单片机XTAL2、XTAL1引脚之间的内部放大电路由于无外接反馈选频电路,并且XTAL1引脚接地,所以不会产生振荡。\h2.3.2工作时序单片机是在时钟脉冲的控制下工作的,有的电路来一个时钟脉冲就可完成一次工作,而有的电路需要来多个时钟脉冲才能完成一次工作。为了方便分析工作时序,单片机中规定了几种周期:时钟周期、状态周期、机器周期和指令周期。1.时钟周期时钟周期是指振荡器产生的时钟信号周期,也即时钟振荡频率的倒数。例如:单片机时钟信号的频率为12MHz,那么时钟周期就为1/12μs。2.状态周期状态周期由两个时钟周期组成,它分为P1节拍和P2节拍,第1个时钟周期为P1节拍,第2个时钟周期为P2节拍。3.机器周期单片机在执行指令时,通常把执行过程划分成几个基本的操作,完成一个基本操作所需要的时间称为机器周期。一个机器周期由6个状态周期,也即12个时钟周期组成。4.指令周期指令周期是指执行一条指令所需要的全部时间,它通常为1~4个机器周期。例如,单片机在执行“MOVA,#C3H”指令时,需要2个机器周期,即24个时钟周期,若时钟周期为1/12μs,那么执行该指令需要2μs。\h2.4单片机的I/O接口MCS-51系列单片机有4组I/O接口:P0、P1、P2和P3。前面简单介绍了一下各个端口,要学好单片机技术,非常有必要详细了解这些端口的内部结构及工作原理。\h2.4.1P0端口P0端口有P0.0~P0.7共8个引脚,这些引脚除了可作I/O引脚外,在外接存储器时,还可作地址/数据总线引脚。P0端口每个引脚的内部电路结构都相同,其内部电路结构如图2-6所示。图2-6P0端口内部电路结构(1)当P0端口用作输出端口时如果要将P0端口用作输出端口,单片机内部的CPU会发出一个“0”到与门的控制端。控制端的“0”一方面关闭与门(即与门的一端为“0”时,不管另一端输入何种信号,输出都为“0”),使地址/数据总线送来的信号无法通过与门;另一方面控制电子开关,让电子开关与锁存器的端接通。此时若给锁存器的写锁存器端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和端输出,如D端输入“1”,则端输出“0”(Q端输出“1”),该“0”经电子开关送到场效应管VT2的栅极,VT2截止,从P0端口输出“1”。也就是说,当给P0端口内部的与门控制端送“0”,同时给写锁存器端送写脉冲信号时,单片机内部总线的信号就可以通过接口电路从P0端口输出。(2)当P0端口用作输入端口时当将P0端口用作输入端口时,P0端口的信号既送到三态门,又送到VT2的漏极。如果锁存器之前锁存的为“0”,即Q=0、=1,其中=1会使VT2导通,P0端口被钳在“0”电平上,“1”将无法送入P0端口。解决的方法是:在将数据输入P0端口前,先通过内部总线向锁存器写“1”,即让=0,VT2截止,P0端口输入的“1”就可以送到三态门的输入端,此时再给三态门的读引脚送一个读控制信号,“1”就可以通过三态门送到内部总线。也就是说,要将P0端口作为输入端口,先要将P0端口的锁存器写“1”,然后再给输入三态门送读控制信号,P0端口的数据就可以通过接口电路,送到单片机内部的总线上。(3)当P0端口用作地址/数据总线引脚时如果要将P0端口用作地址/数据总线引脚,先要给与门的控制端送“1”,于是与门打开,同时电子开关和非门输出端接通。当地址/数据总线为“1”时,“1”一方面通过与门送到VT1的栅极,VT1导通,另一方面送到非门,经反相变为“0”,再经电子开关送到VT2的栅极,VT2截止,VT1导通,VT2截止使P0端口输出为“1”;当地址/数据总线为“0”时,VT1导通,VT2也导通,P0端口输出为“0”。也就是说,当给与门的控制端送“1”时,内部地址/数据总线上的信号就可以从P0端口输出,P0端口就可当作地址/数据总线引脚使用。\h2.4.2P1端口P1端口有P1.0~P1.7共8个引脚,这些引脚可作I/O引脚。P1端口每个引脚的内部电路结构都相同,其内部电路结构如图2-7所示。图2-7P1端口内部电路结构从图2-7中可以看出,P1端口的结构较P0端口简单很多,由于P1端口内部采用了一只场效应管,并且与电源之间接了一只上拉电阻,所以不需要在P1端口的外部接上拉电阻。(1)当P1端口用作输出端口时如果要将P1端口用作输出端口,应给锁存器的写锁存器CL端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和端输出,如D端输入“1”,则端输出“0”(Q端输出“1”),该“0”送到场效应管的栅极,场效应管截止,从P1端口输出“1”。(2)当P1端口用作输入端口时当将P1端口用作输入端口时,如果锁存器以前锁存的为“0”,即Q=0、=1,其中=1会使场效应管导通,P1端口被钳在“0”电平上,“1”将无法送入P1端口。所以与P0端口一样,在将数据输入P1端口前,先要通过内部总线向锁存器写“1”,让=0,场效应管截止,P1端口输入的“1”就可以送到输入三态门的输入端,此时再给三态门的读引脚送一个读控制信号,“1”就可以通过输入三态门送到内部总线。\h2.4.3P2端口P2端口有P2.0~P2.7共8个引脚,P2端口每个引脚的内部电路结构都相同,其内部电路结构如图2-8所示。图2-8P2端口内部电路结构从图2-8中可以看出,P2端口的内部结构与P0端口很相似。P2端口也可作I/O引脚,在外接存储器时,还可以作为地址总线引脚。(1)当P2端口用作地址总线引脚时如果要将P2端口用作地址总线引脚,单片机内部的CPU会发出一个控制信号到电子开关的控制端,让电子开关与内部地址总线接通,地址总线上的信号就可以在通过电子开关、非门和场效应管后从P2端口引脚输出。(2)当P2端口用作I/O接口时如果要将P2端口用作I/O接口,单片机内部的CPU会发出一个控制信号到电子开关的控制端,让电子开关与锁存器接通。当将P2端口用作输出端口时,给锁存器的CL端送写脉冲信号,内部总线上的数据就被锁存进锁存器并从Q端输出,再通过电子开关、非门和场效应管从P2端口引脚输出。当将P2端口用作输入端口时,如果锁存器以前锁存的为“0”,即Q=0,经非门反相后会使场效应管导通,P2端口被钳在“0”电平上,“1”将无法送入P2端口。所以与P0、P1端口一样,在将数据输入P2端口前,先通过内部总线向锁存器写“1”,让Q=1,场效应管截止,P2端口输入的“1”就可以送到输入三态门的输入端,此时再给读引脚送一个读控制信号,“1”就可以通过三态门送到内部总线。\h2.4.4P3端口P3端口有P3.0~P3.7共8个引脚,P3端口可作为I/O接口,还可以用于其他方面。P3端口每个引脚的内部电路结构都相同,其内部电路结构如图2-9所示。图2-9P3端口内部电路结构(1)当P3端口用作I/O接口时如果要将P3端口用作I/O接口,应让与非门的选择输出功能端为“1”,以开通与非门。当将P3端口用作输出端口时,给锁存器的CL端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q端输出,再通过与非门和场效应管从P3端口引脚输出。当将P3端口用作输入端口时,应先通过内部总线向锁存器写“1”,让Q=1,场效应管截止,P3端口输入的信号就可以通过缓冲器、输入三态门送到内部总线。(2)当P3端口用作第二功能时P3端口用作第二功能(又称复用功能)时,实际上也是在该端口输入或输出信号,只不过输入、输出的是一些特殊功能的信号。所以当P3端口用作第二功能时,其内部电路的工作原理与用作I/O接口时是一样的,在用作输入功能时,端口的锁存器同样要先置“1”。P3端口8个引脚的第二功能详见表2-1。例如P3.2引脚用作第二功能时,该端口可输入由外部设备送到的中断请求信号,该信号通过缓冲器、输入三态门送到内部总线。P3端口除了可以接收外界的输入信号外,还可以接收内部的替代输入功能端送来的信号,该信号通过输入三态门送到内部总线。总之,P0、P1、P2和P3端口的功能是:都可以作输入或输出端口;P0、P2、P3端口具有第二功能,各种端口的第二功能见表2-1。例如,表中说明P0端口的第二功能可以用作低8位地址总线/数据总线,P2端口可用作高8位地址总线,P3.0端口可用作串行数据接收端。表2-1MCS-51系列单片机各端口的第二功能\h2.5单片机的存储器一般来说,电路设计好后,它的功能也就固定下来;而对于单片机,只要写入程序不同,它的功能就会发生变化。写入单片机的程序保存在程序存储器中,单片机在工作时通过执行程序存储器中的程序来实现不同的功能。单片机中有两种存储器:程序存储器和数据存储器。程序存储器用来存储编程人员写入的程序,而数据存储器用来存放单片机工作时的一些临时数据。进行单片机开发一定要了解单片机存储器的结构。\h2.5.1存储器基础知识1.存储器常用单位存储器的常用单位如下。位(bit):它是计算机中最小的数据单位。由于计算机采用二进制数,所以1位二进制数称作1bit,例如101011为6bit。字节(Byte,单位简写为B):8位二进制数称为一个字节,1B=8bit。字(Word):两个字节构成一个字,即2B=1Word。在单片机中还有一个术语:字长。所谓字长指单片机一次能处理的二进制数的位数。MCS-51系列单片机一次能处理8位二进制数,所以它的字长为8位。2.存储器的工作原理存储器的功能是存取各种二进制数据。存储器的结构如图2-10所示。图2-10中大虚线框内的部分为存储器的组成结构,它的容量为4bit,可以存储4bit二进制数;小虚线框内为存储体,存储体中有4个存储单元,每个存储单元可存储1bit二进制数。为了区分这4个存储单元,对这4个单元分别编号为00、01、10和11。存储器连接的引线有3种:A0、A1称为地址总线,D0称为数据总线,R/、称为控制总线。图2-10存储器的结构单片机在工作时,可以取出存储器中的数据,称作读(R);也可以将数据存入存储器,称作写(W)。下面以图2-10所示存储器为例来说明存储器的工作原理。(1)存储器的读过程下面以取出01单元中的“1”为例来说明存储器的读过程。首先让片选端=0、读/写控制端R/=1。=0经非门反相后变为“1”,它控制电子开关S2闭合;R/=1送到三态门1、三态门2的控制端,三态门1处于高阻状态,输入与输出之间相当于开路,三态门2则处于导通状态。这样数据总线D0就通过S2、三态门2与存储器内部接通。然后给地址总线A0、A1送地址信号,即让A0=1、A1=0,这两个地址信号经地址译码器译码后,从内部行线X0端输出“1”(即X0=1),从列线Y1端输出“1”(即Y1=1),X0=1选中00、01两个单元,Y1=1控制电子开关S1闭合。这样被选中的01单元中的数据“1”就可以通过S1、三态门2、S2送到外部数据总线D0上。虽然00单元也被X0=1选中,由于S0是断开的,所以该单元中的数据无法送到数据总线。(2)存储器的写过程下面以向01单元存入数据“1”为例来说明存储器的写过程。首先让片选端=0、读/写控制端R/=0。=0经非门反相后变为“1”,它控制电子开关S2闭合;R/=0送到三态门1、三态门2的控制端,三态门2处于高阻状态,输入与输出之间相当于开路,三态门1则处于导通状态。这样数据总线D0就通过S2、三态门1与存储器内部接通。然后给地址总线A0、A1送地址信号,即让A0=1、A1=0,这两个地址信号经地址译码器译码后,从内部行线X0端输出“1”(即X0=1),从列线Y1端输出“1”(即Y1=1),X0=1选中01单元,Y1=1控制电子开关S1闭合。这样外部数据总线D0上的数据“1”就可以通过S2、三态门1、S1存入被选中的01单元中。3.存储器有关术语(1)总线总线是指为多个部件传递信息的信号线。根据信号线上传递信息类型的不同,总线可分为地址总线、数据总线和控制总线。图2-10中的A0、A1为地址总线,用来传送地址信号;D0为数据总线,用来传送数据;R/、为控制总线,用来传送控制信号,其中R/为读/写控制端,当R/=1时,可以读取存储器中的数据,当R/=0时,可以向存储器写入数据,而片选端称为片选控制端,当多片存储器连接在一起时,要对其中一片进行读/写操作,可让该存储器的=0,而让其他存储器的=1。(2)存储容量存储器的功能是存储二进制数,其存储二进制数的多少称为存储容量。存储器存储容量的大小,取决于存储器中存储单元的多少和单元中存储二进制数的位数。图2-10所示的存储器有4个存储单元,每个单元存储1位二进制数,所以它的存储容量为4×1bit;如果每个单元能存储8位二进制数,那么它的容量就是4×8bit。大多数存储器的每个存储单元能存1B(8位二进制数),如果一片存储器中有1024(212)个存储单元,每单元存1B,该存储器的存储容量为1024×8bit,即1KB。(3)地址编号存储器中有很多存储单元,为了查找方便,需要给每个单元赋予不同的编号,这就是地址编号。图2-10所示的存储器中有4个存储单元,它们的地址可以用2位二进制数编号来表示,地址编号分别是00、01、10、11。如果一个存储器中有1024个存储单元,则至少需要用12位二进制数来表示,地址编号分别是000000000000,000000000001,…,111111111110,111111111111。存储器的存储单元越多,地址编号需要的二进制数位数越多。对于大容量的存储器,用二进制数进行地址编号非常不方便,也容易出错。为此,现在的存储器都用十六进制数地址编号来代替二进制数编号。二进制数地址编号转换成十六进制数地址编号的规则是:将二进制数地址编号从低到高4位编为一组,高位不足4位补0,再将每4位二进制数转换成十六进制数,得到的即为十六进制数地址编号。例如,二进制数地址编号000011000000B、11110100001B转换成十六进制数地址编号分别是0C0H、7A1H。4.存储器容量的扩展单片机内部存储器的容量一般不会很大,如果内部存储器容量不够用,可在单片机外围增加存储器进行容量扩展。图2-11所示就是一种单片机存储器容量扩展示意图。图2-11一种单片机存储器容量扩展示意图如果单片机要读取内部存储器中的数据,内部电路(图2-11中未画出)让线为“1”,R/线为“1”,并从地址总线A0~A15送出16位地址信号。=1让外部存储器不工作,=1经非门变为“0”,内部存储器被选中;R/=1控制内部存储器执行读操作;A0~A15送出的地址信号选中内部存储器中的某个存储单元,该单元中存储的数据就通过数据线D0~D7输出到单片机的某些电路。如果单片机要读取外部存储器中的数据,内部电路让线为“0”,R/线为“1”,并从地址总线A0~A15送出16位地址信号。=0让外部存储器工作,=0经非门变为“1”,内部存储器不工作;R/=1控制外部存储器执行读操作;A0~A15送出的地址信号选中外部存储器中的某个存储单元,该单元中存储的数据就通过数据线D0~D7输出,送入单片机内部。\h2.5.2程序存储器程序存储器(ROM)是存放程序的电路。单片机在编程时,一般先在计算机中用软件编写程序,再通过编程器将编好的程序写入到程序存储器中,单片机通过执行程序存储器中的程序来产生各种信号,从而实现各种控制。1.程序存储器的使用MCS-51系列单片机可以使用内部程序存储器,也可以使用外部程序存储器。MCS-51系列单片机使用内部程序存储器还是外部程序存储器,受31脚端的控制。当端=0时,单片机只能使用外部程序存储器,无法使用内部程序存储器。8031、8032单片机内部无程序存储器,只能使用外部程序存储器,因此端必须接地。当端=1时,单片机先使用内部程序存储器,容量不够时将会自动使用外部程序存储器。2.程序存储器的地址编号8x51(如8051、8751)单片机内部有4KB的程序存储器(该存储器内有4096个存储单元,每个单元存储1B),存储单元的地址编号是0000H~0FFFH,当进行扩展外接程序存储器时,可外接60KB的程序存储器,外部程序存储器的地址编号是1000H~FFFFH。8x51单片机程序存储器的地址编号如图2-12(a)所示。图2-12程序存储器的地址编号8x52(如8052、8752)单片机内部有8KB的程序存储器,地址编号是0000H~1FFFH,当进行扩展外接程序存储器时,可外接56KB的程序存储器,外部程序存储器的地址编号是2000H~FFFFH。8x52单片机程序存储器的地址编号如图2-12(b)所示。\h2.5.3数据存储器数据存储器(RAM)用来存放数据和运算结果等信息。与程序存储器一样,单片机除了可以使用内部数据存储器外,也可以使用外部数据存储器。MCS-51系列单片机的内部数据存储器有256B的存储空间(即有256个存储单元,每个单元存储1B数据),地址编号为00H~FFH(也可用0000H~00FFH表示);外部数据存储器地址编号为0000H~FFFFH,有64KB的存储空间。外部数据存储器最开始的一段地址(0000H~00FFH)与内部数据存储器相同,对于相同的地址,单片机是通过不同的指令来区分的。MCS-51系列单片机数据存储器的地址编号如图2-13所示。从图2-13中可以看出,内部数据存储器分为4个区:工作寄存器区、位寻址区、数据缓存区和特殊功能寄存器区。前3个区的详细结构如图2-14所示。图2-13MCS-51系列单片机数据存储器地址编号图2-14MCS-51系列单片机数据存储器前3个区的结构1.工作寄存器区工作寄存器区的地址编号为00H~1FH,该区域又分为4组(0~3组),每组有8个存储单元,都用R0~R7表示。单片机在工作时,在同一时间内这4组寄存器中只能有1组工作,到底是哪一组寄存器工作由特殊功能寄存器区内的程序状态字寄存器(PSW)中的RS1位和RS0位的状态决定,默认为0组工作,具体见表2-2。表2-2工作寄存器与RS1、RS0的关系例如,当寄存器中的RS1=0、RS0=1时,1组(08H~0FH)寄存器处于工作状态。2.位寻址区位寻址区的地址编号为20H~2FH,该区域有16个存储单元,在该区域既可以对某个存储单元进行字节操作,也可以用位操作指令对某个存储单元进行位操作。下面以图2-15为例来说明字节操作和位操作的过程。图2-15字节操作与位操作在进行字节操作时,用字节操作指令选中编址为24H的存储单元,然后可以将1B的数据存入该单元,或从该单元取出。图2-15(a)中是将1B的数据11011001存入编址为24H的存储单元。在进行位操作时,用位操作指令选中编址24H,该24H是一个位地址,在图中它是字节地址24H的第4位,该地址存储了一位数“0”,如果要将该位转换成“1”,可用位操作指令选中位地址24H,然后将“1”存入该位,该位就变为“1”,整个字节就变为11011001。单片机在工作时,是通过程序指令区分地址是字节地址还是位地址的,有关的指令知识将在后续章节介绍。地址编号为20H~2FH的位寻址区有16个存储单元,每个单元有8位,共有128位,这128位的位地址见表2-3。表2-3片内数据存储器中位寻址区的位地址3.数据缓存区数据缓存区又称用户数据区,或称作内部RAM区,它的地址编号为30H~7FH。该区域一般用来存储随机数据和运算中间结果等。4.特殊功能寄存器区特殊功能寄存器(SFR)区内是一些具有特殊功能的存储单元,地址编号是80H~FFH。特殊功能寄存器区中各个寄存器的地址分布见表2-4。表2-4特殊功能寄存器中各个寄存器的地址分布从表2-4中可以看

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论