51单片机C语言程序设计经典实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

任务1 认识单片机

微型化是计算机的主要发展方向之一。在微型计算机中,单片微型计算机(简称单片机)是其重要的组成部分。单片机依靠一定的硬件基础,根据特定环境,完成特定的需求。目前,单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。例如,导弹的导航装置,飞机上各种仪器和仪表的控制,计算机的网络通信与数据传输,工业自动化过程的实时监控与数据处理,广泛使用的各种IC卡,民用豪华轿车的安全保障系统,摄像机、全自动洗衣机的控制,以及无线遥控玩具、电子宠物等,这些都离不开单片机,更不用说自动控制领域的机器人、智能仪表、医疗器械了。所以,认识单片机、学习单片机、掌握单片机的开发与应用是电子信息、计算机应用、通信工程、自动控制等专业领域工程技术人员必备的知识。

1.单片机的定义

单片机是单片微型计算机(Single Chip Microcomputer,SCM)的简称,它是在一块芯片上集成了中央处理部件(Central Processing Unit,CPU)、数据存储器(Random Access Memory,RAM)、程序存储器(Read Only Memory,ROM)、定时/计数器和多种输入/输出(IO)接口等功能部件,片内各功能部件通过内部总线相互连接起来的微型计算机。

单片机特别适合于控制领域,因此国外大多数厂商、学者普遍将其称为微控制器(Micro Controller),缩写为MCU(Micro Controller Unit),国内习惯性将其称为单片机。

2.单片机的特点

➢性价比高 ➢控制功能强

➢高集成度、高可靠性 ➢低电压、低功耗

➢体积小 ➢易扩展

3.单片机的应用领域

单片机已经渗透到人们生活的各个领域,在工业控制、智能仪表、家用电器、军事装置等方面都得到了极为广泛的应用。

1)在智能仪器仪表中的应用 用单片机制作的仪器仪表,广泛应用于实验室、交通运输工具、计量等领域。单片机能使仪器仪表数字化、智能化、多功能化,提高测试的自动化程度和精度,简化硬件结构,减少质量,缩小体积,便于携带和使用,降低成本,提高性能价格比,如数字式存储示波器、数字式RLC测量仪、智能转速表等。

2)在工业控制方面的应用 在工业控制中,工作环境恶劣,各种干扰比较强,还需实时控制,这对控制设备的要求比较高。单片机由于集成度高、体积小、可靠性高、控制功能强,能对设备进行实时控制,所以被广泛应用于工业过程控制中,如电镀生产线、工业机器人、电机控制、炼钢、化工等领域。

3)在军事装置中的应用 利用单片机的可靠性高,适用温度范围宽,能工作在各种恶劣环境等特点,可以将其应用在航天航空导航系统、电子干扰系统、宇宙飞船等尖端武器、导弹控制、智能武器装置、鱼雷制导控制等方面。

4)在民用电子产品中的应用 在民用电子产品中,目前单片机广泛应用于通信设备和各种家用电器,如手机、数码相机、MP3播放机、智能空调等。

4.单片机的发展

自从1974年美国仙童(Fairchild)公司运用计算机技术生产了世界上第一块单片机(F8)以来,在短短的几十年中,单片机的发展主要经历了以下4个阶段。

➢单片机初级阶段(1974—1976年):此阶段的单片机结构比较简单,控制功能比较单一,如仙童公司的F8系列单片机只包含了中央处理器CPU、64K位的RAM和两个并行口,还需外接具有ROM、定时/计数器、并行口的芯片。

➢低性能阶段(1976—1978年):以Intel公司的MCS—48系列为代表,其特点是采用专门的结构设计,内部资源不够丰富。该系列的单片机片内集成了8位CPU、并行I/O口、8位定时/计数器、RAM、ROM等。无串行I/O口,中断处理系统也比较简单,片内RAM和ROM容量较小,且寻址范围小于4KB(B为Byte,即字节)。

➢高性能阶段(1978—1983年):以Intel公司的MCS—51系列为代表,它完善了外部总线,丰富了内部资源,并确立了单片机的控制功能。采用16位的外部并行地址总线,能对外部64KB的程序存储器和数据存储器空间进行寻址;还有8位数据总线及相应的控制总线,形成完整的并行三总线结构。同时还提供了多机通信功能的串行I/O口,具有多级中断处理,16位的定时/计数器,片内的RAM和ROM容量增大,寻址范围可达64KB。有的单片机片内还带有A/D转换、DMA接口、PSW等功能模块。在MCS—51单片机指令系统中,增加了大量的功能指令,如在基本控制功能方面设置了大量的位操作指令,使它和片内的位地址空间构成了单片机所独有的布尔逻辑操作系统,增强了单片机的位操作控制功能;还有许多条件跳转、无条件跳转指令,从而增强了指令系统的控制功能。在单片机的片内设置了特殊功能寄存器(Special Function Register,SFR),为外围功能电路的集中管理提供了方便。

➢8位超高性能单片机的巩固发展及16位、32位、64位单片机的推出与发展阶段(1983年至今)。超8位单片机增加了(Direct Memory Access,DMA)直接数据存储存取通道、特殊串行接口等。16位单片机的CPU为16位,片内RAM和ROM的容量进一步增大,片内RAM为232B,ROM为8KB,片内带有高速I/O部件,多通道10位A/D转换器,8级中断处理功能,实时处理能力更强,并开发了片内带Flash程序存储器(Flash Memory)等功能。

5.单片机的系列

按指令集的不同,单片机主要有复杂指令集(Complex Instruction Set Computing,CISC)结构和精简指令集(Reduced Instruction Set Computing,RISC)结构两大类。

采用CISC结构的单片机,其指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格偏高。

采用RISC结构的单片机,取指令和取数据能够同时进行,便于采用流水线操作,且大部分指令为单指令周期,其运行速度快;同时,程序存储器的空间利用率高,有利于实现超小型化。

CISC结构的单片机有IntelMCS—51系列、Motorola M68HC系列、Atmel AT89系列、STC89系列、华邦公司的W77/W78系列等;RISC结构的单片机有Microchip PIC系列、韩国三星KS57C系列4位单片机、中国台湾义隆EM—78系列、Atmel AVR系列、NXP(原Philips)P89LPC90系列等。一般在控制关系较简单的小家电中可以采用RISC型单片机,在控制关系复杂的场合应采用CISC型单片机。

6.市场上的主流单片机

1)80C51单片机 应用最广泛的8位单片机首推Intel的MCS—51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。由于Intel公司在嵌入式应用方面将重点放在x86、奔腾等与PC类兼容的高档芯片的开发上,所以Intel公司以专利互换和专利出售的方式将80C51内核授权给其他多家集成电路制造商,如Philips、NEC、Atmel、AMD、华邦公司等。拿到该授权的厂商,在此基础上进行性能上的扩充,使芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。这样,80C51单片机就变成了众多芯片制造厂商支持的大家族,统称为80C51单片机,有时也简称为51系列单片机。客观事实证明,80C51已成为8位单片机的主流,成了事实上的标准MCU芯片。目前,许多学校也仍然以它作为典型机来进行单片机的教学。

2)NXP单片机 2007年Philips半导体公司更名为NXP,在我国又称为恩智浦。NXP公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟电路以及片内RC振荡器等功能。与标准8051单片机相比,它还增加了一个定时/计数器,提供两种工作模式,有些型号的单片机还提供了I2C或SPI串行接口。NXP单片机具有集成度高、成本低、低功耗等特点,在应用设计中可以满足多方面的性能要求。

3)Motorola单片机 Motorola是世界上最大的单片机厂商,该公司生产的单片机品种全、选择余地大、新产品多。从M6800开始,开发了广泛的品种,4位、8位、16位和32位的单片机都能生产。在8位单片机方面有M68HC05系列和升级产品M68HC08、M68HC11、M68HC12,其中M68HC05有30多个系列,200多个品种,产量已超过20亿片。16位单片机M68HC16也有10多个品种,32位单片机M683XX也有几十个品种。Motorola单片机的特点之一是在同样单片机种类的速度下所用的时钟频率较Intel类单片机低得多,因而使得高频噪声低、抗干扰能力强,更适合于工控领域及恶劣的环境。

4)Atmel单片机 Atmel公司生产的单片机主要有两大类:CISC架构的AT89系列和RISC架构的AVR系列单片机。

AT89系列单片机是Atmel公司基于Intel公司的MCS—51系列单片机研发出来的与MCS—51兼容,但性能高于MCS—51的单片机。它一问世就以其优良的性能和实惠的价格赢得了国内研究人员的广泛认可。

AVR系列单片机是增强型RISC架构、内载Flash存储器的单片机,具有高速处理能力,在一个时钟周期内可执行复杂的指令,每1 MHz可实现1 MIPS(Million Instructions Per Second,每秒处理的百万级的机器语言指令数)的处理能力。AVR单片机工作电压为2.7~6.0V,可以实现耗电最优化。AVR的单片机广泛应用于计算机外部设备、工业实时控制、仪器仪表、通信设备、家用电器、宇航设备等各个领域。

5)STC单片机 STC89系列单片机是MCS—51系列单片机的派生产品。它们在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容。STC89系列单片机具有高速(最高时钟频率为90MHz)运行、低功耗、在系统(In-System Program,ISP)/在应用可编程(In-Application Program,IAP)、不占用户资源等特点。与AT89系列单片机相比,二者的区别主要是:①下载方式不同,AT89系列(如AT89S51/S52)主要是并行下载方式,而STC89C51/52采用串口下载方式;②内存大小有所不同,AT89S51/52的片内RAM为128B256B,而STC89C51/52片内RAM为512B;③部分特殊功能寄存器不同;④STC单片机相对执行速度更快,功能更加强大。

6)华邦(Winbond)单片机 W77/W78系列8位单片机是华邦公司推出CMOS型单片机,其引脚和指令集与8051兼容,但每个指令周期只需要4个时钟周期。速度提高了3倍,工作频率最高可达40MHz,同时增加了Watch Dog Timer(WDT)、6组外部中断源、2组UART、2组Data pointer及Wait state control pin。W77/W78系列单片机具有性价比高、功能强、型号多,可以满足各种不同应用场合需求等特点。

7)Microchip单片机 Microchip单片机是市场份额增长较快的单片机,主要产品是PIC16C系列和PIC17C系列8位单片机。CPU采用RISC结构,PIC16C系列仅有33条指令,采用Harvard双总线结构,具有运行速度快、低工作电压、低功耗、较大的I/O直接驱动能力、价格低、一次性编程、体积小等特点,适用于用量大、档次低、价格便宜的产品。在办公自动化设备、消费电子产品、电讯通信、智能仪器仪表、汽车电子、金融电子、工业控制等领域都有广泛的应用。

8)NEC单片机 NEC单片机自成体系,以8位单片机78K系列产量最高,也有16位、32位单片机。其单片机内置高精度的环形振荡器,在-40~85℃时精度可达0.1%,并且还内置上电复位清零电路、低电压侦测电路和独立源看门狗(WDT)电路。16位以上单片机采用内部倍频技术,以降低外时钟频率。有的单片机采用内置操作系统。

9)东芝单片机 东芝单片机从4位机到64位机,门类齐全。4位机在家电领域有很大市场;8位机主要有870系列和90系列等,该类单片机允许使用慢模式,采用32kHz时钟时功耗降至10μA数量级。CPU内部多组寄存器的使用,使得中断响应与处理更加快捷。东芝的32位单片机采用MIPS 3000A RISC的CPU结构,面向DVD、数字相机、图像处理等市场。

10)富士通单片机 为满足日益增长的灵活性需求,富士通不仅提供8位和16位的单片机,同时还提供高性能的32位RISC控制器。8位机使用的是16位机的CPU内核,也就是说8位机与16位机所用的指令集相同,使得开发比较容易。8位单片机有著名的MB8900系列,16位机有MB90系列。富士通单片机具有加密性强、快速简洁的运算能力、强大的抗电磁干扰能力、在线烧录和在线调试等特点,主要应用于汽车、工业、通信、消费电子和计算机外围设备。

11)LG公司生产的GMS90系列单片机 LG公司生产的GMS90系列单片机与InteMCS—51系列,Atme l89C51/52、AT89C2051等单片机兼容,采用CMOS技术,高达40MHz的时钟频率,应用于多功能电话、智能传感器、智能电能表、工业控制、防盗报警装置、各种计费器、各种IC卡装置、DVD、VCD、CD—ROM等。

12)凌阳16位单片机SPCE 中国台湾凌阳公司推出的内核为16位微处理器的芯片就是SPCE系列单片机。该系列主要有集成度高、体积小、可靠性高、低功耗、低电压、性价比高、适合各种控制应用等特点。如SPCE061A型单片机,内嵌32KB的Flash存储器、具有DSP功能,有很强的信息处理能力,最高时钟可达49MHz,尤其适用于数字语音播报的识别等应用领域,是数字语音识别与语音信息处理的理想产品。

13)Secenix单片机 Scenix公司推出的8位RISC结构SX系列单片机在技术上有其独到之处:双时钟设置,指令运行速度可达50/75/100MIPS;具有虚拟外设功能,柔性化I/O端口,所有的I/O端口都可单独编程设定,提供各种I/O的库函数,用于实现各种I/O模块的功能,如多路UART、多路A/D、PWM、SPI、DTMF、FS、LCD驱动等;采用E2PROM Flash程序存储器,可以实现在线系统编程;通过计算机RS—232C接口,采用专用串行电缆,即可对目标系统进行在线实时仿真。

14)EPSON单片机 EPSON单片机以低电压、低功耗和内置LCD驱动器特点而闻名于世,尤其是LCD驱动部分做得很好。广泛用于工业控制、医疗设备、家用电器、仪器仪表、通信设备和手持式消费类产品等领域。目前,EPSON已推出4位单片机SMC62系列,SMC63系列和SMC60系列,以及8位单片机SMC88系列。

15)三星单片机 三星单片机有KS51和KS57系列4位单片机,KS86和KS88系列8位单片机,KS17系列16位单片机和KS32系列32位单片机。三星单片机为OTP型(One Time Programmable,一次性可编程)ISP在片编程功能。三星公司在单片机技术上引进消化发达国家的技术、生产与之兼容的产品,然后以价格优势取胜。例如,在4位机上采用NEC的技术,8位机上引进Zilog公司Z8的技术,在32位机上购买ARM7内核,还有DEC的技术、东芝的技术等。

16)MSP430单片机 MSP430系列单片机是美国TI公司于1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor,MSP)。该系列单片机多应用于需要电池供电的便携式仪器仪表中。

7.学习单片机的方法

1)熟悉和了解单片机的内部和外部资源 因为单片机芯片的内部及外部资源都需要开发者自己管理,且在开发过程中,开发者还得根据实际需求自己设计单片机外围电路,所以需要熟悉和了解一定的硬件知识。

2)了解并掌握单片机指令系统 开发者是通过程序对单片机进行相应的控制,而这些程序是通过相应的指令编写的。单片机的指令系统主要有汇编语言或单片机C语言,开发者可以只使用其中一种或者使用这两种语言进行程序的编写。由于单片机C语言具有编程和调试灵活方便、生成的代码编译效率高、完全模块化、可移植性好、便于项目维护管理、可以直接操作单片机硬件等特点,所以,现在许多单片机程序开发者均采用单片机C语言进行单片机系统的开发。

3)了解并熟悉掌握常用软件的使用方法 进行单片机系统的开发时,需要用到许多软件,不要求开发者对每个软件都很熟悉,但对于常用软件的使用应特别熟悉。例如,使用Keil C51进行源程序的编译与调试,使用Proteus软件进行硬件仿真,单片机的程序固化软件的使用等。

4)坚持手脑并用的原则 在单片机的学习过程中,一定要坚持手脑并用的原则,多做、多看、多想,先看别人的程序,再学习修改别人的程序,并进行类似程序的仿写,最后自己设计、编写程序,也就是“看程序→仿程序→写程序”的过程,做到“实践、实践、再实践”。