单片机原理及应用 (2)2优秀课件.ppt
单片机原理及应用第1页,本讲稿共40页1.1 微型计算机的组成及工作原理微型计算机的组成及工作原理1.1.1 微型计算机中的基本概念1.微处理器2.微型计算机(1)单片微处理机(2)通用微型计算机3.微型计算机系统第2页,本讲稿共40页1.1.2 微机基本结构微型计算机的基本组成如图1.1所示,它由中央处理器(CPU)、存储器(Memory)、输入输出接口(I/O接口)和系统总线(BUS)构成。图1.1 微型计算机的基本组成第3页,本讲稿共40页1.1.3 微型计算机的基本工作过程微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能,这就是微型计算机的基本工作原理。第4页,本讲稿共40页1.2 典型单片机产品简介典型单片机产品简介1.2.1 MCS-51单片机系列MCS-51可分为两个子系列和4种类型,如表1-1所示。按资源的配置数量,MCS-51系列分为51和52两个子系列,其中51子系列是基本型,而52子系列属于增强型。表1-1 MCS-51系列单片机分类 资源配置子系列片内ROM的形式片内ROM容量片内RAM容量定时器与计数器中断源无ROMEPROME2PROM851系列80318051875189514KB128B21658C51系列80C3180C5187C5189C514KB128B2165852系列80328052875289528KB256B31668C252系列80C23280C25287C25289C2528KB256B3167第5页,本讲稿共40页l 80C51与与8051的比较的比较(1)MCS-51系列芯片采用HMOS工艺,而80C51芯片则采用CHMOS工艺。CHMOS工艺是COMS和HMOS的结合,(2)80C51芯片具有COMS低功耗的特点。例如8051芯片的功耗为630mW,而80C51的功耗只有120mW。(3)80C51在功能增加了待机和掉电保护两种工作方式,以保证单片机在掉电情况下能以最低的消耗电流维持。(4)此外,在80C51系列芯片中,内部程序存储器除了ROM型和EPROM型外,还有E2PROM型,例如89C51就有4KB E2PROM。并且随着集成技术的提高,80C51系列片内程序存储器的容量也越来越大,目前已有64KB的芯片了。另外,许多80C51芯片还具有程序存储器保密机制,以防止应用程序泄密或被复制。第6页,本讲稿共40页1.2.2 MCS-96系列单片机MCS-96系列单片机是Intel公司在1983年推出的16位单片机,它与8位机相比,具有集成度高、运算速度快等特点。它的内部除了有常规的I/O接口、定时器计数器、全双工串行口外,还有高速I/O部件、多路AD转换和脉宽调制输出(PWM)等电路,其指令系统比MCS-51更加丰富。1.2.3 ATMEL公司单片机ATMEL公司于1992年推出了全球第一个3V超低压F1ash存储器,并于1994年以E2PROM技术与Intel公司的80C31内核进行技术交换,从此拥有了80C31内核的使用权,并将ATMEL特有的Flash技术与80C31内核结合在一起,生产出AT89C51系列单片机。第7页,本讲稿共40页1.3 单片机的应用模式单片机的应用模式1.3.1 单片机应用系统的结构单片机应用系统的结构通常分为以下三个层次。(1)单片机:通常指应用系统主处理机,即所选择的单片机器件。(2)单片机系统:指按照单片机的技术要求和嵌入对象的资源要求而构成的基本系统。时钟电路、复位电路和扩展存储器等与单片机共同构成了单片机系统。(3)单片机应用系统:指能满足嵌入对象要求的全部电路系统。在单片机系统的基础上加上面向对象的接口电路,如前向通道、后向通道、人机交互通道(键盘、显示器、打印机等)和串行通信口(RS232)以及应用程序等。第8页,本讲稿共40页单片机应用系统三个层次的关系如图1.2所示图1.2 单片机应用系统三个层次的关系第9页,本讲稿共40页1.3.2单片机系统的开发过程通常开发一个单片机系统可按以下6个步骤进行。(1)明确系统设计任务,完成单片机及其外围电路的选型工作。(2)设计系统原理图和PCB板,经仔细检查PCB板后送工厂制作。(3)完成器件的安装焊接。(4)根据硬件设计和系统要求编写应用程序。(5)在线调试软硬件。(6)使用编程器烧写单片机应用程序,独立运行单片机系统。第10页,本讲稿共40页1.4 1.4 单片机的应用单片机的应用1.单片机在机、电、仪一体化等智能产品中的应用日常生活中含单片机的电器产品智能化的仪器仪表2.单片机在工业测控中的应用3.单片机在通信技术中的应用第11页,本讲稿共40页1.5 数制与编码数制与编码1.5.1数制的表示1.常用数制(1)十进制数)十进制数我们熟悉的十进制数有两个主要特点:有十个不同的数字符号:0、1、2、9;低位向高位进、借位的规律是“逢十进一”“借一当十”的计数原则进行计数。例如:1234.45=1103210231014100410-1510-2式中的10称为十进制数的基数,103、102、101、100、10-1称为各数位的权。十进制数用D结尾表示。第12页,本讲稿共40页(2)二进制数)二进制数在二进制中只有两个不同数码:0和1,进位规律是“逢二进一”“借一当二”的计数原则进行计数。二进制数用B结尾表示。例如,二进制数11011011.01可表示为:(11011011.01)2=12712602512412302212112002-112-2(3)八进制数)八进制数在八进制中有0、1、2、7八个不同数码,采用“逢八进一”“借一当八”的计数原则进行计数。八进制数用Q结尾表示。例如,八进制数(503.04)Q可表示为:(503.04)Q=582+081+380+08-1+48-2第13页,本讲稿共40页(4)十六进制数)十六进制数在十六进制中有0、1、2、9、A、B、C、D、E、F共十六个不同的数码,采用“逢十六进一”“借一当十六”的计数原则进行计数。十六进制数用H结尾表示。例如,十六进制数(4E9.27)H可表示为(4E9.27)H=4162141619160216-1716-22不同进制数之间的相互转换表1-4列出了二、八、十、十六进制数之间的对应关系,熟记这些对应关系对后续内容的学习会有较大的帮助。第14页,本讲稿共40页表表1-4 各种进位制的对应关系各种进位制的对应关系十进制二进制八进制十六进制十进制二进制八进制十六进制000091001119111110101012A2102211101113B3113312110014C41004413110115D51015514111016E61106615111117F711177161000020108100010817100012111第15页,本讲稿共40页(1)二、八、十六进制数转换成为十进制数)二、八、十六进制数转换成为十进制数根据各进制的定义表示方式,按权展开相加,即可转换为十进制数。【例1-1】将(10101)B,(72)Q,(49)H转换为十进制数。(10101)B=124023122021120=37(72)Q=781+280=58(49)H=41619160=73(2)十进制数转换为二进制数)十进制数转换为二进制数十进制数转换二进制数,需要将整数部分和小数部分分开,采用不同方法进行转换,然后用小数点将这两部分连接起来。第16页,本讲稿共40页整数部分:除2取余法。具体方法是:将要转换的十进制数除以2,取余数;再用商除以2,再取余数,直到商等于0为止,将每次得到的余数按倒序的方法排列起来作为结果。【例1-2】将十进制数25转换成二进制数所以(25)D=11001B第17页,本讲稿共40页小数部分:乘2取整法。具体方法是:将十进制小数不断地乘以2,直到积的小数部分为零(或直到所要求的位数)为止,每次乘得的整数依次排列即为相应进制的数码。最初得到的为最高有效数位,最后得到的为最低有效数字。【例1-3】将十进制数0.625转换成二进制数。所以(0.625)D=0.101B第18页,本讲稿共40页【例1-4】将十进制数25.625转换成二进制数,只要将上例整数和小数部分组合在一起即可,即(25.625)D=(11001.101)B例如:将十进制193.12转换成八进制数。所以(193.12)D (301.075)Q第19页,本讲稿共40页(3)二进制与八进制之间的相互转换由于23=8,故可采用“合三为一”的原则,即从小数点开始向左、右两边各以3位为一组进行二-八转换:若不足3位的以0补足,便可以将二进制数转换为八进制数。反之,每位八进制数用三位二进制数表示,就可将八进制数转换为二进制数。【例1-5】将(10100101.01011101)2转换为八进制数。010100101.010111010245.272即(10100101.01011101)B=(245.272)Q第20页,本讲稿共40页【例1-6】将(756.34)Q转换为二进制数。756.34111101110.011100即(756.34)Q=(111101110.0111)B(4)二进制与十六进制之间的相互转换由于24=16,故可采用“合四为一”的原则,即从小数点开始向左、右两边各以4位为一组进行二十六转换,若不足4位的以0补足,便可以将二进制数转换为十六进制数。反之,每位十六进制数用四位二进制数表示,就可将十六进制数转换为二进制数。第21页,本讲稿共40页【例1-7】将(1111111000111.100101011)B转换为十六进制数。0001111111000111.1001010110001FC7.958即(111111000111.100101011)B=(1FC7.958)H【例1-8】将(79BD.6C)H转换为二进制数。79BD.6C0111100110111101.01101100即(79BD.6C)H=(111100110111101.011011)B1.5.2 常用的信息编码常用的信息编码二十进制BCD码(Binary-CodedDecimal)二十进制BCD码是指每位十进制数用4位二进制数编码表示。由于4位二进制数可以表示16种状态,可丢弃最后6种状态,而选用00001001来表示09十个数符。这种编码又叫做8421码。见表1-5所示。第22页,本讲稿共40页表1-5 十进制数与BCD码的对应关系十进制数BCD码十进制数BCD码000001000010000100011100010001200101200010010300111300010011401001400010100501011500010101601101600010110701111700010111810001800011000910011900011001第23页,本讲稿共40页【例1-9】将69.25转换成BCD码。6 9 .2 5 0110 1001.0010 0101 结果为69.25=(01101001.00100101)BCD【例1-10】将BCD码100101111000.01010110转换成十进制数。1001 0111 1000.0101 0110 9 7 8 .5 6 结果为(100101111000.01010110)BCD=978.562.字符编码(字符编码(ASCII码)码)计算机使用最多、最普遍的是ASCII(American Standard Code For Information Interchange)字符编码,即美国信息交换标准代码,如表1.6所示。第24页,本讲稿共40页表1-6 七位ASCII代码表 d3 d2 d1d0位0 d6 d5d4位0000010100111001011101110000NULDELSP0Pp0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXDC33CScs0100EOTDC44DTdt0101ENQNAK5EUeu0110ACKSYN6FVfv0111BELETB7GWgw1000BSCAN8HXhx1001HTEM9IYiy1010LFSUB:JZjz1011VTESCKk1100FFFS,Ll1101CRGSMm1110SORSNn1111SIHSOoDEL第25页,本讲稿共40页ASCII码的每个字符用7位二进制数表示,其排列次序为d6d5d4d3d2d1d0,d6为高位,d0为低位。而一个字符在计算机内实际是用8位表示。正常情况下,最高一位d7为“0”。7位二进制数共有128种编码组合,可表示128个字符,其中数字10个、大小写英文字母52个、其他字符32个和控制字符34个。数字09的ASCII码为30H39H。大写英文字母AZ的ASCII码为41H5AH。小写英文字母az的ASCII码为61H7AH。对于ASCII码表中的0、A、a的ASCII码30H、41H、61H应尽量记住,其余的数字和字母的ASCII码可按数字和字母的顺序以十六进制的规律写出。第26页,本讲稿共40页3.奇偶校验码奇偶校验码奇偶校验码是在传送的代码上附加一个校验位,作为代码的比较校验。这样在接收方,先对信息代码按双方的校验规定求奇偶校验码,然后再与收到的附加校验位作比较,若相等则认为接收的代码是正确的,否则为错。奇偶校验就是鉴别代码中有奇数个“1,还是有偶数个“1。例如,有效信息为1011001,若采用偶校验码记为“0”的话,则有效代码为10110010;采用奇校验码记为“1”的话,有效代码则为10110011。有效代码的最后的那个数位,就是奇偶校验位。当接受方收到这组代码后,便根据奇、偶校验的约定和有效代码中“1”的个数形成校验码,然后再与接收的校验位作比较。比较相等的话,说明接受的信息正确;反之,则认为出现了错误。第27页,本讲稿共40页1.6 计算机数值数据表示与运算计算机数值数据表示与运算1.6.1 二进制数在计算机内的表示二进制数在计算机内的表示1.机器数机器数在计算机中,因为只有“0”和“1”两种形式,所以数的正、负号,也必须以“0”和“1”表示。通常把一个数的最高位定义为符号位,用0表示正,1表示负,称为数符:其余位仍表示数值。把在机器内存放的正、负号数码化的数称为机器数,把机器外部由正、负号表示的数称为真值数。第28页,本讲稿共40页【例1-11】真值为(-0101100)B的机器数为10101100,存放在机器中,如图1.3所示。图1.3真值B在机器中的存放要注意的是,机器数表示的范围受到字长和数据的类型的限制。字长和数据类型定了,机器数能表示的数值范围也就定了。例如,若表示一个整数,字长为8位,则最大的正数为01111111,最高位为符号位,即最大值为127。若数值超出127,就要“溢出”。最小负数为10000000,最高位为符号位,即最小值为-128。第29页,本讲稿共40页2.数的定点和浮点表示数的定点和浮点表示计算机内表示的数,主要分成定点小数、定点整数与浮点数三种类型。(1)定点小数的表示法定点小数是指小数点准确固定在数据某一个位置上的小数。一般把小数点固定在最高数据位的左边,小数点前边再设一位符号位。按此规则,任何一个小数都可以写成:N=NSN1N2NM,NS为符号位(2)整数的表示法整数所表示的数据的最小单位为1,可以认为它是小数点定在数值最低位右面的一种表示法。整数分为带符号和不带符号两类。对带符号的整数,符号位放在最高位。可以写成:N=NSNnNn1N2N1N0,NS为符号位第30页,本讲稿共40页一般定点数表示的范围和精度都较小,在数值计算时,大多数采用浮点数。(3)浮点数的表示方法浮点表示法对应于科学(指数)计数法,如数110.011可表示为:N=110.011=1.100112+10=11001.1210=0.1100112+11在计算机机中一个浮点数由两部分构成:阶码和尾数,阶码是指数,尾数是纯小数。其存储格式如图1.4所示。阶符阶码数符尾数图1.4存储格式【例1-12】设尾数为4位,阶码为2位,则二进制数N=211l011的浮点数表示形式为:第31页,本讲稿共40页 应当注意:浮点数的正、负是由尾数的数符确定,而阶码的正、负只决定小数点的位置,即决定浮点数的绝对值大小。带符号数的表示在计算机中,带符号数可以用不同方法表示,常用的有原码、反码和补码。(1)原码【例1-13】当机器字长n=8时:+1原0 0000001,-1原1 0000001 +127原0 1111111,-127原1 111111l第32页,本讲稿共40页 由此可以看出,在原码表示法中:最高位为符号位,正数为0,负数为1,其余n-1位表示数的绝对值。在原码表示中,零有两种表示形式,即:+000000000,-010000000。(2)反码【例1-14】当机器字长n=8时:+1反00000001,-1反11111110 +127反01111111,-127反10000000 由此看出,在反码表示中:正数的反码与原码相同,负数的反码只需将其对应的正数按位求反即可得到。第33页,本讲稿共40页 机器数最高位为符号位,0代表正号,1代表负号。反码表示方式中,零有两种表示方法:+0反00000000,-0反11111111。(3)补码【例1-15】当机器字长n8时,+1补00000001,-1补11111111+127补01111111,-127补10000001 由此看出,在补码表示中:正数的补码与原码、反码相同,负数的补码等于它的反码加l。机器数的最高位是符号位,0代表正号,1代表负号。在补码表示中,0有唯一的编码:0补0补00000000。补码的运算方便,二进制的减法可用补码的加法实现,使用较广泛。第34页,本讲稿共40页【例1-16】假定计算机字长为8位,试写出122的原码、反码和补码。122原122反122补01111010B【例1-17】假定计算机字长为8位,试写出45的原码、反码和补码。45原10101101B45反11010010B45补11010011B 对于用补码表示的负数,首先认定它是负数,而后用求它的补码的方法可得到它的绝对值,即可求得该负数的值。例如,补码数(11110011)B是一个负数,求该数的补码为(00001101)B,该数相应的十进制数为13,故求出(11110011)B为(13)D。【例1-18】试写出原码11011001的真值。(原码)补(原码)反110100111B39第35页,本讲稿共40页1.6.2 补码的运算在微处理机中,使用补码进行运算是十分方便的,它使同一个微处理机中既能运算带符号数又能运算不带符号的数。而且,在采用补码表示带符号数的情况下,两个数的减法可以用加法来实现。下面我们将会看到这一点。在进行带符号数的加减运算时,应把参与运算的数据转换成补码形式进行运算。当使用8位二进制数表示带符号的数时,它所能表示的数值范围在(-128)10(+127)10之间,如果相加结果超出了这个范围,就会导致错误发生。X+Y补=X补+Y补X-Y补=X补+-Y补第36页,本讲稿共40页【例1-20】两个带符号的数(01000001)2(十进制数+65)与(01000011)2(十进制数+67)例中是两个正数相加,但结果却是一个负数符号位为1。显然,这个结果是错误的,出现这种错误的原因就在于这两个数相加的结果超过了8位二进制带符号数所能表示的数值范围。【例1-21】两个负数(10001000)2和(11101110)2的相加情况。第37页,本讲稿共40页 由于规定用8位二进制数来表示带符号的数,故忽略作为进位位的第九位。按8位二进制数来解释这两个符号数的相加,其结果为一个正数。很明显,结果是错误的。【例1-22】两个无符号数(11111101)2和(00000011)2相加:从相加计算的结果来看,如果微处理机只有8位,也就是用8位二进制数来解释运算的结果,则将出现错误。因此,在微处理机中设有专门的一位,称为进位位,它将用于保存第九位以防丢失信息。第38页,本讲稿共40页1.6.3逻辑运算(1)“与”运算。“与”运算的运算规则是:00=0 01=010=011=1【例1-23】二进制数01011101B和11010101B相与。(2)“或”运算。“或”运算的运算规则是:00=001=110=111=1第39页,本讲稿共40页【例1-24】二进制数10101101和01010000相或。(3)“异或”运算。“异或”运算的运算规则是:00=001=110=111=0【例1-25】二进制数10101101和01101110相异或。第40页,本讲稿共40页