手把手教你学51单片机 C语言版.pdf
手把手教你学51单片机C语言版(更新:2014-5-10) 内容简介 本书旨在培养和锻炼单片机系统实用开发技能,全书以实践为主线,让读者在一个个实践案例中 逐步掌握单片杋电路设计与程序代码编写能力。书中的内容从最初点亮一个小灯的简单实验,逐步增 加扩展知识面,到最后多功能电子钟的实际项目开发指导,不仅仅讲解了大量原理性知识,更重要的 是给读者提供了实际项目开发的思路和经验,可以让大家从实践过程中提高自己发现问题、分析问题、 解决问题的能力。 本书的参编人员都是拥有多年实际项目研发经验的资深工程师,因此书籍的内容涵盖了大量的现 时实际项目中所采用的技术和技巧,具有极强的实时性和先进性,可以为读者铺就一条从单片机初学 者晋级为工程师的康庄大道。 本书适合刚刚接触单片机的初学者自学阅读,又可以作为各类院校电子技术相关专业的单片机教 材,同时对电子行业的从业技术人员也有很高的参考价值。 本书封面贴有清华大学出版社防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话 图书在版编目数据 手把手教你学单片机:语言版宋雪松,李冬明,崔长胜编著。北京:清华大学出版社, 清华开发者书库 I1手...II1宋...2李...3崔...III1单片微型计算机一语言一程序设计 IV1 中国版本图书馆数据核字第 责任编辑:盛东亮 封面设计:李召霞 责任校对:时翠兰 责任印制:杨艳 出版发行:清华大学出版社 印装者:北京密云胶印厂 经销:全国新华书店 开本: 印张: 插页 字数:千字 附光盘张 版次 年月第版 印次 年月第次印刷 印定 数价 手把手教你学51单片机C语言版(更新:2014-5-10) 前 为什么要写这样一本书? 单片机技术,是现代工业自动化、电子电气、通信及物联网等领域的一门主流技术。随 着我们生活及生产方式的自动化、智能化程度越来越高,单片机技术早已融入到我们生活的 每一个角落,几乎所有的家电内部都有单片机的身影,无数的自动化及智能公共设施也都有 单片机在其背后兢兢业业的工作着。同时,单片机技术也是学习 嵌入式系统 设计等更高阶技术的一个基础 很多同学都想学好单片机技术,可能看了不少书,也付出了很多的努力,但却总感觉似 懂非懂,遇上具体项目也很茫然而无从入手。目前市面上关于单片机开发的书籍有很多,但 绝大多数的书籍,要么是过于理论化,全是架构讲述和汇编指令等,学了半天仍不知单片机 为何物。要么只是一些很简单的小实验,学完后也只能做到点亮个小灯、显示个数字等 语言指针都没有用到过,综合实践的例子更是一个没有。同学们学完这类教材后无法深入下 去,很难跟实际项目开发衔接起来,于是可能会怀疑自己的能力,适不适合搞单片机 从我们多年从事单片机领域的工作经验来说,单片机这东西,要说难的话真不怎么难, 外行人看起来可能挺神秘,其实主要是没人帮忙去点破各种缘由,学不会的主要原因是方法 不对头,没有专业的人员带领大家入门。 基于这些原因,我们编写了这本《手把手教你学单片机》的教材,并且配套了相关 的视频教程、电子教案、源代码和实验开发板(详情点击 ),手把手的带领大 家来学习单片机技术,给单片机初学者带来福音,让大家一步一个脚印的掌握单片机技术。 《手把手教你学单片机》这本教材除了讲解简单的实验和编程语法、由浅入深的讲 解单片杋技术和语言编程技巧外,更重要的是结合了多个模块,以实际工程项目的编程规 则来逐步带领大家学习实际开发中的电路设计和编程思路。尤其是语言的指针和结构体的 灵活运用、单片机的多模块编程、实际项目开发流程指导等,更是当前单片机类教材中少见 的瑰宝。通过对本教材的透彻掌握,可以使你在进入公司后能够快速适应并能承担实际的项 目开发,可以说这本教材为同学们搭建了从初学者步入工程师殿堂的桥梁。 本书特色 实践为主,理论与实践相结合 现阶段,我们学习单片机不是为了应付考试,也不是为了去撰写论文,而是真正学会单 片机开发技术。因此本书主要起到一个辅导实践的作用,通过每一章节的学习,目的不是让 大家记住背过那些理论,而是让大家知道如何去实际操作编程,了解方法后,大家就可以真 正的去实践操作一下,从而达到学习和掌握单片机技术的目的。 科学的学习方案,由浅入深循序渐进 众多初学者不知道单片机该如何学习,不要紧,本教材为你制定了一套科学的学习方法 和思路,只要你紧跟着我们的方法和思路,按照我们要求的去实践,相信你很快就可以学会 单片机了。我们的学习套路和传统的方法大不相同,传统的是先讲基本原理,然后再举例, 我们则是尽可能的先举例子,建立起鲜活的形象,然后带领大家去探求其中的奥秘,逐一解 释例程中的每个知识点的原理,这样会非常有利于大家对于例程的理解 手把手教你学51单片机C语言版(更新:2014-5-10) 细致讲解,形象比喻 自然万物都是相通的,单片机也不例外。其实单片机技术的很多原理和道理,都跟我 的实际生活类似。在课程讲解的过程中,我们会尽量把难以理解的技术问题和实际生活经验 相联系,用形象的比喻来帮助大家透彻理解根本原理 例程丰富,设计规范,与实际项目紧密结合 以前的教材大多是学校老师或者是专业写书人的著作,相对来说和实际项目开发有所偏 离。我们认为:学习技术,无限接近实际项目才是王道。因此参与编写此书的人员都是有着 多年的丰富的实际项目开发经验的工程师,所有的电路设计、编程的思路和规范,都是与实 际项目开发相结合的,这样大家在入门后,能够很快的投入到实际开发中去。 重点关注实用技术 本书的内容偏重于单片机的应用而非详尽的理论阐述。传统的书籍作者一般会把和单片 机、语言相关的内容一一列举介绍出来,而本书的原则是常用的重点讲解分析,不常用的 做简单介绍,早已经过时的或者极少用到的内容直接不予理会,提高本书的精华度。用一位 网友的描述就是:都是干货,对实际开发相当有用 配套视频教程 除了纸质书本之外,还附赠了 光盘,内容是我们的视频教程、电子课件() 各章节的实例源代码和习题答案等。 完善的技术讨论平台 本书提供论坛技术讨论平台 。读者可以在上边找到我们的联系方式,可 以下载所有的学习视频和文档资料,可以加入到我们的技术讨论群中和大家一起讨论学习, 共同进步 本书主要内容 全书一共章,从第章到第章以实验为载体,从单片机最小系统和语言基本语 法开始讲解,逐步深入,讲解单片机内部资源和语言的各种用法,并穿插介绍实际项目开 发常用的电路设计思路和编程技巧等。本书在知识讲解的过程中,有些地方没有按照传统思 路先介绍后应用,而是先应用后讲解,这样的方式更有利于大家深入理解知识点,清楚的了 解知识点的用法和原理。第章是项目开发指导,带领大家逐一走过实际项目开发的全部 流程,并最终完成它,让大家进行一次实际项目开发前的一个实战演习。第章讲解了单 片机开发中一些常用工具的用法,熟练运用它们,可以帮助你高效率的定位并解决问题。 关于我们 相信很多学电子的同学和我接触单片机的经历一样,大学里开了语言和单片机相关的 课程,但是上完课了却从未见过单片机长什么样子,也不知道语言有何用处,考试的时候 通过背一下书上的概念和程序就那么通过去了,头脑中除了留下“单片机”和“语言”这 样两个概念外,其它的全都就着馒头下肚了,没在大脑中留下一片云彩。 个偶然的机会,我进入我的单片机启蒙恩师李冬明老师的实验室,从此真正的单片机 进入了我的世界。李老师给了我一套学习板,让我从师兄编写的程序开始学习,不懂的可以 问师兄师姐。刚开始的学习很难,什么都不懂,甚至想问问题都不知道该问什么,但是我还 是坚持从早上点半到晚上点半全天候在实验室里学习。大概两三个月的时间,随着老师 手把手教你学51单片机C语言版(更新:2014-5-10) 布置给我的第一个任务的完成,我发现自己一下理解单片机了,当然这顿悟离不开两三个月 的积累。半年后正式开始参与老师项目开发的一些简单工作,算是入门单片机了。我找工作 的那年,由于经济危杋带来就业问题很严峻,但是带着在实验室学习的技术和积累的经验, 我在就业大潮中很容易的找到了工作,而且进入工作岗位后,我迅速进入状态,一个月后在 公司就开始参与实际产品研发工作了,几乎没有什么过渡期。 回顾我的单片机之路,我发现我是个幸运儿。一个班级里几十个人,一个学校又有那么 多电子专业的学生,最终能够真正跟着老师参与项目开发锻炼的就那么几个,而全国有很多 很多高校,最终有机会得到特训参加电子比赛以及项目开发实践机会的人太少太少了,大多 数同学只能在外围羡慕嫉妒恨。更有很多同学发现自己没这种机会后就自甘堕落,整天逃课 玩游戏,最终大学毕业两手空空,如果不靠拼爹,靠自己很难找到称心的工作。大多数同学 能考上大学,脑子一点也不比别人笨,只是没有一个领路人,没有一个正确的学习方法,缺 少了参与学习的平台和参加实践的机会。 随着我自己工作中技术水平的不断提高,我也发现传统的单片机教材完全跟不上技术发 展的节奏,导致这个行业的初学者非常迷茫和无奈。找了几个志同道合的朋友出来创业的时 候,决定把单片机教学相关工作作为工作室一项业务,先后做过两个版本的《手把手教你学 单片机》视频教程。 年初,跟清华大学出版社联合编写《手把手教你学单片机 单片机语言开发》这本教材,旨在帮助那些想学单片机但又无从下手的初学者们,帮助同 学们真正跨过这道门槛,步入工程师的行列 本书在编写过程中,得到李冬明老师的大力指点和指导,由衷的表示感谢。李冬明老师 是一位非常严谨和认真的老师,他的严谨不仅体现在教学上,在科研上对我们的要求也是无 比严格。我跟着他学习的时候,他经常说的一句话就是:“做技术必须要认真,很多人做事 的时候喜欢糊弄,但做技术绝对不可以。技术是逻辑性很强的东西,不应该有仼何侥幸心理 你糊弄它的话它就糊弄你。”这一点我在做实验的时候已经体会到了,曾经由于自己的不认 真,电容极性接反,导致电容爆掉板子烧毁 本书的诸多与实际开发相关的设计思路、编程技巧和算法等得到崔长胜工程师的大力指 导,由衷的表示感谢。崔工是那种能让初学者膜拜级别的大牛工程师,有着十几年的实际项 目开发经验,能够独自一人从上位机软件到 单片机、模拟电路、数字电路 原理图设计、高速高精度布板等等全部做下来。崔工的这种项目实战经验渗入到我们的 教材中,让初学者可以学到很多其他教科书上学不到的内容,今后可以直接把这些经验应用 到你自己的项目开发中去 此外,本书在编写过程中,也得到了广大单片机爱好者热情的支持和宝贵的反馈,在此 表示真诚的感谢。 限于作者水平,书中难免存在不当之处,恳请广大读者批评指正。任何批评和建议请发 至 宋雪松 年月 手把手教你学51单片机C语言版(更新:2014-5-10) 目录 第1章如何学习单片机 1.1学什么单片机 1.2如何学习单片机 1.3单片机学习的准备工作 1.4单片机开发软件环境搭建 1.5基本概况介绍 1.6答读者问 第2章点亮你的 2.1单片机的内部资源 2.2单片机最小系统 2.2.1电源 2.2晶振 2.2.3复位电路 小灯 2.4程序代码编写 2.4.1特殊功能寄存器和位定义 2.4.2新建一个工程 2.4.3编写点亮小灯的程序 2.5程序下载 2.6练习题 第3章硬件基础知识学习 3.1电磁干扰 3.2去耦电容的应用 3.3三极管在数字电路中的应用 3.3.1三极管的初步认识 3.3.2三极管的原理 3.3.3三极管的应用 3.4 三八译码器的应用 3.5 闪烁程序 练习题 第4章语言基础以及流水灯的实现 4.1二进制、十进制和十六进制 手把手教你学51单片机C语言版(更新:2014-5-10) 4.2语言变量类型和范围 4.3语言基本运算符 4.4循环语句 4.5 循环语句 4.6函数的简单介绍 7软件延时 4.8流水灯程序 4.9练习题 第5章定时器与数码管基础 5.1逻辑电路与逻辑运算 5.2定时器的学习 5.2.1定时器的初步认识 5.2.2定时器的寄存器 5.2.3定时器的应用 5.3数码管的学习 5.3.1数码管的基本介绍 5.3.2数码管的真值表 5.3.3数码管的静态显示 5.4练习题 第6章中断与数码管动态显示 6.1语言的数组 6.1.1数组的基本概念 6.1.2数组的声明 6.1.3数组的初始化 6.1.4数组的使用和赋值 6.2语句 语句 6.4数码管的动态显示 6.4.1动态显示的基本原理 6.4.2数码管显示消隐 6.5单片机中断系统 6.5.1中断的产生背景 6.5.2定时器中断的应用 6.5.3中断的优先级 6.6练习题 第7章变量进阶与点阵 手把手教你学51单片机C语言版(更新:2014-5-10) 7.1变量的作用域 7.1.1局部变量 7.1.2全局变量 7.2变量的存储类别 7.3点阵的初步认识 7.4点阵的图形显示 7.5点阵的动画显示 7.5.1点阵的纵向移动 7.5.2点阵的横向移动 7.6练习题 第8章函数进阶与按键 8.1单片机最小系统解析 8.1.1电源 8.1.2晶振 8.1.3复位电路 8.2函数的调用 8.3函数的形式参数和实际参数 8.4按键 8.4.1独立按键 8.4.2矩阵按键 8.4.3独立按键的扫描 8.4.4按键消抖 8.4.5矩阵按键的扫描 8.5简易加法计算器 8.6练习题 第9章步进电机与蜂鸣器 9.1单片机口的结构 9.2上下拉电阻 型步进电机详解与实例 9.3.1电机的分类 型步进电机原理详解 9.3.3让电机转起来 9.3.4转动精度与深入分析 9.3.5编写实用程序的基础 9.3.6包含综合应用的实用程序 9.4蜂鸣器 9.5练习题 手把手教你学51单片机C语言版(更新:2014-5-10) 第10章实例练习与经验积累 10.1数字秒表实例 10.1.1不同数据类型间的相互转换 10.1.2定时时间精准性调整 10.1.3字节操作修改位的技巧 10.1.4数码管扫描函数算法改进 10.1.5秒表程序 10.2 知识与实例 10.3交通灯实例 10.4单片机区域的划分 10.5长短按键的应用 10.6练习题 第11章 串口通信 11.1串行通信的初步认识 11.2 通信接口 转串口通信 11.4口模拟 串口通信 11.5 串口通信的基本应用 11.5.1通信的三种基本类型 11.5.2 模块介绍 串口程序 11.6通信实例与 码 11.7练习题 第12章指针基础与液晶的初步认识 12.1指针的概念与指针变量的声明 12.1.1变量的地址 12.1.2指针变量的声明 12.1.3指针的简单示例 12.2指向数组元素的指针 12.2.1指向数组元素的指针和运算法则 12.2.2指向数组元素指针的实例 12.3字符数组和字符指针 12.3.1常量和符号常量 12.3.2字符和字符串数组实例 12.4 液晶的认识 12.4.1 液晶的硬件接口介绍
用户评论