前言 单片机技术是现代工业自动化、电子电气、通信及物联网等领域的一门主流技术。随着人们生活及生产方式的自动化、智能化程度越来越高,单片机技术早已融入我们生活的每一个角落,几乎所有的家电内部都有单片机的身影,无数的自动化及智能公共设施也都有单片机在其背后兢兢业业地工作着。同时,单片机技术也是学习ARM嵌入式系统、FPGA设计等更高阶技术的一个基础。 很多同学都想学好单片机技术,可能看了不少书,也付出了很多的努力,但总感觉似懂非懂,遇上具体项目也很茫然而无从入手。目前市面上关于单片机开发的书有很多,但绝大多数,要么是过于理论化,全是架构讲述和汇编指令等,学了半天仍不知单片机为何物; 要么只是一些很简单的小实验,学完后也只能做到点亮个小灯、显示个数字等,C语言指针都没有用到过,综合实践的例子更是一个没有。在学完这类教材后无法深入下去,很难跟实际项目开发衔接起来,于是可能会怀疑自己的能力,适不适合搞单片机。 从作者多年从事单片机领域的工作经验来说,单片机这东西,要说难的话真不怎么难,外行人看起来可能挺神秘,其实主要是没人帮忙去点破各种缘由,学不会的主要原因是方法不对头,没有专业的人员带领大家入门。 基于这些原因,我们编写了这本《手把手教你学51单片机——C语言版》(第2版),并且配套了相关的视频教程、电子教案、源代码和实验开发板(详情浏览金沙滩工作室网站获取更多信息),手把手地带领大家来学习单片机技术,给单片机初学者带来福音,让大家一步一个脚印地掌握单片机技术。 《手把手教你学51单片机——C语言版》(第2版)这本书除了讲解简单的实验和编程语法、由浅入深地讲解单片机技术和C语言编程技巧外,更重要的是结合了多个模块,以实际工程项目的编程规则来逐步带领大家学习实际开发中的电路设计和编程思路。尤其是C语言的指针和结构体的灵活运用、单片机的多模块编程、实际项目开发流程指导等,更是当前单片机类教材中少见的瑰宝。通过对本教材的透彻掌握,可以使读者在进入公司后能够快速适应并能承担实际的项目开发,可以说这本教材为同学们搭建了从初学者步入工程师殿堂的桥梁。 本书特色 1) 理论与实践相结合 现阶段,学习单片机不是为了应付考试,也不是为了去撰写论文,而是真正学会单片机开发技术。因此本书主要起到一个辅导实践的作用,通过每一章节的学习,目的不是让大家记住背过哪些理论,而是让大家知道如何去实际操作编程。了解方法后,大家就可以真正地去实践操作一下,从而达到学习和掌握单片机技术的目的。 2) 由浅入深、循序渐进 众多初学者不知道单片机该如何学习,不要紧,本书为你制定了一套科学的学习方法和思路,只要紧跟书中的方法和思路,按照书中的要求去实践,相信很快就可以学会单片机了。本书的学习套路和传统的方法大不相同,传统的是先讲基本原理,然后再举例,本书则是尽可能先举例子,建立起鲜活的形象,然后带领大家去探求其中的奥秘,逐一解释例程中的每个知识点的原理,这样会非常有利于大家对例程的理解。 3) 细致讲解,形象比喻 自然万物都是相通的,单片机也不例外。其实单片机技术的很多原理和道理都跟人们的实际生活类似。在课程讲解的过程中,会尽量把难以理解的技术问题和实际生活经验相联系,用形象的比喻来帮助大家透彻理解原理。 4) 实例丰富,设计规范 以前的教材大多是学校老师或者专业写书人的著作,相对来说和实际项目开发有所偏离。我们认为: 学习技术,无限接近实际项目才是正道。因此参与编写本书的人员都是有着多年的丰富的实际项目开发经验的工程师,所有的电路设计、编程的思路和规范,都是与实际项目开发相结合的,这样大家在入门后,能够很快地投入实际开发中去。 5) 关注实用技术 本书的内容偏重于单片机的应用而非详尽的理论阐述。传统的书籍一般会把和单片机、C语言相关的内容一一列举介绍出来,而本书的原则是常用的重点讲解分析,不常用的只做简单介绍,早已过时的或者极少用到的内容不予理会,以提高本书的精华度。用一位网友的描述就是: 都是干货,对实际开发相当有用。 6) 配套视频教程 除了纸质书本之外,出版社采用微视频的方式,将配套教材的视频教程,全部上传到云端服务器,读者只需通过扫描教材上的二维码,即可观看教学视频。 7) 完善的技术讨论平台 本书提供论坛技术讨论平台——金沙滩工作室。读者不仅可以在上边找到我们的联系方式,下载所有的学习视频和文档资料,也可以加入我们的技术讨论群和大家一起讨论学习,共同进步。 资源下载 扫描下方二维码,可以获取相应的学习资源。 工具软件 开发板资料 PCB设计指南 程序代码 学习说明 教学课件 主要内容 全书一共20章,从第1章到第18章以实验为载体,从单片机最小系统和C语言基本语法开始讲解,逐步深入,讲解单片机内部资源和C语言的各种用法,并穿插介绍实际项目开发常用的电路设计思路和编程技巧等。本书在知识讲解的过程中,有些地方没有按照传统思路先介绍后应用,而是先应用后讲解,这样的方式更有利于大家深入理解知识点,清楚地了解知识点的用法和原理。第19章是项目开发指导,带领大家逐一走过实际项目开发的全部流程,并最终完成它,让大家进行一次实际项目开发前的实战演习。第20章是一个扩展实例,采用HCSR04超声波模块完成一个实例(超声波模块可以从网上购买),尝试以小实例项目的方式带领读者完成现实生活中的应用。附录介绍了单片机开发中一些常用工具的用法,熟练运用它们,可以帮助大家高效率地定位并解决问题。 关于作者 相信很多学电子的同学和我接触单片机的经历一样: 大学里开了C语言和单片机相关的课程,但是上完课了却从未见过单片机长什么样子,也不知道C语言有何用处,考试的时候通过背一下书上的概念和程序就那么通过了,头脑中除了留下“单片机”和“C语言”这样两个概念外,其他的全都就着馒头下肚了,没在大脑中留下一片云彩。 一个偶然的机会,我进入了我的单片机启蒙恩师李冬明老师的实验室,从此真正的单片机进入了我的世界。李老师给了我一套学习板,让我从师兄编写的程序开始学习,不懂的可以问师兄师姐。刚开始学习很难,什么都不懂,甚至想问问题都不知道该问什么,但是我还是坚持从早上8点半到晚上9点半全天候在实验室里学习。大概两三个月的时间,随着老师布置的第一个任务的完成,我发现自己一下子理解单片机了,当然这顿悟离不开两三个月的积累。半年后正式开始参与老师项目开发的一些简单工作,算是入门单片机了。我找工作的那年,由于经济危机,就业形势很严峻,但是带着在实验室学习的技术和积累的经验,我在就业大潮中很容易地找到了工作,而且进入工作岗位后,我迅速进入状态,一个月后在公司就开始参与实际产品研发工作了,几乎没有什么过渡期。 回顾我的单片机之路,我发现我是个幸运儿。一个班级里几十个人,一个学校又有那么多电子专业的学生,最终能够真正跟着老师参与项目开发锻炼的就那么几个,而全国有很多很多高校,最终有机会得到特训参加电子比赛以及项目开发实践机会的人太少太少了,大多数同学只能在外围羡慕。更有很多同学发现自己没这种机会后就自甘堕落,整天逃课玩游戏,最终大学毕业两手空空,如果不靠拼爹,靠自己很难找到称心的工作。大多数同学能考上大学,脑子一点也不比别人笨,只是没有一个领路人,没有一个正确的学习方法,缺少参与学习的平台和参加实践的机会。 致谢 本书在编写过程中得到李冬明老师的大力指点和指导,在此由衷地表示感谢。李冬明老师是一位非常严谨和认真的老师,他的严谨不仅体现在教学上,在科研上对我们的要求也是无比严格。我跟着他学习的时候,他经常说的一句话就是: “做技术必须要认真,很多人做事的时候喜欢糊弄,但做技术绝对不可以。技术是逻辑性很强的东西,不应该有任何侥幸心理,你糊弄它它就糊弄你。”这一点我在做实验的时候已经体会到了,曾经由于自己的不认真,电容极性接反,导致电容爆掉,板子烧毁。 本书诸多与实际开发相关的设计思路、编程技巧和算法等得到崔长胜工程师的大力指导,由衷地表示感谢。此外,本书在编写过程中,也得到广大单片机爱好者热情的支持和宝贵的反馈,在此表示真诚的感谢。 限于作者水平,书中难免存在不当之处,恳请广大读者批评指正。 宋雪松2020年4月