作者第一次接触8051单片机是在1997年,当时还在读书,忙于考研,只是验证了老师给出来的几个程序,并没有认真地学习这门课程。后来由于科研的原因,接触的基本是高端的Xilinx可编程门阵列(FPGA)和TI的数字信号处理器(DSP)。时隔多年,再次系统研究STC单片机,已经是站在更高的高度上全面地理解和看待它。整个数字世界从低层次到高层次,依次是半导体开关电路、组合逻辑电路、状态机、CPU、汇编语言、高级语言、操作系统和应用程序,这就是学习和认知的路线。学习STC单片机也就是这条路线,当你掌握了这条路线的时候,你会发现STC单片机乐趣无穷。
2014年12月与STC的负责人姚永平先生在教育部信息中心举办的STC单片机决赛的评审现场再次会面,期间姚总希望我能编写一本STC单片机方面的教材。这对我来说压力是很大的,这是因为在国内图书市场上,关于单片机的书籍不下上百种,而且有几本单片机的书非常畅销。虽然此前我已经系统编写过电子设计自动化方面的整套书籍,但是编写单片机课程的教材对我来说也是一种挑战。在正式编写前,姚总建议我找到目前市场上几本比较畅销的单片机书。当我找到这些书时,发现目前的单片机教材和书籍都存在各种问题,不能很好地解决当前国内单片机课程教学所面临的困局。工程师编写的单片机教材过于应用化,条理性有所欠缺;而高校教师所编写的单片机教材又过于理论化,并且内容比较陈旧。
在我编写单片机教材期间,姚总多次提到用STC单片机作为C语言教学平台的想法,这个想法与我不谋而合。作者曾连续三年在第三学期给大学一年级电子信息类专业的学生进行为期一周的C语言实训课程教学,我发现情况就是在前期的C语言课程教学中老师讲的虽然很卖力,但是学生还是反映很抽象听不懂,似乎C语言课程都成了本科生掌握计算机最基本编程知识的障碍。很明显问题症结就是学生面对的是机器,无法有效地和这个机器进行交流,他们不知道如何用人的思维与计算机对话。解决这些困扰唯一的方法,就是让他们能够知道CPU如何运行、如何管理存储器、CPU如何控制外设。而传统C语言教学使用的PC又不能提供让学生看到这些细节的条件。虽然经过短时间的强化练习,学生对C语言的掌握程度有了很大的提高,但是离教学要求仍然有相当大的差距。我就一直在想,能不能在C语言实训中引入一些好的硬件平台来帮助学生学习C语言?这个问题一直困扰着我。但是,当我在编写这本单片机教材的过程中,眼前一亮,发现STC 8051单片机确实是个非常好的平台,因为CPU中的运算器和控制器、系统存储器、外设等能让学习者一览无余,再加上神一般的KeilμVision5软件集成开发环境,通过μVision5提供的调试器环境把单片机内部细节看个清清楚楚明明白白,它将C语言中抽象的指针、数组和函数等语法通过图、表、变量监控窗口全部都表示出来了。作者在编写第6章时,通过调试器提供的功能,把C语言中抽象的语法真正地介绍清楚了。
8051单片机自面世到现在经历了30多年,单片机课程教学中抛弃8051单片机的呼声日益高涨,因为很多人认为8051落伍了。因此,他们希望一上来就开始学习更高级的处理器。但是,8051(尤其是改进后的STC系列8051单片机)带给初学者,特别是国内高校的学生,是完善的生态系统,包括开放的CPU内部结构、完全公开的指令系统、大量的应用设计案例、容易入手的μVision5软件集成开发环境等,这些都是初学嵌入式系统最好的素材。我们经常说,简单的不一定是落后的。对于初学者来说,东西越简单学习起来就越容易入门,学习的知识更加系统且更有条理。
在编写本教材时,融入了作者在编写EDA工程系列丛书时所获取的大量新的知识,力图最大限度地挖掘STC单片机的性能和特点。在本书编写完成的时候,终于可以说这句话了:STC单片机是高职和本科学生,甚至是研究生学习嵌入式系统最好的入门级学习素材,也是相关专业学生必须掌握的最基本的计算机软件和硬件知识及技能。
在编写这本书的时候,以下面的思想为主线,以期待能更加透彻地表达“原理”和“应用”之间的关系。
(1)这本书既然讲的是单片机的原理和应用,首先就必须要讲清楚单片机的原理。在单片机的原理中,最重要的就是讲清楚8051 CPU的内部结构和指令系统,使得学生学会如何分析一个新的CPU、CPU的共性等,以及指令系统的作用是什么、指令系统和CPU之间的关系等问题。
(2)关于在学习单片机的时候,是否还有讲解汇编语言的必要性的问题,最近在教育界有很大的争论。这里必须强调,汇编语言是了解CPU结构最重要的途径。在实际应用中,可以不使用汇编语言,但是必须让学生知道汇编语言在整个计算机系统中所起的作用,至少也要让学生通过编写简单的汇编语言彻底地理解和掌握CPU内部的结构。这是因为如果学生不能很好地掌握CPU的内部结构,即使将来他们使用C语言等高级语言开发单片机,也很难编写出高效率的程序代码。
(3)对于应用部分来说,既要保留传统的应用例子,又应该引入一些新的可以反映最新信息发展技术的综合性的例子。这样,才能将单片机中的各个知识点联系在一起,以提高分析和解决问题的能力。
(4)能不能学好单片机一方面取决于教师能不能把单片机的理论真正地讲透,更重要的是学生能不能充分地在实践中进行学习。业界工程师常说,单片机是玩好的,不是教好的,可见实践在单片机学习中的重要性。
本书从开始编写到完稿历时近半年,全书共分为15章,以STC公司目前新推出的IAP15W4K58S4单片机为平台,以Keil最新的μVision5集成开发环境为软件平台,亲自设计大小案例近100个,这些设计例子都通过上述的硬件和软件进行了调试和测试。
为了方便教师的教学和学生的自学,配套提供了该教材的教学课件和所用设计实例的完整设计文件,以及视频教学资源,这些资源均可以进入清华大学出版社网站本书页面下进行下载(http://www.tup.com.cn)。
在本书的编写过程中参考了STC公司最新的技术文档和手册,以及STC学习板原理图和PCB图,在此对STC公司表示衷心的感谢。在本书编写的过程中,集宁师范学院物理系聂阳老师参加编写了第13~15章的内容,作者的学生李宝隆、张艳辉负责部分章节的编写工作,黎文娟对本书的全部稿件进行了初步的完善和修改,以及本科生吴瑞楠、陈宁帮助作者制作了本书的教学课件,并对书稿提出了宝贵的建议。在本书编写的过程中,得到了STC公司多位员工的热心帮助,特别是得到了STC公司姚永平先生的支持,他对作者在编写本书过程中遇到的各种问题进行了耐心细致的回答。在本书出版的过程中,也得到了清华大学出版社的大力支持,在此表示深深的感谢。
由于编者水平有限,编写时间仓促,书中难免有疏漏之处,敬请读者批评指正。
作 者
2015年5月于北京