图书前言

赞誉

在该书出版前夕,很荣幸有机会阅读了样章。整体感觉是这本书具有突出的原创性和优秀的实践性!作者是真正在用“心”写书,为什么这么说呢?这本书其实就是作者在和读者分享自己学习单片机的历程。作为一个工程师,作者从系统的角度,告诉读者学习单片机的方法,而不是就事论事地单纯讲应用。本书始终围绕着一个主题,即告诉读者如何根据不同应用要求,构建相关硬件接口和设计软件程序。书中给出的实例,基本上涵盖了单片机最为典型的应用场合。该书为读者提供了完备的学习生态系统,包括视频、课件、开发板和论坛。这样,读者和作者之间就建立了一个很好的交流平台,有利于高效学习。

——何宾(博士,畅销书《Xilinx FPGA设计权威指南》作者)

20世纪80年代诞生以来,8051就从未离开过嵌入式应用开发工程师的视线。在30多年的历程中,以8051为内核的单片机在结构、功能和开发语言等方面一直不断演进,至今仍被大量应用于各种电子设备,仍有大批的电子工程师采用8051单片机从事嵌入式系统的开发。作为微控制器的鼻祖,8051奠定了嵌入式芯片系统的经典体系结构; 掌握8051的开发应用,有利于从事更高层次的嵌入式开发系统的学习。该书的突出特点就是紧跟时代步伐,从实战角度论述,其设计思路、编程技巧和程序算法源于实践。作者能够灵活运用C语言的指针和结构体,可以将已呈现SoC特征的8051的性能发挥到极致。希望读者能够从8051开始,开启美妙的嵌入式开发之旅。

——于寅虎(电子产品世界总编)

宋雪松是一个电子技术的追梦人!他在追逐单片机的道路上,摸过烧红的铁块,有过无数的坎坷; 幸运的是,他坚持学习,勇于突破,终于成长为一名有理想、有本领的嵌入式工程师。该书是作者总结多年的学习经验和培训经历,凝练出的单片机学习的最佳实践途径。该书摒弃了传统的“先讲基本原理再举例”的学习套路,以一个个项目实例为载体,理论联系实践,手把手教会读者掌握单片机系统设计的方法和技巧; 是一本极具变革思想的前沿教材,推荐阅读!

——杨晖(电子技术应用副总编)

站在单片机初学者的角度,尤其是高职高专的广大师生的立足点,学习单片机的目标就是成长为单片机开发工程师。该书通过一个个独立的模块讲解,然后综合这些模块开发实际项目——这正是我们学习单片机的最有效的途径!甚至可以说,这本书是单片机学习的里程碑著作,值得学习,值得珍藏。

——刘继曾(教师,罗定职业技术学院)

毫无疑问,宋雪松这本《手把手教你学51单片机(C语言版)》既有较高的专业技术含量又通俗易懂,还附赠大量超值服务。想当初,本人在单片机与嵌入式系统学习的过程中,是摸着石头过河,走过不少弯路。现在想想,如果一开始就遇到了这样一本书,“手把手”地学习下来,至少可以节省两三年的摸索时间。真心希望更多的电子初学者们读到此书,提高学习效率。 

——吴常玉(青岛东软载波科技股份有限公司,高级嵌入式系统工程师)

我以前从未期待过某本书出版,但是自从得知《手把手教你学51单片机(C语言版)》要出版的消息后,我就越来越期待宋雪松老师撰写的这本书了,很荣幸现在有幸先睹为快。读过很多书,很多技术类图书即使贴有“初学”、“入门”的标签,也仅仅是标榜。而宋雪松老师是真正注重入门读者的问题,该书以通俗、生动的语言解释了复杂的知识,避免了晦涩难懂的专业术语,同时又不失培养读者学习行业规范,是一本极好的入门教材!

——夏皓(上海读者)

我很久没有看到过这么好的教材了,好像正好你想知道什么它就告诉你什么,你缺什么它就给你讲解什么。宋雪松老师一定是倾其全力,把宝贵的学习和教学经验奉献给了读者; 尤其是书中的实战项目,更是让人耳目一新。我目前只阅读到了文字教程,还没有看视频教程,非常期待!也更期待宋老师后续出版更高级的教程,可以领单片机初学者走出迷茫,成长为成熟的单片机工程师。                                

——白一哲(广州读者)

《手把手教你学51单片机(C语言版)》有个鲜明的特点:“实践总结理论,理论指导实践”。该教程善于“手把手”地带领读者去做各种奇妙的实验,接着“手把手”地剖析与之紧密联系的数电、C语言等理论根基,而后又利用这些理论去把前面的实验做改善或演变。其中的乐趣会强烈地吸引着你去“动手实践”,去“举一反三”!

——刘蛟宇(深圳读者)

感谢各位专家对于本书的不吝赞美,也感谢数十位热心读者热情洋溢的“读后感”,由于篇幅所限,不再一一列出。——作者、编辑注

前言

为什么要写这样一本书

单片机技术是现代工业自动化、电子电气、通信及物联网等领域的一门主流技术。随着人们生活及生产方式的自动化、智能化程度越来越高,单片机技术早已融入我们生活的每一个角落,几乎所有的家电内部都有单片机的身影,无数的自动化及智能公共设施也都有单片机在其背后兢兢业业地工作着。同时,单片机技术也是学习ARM嵌入式系统、FPGA设计等更高阶技术的一个基础。

很多同学都想学好单片机技术,可能看了不少书,也付出了很多的努力,但却总感觉似懂非懂,遇上具体项目也很茫然而无从入手。目前市面上关于单片机开发的书有很多,但绝大多数,要么是过于理论化,全是架构讲述和汇编指令等,学了半天仍不知单片机为何物。要么只是一些很简单的小实验,学完后也只能做到点亮个小灯、显示个数字等,C语言指针都没有用到过,综合实践的例子更是一个没有。在学完这类教材后无法深入下去,很难跟实际项目开发衔接起来,于是可能会怀疑自己的能力,适不适合搞单片机。

从作者多年从事单片机领域的工作经验来说,单片机这东西,要说难的话真不怎么难,外行人看起来可能挺神秘,其实主要是没人帮忙去点破各种缘由,学不会的主要原因是方法不对头,没有专业的人员带领大家入门。

基于这些原因,我们编写了这本《手把手教你学51单片机(C语言版)》,并且配套了相关的视频教程、电子教案、源代码和实验开发板(详情点击www.kingst.org),手把手地带领大家来学习单片机技术,给单片机初学者带来福音,让大家一步一个脚印地掌握单片机技术。

《手把手教你学51单片机(C语言版)》这本书除了讲解简单的实验和编程语法、由浅入深地讲解单片机技术和C语言编程技巧外,更重要的是结合了多个模块,以实际工程项目的编程规则来逐步带领大家学习实际开发中的电路设计和编程思路。尤其是C语言的指针和结构体的灵活运用、单片机的多模块编程、实际项目开发流程指导等,更是当前单片机类教材中少见的瑰宝。通过对本教材的透彻掌握,可以使读者在进入公司后能够快速适应并能承担实际的项目开发,可以说这本教材为同学们搭建了从初学者步入工程师殿堂的桥梁。

本书特色

1) 实践为主,理论与实践相结合

现阶段,学习单片机不是为了应付考试,也不是为了去撰写论文,而是真正学会单片机开发技术。因此本书主要起到一个辅导实践的作用,通过每一章节的学习,目的不是让大家记住背过哪些理论,而是让大家知道如何去实际操作编程,了解方法后,大家就可以真正地去实践操作一下,从而达到学习和掌握单片机技术的目的。

2) 科学的学习方案,由浅入深循序渐进

众多初学者不知道单片机该如何学习,不要紧,本书为你制定了一套科学的学习方法和思路,只要紧跟着书中的方法和思路,按照书中要求的去实践,相信很快就可以学会单片机了。本书的学习套路和传统的方法大不相同,传统的是先讲基本原理,然后再举例,本书则是尽可能先举例子,建立起鲜活的形象,然后带领大家去探求其中的奥秘,逐一解释例程中的每个知识点的原理,这样会非常有利于大家对例程的理解。

3) 细致讲解,形象比喻

自然万物都是相通的,单片机也不例外。其实单片机技术的很多原理和道理都跟人们的实际生活类似。在课程讲解的过程中,会尽量把难以理解的技术问题和实际生活经验相联系,用形象的比喻来帮助大家透彻理解原理。

4) 例程丰富,设计规范,与实际项目紧密结合

以前的教材大多是学校老师或者专业写书人的著作,相对来说和实际项目开发有所偏离。我们认为: 学习技术,无限接近实际项目才是正道。因此参与编写此书的人员都是有着多年的丰富的实际项目开发经验的工程师,所有的电路设计、编程的思路和规范,都是与实际项目开发相结合的,这样大家在入门后,能够很快地投入到实际开发中去。

5) 重点关注实用技术

本书的内容偏重于单片机的应用而非详尽的理论阐述。传统的书籍作者一般会把和单片机、C语言相关的内容一一列举介绍出来,而本书的原则是常用的重点讲解分析,不常用的只做简单介绍,早已经过时的或者极少用到的内容直接不予理会,提高本书的精华度。用一位网友的描述就是: 都是干货,对实际开发相当有用。

6) 配套视频教程

除了纸质书本之外,还附赠了DVD光盘,内容是视频教程、电子课件(PPT)、各章节的实例源代码和习题答案等。

7) 完善的技术讨论平台

本书提供论坛技术讨论平台: www.kingst.org。读者可以在上边找到我们的联系方式,下载所有的学习视频和文档资料,可以加入到我们的技术讨论群中和大家一起讨论学习,共同进步。

本书主要内容

全书一共20章,从第1章到第18章以实验为载体,从单片机最小系统和C语言基本语法开始讲解,逐步深入,讲解单片机内部资源和C语言的各种用法,并穿插介绍实际项目开发常用的电路设计思路和编程技巧等。本书在知识讲解的过程中,有些地方没有按照传统思路先介绍后应用,而是先应用后讲解,这样的方式更有利于大家深入理解知识点,清楚地了解知识点的用法和原理。第19章是项目开发指导,带领大家逐一走过实际项目开发的全部流程,并最终完成它,让大家进行一次实际项目开发前的一个实战演习。第20章讲解了单片机开发中一些常用工具的用法,熟练运用它们,可以帮助大家高效率地定位并解决问题。

关于我们

相信很多学电子的同学和我接触单片机的经历一样,大学里开了C语言和单片机相关的课程,但是上完课了却从未见过单片机长什么样子,也不知道C语言有何用处,考试的时候通过背一下书上的概念和程序就那么通过了,头脑中除了留下“单片机”和“C语言”这样两个概念外,其他的全都就着馒头下肚了,没在大脑中留下一片云彩。

一个偶然的机会,我进入了我的单片机启蒙恩师李冬明老师的实验室,从此真正的单片机进入了我的世界。李老师给了我一套学习板,让我从师兄编写的程序开始学习,不懂的可以问师兄师姐。刚开始的学习很难,什么都不懂,甚至想问问题都不知道该问什么,但是我还是坚持从早上8点半到晚上9点半全天候在实验室里学习。大概两三个月的时间,随着老师布置给我的第一个任务的完成,我发现自己一下理解单片机了,当然这顿悟离不开两三个月的积累。半年后正式开始参与老师项目开发的一些简单工作,算是入门单片机了。我找工作的那年,由于经济危机带来就业问题很严峻,但是带着在实验室学习的技术和积累的经验,我在就业大潮中很容易地找到了工作,而且进入工作岗位后,我迅速进入状态,一个月后在公司就开始参与实际产品研发工作了,几乎没有什么过渡期。

回顾我的单片机之路,我发现我是个幸运儿。一个班级里几十个人,一个学校又有那么多电子专业的学生,最终能够真正跟着老师参与项目开发锻炼的就那么几个,而全国有很多很多高校,最终有机会得到特训参加电子比赛以及项目开发实践机会的人太少太少了,大多数同学只能在外围羡慕嫉妒恨。更有很多同学发现自己没这种机会后就自甘堕落,整天逃课玩游戏,最终大学毕业两手空空,如果不靠拼爹,靠自己很难找到称心的工作。大多数同学能考上大学,脑子一点也不比别人笨,只是没有一个领路人,没有一个正确的学习方法,缺少了参与学习的平台和参加实践的机会。

随着我自己工作中技术水平的不断提高,我也发现传统的单片机教材完全跟不上技术发展的节奏,导致这个行业的初学者非常迷茫和无奈。找了几个志同道合的朋友出来创业的时候,决定把单片机教学相关工作作为工作室一项业务,先后做过两个版本的《手把手教你学单片机》视频教程。2013年初,和清华大学出版社商定撰写《手把手教你学51单片机(C语言版)》这本教材,旨在帮助那些想学单片机但又无从下手的初学者们,帮助同学们真正跨过这道门槛,步入工程师的行列。

本书在编写过程中得到李冬明老师的大力指点和指导,由衷地表示感谢。李冬明老师是一位非常严谨和认真的老师,他的严谨不仅体现在教学上,在科研上对我们的要求也是无比严格。我跟着他学习的时候,他经常说的一句话就是: “做技术必须要认真,很多人做事的时候喜欢糊弄,但做技术绝对不可以。技术是逻辑性很强的东西,不应该有任何侥幸心理,你糊弄它的话它就糊弄你。”这一点我在做实验的时候已经体会到了,曾经由于自己的不认真,电容极性接反,导致电容爆掉,板子烧毁。

本书的诸多与实际开发相关的设计思路、编程技巧和算法等得到崔长胜工程师的大力指导,由衷地表示感谢。此外,本书在编写过程中,也得到了广大单片机爱好者热情的支持和宝贵的反馈,在此表示真诚的感谢。

限于作者水平,书中难免存在不当之处,恳请广大读者批评指正。

宋雪松2014年2月