片机技术及应用第一章单片机基础知识.ppt
单 片 机 技 术 及 应 用,第1章 单片机基础知识,第1章 单片机基础知识,1.1 单片微型计算机 单片微型计算机是制作在一块集成电路芯片上的计算机,简称单片机。它包括中央处理器(CPU),用RAM构成的数据存储器,用ROM构成的程序存储器,定时/计数器,各种输入/输出(I/O)接口和时钟电路。,1.1.1 单片机最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对一般的51系列单片机来说,由单片机、晶振电路和复位电路,便组成了一个最小系统.但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为最小系统。,1.1.2 单片机的基本知识 1.单片机 单片机是微型计算机中的一种,是把微型计算机中的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成在一块集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。,2单片机和单片机系统 单片机只是一个芯片,而单片机系统则是在单片机芯片的基础上扩展其他电路或芯片构成的具有一定应用功能的计算机系统。通常所说的单片机系统都是为实现某一控制应用需要由用户设计的,是一个围绕单片机芯片而组建的计算机应用系统。在单片机系统中,单片机处于核心地位,是构成单片机系统的硬件和软件基础。,3单片机应用系统和单片机开发系统 单片机应用系统是为控制应用而设计的,该系统与控制对象结合在一起使用,是单片机开发应用的成果。但由于软硬件资源所限,单片机系统本身不能实现自我开发,要进行系统开发设计,必须使用专门的单片机开发系统。,4 单片机的程序设计语言和软件 单片机程序设计语言和软件,主要是指在开发系统中使用的语言和软件。在单片机开发系统中使用机器语言、汇编语言和高级语言,而在单片机应用系统中只使用机器语言。机器语言是用二进制代码表示的单片机指令,用机器语言构成的程序称之为目标程序。汇编语言是用符号表示的指令,汇编语言是对机器语言的改进,是单片机最常用的程序设计语言。虽然机器语言和汇编语言都是高效的计算机语言,但它们都是面向机器的低级语言,不便记忆和使用,且与单片机硬件关系密切,这就要求程序设计人员必须精通单片机的硬件系统和指令系统。单片机也开始尝试使用高级语言,其中编译型语言有Pl、M5l、C-5l、C、MBASIC-51等,解释型的有MBASIC和MBASIC-52等。,1.1.3 单片机的发展概况 目前国际市场上8位、16位单片机系列已有很多,但是,在国内使用较多的系列是Intel公司的产品,其中又以MCS-51系列单片机应用尤为广泛,二十几年经久不衰,而且还在更进一步发展完善,价格越来越低,性能越来越好。单片机技术正以惊人的速度向前发展,就市场上已出现的单片机而言,其技术革新与进步主要表现在以下几个方面:,1.CPU的发展2.片内存储器的发展(1)片内存储器的发展(2)片内EPROM开始E2PROM化(3)闪速存储器(4)串行存储器(5)片内程序的保密措施3 片内输入输出接口功能单片机在工艺上的提高5.片内固化应用软件和系统软件,1.1.4 单片机主要品种简介 1.4位单片机 高档8位单片机的巨大产量挤占了部分4位机的市场。为了保住自己的领地,4位机的结构和功能也发生了很大的改进。其一是增强片内I/O功能,把应用系统所需的LED、LCD、VFD(FIP)显示器驱动电路都集成在单片机芯片内,使其成为“单片”控制器。目前8位单片机和16位单片机还很少做到这点。其二是提高指令执行速度,新型的4位单片机采用1.5m COMS工艺,其指令执行速度小于1s。其三是增大片内ROM、RAM,有的ROM已达到32KB,RAM已达到1K4位。其四是低压低功耗,有的在2.2V下也能正常工作,有的甚至在A级电流时也能正常工作。其实有的4位单片机性能已不低于8位单片机。,2.8位单片机 8位单片机年产量目前已达到十亿片,约占当年单片机产量的70%。主流机型是Intel公司的8051及其系列产品和派生产品。风靡全球的IC卡,大多采用此单片机构造。Motorola公司的6800(6502)派系也是很有名气的。其中MC68HC11是功能很强的8位单片机,具备16位机的I/O功能。而MC68HC05则具有4位单片机的价格,是4位单片机的强劲竞争者。Z80派系的单片机相对小一些,但NEC公司的PD78K系列的单片机功能较强,被誉为新一代的8位单片机。,3.16位单片机 16位单片机目前产量只占整个单片机市场的5%。16位单片机的性能都较高,有乘除指令、快速I/O功能。有的还有DMA传送,可支持C或者FORTH语言等等。其主要机型是Intel 的8096。美国国家半导体公司的HPC单片机性能价格比较高,已占CMOS工艺16位单片机销售量的首位。日本Hitachi公司的H8/500单片机的性能目前最高,其指令执行速度为200ns,片内FPROM/ROM达62K字节,片内RAM为2K字节,A/D为10位,转换时间为13.8 s,还有DMA功能。,4.32位单片机 32位单片机更多地称作32位嵌入式控制器。它主要应用于机器人、光盘、激光打印机等的控制器。这些控制器的地址线为2432位,寻址能力为16400MB,并且都有很高的指令执行速度和快速运算能力。例如,Intel公司的80960KB在20MHz时钟下,其指令速度为7.5MIPS,在它内部还有IEEE754标准的80位浮点运算部件,在25MHz时钟下,可以达到5.2Mwhetstones/s.这些控制器都能直接支持高级语言和实时多任务处理。,1.1.5 单片机的应用 单片机是在一块芯片上集成了一台微型计算机所需的CPU、存储器、输入/输出部件和时钟电路等。因此它具有体积小,使用灵活、成本低、易于产品化、抗干扰能力强,可在各种恶劣环境下可靠地工作等特点。特别是它应用面广,控制能力强,使它在工业控制、智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。,单片机主要可用于以下几方面:1.测控系统中的应用 控制系统特别是工业控制系统的工作环境恶劣,各种干扰也强,而且往往要求实时控制,故要求控制系统工作稳定、可靠、抗干扰能力强。单片机是最适宜用于控制领域。例如炉子恒温控制、电镀生产线自动控制等。,2.智能仪表中的应用 用单片机制作的测量、控制仪表,能使仪表向数字化、智能化、多功能化、柔性化发展,并使监测、处理、控制等功能一体化,使仪表重量大大减轻,便于携带和使用,同时降低了成本,提高了性能价格比。如数字式RLC测量仪、智能转速表、计时器等。,3.智能产品 单片机与传统的机械产品结合,使传统机械产品结构简化、控制智能化,构成新型的机、电、仪一体化产品。如数控车床、智能电动玩具、各种家用电器和通信设备等。,4.在智能计算机外设中的应用 在计算机应用系统中,除通用外部设备(键盘、显示器、打印机)外,还有许多用于外部通信、数据采集、多路分配管理、驱动控制等接口。如果这些外部设备和接口全部由主机管理,势必造成主机负担过重、运行速度降低,并且不能提高对各种接口的管理水平。如果采用单片机专门对接口进行控制和管理,则主机和单片机就能并行工作,这不仅大大提高系统的运算速度,而且单片机还可对接口信息进行预处理,以减少主机和接口间的通信密度、提高接口控制管理的水平。如绘图仪控制器,磁带机、打印机的控制器等等。,计算机中数和字符的表示,1.概述,2.无符号数的表示,3.有符号数的表示,4.定点数和浮点数,5.计算机中的二进制编码,一、计算机中数和字符的存放 数据存放于存储器或寄存器中。数据按字长一般分为:8位(字节BYTE,简写为B)16位(字WORD)32位(双字DWORD)64位、128位、256位,概述,二、数制及其转换 1、数制十进制(Decimal)后缀加“D”例如:25D或25(后缀可略)二进制(Binary)后缀加“B”例如:11010001B八进制(Octonary)后缀加“O”或“Q”例如:76Q十六进制(Hexadecimal)后缀加“H”例如:0F6H(字符开头的数前需加“0”),2、数制之间的转换任意进制转换为十进制 例如:10101101B=27+25+23+22+20=179 4F.8H=4*161+15*160+8*16-1=79.5十进制转换为任意进制 整数部分:连续除以基数取余倒计法小数部分:连续乘以基数取整顺计法,二进制与十六进制间的转换一个十六进制数对应四位二进制数 例如:6E3.C2H=0110 1110 0011.1100 0010B 110 0111.1110 10B=67.E8H,三、二进制数的运算 1、二进制数的算术运算特点:按一定字长进行,运算结果超过字长则产生进位、借位或自动丢失。,2、二进制数的逻辑运算特点:按位进行,无进位或借位,4)逻辑异或XOR 11010001 XOR 11100101 00110100,3)逻辑反(非)NOT NOT 11010011=00101100,四、关于模(MOD)的概念,简单地说,模是能表示的最大数再加1。例如,8位寄存器能表示的最大数是 11111111B=255 其模为28=256(MOD 28)计算机中的运算都是在一定模值下进行的,例:200+85=29(MOD 28)9+4=1(MOD 12),计算机中数和字符的表示,1.概述,2.无符号数的表示,3.有符号数的表示,4.定点数和浮点数,5.计算机中的二进制编码,当n=8时,可表示的无符号数的范围为0255,当n=16时,可表示的无符号数的范围为 065535。,在计算机中最常用的无符号整数是表示地址的数,无符号数的表示,计算机中数和字符的表示,1.概述,2.无符号数的表示,3.有符号数的表示,4.定点数和浮点数,5.计算机中的二进制编码,1机器数与真值 计算机中的数是用二进制表示的,数的符号也是用二进制表示的。通常一个数的最高位为符号位,为0表示正数,为1表示负数。若字长为8位的计算机,则D7为符号位,D6D0为数值位。,有符号数的表示,这种符号数码化的数称为机器数。机器数所代表的实际数值称为真值。若计算机的字长为n位,则n位有符号数可表示的数X的范围是-2n-1 X+(2n-11)当n=8时,可表示的有符号数的范围为-128127,当n=16时,可表示的有符号数的范围为-3276832767。机器数可以用不同的码制来表示,常用的有原码和补码表示法。,2原码表示法 最高位为符号位,0表示正数,1表示负数,其余各位为数值位,这种表示法称为原码表示法。例:若X=97 则X原=01100001B 若X=97 则X原=11100001B 原码表示数0有两种表示形式:0原=00000000B 0原=10000000B,注意:n位原码可表示的数X的范围是:2n-1+1X2n-1-1,3反码表示法 反码表示法中,正数的反码和原码相同;负数的反 码可由其原码除符号位,保持不变外,其余各位按位取反,即0变1、1变0。例:若X=45,X反=00101101B X=-45,X反=11010010B,4.补码表示法 补码表示法中,正数的补码和原码相同;负数的补码可由其原码除符号位,保持不变外,其余各位按位取反,再在最末位加1而形成。例:假设机器字长为8位,则 X原=01100001B 则 97补=01100001B X原=11100001B 则 97补=10011111B 10011110B+1,补码具有以下特点:0补=0补=00000000B n位二进制补码所能表示的数值范围为:2n-1X2n-11 若n=8,则8位二进制补码所能表示的数值范围为128127。对于一个用补码表示的负数,如果将X补再求一次补,即将X补除符号位外取反并在最末位加1就可得到 X原。用下式表示为:X补补=X原,-15 补补=10001111 B补补=11110001B补=10001111 B=-15原 注意:10000000补=-128原=10000000 B,二进制数码 无符号数 原 码 反 码 补 码00000000 0+0+0+0 00000001 1+1+1+100000010 2+2+2+2:01111110 126+126+126+12601111111 127+127+127+12710000000 128-0-127-12810000001 129-1-126-12710000010 130-2-125-126:11111110 254-126-1-211111111 255-127-0-1,5.补码的加减运算(1)补码的加法运算规则是:XY补=X 补Y补 该式表明,当有符号的两个数采用补码形式表示时,进行加法运算可以把符号位和数值位一起进行运算(若符号位有进位,则丢掉),结果为两数之和的补码形式。,例:用补码进行下列运算:(33)(15);(33)(15),解:,Y补是对减数进行求负操作。一般称已知 Y补求得 Y补的过程叫变补或求负。,变补运算(NEG)已知+X补求-X补规则:全部位(含符号位)按位取反后再加1,例:已知+15补=00001111B则-15补=11110000B+1=11110001B或:0-+15补=0-00001111B=11110001B,解:若X=33,Y=15 X补=00100001B Y补=00001111B Y补=11110001B 00100001B X 补+11110001B Y补 自然丢失 1 00010010B 18 补,例:用补码进行XY运算,若 X=33 Y=15 则 33补=11011111B 15补=11110001B 15补=00001111B 11011111B 33 补+00001111B 15补 11101110 18补,补码的作用:1、引入补码后,将减法运算转化为易于实现的加法运算,且符号位也当作数据相加,从而可简化运算器的结构,提高运算速度。因此,在微型计算机中,有符号数通常都用补码表示,得到的是补码表示的结果。2、当字长由8位扩展到16位时,对于用补码表示的数,正数的符号扩展应该在前面补0,而负数的符号扩展应该在前面补1。例:机器字长为8位,46补=00101110B,46=11010010B,从8位扩展到16位 46补=0000 0000 0010 1110B=002EH 46补=1111 1111 1101 0010B=FFD2H,6.有符号数运算时的溢出问题 当两个有符号数进行加减运算时,如果运算结果超出可表示的有符号数的范围时,就会发生溢出,使计算结果出错。显然,只有两个同符号数相加或两个异号数相减时,才会产生溢出。,例:设机器字长为8位,以下运算都会发生溢出(88)(65)=153 127(88)(-65)=153 127(83)(80)=163 128,(2)带符号数的溢出OFOF=CYD7 CYD6(MOD 28)或OF=CYD15 CYD14(MOD 216),CYD6=1,CYD7=1,计算机中数和字符的表示,1.概述,2.无符号数的表示,3.有符号数的表示,4.定点数和浮点数,5.计算机中的二进制编码,在计算机中,数值数据有两种表示法:定点表示法和浮点表示法。分别称为定点数和浮点数。,1.定点数 定点数是指小数点在数中的位置是固定不变的,常用的定点数有纯小数和纯整数两种。纯小数:小数点固定在符号位之后,如 1.1100111B,此时机器中所有数均为小数。纯整数;小数点固定在最低位之后,如 111001l1.B,此时机器中所有数均为整数。,定点数和浮点数,2.浮点数 浮点数由阶码和尾数两部分组成。对任意一个有符号的二进制数N的普遍形式可表示为 N=2EM,式中E称为N的阶码,是一个有符号的可变整数。设 Eejek1e0ej为阶符:若ej=0,则E是正数;若ej=1,则E为负数。ek-1e0是阶值。,式中M称为N的尾数,是一个有符号的纯小数。设 M=mjm1 mnmj为尾符:若mj=0,则M为正数;若mj=1,则M为负数。尾数M的符号就是浮点数N的符号。m1mn是尾值。,浮点数N在计算机内的表示形式如下所示。,ek-1ek-2e0,3规格化数与溢出 为了便于浮点数的运算,数采用规格化表示。对尾数规格化作如下定义:若mjm1,则称尾数M为规格化数;若mj=m1,则称尾数M为非规格化数。例如,N=20110.0010100,显然尾数 0.001010为非规格化数。如果尾数不是规格化数,那么要用移位手段把它变为规格化数。尾数每左移一位,阶码就减1,尾数每右移一位,阶码就加1,直至mjm1为止。以左移操作实现尾数的规格化称为左规,以右移实现规格化称为右规。如上例中的N为非规格化数,则将0.0010100左移两位后,变成0.1010000,此数已是规格化数,不再左移,从阶码011中减去010,得001。所以规格化后的N应为20010.1010000。存储在计算机中的数一定是规格化数。两数的运算结果也应为规格化数,如果不是,那么必须通过移位方式把它变为规格化数。,当浮点数超出机器所能表示数的范围时,我们称为溢出。对规格化的浮点数,当阶码小于机器所能表示的最小数时,称为下溢,此时机器将把此数作0处理;若阶码大于机器所能表示的最大范围时,称为上溢。溢出发生时,机器就产生溢出中断,进入中断处理。浮点表示法比定点表示法所表示的数的范围大,精度高,但运算规则比较复杂,成本较高。早期的微型计算机采用定点表示,机器中数均为整数,没有处理浮点数的指令。为了弥补这方面的不足,专门设计了相应的数值协处理器(8087、80287、80387等)来实现对浮点数的运算。80486、80586的数值协处理器已集成在CPU芯片内部。在本教材中,若无特别说明,数据均采用纯整数定点表示。,计算机中数和字符的表示,1.概述,2.无符号数的表示,3.有符号数的表示,4.定点数和浮点数,5.计算机中的二进制编码,1.BCD码(Binary Coded Decimal)BCD码是以四位二进制的不同组合表示十进制数十个数码的方法,又称二十进制编码。常用的BCD码为8421 BCD码,即每位十进制数码用四位二进制数来表示,四位二进制数从高到低的权值分别为23、22、21、20即 8421。8421 BCD码如表所示。,计算机中的二进制编码,表:8421BCD码,例:十进制数和BCD码相互转换。将十进制数86.5转换为BCD码:86.5=(1000 0110.0101)BCD 将BCD码1001 0111.0100转换为十进制数:(1001 0111.0100)BCD=97.4,根据在存储器中的不同存放格式,BCD码又分为压缩型BCD码:一个字节中存放两个十进制数码非压缩型BCD码:每个字节只存放一个十进制数,例:将十进制数8762用压缩型BCD码表示,则为:1000 0111 0110 0010在存储器中的存放格式为:,高,低,非压缩型BCD码:0000 1000,0000 0111,0000 0110,0000 0010在存储器中的存放格式为:,高,低,2.ASCII码(American Standard Code for Information Interchange)由于计算机处理信息要涉及到各种字符,这些字符都必须用二进制代码来表示,在微型计算机中普遍采用美国信息交换标准码,即ASCII码。附录1给出了ASCII码表,以便查阅。ASCII码采用7位二进制编码,总共有128个字符,包括52个英文大、小写字母,10个阿拉伯数字09,32个通用控制字符和34个专用字符。例如,数字09的ASCII码分别为30H39H,英文大写字母 AZ的 ASCII码为 41H5AH。ASCII码表中有一些符号是作为计算机控制字符使用的,这些控制符号有专门用途,表中给出了这些控制字符的含义。例如,回车字符CR的ASCII码为0DH,换行符LF的ASCII码为0AH等。,计算机中,所有信息(字符、数据)都用ASCII码表示,一个字符在存储器中占一个字节。显示、打印时用ASCII字符,如串School,低,高,School,通常,为便于存储,7位ASCII码在最高位加1位组成8位代码。最高位常用作奇偶校验位奇校验时,每个代码的二进制位应有奇数个1偶校验时,每个代码的二进制位应有偶数个1 7位二进制码称为标准的ASCII码。近年来,在标准ASCII码基础上,为表示更多符号,将7位ASCII码扩充到8位,可表示256个字符,称为扩充的ASCII码。扩充的ASCII码可以表示某些特定的符号,如希腊字符、数学符号等。扩充的ASCII码只能在不用最高位做校验位或其他用途时使用。,美国标准信息交换码ASCII码,重点内容,整数的二进制和十六进制表示有符号整数的原码、反码和补码表示数的BCD编码数的ASCII编码,1、将146.25转换为二进制、十六进制和BCD码。2、将123和-75用8位二进制数,表示出它的原码、反码和补码 3、完成下列各小题的X+Y、X-Y运算(1)X、Y为无符号数(2)X、Y为有符号数已知:X=3AH;Y=8CH,作 业,