51单片机应用基础(C51版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-24 10:19:46

点击下载

作者:胡进德,丁如春,刘爱荣

出版社:湖北科学技术出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

51单片机应用基础(C51版)

51单片机应用基础(C51版)试读:

前言

本书的行业背景

目前,单片机已渗透到我们生活工作的各个领域,如玩具、家用电器、办公自动化、工业控制、航空航天、智能化仪器仪表等,几乎很难找到哪个领域没有单片机的踪迹,因而对单片机技术的应用成为电子信息技术、自动化、计算机技术等工科专业学生必须掌握的一项技能。但在多年的职业教育中我们发现,学生在学习单片机课程时总是感觉很困难、很费劲,其中的很多知识点难以理解,更谈不上掌握。究其原因,没有一本浅显、实用、通俗易懂的教材也是其中一个很重要的因素。

市场上单片机的书籍非常多,而且单片机的教材也很多。编者从事过多年单片机应用产品的开发及单片机课程教学,深深感受到当前的职业教育与市场需求、企业需求仍存在相当大的脱节,教材及教学模式与职业院校学生的可接受能力、学生的就业需求仍有相当大的距离。为此,多年来,我们一直持续深入开展单片机课程教学改革,认真按照教育部16号文件要求不断“加大课程建设与改革的力度,增强学生的职业能力”,不断尝试教材及教学模式改革,努力使教材及教学模式更好地“贴近学生、贴近企业、贴近社会”。为配合单片机课程改革,我们还开发了51MCU-1型、51MCU-2型、51MCU-3型等多款电路板和单片机教具,这些电路板和教具在教学中发挥了重要作用。通过教学改革,涌现出一批又一批优秀学生,其中有很多学生在全国大学生电子设计大赛、“天华杯”全国电子专业人才设计与技能大赛等全国赛事中取得了佳绩。本书是在对单片机课程进行教学改革的基础上编写而成的,在正式出版之前,曾作为校本教材试用,并广泛征求职业院校主讲教师和学生的意见。

本书的特点

● 语言文字形象生动、通俗易懂。本书尽量不采用学科型的专业描述方法讲解单片机的知识点,而是从初学者最熟悉的生活情境出发以形象化、通俗化的方式逐步将相关专业知识和技能渗透给学生。本书写得深入浅出,使初学者爱看、易懂,这样学起来感觉轻松惬意、不枯燥、有成就感。

● 以初学者的认知规律为主线组织学习内容,摒弃了以学科体系为主线的编排方式。本书始终遵循先感性后理性、先简单后复杂的原则,由浅入深,循序渐进,带领初学者一步一步地进入单片机的奇妙世界。

● 理论与实践有机融合,体现了单片机课程完整的教学过程。本书集课堂教学、实验实训和综合性的课程设计三个方面内容为一体,突破了国内高职院校单片机教材只有单纯理论教材或实训教材的格局。书中既介绍了初学者必须理解的知识点,又结合实例较详细地介绍了很多工具软件如Keil、Medwin、Proteus等的使用方法。为配合教材和实践教学,还提供了配套的电路板和单片机教具,这些电路板和教具使用方便、灵活、可靠,其教学效果好,并已推向市场。书中的实例和课程设计项目具有通用性,可在很多学校的实验实训设备上实现,因而并不依赖于我们自己的电路板和教具。

● 结构新颖、实用,突破了传统单片机教材先硬件结构——再指令系统——然后才能开展实验实训的教学模式。本书一开始就以空调为例让初学者感受到单片机的功能、用途和“相貌”,通过发光二极管的工作机制让初学者了解到单片机的工作原理和应用方法,通过一个具体的实训任务——发光二极管单灯闪亮让初学者对单片机应用系统的设计与开发过程有了切身体会。这种编排避免了传统教材容易让初学者“只看见局部,不看见整体;只看见树木,不看见森林”的缺陷,很容易激发初学者的学习兴趣。

● 突出新知识、新技术、新器件的应用。目前有很多学校的单片机课程教学内容比较陈旧,在教材及教学中仍在花大量篇幅介绍存储器扩展及早期的器件如8031/8032、8155、8255、8279等。在单片机技术高速发展的今天,出现了很多可进行在系统编程(ISP—In System Programming)的新型51系列单片机,而存储器扩展技术和这些在市场上已无法买到的旧器件在实际工作中基本不用,已有更好的解决方案。

●“教、学、做”相结合,强化学生实践能力的培养。传统单片机教材及教学模式重视对指令系统的学习和程序设计,却忽视了对硬件电路的设计与构建;重视对单片机知识点的讲解,忽视了对工具软件如Keil、Medwin、Proteus等的使用,忽视了对示波器、万用表、电烙铁等基本工具的使用;过分重视用汇编语言编程,忽视了用C语言编程的重要性。

● 书中的每一个程序都有详细的说明和注释,便于初学者理解。书中多次有知识点的相互映射,这样既加深了前后内容的联系,而且又能深化理解与记忆。

● 本书为第2版,新增了C51程序设计。

对初学者的建议

● 本书介绍了2个流行的开发环境——Keil和 MedWin,初学者只需选学其一。如英文基础较好,可学习Keil,否则选学MedWin。

● 本书介绍了2个下载软件(STC-ISP和Atmel MCU ISP)和2种新型51系列单片机(STC89系列和 AT89系列)。STC-ISP软件采用电脑的 RS-232串行口和 USB口给STC89系列单片机在电路板上直接烧写程序,Atmel MCU ISP软件多采用电脑的打印机接口(也可采用USB接口)给 AT89系列单片机烧写程序。STC89系列和 AT89系列单片机与8051/80C51完全兼容,而且可以在线编程、调试,而不需要额外的编程器,这样降低了学习成本。建议初学者优先选用 STC-ISP和 STC89系列单片机,其学习成本更低、使用更方便且还学习了与单片机串行口有关的实用知识。STC89系列单片机具体型号有STC89C51/52等,AT89系列单片机具体型号有AT89S51/52等。

● 目前绝大多数单片机教材仍以学习汇编语言为主,因C语言比汇编语言更流行、更好用、编程效率更高,书中所有实例程序同时提供了汇编语言和 C语言2种方案。建议初学者在对汇编语言有一个基本认识和初步掌握的基础上将学习重点转向 C语言编程。书中介绍的Keil和MedWin都支持C语言和汇编语言编程。

● 单片机技术的应用性很强,要想运用单片机解决具体问题必须多动手、多实践,因而拥有一款价廉物美的电路板是学好单片机的前提。电路板和配套的下载线、源程序、电路原理图等资源可在市场上购买,还要注意购买的电路板应支持在系统编程(ISP或 IAP功能)。如果没有电路板,可采用 Proteus软件的仿真功能。本书也介绍了 Proteus软件的功能和使用方法。

与本书有关的学习资源

本书可提供如下资源:

● 所有实例的汇编语言源代码、C语言源代码和详细的电路图。

● STC89C51/52和AT89S51/52等芯片的使用手册。

● 各种工具软件Keil、Medwin、Proteus、STC-ISP、Atmel MCU ISP、Protel DXP等。

● 可供参考的电子课件、单片机课程标准、教学计划等。

● 相关的单片机电路板和教具。

以上资源可通过网址http://www.hbxtzy.com/jdxy/下载或直接向编者索取。

特别致谢

感谢英国加的夫大学的杨欣博士、北京交通大学的王玉凤教授和刘湘黔教授,他们对本书的完成给予了很多指导、帮助和支持。本书在编写过程中还参考了大量单片机方面的教材和技术书籍(见参考文献),在此向各文献资料的作者表示感谢。

本书主要由胡进德组稿主编,参与本书编写和审稿工作的还有鄂东职业技术学院的丁如春、高双喜、徐波、沈全鹏,中州大学的刘爱荣,鄂州职业大学的万胜前,沙市职业大学的熊辉、周威,郑州轻工业学院的王俊杰,武汉软件工程职业学院的卢高洁、祝勋,湖北三峡职业技术学院的谭忠,湖北轻工职业技术学院的邱文军、何伶俐,中南民族大学刘丽君,武汉信息传播职业技术学院的骆婷,仙桃职业学院的陈文斌、何炳年、付晓军、刘祖云、彭丽、朱丹丹、罗鹏。在成稿的过程中,还得到了晨康电子有限公司的王红方工程师等许多朋友和同仁的帮助与支持,在此一并致谢。

本书封面展示的一款非常适合初学者的51单片机多功能学习开发板图片资料由深圳市雷迈特科技有限公司武汉分公司(http://www.hkzk.com.cn,联系人:赵先生,电话:027-87876894,13995663040, )提供,在此对该公司的帮助与支持表示感谢。

本书的目标

力求让初学者“看得懂、感兴趣、会应用”、成为初学者的良师益友是本书的理想和追求。另外,本书也尝试在风格、结构、内容方面体现职业教育的特点。由于编者水平有限,时间仓促,敬请各位老师、读者对书中的不足之处批评指正。希望您能不吝赐教,与编者共同努力,不断改进、完善本书。“世上没有最好,只有更好!”如果您有好的建议或者您也愿意在本书的再版中参与一部分修改工作,欢迎您与主编胡进德 和 编 辑李海宁联系。胡进德主编的联系方式是1056605865@qq.com。李海宁编辑的联系方式是lihaining2001@yahoo.com.cn。编 者2010年12月学习情景一寻找生活中的单片机

学习目标

1.了解单片机的应用领域、功能和用途。

2.了解单片机的外形,掌握单片机引脚序号识别方法。

3.掌握单片机控制外部器件的电路模型和工作原理。

4.了解编程器和下载线的特点及使用方法。

5.了解MCS-51系列单片机与新型51系列单片机的功能特点。学习单元一 单片机在哪里

想一想家里用的空调(如图1-1所示),它有哪些功能呢?完成这些功能的各功能模块是如何相互联系、相互影响呢?

不难想象,空调中有一些电路板,电路板上有电阻、电容、二极管、三极管、集成电路(俗称IC,即英文名Integrated Circuit的缩写)等电子元件,由这些电子元件组合成的若干功能模块实现了这台空调的功能。其中几个主要的功能模块如下:

温度检测功能模块:内含温度传感器及其他电子元件,用来检测室内温度。

制冷功能模块:由储液罐、压缩机、冷凝器等制冷设备和其他电子元件构成,完成制冷功能。

遥控器接收功能模块:接收遥控器发送的命令,如设定室内温度等命令。

显示功能模块:用LED指示灯指示空调的工作状态,用 LED数码管或液晶显示器显示设定的室内温度等信息。

这些功能模块之间相互联系、相互影响。如遥控器接收功能模块接收用户发出的制冷命令,同时还接收用户发出的设置制冷温度命令,显示功能模块指示空调的状态和用户设定的制冷温度。温度检测功能模块检测室内温度,如果室内温度高于用户设置的制冷温度,则制冷功能模块工作,从空调出气口吹出冷气以降低室内温度。当室内温度达到用户设定的制冷温度,则制冷功能模块停止工作,空调不再释放冷气,室内温度在自然条件下会缓慢升高,经过一段时间,当室内温度缓慢升高到高于用户设置的制冷温度时,制冷功能模块重新开始工作,从空调出气口又吹出冷气以降低室内温度。当室内温度达到用户设定的制冷温度时,制冷功能模块又一次停止工作,室内温度在自然条件下又开始缓慢升高,如此循环下去,室内温度始终保持在与用户设定的制冷温度相当。问题是,各功能模块之间是如何协调工作的呢?它们是怎祥互相联系在一起实现空调的制冷功能呢?

在人的身上,也有类似的“功能模块”,它们相互联系、相互影响。例如,人的任何一种行为都是由人的眼睛、脚和手等身体的各部位配合完成。当你走上前、弯下腰、伸出手从地上拾起物品仔细端详的时候,这里的“功能模块”有人的眼睛、腰、腿、脚和手等,它们之间具有相互联系、相互影响、相互控制的关系。在这个关系的背后,全靠人的大脑控制着身体各个功能模块协调工作。与人类似,空调中也有一个“大脑”,这就是单片机。也就是说,空调中的各个功能模块都由单片机协调工作。人的大脑之所以能够控制身体各个“功能模块”协调工作,是因为人有思想,即大脑的思维能力。空调中的单片机也具有与人相似的“思维判断能力”,这就是程序。人的思维能力是人的本能,与生俱来。单片机的“思维判断能力”—程序,与电脑中的 Windows操作系统和各种游戏软件类似,是产品设计工程师根据人们的工作生活需要事先设计好并以某种方法“赋予”单片机。下面我们通过对空调系统构造和工作过程的介绍来看单片机这颗“大脑”在空调中究竟发挥着什么样的作用。图1-1 空调系统构造图

图1-1是一台双制式空调系统构造图。在空调面板上有3个指示灯和2个数码管,3个指示灯分别指示空调的3种工作状态:制热、制冷和除湿,2个数码管显示用户设定的室内温度。在空调遥控器操作面板上有9个主要的功能按键,从上到下分别为:“模式”、“风速”、“睡眠”、“扫风”、温度“+℃”、温度“-℃”、“定时开”、“定时关”和“开/关”,各按键及其功能描述如图1-2所示。这些功能按键的不同组合能实现对空调不同的功能进行操作。图1-2 空调遥控器操作面板及按键功能示意图

先大致看一下图1-3所示空调系统功能模块示意图,以便对空调的功能模块有所了解。图中的单片机方框代表空调系统的“大脑”——单片机,在它的四周分布着9个功能模块,各功能模块通过信号线分别与单片机相连,箭头的方向代表单片机与外围各功能模块之间信号的传递方向:箭头指向单片机,表示单片机可接收或检测外部功能模块输出的信号,“感知”外部信息;箭头指向单片机外部的功能模块,表示单片机可输出信号到外部功能模块,控制外部功能模块工作。例如,单片机通过接收温度检测模块的信号来“感受”室内温度;通过遥控器接收模块接收遥控器各功能按键信号;单片机发出信号分别控制指示灯、数码管、室内风机、室外风机、制冷模块、制热模块和除湿模块。图1-3 空调系统功能模块示意图

下面结合空调系统功能模块示意图、空调系统构造图和遥控器操作面板及按键功能示意图,将这个空调的主要工作过程描述如下:(1)插上空调电源插头,开启空调电源,单片机得到电源开始工作,按下遥控器“开/关”按键,空调中的各个功能模块在单片机的控制下启动后开始工作,指示灯和数码管被点亮。单片机就像人的大脑能向空调其他功能模块发出不同的指令,而其他功能模块会严格执行单片机的指令。例如,在空调关机状态下,按遥控器“开/关”按键后,单片机就接收到遥控器发出的开机信号,控制各个模块进行开机操作,进入正常运行状态;单片机能“记住”设定的温度值,并通过显示模块将空调的当前工作状态和设定温度显示出来。(2)按下遥控器“模式”按键,选择“制冷状态”, “制冷”指示灯被点亮。这是因为当按下“模式”按键,单片机“意识”到用户正在设置空调的工作模式。由于空调有6种工作模式:自动模式、制冷状态、除湿状态、送风状态、制热状态和睡眠状态,而“模式”按键只有一个,所以用户每按一次“模式”按键,单片机就自动依次选取一种工作模式,并控制对应的指示灯发光。单片机能“记住”用户最后一次的选择,例如“制冷状态”。(3)将空调的工作模式设置到“制冷状态”后,在遥控器上每按一次“-℃”按键,数码管显示用户设定的温度下降一度;反之,每按一次“+℃”按键,数码管显示用户设定的温度上升一度。这是因为单片机“识别”出“-℃”或“+℃”按键信号后,就对所“记住”的设定温度值做减法运算或加法运算,并通过数码管显示出来。可见,单片机还具有像大脑一样的“运算”功能。(4)在“制冷状态”,如果室内温度高于用户设定的温度,则压缩机启动,制冷系统在室外机的冷凝器上散热,在室内机组的蒸发器上释放冷量,室内风机从空调出气口送出冷气,室外风机送出热气;在“制热状态”,如果室内温度低于用户设定的温度,则电磁四通阀动作,改变制冷剂循环的流向,在室外机组的“冷凝器”上产生冷气,在室内机组的“蒸发器”上产生热量,此后室内风机送出热气,室外风机送出冷气。这是因为单片机通过温度传感器“感知”室内温度的高低,并将室内温度与用户设定的温度进行比较。当空调工作在“制冷状态”时,如果室内温度高于用户设定的温度,则单片机向压缩机等制冷功能模块下达工作指令,制冷功能模块启动制冷,与此同时,单片机还向室内风机和室外风机下达工作指令,室内风机放出冷气,室外风机送出热气。当空调工作在“制热状态”时,如果室内温度低于用户设定的温度,则单片机下达指令“控制”电磁四通阀等制热功能模块启动制热,同时,单片机还下达指令“命令”室内风机和室外风机开始工作,室内风机放出热气,室外风机送出冷气。可见,单片机不仅具有计算功能,还可以像大脑一样比较数的大小。单片机不断将“感知”到的室内温度与“存储”的用户设定温度进行比较,并根据事先“记忆”的空调工作模式判断是启动还是关闭制冷功能模块、制热功能模块、室内风机和室外风机,由此将室内温度始终保持在与用户设定的温度相当。可见,单片机具有像大脑一样的“逻辑运算和判断能力”。(5)在空调开/关机状态下,按遥控器“定时关”/“定时开”,数码管从0开始显示用户设定的关/开机时间。每按一次键,定时关/开机时间增加0.5小时,关/开机时间在0~24小时内循环。当定时时间到,空调会自动关/开机。这是因为当按下关/开机键,单片机“意识”到用户正在设置空调的关/开机时间,通过“计算”用户按键的次数确定关/开机时间,并将关/开机时间“存储”下来。紧接着,单片机开始“计时”,当关/开机时间到,单片机停止“计时”,并向空调电源控制电路下达关/开机命令,以此实现关/开机。可见,单片机的“计时”功能还可以用来测量时间。

通过前面对一台双制式空调系统工作过程的分析,我们能初步体会到单片机这颗“大脑”在空调中扮演的角色和如下几个主要功能:(1)控制外部器件:单片机通过输出合适的信号可控制指示灯、数码管、电机等外部器件。(2)接收外部信号,感受外部器件:单片机通过接收来自温度传感器、按键、开关等外部器件的输入信号来感受外部器件的状态。(3)运算功能和存储功能:单片机可进行算术运算和逻辑运算,并可存储运算结果。(4)计数和计时功能:单片机既可以计数,也可以计时。(5)分析与判断能力:单片机可以借助温度传感器等外部器件自动检测室内温度,并将室内温度与用户设定的温度进行比较,从而“决定”启动制冷还是制热功能。单片机的分析与判断能力就像人的大脑一样具有“思维”能力。

综上所述,单片机是一个集控制和处理能力、运算和存储功能、计数和计时功能等于一身的器件。单片机是单片微型计算机(英文名称“Single Chip Microcomputer”)的简称,它是把计算机中的中央处理器 CPU(Central Processing Unit)、存储器(memory)、定时器/计数器(Timer/Counter)、I/O(Input/Output)接口电路等主要功能部件集成在一块小芯片上的微型计算机。中文“单片机”的称呼就是由英文名称“Single Chip Microcomputer”直接翻译而来的。

单片机应用于家用电器、办公自动化、航空航天、智能仪表、工业测控等几乎各个领域。随着单片机技术的发展,高性能单片机在芯片内集成了许多面对测控对象的接口电路,如A/D转换器、D/A转换器、高速I/O口、PWM、WDT等,这些对外电路及外设接口已经突破了微型计算机传统的体系结构。因单片机控制能力很强,常称它是微控制器MCU(Micro Controller Unit)。而在国内我们仍然习惯地称之为“单片机”或“单片微机”,在本书中我们使用“单片机”一词。学习单元二 单片机是什么样子

通过学习单元一,我们了解到单片机是一个控制功能很强的小芯片,它广泛应用于各种智能电器和智能设备,它就像人的“大脑”一样控制着智能电器和智能设备各功能模块协调工作。可能有人会问:“单片机究竟是什么样子”,其“相貌”如何?图1-4 51系列单片机DIP封装(a)DIP封装外形 (b)DIP封装电路符号

图1-4为两种很常见的51系列单片机,型号分别是AT89S51和STC89C51RC。可以看出,芯片外壳为黑色,一般由塑料或陶瓷制成,尺寸为52mm×15mm,其坚硬的外壳保护着里面的电子电路。芯片有40个引脚,每个引脚都是金属制成的,故能传导电信号。40个引脚均匀分布在长方形芯片的两侧,这种外观称为DIP封装(dual in-line package,即双列直插式封装)。其中(a)是DIP封装芯片外形,(b)是DIP封装芯片在电路中的符号。对于DIP封装的AT89S51和STC89C51RC,它们的形状、外形尺寸大小和引脚功能相同,只是生产厂家不同,因而它们在电路中的符号可以相同。在它们外壳的上端有个半圆形的小槽,这个标志用来说明引脚序号:在芯片的左侧,离半圆形小槽最近的引脚为单片机的第1引脚,按逆时针方向从左到右依次为第2引脚、第3引脚,…,第40引脚。即在芯片的右侧离半圆形小槽最近的引脚应是单片机的第40引脚。图1-4(a)中40个引脚的序号与(b)中编号为1~40的引脚是一一对应的,这样,(b)中的电路符号充分表示了实际器件的各个引脚。

在工程应用当中,对于同一个型号的器件,在不同场合会对它的外形、尺寸等有不同的要求。因此,同一型号的单片机被制造成了多种形状,它的引脚分布位置也随着形状的变化而不同。图1-5和图1-6是STC89C51RC单片机的另外两种外形及其对应的电路符号,图1-5采用 PLCC封装(plastic leaded chip carrier,即带引线的塑料芯片载体,属表面贴装型封装),图1-6采用LQFP(low profile quad flat package,即薄型 QFP)。对于具有不同封装形式的同一型号的单片机,它们的内部电路、引脚功能都是相同的或基本相同,只是引脚的封装形式和分布位置不同。图1-5 STC89C51RC芯片PLCC封装图1-6 STC89C51RC芯片LQFP封装(a)LQFP封装外形 (b)LQFP封装电路符

需要注意的是,图1-4(b)中标识符为 P0.0~P0.7、P1.0~P1.7、P2.0~P2.7和P3.0~P3.7的引脚称为单片机I/O脚(Input/Output,输入/输出引脚),这32个引脚既可以作输出脚,又可以作输入脚。作输出脚时,单片机可以控制指示灯、数码管、电机等外部器件;作输入脚时,可以“感受”按键、开关、传感器等外部器件。此外,我们常将P0.0~P0.7称为P0口、P1.0~P1.7为P1口、P2.0~P2.7为P2口、P3.0~P3.7为P3口。也就是说,P0~P3这4个端口既可以作输出口,又可以作输入口。

看到了实际的单片机器件,了解到单片机的32个输入/输出引脚的功能,不难理解单片机的控制功能是如何体现的。例如,在图1-1所示的空调系统中,可以用单片机的3个引脚分别控制制热指示灯、制冷指示灯和除湿指示灯,用8个引脚控制2个数码管,用3个引脚分别控制制冷模块、制热模块和除湿模块,用2个引脚分别控制室内风机和室外风机,用2个引脚分别“感受”温度传感器的输入信号和遥控器接收模块的输入信号。至于单片机与外部器件连接时为什么使用的引脚数量不一样,这一点,与外部器件和连接方式有关。空调中单片机的输入/输出引脚与外部器件和功能模块的连接关系如图1-7所示。图1-7 单片机控制空调电路示意图

还要注意的是,不同的外部器件与单片机连接时,连接方法不同。如单片机的每个输入/输出引脚可以直接与指示灯和数码管连接,但风机与单片机连接时必须借助驱动电路。为什么呢?因为风机主要由电机和风扇构成,而电机相对单片机而言是大功率器件,因电机的工作电压较高(几十伏~几百伏)、电流较大(几安~几十安),而单片机是一个低功率器件,其每个输入/输出引脚的输出电压低(2.2~5V)、电流小(几毫安~几安),所以直接用单片机来推动风机这类大功率器件是不行的,只能通过驱动电路,把单片机的低电压、低电流输出转换成高电压、大电流输出。同样的道理,单片机驱动制冷模块、制热模块和除湿模块时也要通过相应的驱动电路。由于单片机的驱动能力较小,当单片机需要驱动很多小功率器件如指示灯和数码管时,也要采用合适的驱动电路。关于单片机的驱动能力和引脚功能在后续的学习内容中有详细介绍。学习单元三 单片机如何控制外部器件

通过前面的学习,我们了解到空调系统的功能、相应的功能部件和单片机I/O引脚三者之间有内在联系,这种关系如表1-1所示。

上表说明,单片机的 I/O引脚的确是双向的,单片机的每一个引脚都可以感受外部器件、控制外部器件。那么,单片机是如何控制外部器件的呢?或者说,单片机控制外部器件的工作原理是怎样的呢?

我们先看看现实生活中如何用一个开关控制 LED指示灯(即发光二极管)。如图1-8所示的电路图中,当开关 K 闭合时,无电流流过LED指示灯,指示灯熄灭;当开关 K断开时,只要选择合适的限流电阻R,就会有电流流过指示灯,指示灯就会发光。所以,开关 K能够控制指示灯的亮和灭。图1-8 开关K控制LFD指示灯电路图表1-1 空调系统与单片机的I/O口控制

图1-8所示的开关K控制 LED指示灯电路原理与单片机控制外部器件的工作原理有什么联系呢?

其实,单片机控制LED指示灯和其他外部器件与图1-8用开关K控制LED指示灯类似,原因是单片机内部已经集成了电源Vcc、电阻R和“开关K”,如图1-9所示。图1-9 单片机控制LFD指示灯的电路模型及电路图(a)电子模型 (b)P1.0引脚控制 LED指示灯电路图

图1-9(a)中,LED指示灯的正极与单片机的某一输入/输出引脚 I/O(英文为 Input/Output,简称I/O)相连,另一端连接地。集成在单片机内部的电阻 R一端与单片机正电源脚Vcc相连,另一端与单片机的I/O脚相连,也就是与指示灯的正极相连。在单片机内部有个“开关K”,它连接单片机的I/O脚和负电源脚GND。需要注意的是,这个“开关K”并不是真正意义上的机械式开关,而是存在于单片机内部的一个“电子开关”,这个电子开关主要由场效应管等构成(见学习情景三中的学习单元一),它也能被随意地控制其通和断,于是,指示灯的亮和灭受单片机内部的电子开关 K所控制:当电子开关 K闭合接负电源脚GND时,指示灯熄灭;反之,当电子开关K断开时,指示灯亮。关于电子开关 K的详细情况我们将在解剖单片机内部结构时作介绍,刚开始不需要过多地了解,只需要知道这个电子开关的状态决定了I/O脚的电平状态是 GND(0V)还是 Vcc(+5V)。可能有人会问,电子开关由谁来控制呢?由单片机指令。指令是单片机根据人的意图来执行某种操作的命令。那么指令是什么样子的呢?

如果我们要在单片机的某一个I/O引脚例如P1.0引脚输出高电平Vcc驱动 LED指示灯[电路见图1-9(b)],可以采用如下指令:

SETB P1.0;

反之,如果要在P1.0引脚输出低电平GND,可以采用如下指令:

CLR P1.0;“SETB”是“set bit”的英文缩写,意思是置位、置“1”、置高电平,“SETB P1.0”中文含义是把P1.0脚置成高电平;“CLR”是“clear bit”的英文缩写,意思是清除位、置“0”、置低电平,“CLR P1.0”中文含义是把P1.0脚置成低电平。在单片机学习中,可以先粗略地把高电平理解成Vcc,而把低电平理解成 GND。当我们将“SETB P1.0”这条指令事先“装入”单片机中以后,只要给单片机通上电,单片机会自动找到这条指令,单片机执行这条指令后电子开关K断开,+5V的电压通过正电源脚 Vcc和内部电阻 R从 P1.0脚送出,于是从P1.0输出高电平,指示灯正向导通,指示灯有电流流过从而被点亮。同样的道理,将指令“CLR P1.0”事先“装到”单片机中,单片机执行这条指令后电子开关K闭合,0V的电压通过负电源脚GND和电子开关K与P1.0脚相连,于是从P1.0输出低电平,指示灯无电流流过而不发光。

以上就是单片机执行指令实现对外部器件控制的最简单过程。单片机要实现对外部器件的控制,常常需要执行多条指令。由多条指令构成的、用以实现某种特定功能的指令集合通常称为程序。例如,在图1-9(b)中,用P1.0引脚控制LED闪亮,程序是怎样的呢?

要让接在P1.0引脚上的 LED闪亮,实际上就是要 LED亮一段时间,再灭一段时间,然后再亮,再灭,如此交替进行。换个说法,就是让单片机 P1.0脚周而复始地输出高电平和低电平。但如果直接使用下面的两条指令:

SETB P1.0

CLR P1.0

是否可行呢?

不行!这里有两个问题:

●单片机执行指令的时间很短,一般只有几个微秒。当执行完指令“SETB P1.0”后,LED是亮了,但在极短时间(微秒级)后,单片机又执行了“CLR P1.0”指令,LED又灭了,在这么短的时间内根本分辨不出LED曾经亮过。

●在执行完“CLR P1.0”指令后,单片机不会再自动回去执行“SETB P1.0”指令,所以不能正常工作。

为了解决这两个问题,可以设想如下:

●在执行完“SETB P1.0”指令后,延时一段时间(几秒或零点几秒)再执行第二条指令“CLR P1.0”,即可分辨出LED曾经亮过。

●在执行完第二条指令后,同样延时一段时间(几秒或零点几秒),然后再让单片机回去执行第一条指令“SETB P1.0”,然后再执行第二条……如此不断循环,LED将亮~延时~灭~延时~亮~延时~灭……,即可实现LED灯的闪烁功能。

由以上设想,编写的程序如下:

以上指令中,分号后面的文字是为了便于理解指令功能而写的注释,不是程序的有效执行部分,不影响程序的执行。

第(1)条指令的作用是让LED亮。按以上分析,第(2)条指令的作用是延时;第(3)条指令的作用是让LED熄灭;第(4)条指令同第二条指令相同,也是延时;第(5)条指令转去执行第(1)条指令。第(5)条指令 SJMP 的意思是跳转,在 SJMP 后面有一个参数是MAIN,而在第(1)条指令的前面有一个 MAIN,所以很直观地可以认识到,它要跳转到第(1)条指令处。第(1)条指令前面的MAIN被称之为标号,标号的用途是标识该行程序,便于使用。这里并不一定要给它起名叫 MAIN,起什么名字,完全由编程者决定,只要符合一定的规定就行,比如可以称它为ABC、XYZ等等。当然,这时第(5)条指令 SJMP后面的名字也得相应改动。

第(2)条和第(4)条指令的用途是延时。指令的符号是 ACALL,称为子程序调用指令。该条指令后面跟的参数是DELAY。DELAY是一个标号,用于标识一段程序。这条指令的作用是这样的:当执行 ACALL 指令时,就调用 DELAY 所指示的程序段,当DELAY所指示的程序段执行完以后就返回继续执行后面的指令。如第(2)条指令调用DELAY所指示的程序段后延时一段时间,然后继续执行第(3)条指令;第(4)条指令调用DELAY所指示的程序段后同样延时一段时间,然后继续执行第(5)条指令。

通过单片机的P1.0引脚对LED指示灯的控制实例,我们初步认识了单片机控制外部器件的机制和指令/程序在单片机中的作用。学习单元四 如何将程序“装入”单片机

通过上一单元对指令/程序的认识引发了对指令的好奇和兴趣。有人会问:单片机能认识这些指令吗?这些指令放在单片机中的什么地方?这些指令是如何进入单片机的?单片机又是怎样找到这些指令的?

我们在前面学习的单片机指令如“SETB”、“CLR”、“ACALL”、“SJMP”等称为指令的助记符,即帮助我们记忆单片机指令的符号,这种符号由美国 Intel公司设计,都是英文或英文缩写,只能被我们所识别,单片机这种较低级的电子器件是无法直接识别的,更谈不上根据这些英文和符号的指示执行特定的操作。所以必须通过某种编译程序(见学习情景二)把这些指令转换成单片机能识别的、能执行的控制代码(指令的十六进制代码),俗称机器码。将指令的助记符转换成机器码的过程称为编译。如指令“SETB P1.0”经编译后其机器码为“D2H 90H”,指令“CLR P1.0”经编译后其机器码为“C2H 90H”。不同的指令其对应的机器码不同,因而能被单片机识别、执行。用助记符编写的程序经电脑中开发环境编译成机器码后以 HEX文件格式保存在电脑硬盘上。单片机中有个专门用于存储程序代码的地方,称为程序存储器(ROM)。将程序装入到单片机,本质上是将程序代码写入单片机ROM中,“写入”也称为“装载”、“下载”、“烧写”等。

通常可以用下面两种方法中的任意一种将 HEX文件“写入”到单片机中。一、利用编程器将程序写入单片机

将程序烧写到可编程目标芯片如单片机、存储器等的装置被称为“编程器”(Programmer),也称“烧写器”,如图1-10所示。图1-10 各种不同类型的编程器(a)专业编程器 (b)一种较廉价的编程器

编程器的特点是有一个插座,可把单片机或其他存储器芯片插到其中,然后用编程器插座的一个小扳手把单片机或存储器芯片夹(锁)住,这样,单片机或存储器的每一个金属引脚与编程器插座的每一个插孔实现了电气连接,单片机或存储器芯片就做好了接收数据的准备,编程器通过串口、USB口或并口与普通电脑连接,电脑中装有烧写单片机的应用程序控制编程器工作,将 HEX文件中的十六进制代码写入单片机 ROM中,如图1-11所示。根据程序的长度和编程器的烧写速度,这个烧写过程会持续几秒到几分钟不等。烧写好后,松开编程器插座上的小扳手,将单片机取下来。这时,单片机的程序存储器(ROM)中已经装好了需要执行的各种指令。把单片机插到用户电路板中,接通电源,则单片机就自动开始执行指令,实现对外部器件的控制。图1-11 利用编程器将程序写入单片机

专业编程器可烧写的芯片品种很多,其数量可达数百种甚至更多,其售价一般都比较高。二、利用下载线将程序写入单片机

市面上新型单片机如前面提到的 AT89S51和 STC89C51RC等,几乎都支持 ISP(In System Programming)下载功能,俗称在线下载。所谓在线下载就是不使用编程器,而用下载线在用户电路板上直接将程序烧写到可编程目标芯片如单片机、存储器上等。

下载线本质上是一种更简单、更廉价的编程装置,其市场售价一般几十元。常用的下载线有串口型和并口型,如图1-12所示。图1-12 常见的下载线类型(a)RS-232串口型下载线 (b)并口型下载线(1)RS-232串口型下载线:如图1-12(a)所示,其一端与电脑 RS-232串口相连或通过USB-RS232转接线与电脑USB口相连,另一端通过电路板的串口连接单片机的 UART串口。它可将程序下载到单片机中的F1ash-ROM区。电路板上除了需要安排 RS-232到TTL的电平转换环节外,不再需要其他硬件辅助电路。这些带UART串口下载功能的单片机,其工作原理是:在单片机上电复位后的一段时间(大约几十~几百毫秒)内,芯片自动检测有无来自单片机串口的有效命令:如果没有,就运行芯片内的用户程序;如果有,就进行ISP下载。支持串口型下载的单片机有很多,如前面提到的STC公司的51系列单片机STC89C51/52RC等,这些芯片内部安排有专门的Flash-ROM区,出厂时已固化有 ISP引导程序。(2)并口型下载线:如图1-12(b)所示,其一端与电脑并口(打印机接口)相连,另一端通过电路板的ISP接口连接单片机的 SPI口。它也可将程序下载到单片机中的 F1ash-ROM区。这些单片机以 SPI口的方式支持串行在线编程,它的4个引脚 P1.4、P1.5、P1.6、P1.7分别构成SPI口的SS、MOSI、MISO和SCK,当引脚 RST被置为高电平时,允许对芯片进行在线编程和校验。此时电脑并口以双向口方式工作,是 SPI通信的主设备,而单片机是SPI通信的从设备。采用并口型下载线烧写程序的单片机有前面提到的Atmel公司的AT89S51/52等。

一款由深圳市雷迈特科技有限公司武汉分公司(http://www.hkzk.com.cn,联系人:赵先生,电话:027-87876894,13995663040, )开发的非常适合初学者的51单片机多功能学习开发板如图1-13所示。图1-13 STC89-Ⅵ型51单片机多功能学习开发板(a)开发板提供的两种用来在线烧定程序的接口 (b)利用下载线装程序写入单片机

该电路板可采用上述两种类型的下载线将程序写入新型单片机:电路板上有一个 RS-232串口(或USB口)和ISP接口,RS-232串口(或USB口)用来将目标程序 HEX文件下载到带UART串口ISP功能的单片机,如STC公司的51系列单片机,ISP接口用来将程序下载到支持SPI串行在线编程的单片机,如Atmel公司的51系列单片机。

利用下载线烧写单片机时,下载线的一端连接电脑,另一端与电路板相连,如图1-13 (b)所示。通过专用工具软件如STC-ISP、Atmel MCU ISP等,就能把hex机器码文件烧写到单片机中。程序烧写完后,可直接在电路板上运行程序、检验程序功能。关于 STC-ISP软件和Atmel MCU ISP软件的用法在学习情景二中有详细介绍。学习单元五 学习哪些单片机

在计算机和单片机中,所有的信息如图像、声音、汉字、各种数字、英文字符、各种符号等都是以半导体器件的物理状态来表示的,计算机和单片机采用双稳态电子器件作为保存信息的基本元件,它们只能识别用1和0表示的高低电平,因此计算机和单片机都采用二进制数表示各种信息,见附录1。

单片机按处理字长可分4位机、8位机、16位机和32位机等,其中用途最广、产量最大的是8位单片机。我国目前应用最广泛的8位单片机是51系列单片机。

51系列单片机源于20世纪80年代初,当时,美国 INTEL公司推出了名为 MCS-51的系列单片机,其主要型号及特征见表1-2,8051单片机是其中最典型的一款8位单片机,之所以称之为8位,是因为8051单片机一次最多处理8位二进制数据(我们将8位二进制数据称为1个字节,字节的英文名为byte,简称b),而多于8位的数据由单片机分割后,以8位一组进行处理。表1-2 MCS-51单片机的主要硬件特性

Intel公司首推的8051单片机有128个字节的片内 RAM、104kb(1k=2=1024)的片内ROM、2个定时器/计数器、l个串行口和4组I/O口、5个中断源采用2级优先结构,此外片内还集成了 CPU和时钟电路等。MCS-5l单片机最初采用 HMOS工艺,后来改用更为省电的CHMOS工艺,并衍生出一批采用同一内核、CHMOS工艺单片机品种,后者产品名中加有字符“C”,如80C51等。8051和80C51单片机的基本结构如图1-14所示,其引脚分布如图1-15(a)。

MCS-51系列单片机支持两种典型的应用模式:I/O应用模式和总线应用模式。在I/O应用模式下,单片机不需在外部扩展ROM,它的32个 I/O引脚每一个都能独立进行输出或输入,可直接驱动外部器件或输入外部信号(不考虑定时器、中断和串口对它们的占用)。但在总线应用模式下,单片机需在外部扩展 ROM,如图1-15(b)所示,它的 P0端口和P2端口用于扩展外部总线以构成8位数据总线和16位地址总线,P3端口一部分用于扩展控制总线,其余用于定时器、中断和串口,因此,真正留给用户的只剩下 P1口的8个I/O引脚。图1-14 8051和80C51单片机的基本结构图1-15 MCS-51单片机引脚分布及总线结构(a)引脚分布 (b)总线结构

国内早期对MCS-51单片机的应用基本上全是总线应用,相应的教材和实验设备也基本按这种应用模式来编写和设计。这是因为早期ROM型单片机(无论是8051/52的掩膜式ROM还是8751/52的EPROM)芯片价格太高(曾卖到70元/片),所以人们通常只能用无ROM的单片机如8031/32,这就造成在8031/32单片机系统中必须外扩ROM。

随着市场对单片机需求的不但扩大和技术的进步,ROM型单片机价格越来越低,功能越来越多,性能越来越好。目前单片机的应用基本上全是 I/O应用模式,而总线应用模式很少。故本教材按I/O应用模式编写和设计,有关总线扩展的内容不再介绍。

以8051和80C51为代表的 MCS-51系列单片机强大的控制能力和低廉的价格不断赢得人们的青睐。后来,Intel公司以专利互换和专利出售的方式,将该单片机内核授权给其他多家集成电路制造商,如Atmel、STC、SST、PHILIPS、华邦公司等。拿到该授权的厂商,在此基础上又开发出一批采用同一内核、有着自己特色的兼容产品,这些兼容产品在指令系统、硬件结构和片内资源上与标准8051单片机完全兼容、除新增的一些功能外其他功能基本相同,被称为新型51系列单片机。

与早期的MCS-51系列单片机相比,目前新型51系列单片机的应用已经发生了很大的变化,主要表现为以下几点:(1)片内带FLASH-ROM的芯片已成为应用主流。比如 AT89S51/52,其片内带4/8kb的FLASH-ROM,支持串行在线编程,编程寿命大于1000次。若用户需要更大的ROM容量,完全可以选择别的芯片,而不必为此扩充系统。(2)使用串行接口的外围芯片不断推出。以实时时钟芯片 DSl302为例,它本身只有8个引脚,与CPU的通信只要3根连线。而早先推出的实时时钟芯片 DSl2877有28个引脚,与CPU的通信需要十几根连线。也就是说,除非系统规模较大或者对数据传送速度要求很高,用户可以更多地采用单片机的I/O应用和串行扩展模式。(3)在线编程能力ISP。有些51单片机具有 ISP在线编程(In System Programming,简称ISP)的能力,可以直接在用户电路板/目标电路板中进行编程,而不用将它从用户电路板中摘下。例如,ATMEL 公司的单片机 AT89S51/52可利用 SPI 口进行在线串行编程。(4)在应用编程能力 IAP。有些51单片机具有 IAP 在应用编程(In Application Programming,简称IAP)的能力,可在程序运行中对片内其他ROM单元进行写入。例如STC公司的STC89C51/52,其内部有两块 FLASH-ROM,可以用芯片中常驻的监控代码将被调试的用户代码写入到芯片中其他FLASH-ROM区,并对其进行调试和运行。

ISP技术和IAP技术见附录2。(5)更好的开发环境、软件工具和软件资源。例如,工作于 Windows环境的 Keil和MedWin等集成开发环境、拥有很高编译效率的 C51编译器、与 ANSI C兼容的 C51函数库、用于多任务编程的RTX15实时操作系统等。

现在新型51系列单片机以其强大的功能、较低廉的价格逐步取代了早期的 MCS-5l系列单片机而成为市场上应用最广泛的8位单片机。由于新型51系列单片机在指令系统、硬件结构和片内资源上与MCS-51单片机完全兼容、除新增的一些功能如ISP、IAP、A/D、D/A等功能外其他基本相同,如果没有特殊要求,彼此间可以互换,因此人们习惯于将新型51系列单片机和以8051/80C51为代表的MCS-51系列单片机统称为51系列单片机,简称51单片机,它们是本书学习的对象。本书后续内容所提到的单片机都是以8051/80C51为代表的51系列单片机,后续内容主要围绕图1-14所示8051/80C51单片机内部结构框图展开介绍。思考与练习

1.人的控制中心是大脑,即通过大脑控制身体其他各个部位、各功能模块协调工作。在空调中,这个控制中心是什么?

2.想一想生活中的手机、MP3、MP4、全自动洗衣机、智能冰箱、智能电饭煲、微波炉、彩色电视机、影碟机、打印机、复印机、传真机、电子万年历、电子计价秤、电子收款机、电梯、数控车床、数控铣床、数控磨床等智能电器和设备,选其中的一种实际调查一下,看一看它有哪些功能?试画出其操作面板图和功能模块示意图,描述其工作过程。谈一谈单片机在其中扮演了什么角色,有哪些主要功能?

3.结合生活中的实例,谈一谈什么是单片机?

4.一种型号的单片机只能有一种封装吗?

5.对DIP封装的单片机,如何识别单片机各引脚的序号?

6.对DIP封装的单片机,单片机的正、负电源脚分别是第几引脚?

7.对DIP封装的单片机,单片机有哪些引脚可以作输入/输出引脚?

8.在空调中,为什么单片机输入/输出引脚不能直接与风机连接,而要通过驱动电路?

9.简述单片机指令“SETB P2.0”和“CLR P2.0”的中文含义。

10.简述指令与程序的关系。

11.什么是指令的助记符?什么是指令的机器码?助记符与机器码有什么内在联系?

12.简述汇编的含义。

13.简述编程器的用途和使用特点。

14.简述下载线的用途和使用特点。

15.简述几种常用下载线的使用方法。

16.简述51系列单片机的两种典型应用模式。

17.简述新型51系列单片机与MCS-51单片机的内在联系。学习情景二如何使用单片机

学习目标

1.了解单片机的使用条件和应用过程。

2.了解单片机正常工作的基本条件,掌握构建与测试单片机最小应用系统的方法。

3.初步了解Keil软件的安装与使用方法。

4.初步了解MedWin软件的安装与使用方法。

5.初步了解程序仿真软件Proteus的使用方法。

6.掌握用Atmel MCU ISP软件和并口型下载线烧写单片机程序的方法。

7.掌握用STC-ISP软件和串口型下载线烧写单片机程序的方法。学习单元一 使用单片机前的准备工作

在学习使用单片机前,我们要做好如下准备工作:一、硬件准备(1)一台普通的电脑。电脑作为一种工具是不可缺少的。(2)一块实训电路板。实训电路板也称实验板或用户电路板,市场上可售的很多,初学者也可自己制作,它为初学者学习单片机提供了一个硬件平台。目前在校学生学习单片机大多在实验箱上进行,实验箱为初学者提供了专用于实验的电路板。有了实验板,对初学者来说,免去了焊接电路板的麻烦。(3)一片51单片机。本书建议初学者采用新型51系列单片机。如 STC 公司的STC89C51/52 RC等可利用RS-232串口型下载线[见图1-12(a)]烧写程序,ATMEL公司的AT89S51/52可利用并口型下载线[见图1-12(b)]烧写程序。(4)一个编程器(烧录器)或者一根下载线。编程器和下载线用于将程序写入单片机。因编程器较贵,商品化的一般从300元到近千元,建议初学者采用下载线烧写单片机以降低学习成本,商品化的下载线一般30元到60元。需要注意的是,采用下载线烧写程序时所使用的实验板必须支持ISP下载功能,此时所选用的单片机也必须具有ISP下载功能。(5)一个在线仿真器(ICE)。仿真是单片机开发过程中非常重要的一个环节,除了一些极简单的任务,一般在产品开发过程中都要进行仿真,仿真的主要目的是进行软件调试,当然借助仿真器,也能进行一些硬件排错。因商品化的仿真器较贵,初学者学习的都是一些较简单的任务,且应用电路和实训程序一般都通过了测试和验证,故可不用考虑购买仿真器,一种很实用的办法是借助一些工具软件如Proteus、Keil、MedWin等提供的仿真功能观察程序运行结果。二、工具软件的准备

一些常用的工具软件是必须具备的,它们为我们营造了一个好的单片机开发环境。用来设计硬件电路的工具软件有 Protel 99、Protel DXP和 PowerPcb,用来编译程序、调试程序的工具软件有Keil、MedWin等,用来对程序功能仿真的工具软件有Proteus,用来烧写程序的工具软件有STC-ISP、Atmel MCU ISP等。关于这些工具软件的使用方法在学习情景二中有详细介绍。三、单片机的应用过程

通常单片机的应用过程可按以下几个过程进行:(1)单片机应用系统功能设计:明确系统功能和要求,完成单片机及其外部器件的选型工作。(2)设计硬件电路:根据系统功能和要求设计并搭建硬件电路,包括设计硬件电路原理图和PCB板,工厂制作好PCB板后完成元器件的安装、焊接、硬件电路测试。常见的设计硬件电路的工具软件有Protel 99、Protel DXP和PowerPcb等。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载