存储器输出设备输入设备控制器运算器第一章单片微型计算机概述1.1计算机发展概述1.1.1计算机的问世及其经典结构自1946年在美国宾夕法尼亚大学制成的世界上第一台电子数字计算机以来,计算机的发展大致经历了五代的变化:1946年2月15日,第一台电子数字计算机问世,这标志着计算机时代的到来。计算器(CALCULATOR)ENIAC(“埃尼阿克”)如图1.1所示ENIAC是第一代电子管计算机,图1.1ENIAC(“埃尼阿克”)时钟频率仅有100KHz,能在1秒钟的时间内完成5000次加法运算,体积庞大,成本很高,可靠性较低,与现代的计算机相比,有许多不足,但它的问世开创了计算机科学技术的新纪元,对人类的生产和生活方式产生了巨大的影响1964年匈牙利籍数学家冯·诺依曼在计算机方案的设计上做出了重要的贡献。1946年6月,他又提出了“程序存储”和“二进制运算”的思想,进一步构建了计算机由运算器、控制器、存储器、输入设备和输出设备组成这一经典的计算机结构。图1.2冯.诺伊曼结构1958年开始的第二代晶体管计算机,运算速度提高到几万次至几十万次,可靠性冯.诺伊曼结构的基本内容:①用二进制形式表示数据和指令。②存储程序控制:程序和数据预先存入存储器中。③计算机系统的5大基本部件:运算器、控制器、存储器、输入设备、输出设备。提高,体积缩小,成本降低,工业控制机开始得到应用,磁芯作主存储器,磁盘作外存储器,开始使用高级语言编程。1965年开始的第三代中小规模集成电路计算机,使用半导体存储器,出现多终端计算机和计算机网络,可靠性进一步提高,体积进一步缩小,成本进一步下降,运算速度提高到几十万次至几百万次。在此期间,形成机种多样化,生产系列化,使用系统化,小型计算机开始出现。1971年开始的第四代大规模集成电路计算机。出现了微型计算机、单片微型计算机,外部设备多样化,可靠性更进一步提高,体积更进一步缩小,成本更进一步降低,速度提高到每秒几百万次至几千万次。1986年开始的第五代巨大规模集成电路计算机,运算速度提高到每秒几亿次至上百亿次,由一片巨大规模集成电路实现的单片机开始出现。第六代神经计算机:电子计算机将类似人脑的智慧和灵活性。电子计算机的发展已经进入了第六代,这种发展可能仅仅是刚起步,前途没有止境。计算机的结构仍然没有突破冯·诺依曼提出的计算机的经典结构框架1.1.2微型计算机的应用形态从应用形态上,微型计算机可以分成三种:1.系统机(多板机)将CPU、存储器、I/O接口电路和总线接口等组装在一块主机板(即微机主板)。各种适配板卡插在主机板的扩展槽上并与电源、软/硬盘驱动器及光驱等装在同一机箱内,再配上系统软件,就构成了一台完整的微型计算机系统(简称系统机)。工业PC机也属于多板机。2.单板机将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。如图所示图单板机示意图3.单片机在一片集成电路芯片上集成微处理器、存储器、定时/计数器以及I/O接口电路等计算机主要功能部件,从而构成了单芯片微型计算机,即单片机,如图所示。图单片机芯片实物图(从左至右:8031、8051、8751)系统机(桌面应用)属于通用计算机,主要应用于数据处理、办公自动化及辅助设计。单板机(嵌入式应用)属于专用计算机,主要应用于智能仪表、智能传感器、智能家电、智能办公设备、汽车及军事电子设备等应用系统。单片机体积小、价格低、可靠性高,其非凡的嵌入式应用形态对于满足嵌入式应用需求具有独特的优势。1.1.3单片机发展过程及产品1.发展过程单片机技术发展过程可分为三个主要阶段:单芯片微机形成阶段1976年,Intel公司推出了MCS-48系列单片机,其内含8位CPU、1K字节ROM、64字节RAM、27根I/O线和1个8位定时/计数器。存储器容量较小,寻址范围小(不大于4K),无串行接口,指令系统功能不强。单芯片微机形成阶段1980年,Intel公司推出了MCS-51系列单片机,其内含8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。其结构体系完善,性能已大大提高,面向控制的特点进一步突出。现在,MCS-51已成为公认的单片机经典机种。微控制器化阶段1982年,Intel推出MCS-96系列单片机。芯片内集成:16位CPU、8K字节ROM、232字节RAM、5个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K。片上还有8路10位ADC、1路PWM输出及高速I/O部件等。其片内面向测控系统外围电路增强,使单片机可以方便灵活地用于复杂的自动测控系统及设备。“微控制器”的称谓更能反应单片机的本质。2.单片机产品介绍80C51系列单片机产品繁多,主流地位已经形成,近年来推出的与80C51兼容的主要产品有:﹡ATMEL公司融入Flash存储器技术的AT89系列;﹡Philips公司的80C51、80C552系列;﹡华邦公司的W78C51、W77C51高速低价系列;﹡ADI公司的ADμC8xx高精度ADC系列;﹡LG公司的GMS90/97低压高速系列;﹡Maxim公司的DS89C420高速(50MIPS)系列;﹡Cygnal公司的C8051F系列高速SOC单片机。非80C51结构单片机新品不断推出,给用户提供了更为广泛的选择空间,近年来推出的非80C51系列的主要产品有:﹡Intel的MCS-96系列16位单片机;﹡Microchip的PIC系列RISC单片机;﹡TI的MSP430F系列16位低功耗单片机。1.2微型计算机系统概念下图表示了微处理器、微型计算机和微计算机系统三者的关系:图微处理器、微计算机和微计算机系统的关系1.3单片机的特点及应用领域1.3.1单片机的特点1.控制性能和可靠性高实时控制功能特别强,其CPU可以对I/O端口直接进行操作,位操作能力更是其它计算机无法比拟的。另外,由于CPU、存储器及I/O接口集成在同一芯片内,各部件间的连接紧凑,数据在传送时受干扰的影响较小,且不易受环境条件的影响,所以单片机的可靠性非常高。近期推出的单片机产品,内部集成有高速I/O口、ADC、PWM、WDT等部件,并在低电压、低功耗、串行扩展总线、控制网络总线和开发方式(如在系统编程ISP)等方面都有了进一步的增强。2.体积小、价格低、易于产品化3.单片机芯片即是一台完整的微型计算机,对于批量大的专用场合,一方面可以在众多的单片机品种间进行匹配选择;同时还可以专门进行芯片设计,使芯片的功能与应用具有良好的对应关系;在单片机产品的引脚封装方面,有的单片机引脚已减少到8个或更少。4.从而使应用系统的印制板减小、接插件减少、安装简单方便。1.3.2单片机的应用领域1.智能仪器仪表单片机用于各种仪器仪表,一方面提高了仪器仪表的使用功能和精度,使仪器仪表智能化,同时还简化了仪器仪表的硬件结构,从而可以方便地完成仪器仪表产品的升级换代。如各种智能电气测量仪表、智能传感器等。2.实时工业控制单片机还可以用于各种物理量的采集与控制。电流、电压、温度、液位、流量等物理参数的采集和控制均可以利用单片机方便地实现。在这类系统中,利用单片机作为系统控制器,可以根据被控对象的不同特征采用不同的智能算法,实现期望的控制指标,从而提高生产效率和产品质量。典型应用如电机转速控制、温度控制、自动生产线等。3.分布式系统的前端模块在较复杂的工业系统中,经常要采用分布式测控系统完成大量的分布参数的采集。在这类系统中,采用单片机作为分布式系统的前端采集模块,系统具有运行可靠,数据采集方便灵活,成本低廉等一系列优点。4.家用电器家用电器是单片机的又一重要应用领域,前景十分广阔。如空调器、电冰箱、洗衣机、电饭煲、高档洗浴设备、高档玩具等。家用电器是单片机的又一重要应用领域,前景十分广阔。如空调器、电冰箱、洗衣机、电饭煲、高档洗浴设备、高档玩具等。1.4计算机中的数和编码1.4.1计数制1.十进制(D)有十个数码0~9、逢十进一。十进制用于计算机输入输出,人机交互。2.二进制(B)两个数码:0、1,逢二进一。二进制为机器中的数据形式。3.十六进制(H)十六个数码:0~9,A~F,逢十六进一。十六进制用于表示二进制数。不同进位制数以下标或后缀区别,十进制数可不带下标。如:101、101D、101B、101H、101H(1)十进制数:1985=1000+900+80+5=1×103+9×102+8×101+5×100有0~9十个不同的符号。逢十进一。一般用下脚标D表示,如1985D,或无下脚标(2)二进制数特点:有0,1两个不同的符号。逢二进一。二进制数的下脚标为B例如:对于整数:1001B=1×23+0×22+0×21+1×20=9D对于小数:0.101B=1×2-1+0×2-2+1×2-3=0.625D二进制数每一位的权是:以小数点分界,…..24,23,22,21,20.2-1,2-2,2-3,……(3)十六进制数:有0~9,A,B,C,D,E,F共十六个不同的符号。逢十六进位。用下脚标“H”表示十六进制数。例:327H=3×162+2×161+7×160=807D3AB.11H=3×162+A×161+B×160+1×16-1+1×16-2=939.0664D1.4.2不同制数之间的转换1.二进制转换为十进制二进制转换为十进制的基本方法是将二进制数按权展开式,利用十进制数的运算法则求和,即可得到等值的十进制数。例1.1将二进制数1101.01转化为十进制数。解:(1101.01)B=1×23+1×22+0×21+1×20+0×2-1+1×2-2=(13.25)D上述方法适用于其他进制数到十进制的转换。2.十进制整数转换为二进制整数.其转换方法为除2取余数。即把十进制数依次除以2并记下每次所得的余数(0或1),直到商等于0为止,所得余数依次记为K0、K1、…Kn-1。则转换后的二进制数为Kn-1…K1K0。例1.3将十进制数25转换为二进制数。解:225…余1(K0).212…余0(K1).26…余0(K2).23…余1(K3)21…余1(K4).0.3.十进制小数转换为二进制小数其转换方法为乘2取整数。即依次用2去乘要转换的十进制小数,记录每次所得溢出数(即整数部分,0或1),记作K-1、K-2,…。若乘积的小数部分最后为0,那么最后一次乘积的溢出数记作K-m;若乘积的小数部分最后不为0,则只要换算到所需精度为止。将起始溢出位写在二进制小数点后的第一位(即小数部分的最高位),依次写到最低位。小数部分从最高位到最低位的顺序与产生溢出的顺序相同。例1.4将十进制数0.3125转换为相应的二进制数.解:0.3125×2=0.625=0.625溢出0←MSB0.6250×2=1.250=0.25010.2500×2=0.500=0.50000.5000×2=1.000=01←LSB即:0.3125=0.0101B。4.带小数的十进制数转换为二进制数十进制数包含小数,则将其整数和小数两部分分别转换为对应的二进制数,然后再将二进制的整数和小数组合起来,即得到转换结果。例1.5将十进制数14.375转换为二进制数。解:14=1110B0.375=0.011B故:14.375=1110.011B3.二进制、十六进制之间的相互转换十六进制数的每一位都与四位二进制数相对应。将二进制数转换为十六进制数,从低位开始,每四位一组,然后将其转换为对应的十六进制数。如在最后一组不足四位,需在左边补0。用同样方法可将二进制小数转换为十六进制小数。只是分组应从小数点右边开始分成四位一组。十六进制数转换为二进制数,将每位十六进制数直接转换成相应的二进制数。例1.6将二进制数10101101101转换为十六进制数。解:将二进制数10101101101B改写为:010101101101所以:1010