手把手教你学51单片机(C语言版)(txt+pdf+epub+mobi电子书下载)

作者:宋雪松,李冬明,崔长胜

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

手把手教你学51单片机(C语言版)

手把手教你学51单片机(C语言版)试读:

作者简介

宋雪松

国内知名单片机培训专家,嵌入式产品技术顾问。拥有近十年产品研发经验,曾主持研发通信类、虚拟仪器等多款产品,在硬件电路设计和嵌入式软件设计方向有丰富的项目实战经验。2010年创立金沙滩工作室,致力于实用化的单片机技术教育,出品《手把手教你学51单片机》视频教程,该教程以通俗的语言、专业的思路和精湛的技术获得了广大读者一致好评,广为传播。

内容简介

本书旨在培养和锻炼单片机系统实用开发技能,全书以实践为主线,让读者在一个个实践案例中逐步掌握单片机电路设计与程序代码编写能力。书中的内容从最初点亮一个小灯的简单实验,逐步扩展知识面,到最后多功能电子钟的实际项目开发指导,不仅讲解了大量原理性知识,更重要的是给读者提供了实际项目开发的思路和经验,可以让读者从实践过程中提高自己发现问题、分析问题、解决问题的能力。

本书的参编人员都是拥有多年实际项目研发经验的资深工程师,因此书中的内容涵盖了大量的实际项目中所采用的技术和技巧,具有极强的实时性和先进性,为读者铺就一条从单片机初学者晋级为工程师的康庄大道。

本书适合刚刚接触单片机的初学者自学阅读,又可以作为各类院校电子技术相关专业的单片机教材,同时对电子行业的从业技术人员也有很高的参考价值。赞誉REVIEW

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

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

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

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

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

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

我很久没有看到过这么好的教材了,好像正好你想知道什么它就告诉你什么,你缺什么它就给你讲解什么。宋雪松老师一定是倾其全力,把宝贵的学习和教学经验奉献给了读者; 尤其是书中的实战项目,更是让人耳目一新。我目前只阅读到了文字教程,还没有看视频教程,非常期待!也更期待宋老师后续出版更高级的教程,可以领单片机初学者走出迷茫,成长为成熟的单片机工程师。——白一哲(广州读者)《手把手教你学51单片机(C语言版)》有个鲜明的特点:“实践总结理论,理论指导实践”。该教程善于“手把手”地带领读者去做各种奇妙的实验,接着“手把手”地剖析与之紧密联系的数电、C语言等理论根基,而后又利用这些理论去把前面的实验做改善或演变。其中的乐趣会强烈地吸引着你去“动手实践”,去“举一反三”!——刘蛟宇(深圳读者)

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

为什么要写这样一本书

单片机技术是现代工业自动化、电子电气、通信及物联网等领域的一门主流技术。随着人们生活及生产方式的自动化、智能化程度越来越高,单片机技术早已融入我们生活的每一个角落,几乎所有的家电内部都有单片机的身影,无数的自动化及智能公共设施也都有单片机在其背后兢兢业业地工作着。同时,单片机技术也是学习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语言版)》这本教材,旨在帮助那些想学单片机但又无从下手的初学者们,帮助同学们真正跨过这道门槛,步入工程师的行列。

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

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

限于作者水平,书中难免存在不当之处,恳请广大读者批评指正。任何批评和建议请发至:service@kingst.org。宋雪松2014年2月  第1章如何学习单片机

在错误的道路上日夜兼程,最终也无法成功,方法和思路绝对是最重要的。一些学技术的同学,往往看到这类章节会直接跳过去,因为大多数类似章节都是废话连篇。但是,今天在这里作者可以很负责任地告诉你,本章节讲到的学习单片机的方法,都是作者学习单片机的无数经验和教训总结出来的瑰宝。因为作者披荆斩棘,开辟了道路,所以可以告诉读者路在何方;也因为作者摸过烧红的铁块,烫了手,所以也可以告诉读者教训和代价是什么。希望各位都能站在作者的肩膀上,看得更远!1.1 学什么类型的单片机

单片机的型号那么多,如何选取一款合适的进行学习?如果身边有比较现成的学习单片机的条件,有什么条件就学习什么型号。比如,读者所在的公司刚好用到某个型号单片机,那么就方便多了。开发板不用购买,直接用公司现成的板子,指导老师到处都是,公司的工程师,只要耐心虚心的不耻上问,相信他们都愿意帮你解答问题。或者跟着学习的导师,正在使用某个型号的单片机开发产品,那么同样的道理,你也会有得天独厚的优势,直接跟着学就行了。单片机型号虽然众多,看起来纷繁复杂,其实它们的基本原理、基本用法都是相通的,只要熟练掌握其中一种,其他的都可以触类旁通,快速上手了。

如果这些条件都没有,那就跟着作者学吧,建议读者学习51单片机。为什么呢?虽然现在单片机种类和型号非常多,每个型号都有一定的市场份额,但是哪个型号也没有早期51单片机那般风光和火爆,虽然现在地位不是那么高了,但是因为51单片机积累的资料非常多,大家学起来就会拥有众多的参考资料,所以上手肯定比其他型号要快一些。如果学习稍微偏门的单片机,可能一个简单的软件问题就要折腾好长时间,不仅仅浪费了学习时间,更重要的是打击了学习单片机的信心。

那么是不是每种单片机都要学一遍呢?答案当然是否定的。大家跟着作者来学习51单片机,必须得学会举一反三和融会贯通的能力。单片机型号那么多,挨个学下来估计头发白了也学不完,所以大家跟着学51单片机,不能仅仅当作51来学习,更重要的是要当作“单片机”来学,要通过这个教程,把所有的单片机的内部资源都搞清楚、弄明白,每个内部模块的用法理解透彻,这样当遇到一个从没有用过的单片机,也就知道如何下手去使用它进行开发了。1.2 学习单片机的最佳方法

前边提到过,单片机是一门实用技术,学习它已经不是为了应付考试了,下面给大家总结了单片机的学习方法:一个要领,四个步骤。

学习单片机的要领就是:在实践中成长,In Doing We Learn!

学射箭得去拉弓,整天只摆造型肯定不行;学游泳得下水扑腾,整天在岸上做模仿活动不行;学开车得坐车上去开,坐沙发上肯定学不会。同样的道理,学单片机,整天盯着单片机书看肯定不行,也必须得亲自动手去练。

没有不下水就成为游泳健将的,也没有不到车上练就能成为赛车手的,这点大家都清楚,可为什么那么多人学单片机的时候,总是只抱着一本书看呢。第一,小学、中学甚至大学的学习模式都是如此,学什么东西主要都是靠看书,应付书面考试;第二,很多人想实践却不太清楚该怎么去实践。

遇到问题查书比直接看书的效果要好过百倍。不是不让大家看书,而是看了一点以后,要马上去实践验证,然后再回头结合实践的结果,理解书上的内容。从这个地方,大家会得出一个结论来,就是在学实际技术的过程中和应付考试不同,书上的内容不需要你去硬性记忆,书是用来查的,不是用来背的。

下面就是学习单片机的四个步骤。

1.鹦鹉学舌

刚出生的孩子叫“爸爸”、“妈妈”的时候,他甚至不知道“爸爸”、“妈妈”是什么意思,更不会理解这些声音是什么意思,但是当带着孩子见到他爸爸就让他喊“爸爸”,见到他妈妈就让他喊“妈妈”,见到爷爷就喊“爷爷”……慢慢会发现,次数多了,孩子就知道谁是爸爸,谁是妈妈,谁是爷爷,谁是奶奶了。

大家刚开始接触单片机的时候,也属于单片机行业的新生儿。单片机的样子,单片机外围的各种器件,单片机内部的各种结构,单片机使用C语言的编程方法,初学者可能都没有见过,脑子里全无概念。没关系,有些概念和方法不理解也没有关系,甚至不需要去理解,只需要跟着去鹦鹉学舌式的学习,第一遍学习某一节课的内容时,对于程序,大家就可以完全跟着抄下来,甚至抄两三遍,过一段时间会发现,好多东西也认识了,好多概念也慢慢地理解清楚了,也能大概看懂别人的小程序了,切忌觉得自己看会了,而简单复制粘贴。

2.照葫芦画瓢

很多同学学习的时候喜欢看视频、程序,甚至看别人的程序都能看懂,觉得自己就会了,等到自己写程序的时候,感觉就是老鼠啃天,不知道从哪里下手了,这是初学者很容易犯的“眼高手低”的毛病,所以第二步的内容就非常重要了。

这就要求每一位同学,在学完了当前课的内容,把第一步顺利完成以后,然后关掉视频教程,关掉源代码,自己通过看电路图和查找非源代码的其他任何资料,把当节课的程序代码重新默写出来,边写边多少理解那么一点点,而不是纯粹的背诵,应该说是背诵加理解的结合体。甚至学过几节课以后,可以回头把前边曾经这样实现过的课程,再按照这种方法做一遍。千万不要认为这一步没必要,这一步是读者能否真正学会单片机的一个关键,在学完本教程之前,每一课内容都要这样做,如果每一个程序都能够完美地完成,那么可以说,当节课的内容,百分之七八十已经掌握了。

3.他山之石,可以攻玉

单片机技术的最大特点就是可以通过修改程序来实现不同的功能,因此举一反三的能力就必不可少了。每一节课的实例后一般都会布置几个作业,大家尽量去独立完成这个作业。在完成这个作业的过程中可以参考程序思路,在这个基础上通过动脑思考去构建自己的程序框架,最终将程序完成。

在工程师实际产品研发的时候,很多种情况下也是如此。比如一个产品,如果从零起步的话,可能会走很多弯路,遭遇很多前人已曾遭遇过的挫折,所以通常的做法是寻找或购买几款同类产品,然后先研究它们的各自优缺点,学习它们的长处,然后在同类产品基础上再来设计自己的产品,这就是“他山之石,可以攻玉”。

初学者在学习的时候往往遇到很多问题,应该想到,遇到的问题,可能前辈们早就遇到过了,所以遇到问题后不要慌张,首先利用谷歌或者百度这些搜索引擎在网上搜一下,要做什么新东西,先去网上找相关资料了解一下,不管是编程还是硬件设计,多多参考别人的东西,只要把别人的东西分析明白了,自己用起来了,也就成为自己的知识了。

4.理论实践结合,温故知新

当大家把所有的课程都按照前边三步完成后,这个时候不妨再把书打开,再看看书,经过了自己的实战经历,再看书的时候,对很多知识点会有一种恍然大悟的感觉。甚至视频教程、书籍都可以反复看几遍,可能有的知识点当时学习的时候不明白,过了一段时间,回过头来再学习的时候,一下就明白了。1.3 单片机学习的准备工作

1.足够的信心、恒心和耐心

有同学问过我,单片机这门技术难不难。我觉得这个问题可以从下面两个方面去分析。

首先,要从战略上藐视它。那么多同学跟着老师学一段时间就可以做出来小车,超声波测距,甚至做出来机器人,似乎很拽的样子。那他们又不是三头六臂,我们也没有什么做不了的道理。实际上要说技术,其实就是一层窗户纸,表面看不透彻,感觉特别神秘,实际只要你稍微一努力就能捅破它,夸张点说,单片机在逻辑上的关系,只有小学的水平,简单得很。正所谓会者不难,难者不会,大家不懂这个东西,看起来感觉很神秘。所以只要认真踏实坚持学下去,肯定能学好这门技术。

其次,从战术上要重视它。单片机这东西,如果十天八天就学会了,那么这个技术还能值钱吗?可以这样说,如果一个技术很简单就被学会,那么很多人都会的这个技术,肯定也没什么前途和钱途。那究竟多久能学会呢?我给大家制定的学习方案,根据每个人的基础不同,平均每天要拿出两个小时以上的学习时间,大概一到三个月可以入门。入门的概念是给读者一个单片机开发任务,起码知道要努力的方向和解决问题的大概方法了。技术这东西,关键是坚持做下去,有恒心和耐心,如果长时间不用的话,肯定还会生疏。所以要想成为单片机高手,起码需要一年左右的单片机开发的历练才行。成为单片机高手的概念就是自己可以从头根据自己的想法去设计一个电路,根据需要的功能编写代码,做一个产品出来。

2.教材和教程

要学习单片机这门技术,良好的教材和教程必不可少。单片机方面,大家可以直接学习这本《手把手教你学51单片机(C语言版)》,并学习作者精心制作的配套视频教程。本着开源、共享的理念,视频教程都是免费开放的,大家可以到网站www.kingst.org找到下载链接。另外,因为做单片机开发使用的是C语言,所以最好能再有一本纯C语言的教材,学到一些C语言细节问题的时候,可以方便大家查阅,或者也可以直接把相关问题通过谷歌和百度搜索一下,绝大部分情况下都会找到满意的答案。

3.计算机一台、单片机开发板一块

计算机是学习单片机必不可少的工具,因为编写程序,查阅资料都得用到,但是有句题外话说一下,不要把计算机当成游戏机或者影碟机,偶尔玩玩游戏看看电影是可以的,劳逸结合,但是不可沉溺其中,否则还不如没有计算机。

单片机开发板是必需的。如果读者还在上学,学校实验室一般都会有开发板,可以考虑跟老师借一个,或者使用师兄师姐们用过的,这样可以省点钱。当然,如果身边有高手,比如辅导老师,会单片机的师兄,在他们的指导下做一个也可以,身边有人指导的话,不懂的问题还可以问他们。如果这些条件都不具备,那么可以购买一个,先学习别人板子的设计思路,给自己以后设计电路板打下基础。在这里就顺便推荐一下KST-51开发板,KST-51开发板是出自经验丰富的一线工程师之手,其中的设计都是根据实际项目开发的思路进行的,包括整体规划、电路设计、器件布局等等,可以为今后的项目开发提供一个优质的参考。另外一方面,因为教程是基于KST-51开发板做的,所以配套来用的话可以节省时间,提高学习效率。1.4 单片机开发软件环境搭建

单片机开发,首要的两个软件是编程软件和下载软件。编程软件用Keil μVision4的51版本,也称为Keil C51,不做过多介绍,先直接讲如何安装。(1)首先准备Keil μVision4安装源文件,双击安装文件,弹出安装的欢迎界面,如图1-1所示。图1-1 Keil安装欢迎界面(2)单击Next按钮,弹出License Agreement对话框,如图1-2所示。这里显示的是安装许可协议,需要在“I agree to all the terms of the preceding License Agreement”打钩。图1-2 License Agreement对话框(3)单击Next按钮,弹出Folder Selection对话框,如图1-3所示。这里可以设置安装路径,默认安装路径在C:\Keil文件夹。单击Browse按钮,可以修改安装路径,这里建议用默认的安装路径,如果要修改,也必须使用英文路径,不要使用包含有中文字符的路径。图1-3 Folder Selection对话框(4)单击Next按钮,弹出Customer Information对话框,如图1-4所示。输入用户名、公司名称以及E-mail地址即可。图1-4 用户信息(5)单击Next按钮,就会自动安装软件,如图1-5所示图1-5 安装过程(6)安装完成后弹出安装完成对话框,如图1-6所示,并且出现几个选项,大家刚开始把这几个选项的对号全部去掉就可以了,先不用关注有什么作用。图1-6 安装完成(7)最后,单击Finish按钮,Keil编程软件开发环境就这么装好了。1.5 Keil基本概况介绍

首先,用Keil先打开一个现成的工程,来认识一下Keil软件,如图1-7所示。图1-7 工程文件

从图1-7可以很轻松地分辨出菜单栏、工具栏、工程管理区、程序代码区和信息输出窗口。这个是Keil4的英文版,网上有一些汉化版本,但不建议使用。即使读者的英语不好,使用英文版本的软件也一点问题没有,刚开始大家先跟着去使用,一共没几个单词,不需要去翻译,用几次就记住怎么用了。因为以后做实际开发的时候,大多数软件都是英文版的,如果现在学习的时候一直用中文软件,将来一旦换了其他的英文软件就会慌了,所以从现在开始要慢慢来熟悉英文软件,将来再用到其他英文软件的时候,就可以做到触类旁通、驾轻就熟了。

Keil软件的菜单栏和工具栏的具体细化功能,都可以很方便从网上查到,不需要记忆,随用随查即可。在这里只介绍一点,关于Keil软件里边的字体大小和颜色设置。在菜单Edit→Configuration→Colors & Fonts里边可以进行字体类型、颜色、大小的设置,如图1-8所示。图1-8 字体设置(1)

因为用的是C语言编程,所以在Window栏中选择8051:Editor C Files,然后在右侧Element栏目里可以选择要修改的内容,一般平时用到的只是其中几项而已,比如:Text——普通文本,Text Selection——选中的文本,Number——数字,/*Comment*/——多行注释,//Comment——单行注释,Keyword——C语言关键字,String——字符串。Keil本身都是有默认设置的,可以直接使用默认设置,如果觉得不合口味,那就在这里更改一下,改完后直接单击OK按钮,看效果就可以了,如图1-9所示。图1-9 字体设置(2)1.6 答读者问

很多读者经常问一些问题,有一些很有现实或普遍意义,于是作者把有代表性的直接写出来给大家参考,让大家了解这门技术,了解这个行业。(1)单片机学完了能做什么?

单片机的应用非常广泛,电子、电气、自动化、通信等领域都有大量应用,至于能做什么,得看读者将来做什么工作。如同计算机一样,计算机可以用来编程、PS图片、看电影、打游戏等,用计算机做什么是不一定的。但是掌握好这门技术,起码可以让读者学会一种工具,为将来从事电子、电气、通信、自动化等领域的工作做好准备。(2)学单片机的捷径是什么?

做技术必须得脚踏实地,没有任何捷径可走!如果非要说有的话,那只能告诉你,拳不离手,曲不离口就是最好的捷径。作者学习单片机的时候,每天早上8点半进入老师实验室,晚上9点半离开实验室,曾经创下连续3个月没有休息日的记录,如果你也能这样学的话,那很快就可以学好这门技术了。(3)学习单片机应该学习什么语言,有没有必要再学习汇编?

相比较来说,汇编语言比较接近单片机的底层,使用汇编语言有助于理解单片机内部结构。简单的程序使用汇编语言,程序效率也可能比较高,但是当程序容量达到成千上万行以后(这时也仅能算个不太小的项目,还远没到大项目的级别),汇编语言在组织结构、修改维护等方面就会成为噩梦了,此时C语言就有不可替代的优势了。所以实际开发过程中,目前至少90%以上的工程师都在用C语言做单片机开发,只有在很低端的应用中或者是特殊要求的场合才会用汇编语言开发,所以建议大家还是用C语言开发比较好一些。

如果现在读者正好上学学到了汇编语言,建议认真学一下,学好了肯定会有益无害。但是现在如果说想直接快速学会单片机技术,那就不建议去看汇编语言了,直接学C语言就可以了,那些单片机底层的结构什么的,也可以在日后的开发过程中慢慢理解。(4)学会单片机后能找什么样的工作?

单片机是一个工具,和计算机有点类似但不完全一样,学会计算机可以用来编程,可以用来画图,可以用来PS照片,可以用来看电影等。学会单片机可以用来做通信技术,做自动控制技术等,但是单片机本身来说仅仅是一个工具,在用单片机的时候,慢慢接触多了,会有一个应用方向。不仅仅要会单片机,也得对这个应用方向熟悉,比如个人从事过扩频通信技术的算法研究,那么就要对扩频通信熟悉,然后把这个技术用单片机实现出来,也得会用单片机。当然大家也不用担心,找工作的时候公司对这个方向问题要求也不会很高,但多懂点的话,肯定也会提高自己的竞争力。(5)学完了单片机工资待遇如何?

对于技术来说,技术水平高低直接决定工资薪酬。技术如果学得不好,那工作都找不到,更谈不上工资待遇了,而技术做得好的话,那工资就自然会很高。一旦要决定从事技术,就不要把过多的精力关注在能挣多少钱上,而应该放在如何提高自身的技术水平上,只要技术水平高,比很多人都厉害,钱自然就找上门了。有一部印度的励志电影叫作《三傻大闹宝莱坞》,推荐做技术的都可以看看,里边有一句经典台词非常适合技术人员:追求卓越,成功就会在不经意间追上你!  第2章点亮你的LED

本章的标题是点亮LED,虽然任务很简单,但是需要大家了解的单片机基础知识却很多,特别是对于初学者,刚开始要在头脑中建立一个单片机的概念,然后通过点亮一个LED小灯来增加初学者对单片机的兴趣和自信。2.1 单片机的内部资源

在这里所讲到的单片机内部资源,和传统单片机书籍中讲单片机内部结构不同,这里讲到的内部资源是指作为单片机用户,单片机提供给读者可使用的东西。总结起来,主要是三大资源:(1)Flash——程序存储空间,早期单片机是OTPROM。(2)RAM——数据存储空间。(3)SFR——特殊功能寄存器。

在早期的单片机中,主要是用OTPROM(One Time Programmable Read-Only Memory,即一次可编程只读存储器)来存储单片机的程序,程序只能写入一次,如果发现错了,没办法,只能换一片重新写入。随着技术的发展,Flash以其可重复擦写且容量大、成本低的优点成为现在绝大多数单片机的程序存储器。对于单片机来说,Flash最大的意义是断电后数据不丢失,这个概念类似于计算机的硬盘,保存了电影、文档、音乐等文件,把电源关掉后,下次重新开计算机,所有的文件都还照样存在。

RAM是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据,跟计算机的内存是相似的概念,其实最典型的比喻是计算器,用计算器计算加减法,一些中间的数据都会保存在RAM里边,断电后数据丢失,所以每次打开计算器都是从归零开始计算。但是它的优点是读写速度非常快,理论上是可无限次写入的,即寿命无限,不管程序怎么运行和怎么读写,它都不会坏。

第三个资源是SFR,特殊功能寄存器。这个概念大家可能刚开始理解不了,但是一定要记住。单片机有很多功能,每个功能都会对应一个或多个SFR,用户就是通过对SFR的读写来实现单片机的多种多样的功能。

讲到这里,首先来了解一下51单片机。通常一说到51单片机,指的都是兼容Intel MCS-51体系架构的一系列单片机,而51是它的一个通俗的简称。全球有众多的半导体厂商推出了无数款这一系列的单片机,比如Atmel的AT89C52,NXP(Philips)的P89V51,宏晶科技的STC89C52……具体型号千差万别,但它们的基本原理和操作都是一样的,程序开发环境也是一样的。这里要分清楚51这个统称和具体的单片机型号之间的关系。

单片机内部资源的三个主要部分清楚了,那么选择STC89C52这款单片机来进行学习。STC89C52是宏晶科技出品的一款51内核的单片机,具有标准的51体系结构,全部的51标准功能,程序下载方式简单,方便学习,后面就用它来学习单片机。它的资源情况:Flash程序空间是8K字节(1K=1024,1字节= 8位),RAM数据空间是512字节,SFR后边会逐一提到并且应用。2.2 单片机最小系统

什么是单片机最小系统呢?单片机最小系统也称为单片机最小应用系统,是指用最少的原件组成单片机可以工作的系统。单片机最小系统的三要素就是电源、晶振和复位电路,如图2-1所示。图2-1 单片机最小系统电路

这张最小系统的电路图节选自KST-51开发板原理图,下面就照这张电路图来具体分析最小系统的三要素。2.2.1 电源

这个很好理解,电子设备都需要供电,就连家用电器(手电筒)也不例外。目前主流单片机的电源分为5V和3.3V这两个标准,当然现在还有对电压要求更低的单片机系统,一般多用在一些特定场合,在学习中不做过多的关注。

选用STC89C52,它需要5V的供电系统,开发板是使用USB口输出的5V直流直接供电的。从图2-1可以看到,供电电路在40引脚和20引脚的位置上,40引脚接的是+5V,通常也称为VCC或VDD,代表的是电源正极,20引脚接的是GND,代表的是电源的负极。+5V和GND之间还有个电容,作用在后面介绍。图2-2 单片机封装图

这个地方还要普及一个看原理图的知识。电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候更多考虑的是方便原理分析,而不是表达各个器件实际位置。比如原理图中的单片机引脚图,引脚的位置是可以随意放的,但是每个引脚上有一个数字标号,这个数字标号代表的才是单片机真正的引脚位置。一般情况下,这种双列直插封装的芯片,左上角是1引脚,逆时针旋转引脚号依次增加,一直到右上角是最大脚位,现在选用的单片机一共是40个引脚,因此右上角就是40(在表示芯片的方框的内部),如图2-2所示,大家要分清原理图引脚标号和实际引脚位置的区别。2.2.2 晶振

晶振,又叫晶体振荡器,从这个名字就可以看出来,它注定一生都要不停振荡的。它起到的作用是为单片机系统提供基准时钟信号,类似于部队训练时喊口令的人,单片机内部所有的工作都是以这个时钟信号为步调基准来进行工作的。STC89C52单片机的18引脚和19引脚是晶振引脚,接了一个11.0592MHz的晶振(它每秒振荡11059200次),外加两个20pF的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定。2.2.3 复位电路

在图2-1左侧是一个复位电路,接到了单片机的9引脚RST(Reset)复位引脚上,这个复位电路如何起作用后边再讲,现在着重讲一下复位对单片机的作用。单片机复位一般分三种情况:上电复位、手动复位和程序自动复位。

假如单片机程序有100行,当某一次运行到第50行的时候,突然停电了,这个时候单片机内部有的区域数据会丢失掉,有的区域数据可能还没丢失。那么下次打开设备的时候,人们希望单片机能正常运行,所以上电后,单片机要进行一个内部的初始化过程,这个过程就可以理解为上电复位,上电复位保证单片机每次都从一个固定的相同的状态开始工作。这个过程跟打开计算机电源的过程是一致的。

当程序运行时,如果遭受到意外干扰而导致程序死机,或者程序跑飞的时候,就可以按下一个复位按键,让程序重新初始化重新运行,这个过程就叫作手动复位,最典型的就是计算机的重启按钮。

当程序死机或者跑飞的时候,单片机往往有一套自动复位机制,比如看门狗,具体应用以后再了解。在这种情况下,如果程序长时间失去响应,单片机看门狗模块会自动复位重启。还有一些情况是程序故意重启复位单片机。

电源、晶振、复位构成了单片机最小系统的三要素,也就是说,一个单片机具备了这三个条件,就可以运行下载的程序了,其他的比如LED小灯、数码管、液晶等设备都是属于单片机的外部设备,即外设。最终完成用户想要的功能就是通过对单片机编程来控制各种各样的外设实现的。2.3 LED小灯

LED(light-emitting diode),即发光二极管,俗称LED小灯,它的种类很多,参数也不尽相同,KST-51开发板用的是普通的贴片发光二极管。这种二极管通常的正向导通电压是1.8~2.2V之间,工作电流一般在1~20mA之间。其中,当电流在1~5mA之间变化时,随着通过LED的电流越来越大,人们的肉眼会明显感觉到这个灯越来越亮,而当电流从5~20mA之间变化时,看到的发光二极管的亮度变化就不太明显了。当电流超过20mA时,LED就会有烧坏的危险了,电流越大,烧坏的也就越快。所以在使用过程中应该特别注意它在电流参数上的设计要求。

下面来看一下这个发光二极管在开发板上的设计应用,USB接口电路如图2-3所示。图2-3 USB接口电路

图2-3是开发板上的USB接口电路,通过USB线,计算机给开发板供电和下载程序以及实现计算机和开发板之间的通信。从图上可以看出,USB座共有6个接口,其中2引脚和3引脚是数据通信引脚,1引脚和4引脚是电源引脚,1引脚是VCC正电源,4引脚是GND即地线。5引脚和6引脚是外壳,直接接到了GND上,大家可以观察一下开发板上的这个USB座的6个引脚。

现在主要来看1引脚VCC和4引脚GND。1引脚通过F1(自恢复保险丝)接到右侧,在正常工作的情况下,保险丝可以直接看成导线,因此左右两边都是USB电源+5V,自恢复保险丝的作用是,当后级电路哪个地方有发生短路的时候,保险丝会自动切断电路,保护开发板以及计算机的USB口,当电路正常后,保险丝会恢复畅通,正常工作。

右侧有两条支路,第一条是在+5V和GND接了一个470μF的电容,电容是隔离直流的,所以这条支路图2-4 LED小灯电路(一)是没有电流的,电容的作用后面再介绍,下面主要看第二条支路。把第二条支路摘取出来就是如图2-4所示。

发光二极管是二极管的一种,因此和普通二极管一样,这个二极管也有阴极和阳极,习惯上也称之为负极和正极。原理图里的LED画成这样方便在电路上观察,方向必须接对了才会有电流通过,让LED小灯发光。刚才提到了接入的VCC电压是5V,发光二极管自身压降大概是2V,那么在右边R34这个电阻上承受的电压就是3V。现在如果要求电流范围是1~20mA的话,就可以根据欧姆定律R=U/I,把这个电阻的上限和下限值求出来。

U=3V,当电流是1mA的时候,电阻值是3kΩ;当电流是20mA的时候,电阻值是150Ω,也就是R34的取值范围是150~3kΩ。这个电阻值大小的变化,直接可以限制整条通路的电流的大小,因此这个电阻通常称之为“限流电阻”。图2-3中用的电阻是1kΩ,这条支路电流的大小大家可以轻松计算出来,而这个发光二极管在这里的作用是作为电源指示灯,使用USB线将开发板和计算机连起来,这个灯就会亮了。

同理,在板子后级开关控制的地方,又添加了一个LED10发光二极管,作用就是当打开开关时,这个二极管才会亮起,如图2-5所示。图2-5 USB供电电路

大家注意,这里的开关虽然只有一个,但是是2路的,2路开关并联能更好地确保给后级提供更大的电流。电容C19和C10都是隔离断开直流的,作用在后面介绍,这里大家可以忽略。

下面把图2-4进行一下变化,把右侧的GND去掉,改成一个单片机的IO口,如图2-6所示。图2-6 LED小灯电路(二)

图2-4由于电源从正极到负极有电压差,并且电路是导通的,所以就会有电流通过,LED小灯因为有了电流通过,所以就会直接发光。把右侧的原GND处接到单片机P0.0引脚上,如果单片机输出一个低电平,也就是跟GND一样的0V电压,就可以让LED小灯发光了。

因为单片机是可以编程控制的,可以让P0.0这个引脚输出一个高电平,就是跟VCC一样的5V电压,那么这个时候,左侧VCC电压和右侧P0.0的电压是一致的,那就没有电压差,没有电压差就不会产生电流,没有电流LED就不会亮,也就是会处于熄灭状态。下面就用编程软件来实现控制小灯的亮和灭。2.4 程序代码编写

这是第一个实验程序,因此一定要耐心,先来了解一些51单片机特有的程序语法以及Keil软件的基本操作步骤。2.4.1 特殊功能寄存器和位定义

一般是用C语言来对单片机编程,而有的单片机有那么几条很特殊的独有的编程语句,51单片机就有,先介绍两条。

第一条语句是: sfr P0 = 0x80;

其中,sfr是关键字,是51单片机特有的,它的作用是定义一个单片机特殊功能寄存器(special function register)。51单片机内部有很多个小模块,每个模块居住在拥有唯一房间号的房间内,同时每个模块都有8个控制开关。P0就是一个功能模块,就住在了0x80这个房间里,人们就是通过设置P0内部这个模块的8个开关,来让单片机的P0这8个IO口输出高电平或者低电平的。而51单片机内部有很多寄存器,如果想使用的话必须提前进行sfr声明。不过Keil软件已经把所有这些声明都预先写好并保存到一个专门的文件中去了,要用的话只要文件开头添加一行#include即可,这个在后边有用法详解。

第二条语句是: sbit LED = P0^0;

sbit就是对刚才所说的SFR里边的8个开关其中的一个进行定义。经过上边第二条语句后,以后只要在程序里写LED,就代表了P0.0口(“^”这个符号在数字键6上边),注意这个P必须大写,也就是说给P0.0又取了一个更形象的名字叫作LED。

了解了这两个语句后,下面再看一下单片机的特殊功能寄存器。请注意,每个型号的单片机都会配有生产厂商所编写的数据手册(Datasheet),所以来看一下STC89C52的数据手册,从21页到24页,全部是对特殊功能寄存器的介绍以及地址映射列表。在使用这个寄存器之前,必须对这个寄存器的地址进行说明。是不是花花绿绿的太多了,记不住啊,这个没关系的,不需要你记住,了解一下,后边大部分会慢慢给大家解释,少部分需要用到的时候,自己过来查手册就可以了,做技术不是为了应付考试,可以随时翻阅手册查找需要的资料。

如图2-7所示是截取的手册中第22页最下边的一个表格。图2-7 IO口特殊功能寄存器

来看一下这个表,其中P4口STC89C52对标准51的扩展,先忽略它,只看前边的P0、P1、P2、P3这4个,每个P口本身又有8个控制端口。大家可以结合开发板原理图或者图2-1来看,这样就确定了单片机一共有32个IO口(Input Output,IO,分别是输入和输出)。

其中P0口所在的地址是0x80,一共有从7到0这8个IO口控制位,后边有个Reset Value(复位值),这个很重要,是看寄存器必看的一个参数,8个控制位复位值全部都是1。这就是说,每当单片机上电复位的时候,所有的引脚的值默认是都是1,即高电平,在设计电路的时候也要充分考虑这个问题。

前面那两条语句,写sfr的时候,必须要根据手册里的这个地址(Add)去写,写sbit的时候,就可以直接将一个字节其中某一位取出来。编程的时候,也有现成的写好寄存器地址的头文件,直接包含该头文件就可以,不需要逐一去写。2.4.2 新建一个工程

对于单片机程序来说,每个功能程序都必须要有一个配套的工程(Project),即使是点亮LED这样简单的功能程序也不例外,因此首先要新建一个工程,打开Keil软件后,单击Project→New μVision Project,然后会出现一个新建工程的界面,如图2-8所示。图2-8 新建一个工程

在硬盘上建立一个lesson2的目录,然后把LED这个工程的路径指定到这里,这样方便今后管理程序,不同的功能程序放到不同的文件夹下,并且给这个工程起一个名字叫作LED,软件会自动添加扩展名.uvproj,如图2-9所示。图2-9 保存工程

直接单击“保存”按钮,工程会自动保存成LED.uvproj文件,下次要打开LED这个工程时,可以直接找到文件夹,双击.uvproj文件就可以直接打开了。

保存之后会弹出一个对话框,这个对话框让人们选择单片机型号。因为Keil软件是外国人开发的,所以国内的STC89C52并没有上榜,但是只要选择同类型号就可以了。因为51内核是由Intel公司创造的,所以这里直接选择Intel公司名下的80/87C52来代替,这个选项的选择对于后边的编程没有任何的不良影响,如图2-10所示。图2-10 单片机型号选择

单击OK按钮之后,会弹出一个对话框,如图2-11所示,每个工程都需要一段启动代码,如果单击“否”按钮,编译器会自动处理这个问题,如果单击“是”按钮,这部分代码会提供给用户,用户就可以按需要自己去处理这部分代码,那这部分代码在初学51的这段时间内,一般是不需要去修改的,但是随着技术的提高和知识的扩展,就有可能会需要了解这块内容,因此这个地方单击“是”按钮,让这段代码出现,但是暂时不需要修改它,大家知道这么回事就可以了。图2-11 启动代码选择

这样工程就建立好了,如图2-12所示,如果单击Target 1左边的加号,会出现刚才加入的初始化文件STARTUP.A51。图2-12 工程文件

工程有了之后,要建立编写代码的文件,单击File→New,如图2-13所示,新建一个文件,也就是编写程序的平台。然后单击File→Save或者直接单击Save按钮,可以保存文件,保存时把它命名为LED.c,这个地方必须加上.c,因为如果写汇编语言,这个地方的扩展名是.asm,头文件就是.h等,这里编写的是C语言程序,这个地方必须自己添加文件的扩展名.c,如图2-14所示。图2-13 新建文件图2-14 保存文件

现在就可以在建立好的文件中输入程序代码了,在编写之前还有个工作要做。每做一个功能程序,必须要新建一个工程,一个工程代表了单片机要实现的一个功能。但是一个工程有时候可以把程序分多个文件写,所以每写一个文件,都要添加到所建立的工程中去,右击Source Group 1,单击Add Files to Group ‘Source Group 1’...,如图2-15所示。图2-15 添加文件(一)

在弹出的对话框中单击LED.c选中它,然后单击Add按钮,或者直接双击LED.c都可以将文件加入到这个工程下,然后单击Close按钮,关闭添加(如图2-16所示)。 这个时候会看到在Source Group 1下边又多了一个LED.c文件。图2-16 添加文件(二)2.4.3 编写点亮小灯的程序

忙活了半天,准备工作做了那么多,终于要编写程序代码了。如果学过C语言的话,应该能轻松地编程,如果没学过C语言也没关系,先照着抄,下面在合适的位置写出对C语言语法的解释,这样抄几次后再看看解释,就应该很明白了,抄的时候一定要认真,尤其标点符号不可以搞错。 #include    //包含特殊功能寄存器定义的头文件 sbit LED = P0^0;    //位地址声明,注意:sbit必须小写,P必须大写 void main()       //任何一个C程序都必须有且仅有一个main函数 {             //{}是成对存在的,在这里表示函数的起始和结束   LED = 0;       //分号表示一条语句结束 }

先从程序语法上来分析一下。(1)main是主函数的函数名字,每一个C程序都必须有且仅有一个main函数。(2)void是函数的返回值类型,本程序没有返回值,用void表示。(3){}在这里是函数开始和结束的标志,不可省略。(4)每条C语言语句以分号(;)结束。

从逻辑上来看,程序这样写就可以了,但是在实际单片机应用中

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?