图书前言

前    言

  《单片机原理与应用及C51程序设计》一书自2006年出版后,以其全新的编写思路、鲜明的应用性特色,受到了广大教师及学生的欢迎,重印了9次,2009年修订出版的《单片机原理与应用及C51程序设计(第2版)》,重印了14次,2014年出版的《单片机原理与应用及C51程序设计(第3版)》,重印了12次,累计印数已达13万多册。为了更加适合各院校使用,编者认真听取了广大师生的意见,权衡内容与篇幅的矛盾,《单片机原理与应用及C51程序设计(第4版)》仍然保留了第1、2、3版的主体框架和特色,为了减小篇幅,仍然突出应用,对相应的内容做了一些修订和增减调整。

  MCS-51系列单片机应用广泛,是学习单片机技术较好的系统平台,同时也是单片微型计算机应用系统开发的一个重要系列,是嵌入式技术的入门课程。单片机实验及实践教学的目标是培养应用型人才,根据我们理论教学和实践教学的经验,发现学生要想熟练地掌握MCS-51单片机应用系统软件设计,就需要完全理解单片机汇编语言,这样才能更好地理解单片机的内部结构和工作原理,更容易掌握MCS-51程序设计。在减少学时的背景下,用汇编语言讲授单片机原理后不可能再单独开设一门“MCS-51程序设计”课程,因此我们在课堂上讲解单片机原理的同时也会介绍单片机C语言程序设计,以避免直到进入实验室或开发实践阶段时才讲授单片机C语言程序设计以及开发环境,从而为开设综合实验和创新实践奠定一定的基础。单片机原理与应用教材汇编语言版本较多,但在应用开发中采用汇编语言的却并不多,尤其在开发比较复杂的应用系统时,为了提高开发效率和使程序便于移植,现在多用C语言。C语言不仅学习方便,而且也与汇编语言一样能够对单片机资源进行访问,因而目前大多数院校在开设单片机课程时都引入了C语言。但引入C语言后在选教材时发现存在两个方面的问题:第一,单片机原理与应用(含单片机C语言程序设计)的教材很多,而兼顾汇编语言和C语言的教材不多,所以可选择的余地较小;第二,单片机C语言方面的教材一般面向开发,不讲原理,属于高级教程,不适合初学者。而我们需要一本在讲单片机基本原理的同时能兼顾汇编语言和C语言两个方面的教材,以避免学生在学习“单片机原理与应用”课程时还要另外参考一本单片机C语言方面的教材。

  基于上面所讲的原因,我们一直按照 “同一实例,汇编语言和C语言对比学习” 的思路教学并编写教材及改版。在本书的实例中,相同的功能用汇编语言和C语言分别实现,通过编程对比,使学生能够有选择地掌握一种并认识另一种。对于把“单片机原理与应用”及“MCS-51程序设计”作为两门课程分别开设的学校,也可以使用同一本教材。同时,为了提高学生应用设计的能力,还介绍了目前单片机接口常用的接口芯片,列举了几个简单的单片机应用系统开发实例。

  根据目前各高校课堂教学学时减少的现状,本版对内容作了调整,删减了课堂教学中的部分理论和应用内容,修改了相应的实例,单片机应用系统设计的实例讲解调整了写作方式,把其他接口芯片放在实例中介绍。

  考虑内容连贯、流畅和选用教材的教师的反馈意见,本版教材的总体结构和风格与第3版基本相同。第4版与第3版对比,做了如下内容调整:

  (1) 删除了原来的1.2节,修改成简要介绍微型计算机结构后引入单片机,增加了通用单片机和专用单片机的概念,单片机的发展、特点和应用。介绍51单片机和主要品种时,增加了ATMEL公司的AT89C5X和AT89S5X,为后续章节增加的内容做铺垫,同时简介了PIC和AVR系列。

  (2) 第2章介绍8051单片机,增加了AT89S5X的相关内容。包含AT89S5X单片机的双数据指针和辅助寄存器、AT89S5X单片机的空闲和掉电方式、AT89S5X单片机的ISP编程方式。

  (3) 对第3章内容做了适当调整,考虑现在学习和单片机应用开发基本用C51编程,本章的指令系统简化,汇编语言程序实例减少。

  (4) 第4章C程序部分增加了数组的内容。

  (5) 对第5、6章做了部分修改,增加了常用器件列表,实例修改成C51程序。

  (6) 第7章的定时/计数器部分增加了计数方式的应用和门控位测脉冲波的应用,原理部分做了对应修改。增加了AT89S5X单片机的看门狗WDT定时器;串行接口原理部分作了修改,增加了串行通信数据传送的基本过程,串口方式0的应用修改;中断原理作了修改,实例做了调整,增加了应用实例。

  (7) 将第8章修改成51单片机输入输出接口及编程,包含输出显示设备LED数码管接口和LCD显示器接口、输入设备键盘。键盘直接采用并口线控制,删除了存储器扩展和I/O口扩展。 

  (8) 对第9章D/A、A/D接口的内容做了部分修改。

  (9) 将原第10章和11章合并,介绍51单片机应用系统设计及实例,把原来第10章的芯片介绍放在实例中介绍,减少驱动程序的重复内容。这一章学生可作课程设计和毕业设计的参考内容,课堂教学可以不介绍。

  本书以实用为宗旨,用众多的实例讲解51单片机原理和硬、软件开发技术,针对同一功能,同时提供单片机汇编源程序和单片机C语言源程序,并在Keil C51中调试成功,通过Proteus仿真并实现,编者提供所有源代码和电路图的资源下载,读者可从清华大学出版社官网下载。从实用的角度出发,书中配备了大量的实例,详细描述了实例的具体设计步骤,并提供单片机汇编源程序和单片机C语言源程序的详细代码,且完整地阐述了单片机应用系统分析和开发的全过程,读者可以此作为进入单片机应用系统开发领域的首次尝试。

  本书与传统的单片机基本原理书籍相比较,更面向实际开发,与单片机C程序设计书籍相比,兼顾了单片机原理和汇编语言的讲解,同时提供了Proteus仿真,有利于初学者迅速掌握单片机技术。

  本书图文并茂,实用性强,为便于读者练习和自学,各章均配有少量习题。本书可作为大专院校单片机原理与应用类课程的教材,也可作为单片机原理与应用技术培训班的教材,特别适合打算学习单片机应用系统开发技术的读者,同时可供各类电子工程、自动化技术人员和计算机爱好者参考。

  对于MCS-51单片机的初学者来说,应该从本书的第1章开始进行学习,了解MCS-51单片机技术的基本知识和MCS-51单片机的使用方法,掌握MCS-51单片机结构和相应接口芯片的具体使用方法,以及与MCS-51单片机汇编语言编程和单片机C语言编程相关的具体技术,学完第1~10章,即可满足从事单片机应用系统开发的基本要求。

  对于已经具有一定MCS-51单片机技术基础,比较了解MCS-51单片机的读者来说,可以直接从第4章开始学习,重点理解和掌握使用MCS-51单片机开发应用系统的相关技术,通过对比来掌握单片机汇编语言编程和单片机C语言编程的方法,着重掌握单片机应用系统的开发过程。

  建议本书的理论课安排在50学时左右,实验课安排12~16学时,如果只学习汇编程序设计或C语言程序设计,理论学习课时可适当减少。课程学习后,可安排相应的课程设计,以便对学习内容进行巩固和加深理解。

  另外,本书在描述中经常把MCS-51单片机简称为“51单片机”,书中采用了Keil C51 V9.00 软件界面,读者在学习过程中也可以采用Keil C51的最新版本,或者自行下载其对应的软件包,以供学习和使用。

  根据我们的教学和开发经验,学习单片机技术,特别是学习单片机应用系统开发技术时,关键是让学习者迅速地找到适合自己的学习方法,必须在第一时间使学习者看到自己的学习成绩,排除“对硬件设计没有信心,畏惧编程”的心理因素。因此有必要走“依葫芦画瓢”的道路,在实验中模拟开发出简单的应用系统,然后逐渐地由浅入深,逐步进入单片机应用系统开发领域。

  为此本书给出了大量实例,包括硬件电路设计和应用系统开发,我们希望读者通过大量的实例来加深对相关内容的认识和理解,尽快地把理论知识转换为解决实际问题的能力。另一方面,为方便读者快速阅读本书,书中各实例中的所有源代码和电路图均提供下载,读者可以根据自己的实际情况进行选择和使用,建议读者详细阅读第5~10章,并分析电路和程序源代码,在实验室模拟一个单片机应用系统实验项目进行开发练习,以此作为真正的单片机应用系统开发的起步。

  本书由西华大学谢维成和成都大学杨加国、陈斌、苏长明共同编写,谢维成和杨加国担任主编。

  本书第1、2、9章和附录由杨加国编写,第3、5、6章由苏长明编写,第4、7章由陈斌编写,第8、10章由谢维成编写,最后由谢维成和杨加国统稿完成。另外王胜、郑海春、王孝平、杨帆、陈永强、李茜、宋玉忠参与了本书部分图形的绘制及仿真调试工作,在此一并表示感谢。同时感谢参考文献的作者们,本书借鉴了他们的部分成果,他们的工作给了我们很大的帮助和启发。

  尽管《单片机原理与应用及C51程序设计(第4版)》是改版,我们全体参编人员已尽心尽力,但限于自身水平,书中难免出现遗漏和错误之处,恳请广大读者不吝指正,给我们提出意见和建议。

  

  

  

                                                          编  者