第一章 如何学习单片机

郑重声明:

本教材现以连载的方式由网络发布,并将于2014年由清华大学出版社出版最终完整版,版权归作者和清华大学出版社所有。本着开源、分享的理念,本教材可以自由传播及学习使用,但未经作者同意不得用于任何商业目的。最终解释权归金沙滩工作室所有,更多信息可登陆www.kingst.org了解。
由于QQ上传附件有下载次数限制,最新章节的PDF版下载地址可以从我们主站找到:http://www.kingst.org

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

1.1 学什么单片机

单片机的型号那么多,如何选取一款合适的进行学习?如果身边有比较便利的学习单片机的条件,有什么条件就学习什么型号。比如,你所在的公司刚好用到某个型号单片机,那么就方便多了。开发板不用购买,直接用公司现成的板子,指导老师到处是,公司的工程师,只要你耐心虚心的不耻上问,相信他们都会帮你解答问题。如果你跟着学习的导师,正在使用某个型号开发产品,那么同样的道理,你也会有得天独厚的优势,直接跟着学就行了。其实单片机型号虽然多,但是用法大同小异,学会一种,再上手其他的就很快了。

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

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

1.2 如何学习单片机

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

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

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

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

不是不让大家看书,而是看了一点以后,要马上去实践验证,然后再回头结合实践的结果,理解书上的内容。从这个地方,大家要得出一个结论来,就是在学实际技术过程中,和应付考试不同,书上的内容不需要你去硬性记忆,书是用来查的,不是用来记忆的。遇到问题,你学会翻书,知道该去哪里找,找到相关知识点,分析明白,领悟透彻即可,包括咱这本书也是一样,大家先看完一节课,然后马上就把这节课相应的实验做了,做实验的过程中,哪里有不懂的问题,随时翻阅书籍查找,再实验,再查找,反反复复的过程就可以把本节课的内容掌握。

下面,就是我总结的跟着我学习单片机的四个步骤。

第一步,鹦鹉学舌。

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

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

第二步,照葫芦画瓢。

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

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

第三步,他山之石可以攻玉。

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

在我们工程师实际产品研发的时候,很多种情况下也是如此。比如一个产品,我们如果从0开始着手的话,可能会走很多弯路,所以我们通常的做法是寻找购买同类几款产品,然后先研究他们的各自优缺点,学习他们的长处,然后在同类产品基础上在来设计我们的产品,这就是他山之石可以攻玉。

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

第四步,理论实践结合,温故知新。

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

1.3 单片机学习的准备工作

第一、足够的信心、恒心和耐心。

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

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

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

第二、教材和教程。

要学习单片机这门技术,良好的教材和教程必不可少。单片机方面,大家可以直接学习我们这本《手把手教你学单片机--51单片机C语言开发》,我们也有精心制作了《手把手教你学单片机》视频教程和《单片机高手之路》视频教程,并且后期会进行不定期更新。本着开源、共享的理念,我们的视频教程和电子教程都是免费开放的,大家可以到我们的网站www.kingst.org找到下载链接,如果有条件,也可以购买我们一般纸质教材,纸质书籍查阅起来比视频教程和电子教程更方便。另外,因为我们做单片机开发使用的是C语言,所以最好能有一本纯C语言教材,我们学到一些C语言语法性质的问题的时候,大家可以方便查阅,或者你可以直接把相关语法问题通过百度和谷歌等搜索一下也可以。

第三、电脑一台,单片机开发板一块。

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

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

当然,即使不购买我们的开发板,你想学单片机,必须要有一块开发板,不要总去用软件仿真,软件仿真是学不会单片机技术的。经常有同学过来问我,老师我用软件模拟的好用,做了硬件不好用是什么原因。在这里我提一下,如果你上课用这个软件仿真,糊弄老师应付考试可以的,但是实际开发和仿真软件差别太大,如果是学习单片机这门技术,那我只能告诉你,拿起烙铁焊电路,动手写程序,远离仿真软件,靠软件仿真永远学不到真正的技术。

1.4 单片机开发软件环境搭建

单片机开发,首要的两个软件一个是编程软件,一个是下载软件。编程软件我们用Keil  uVision4的51版本,也叫做keil C51,不做过多介绍,先直接讲如何安装。

1、首先准备KEIL uVision4安装源文件,双击安装文件,弹出安装的欢迎界面,如图1-1所示。

图1-1 Keil安装欢迎界面

2、点击“Next”按钮,弹出“License Agreement”对话框,如图1-2所示,这里显示一些用户安装协议,我们在“I agree to all the terms of the preceding License Agreement”打勾,如图1-2所示

 图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基本概况介绍

首先,打开一个工程项目,如图1-7所示

图1-7 工程文件

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

Keil软件菜单栏和工具栏的具体细化功能,和字典一样用来备查,所以我把它写到了附录里边,在这里只介绍一点,关于Keil软件里边的字体大小和颜色设置。在Edit-->Configuration-->Colors &Fonts里边,可以进行程序的颜色,字体大小的设置,如图1-8所示

 
图1-8 字体设置(一) 

    因为我们用的是C语言编程,所以我们在Window栏用鼠标选择8051:Editor C Files,然后在右侧Element栏目里可以选择要修改的内容,一般我们平时用到的,只是其中几项而已,比如Text,Text Selection,Number,/*Comment*/,//Comment//,Keyword,String这几项,Keil本身也有默认设置,你如果觉得不是很适合你的感觉,你可以更换一下。


图1-9 字体设置(二)

  

Keil菜单栏和工具栏的详细介绍,和字典一样,是备查的,不需要记住,所以我把它写到了附录里,如果大家对Keil哪个工具哪里有疑问,可以随时到附录里进行查找。

1.6答学生问

很多同学经常问我一些问题,我把一些典型的,直接写出来给大家看一下,让大家了解这门技术,了解我们这个行业。

1、单片机学完了能做什么?

单片机的应用非常广泛,电子,自动化,通信等领域都能用到,至于能做什么,得看你将来以后做什么工作。如同电脑一样,电脑可以用来编程,PS图片,看电影,打游戏,你用电脑做什么是不一定的。但是掌握好这门技术,起码可以让你学会一门工具,为将来从事电子、通信、自动化等领域的工作做好准备。

2、学单片机的捷径是什么?

做技术必须得脚踏实地,没有任何捷径,如果说有的话,那我只能告诉你,拳不离手曲不离口,就是最好的捷径,我学习单片机的时候,每天早上8点半进入老师实验室,晚上10点离开实验室,曾经创下连续3个月没有休息日的记录,你如果能这样学的话,那估计很快可以学好这门技术。

3、学习单片机应该学习什么语言,有没有必要再学习汇编

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

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

4、学会单片机后能找什么样的工作

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

5、学完了这个工资待遇如何

对于技术来说,技术水平高低直接决定你的工资薪酬。技术如果学的不好,那工作都找不到,更谈不上工资了,而技术做的好的,那工资就会很高。我们不清高,我们需要足以安身立命的薪资报酬,但是我希望的是,一旦你决定从事技术,你不用把过多的精力关注在能挣多少钱上,而应该放在如何把技术提高起来,只要技术水平高,比很多人都厉害,钱自然就找上门了。有一部印度的励志片叫做《三傻大闹宝莱坞》,我推荐做技术的都可以看看,里边有一句经典台词非常适合我们技术人员:追求卓越,成功就会在不经意间追上你。

第一章 如何学习单片机相关推荐

  1. Deep learning with python notebooks 笔记 第一章 深度学习基础

    第一章 深度学习基础 好的图表比文字传达的信息量多 图1-1帮助理清了人工智能.机器学习和深度学习之间的关系. 图1-2 清晰的阐述了经典程序设计范式和机器学习一种新的编程范式的不同.两种范式引出了两 ...

  2. 第一章 matlab 学习入门之matlab基础

    matlab系列文章目录 第一章 matlab 学习入门之matlab基础 在这一章会学习到: 数据类型(数值,字符串,结构,单元数组,函数句柄,映射容器) 运算符与运算(算术运算符,关系运算符,逻辑 ...

  3. 第一章 oceanbase学习之docker方式部署

    系列文章目录 第一章 oceanbase学习之docker方式部署 第二章 oceanbase学习之手动部署 第三章 oceanbase学习之迁移MySQL数据到oceanbase 第四章 ocean ...

  4. python第一章笔记_head first python(第一章)–学习笔记

    head first python(第一章)--学习流程图 1.安装python 这里是用python3的,除了windows之外,linux和macos都自带了,只是版本没有这么新. 举例:cent ...

  5. 数据挖掘:概念与技术(第三版)之第一章的学习记录

    写在前面的话 第一章为引论,主要对技术和概念进行概述.但是在我读来,书中对一些概念的阐述对于初学者来说相当不友好,语言组织逻辑相当差,陌生词汇繁多且不做解释.我不知道是自己水平有限理解不了还是翻译得不 ...

  6. 《图解HTTP》第一章个人学习思考

    第一章 了解Web及其网络基础 1.1使用HTTP协议访问Web 1.2HTTP的诞生 1.3网络基础TCP/IP 1.4和HTTP相关协议:IP\TCP和DNS 1.5负责域名解析的DNS服务 1. ...

  7. 第一章 eNSP学习(1-5)

    文章目录 1.前言 1.1作者介绍/系列总目录 1.2相关文章 2.eNSP基础篇 2.1常用快捷键命令 2.2配置系统时钟 2.3登录提示信息配置 2.4命令等级(每条命令对应的等级) 2.5用户界 ...

  8. 第一章 强化学习介绍

    Reinforement Learning Reinforcement Learning 强化学习讨论的问题是一个 智能体(agent) 怎么在一个复杂不确定的环境(environment)里面去极大 ...

  9. 第一章 python学习,个人对计算机硬件的一些理解

    1. 什么是语言  语言是一个事物与另外一个事物沟通的介质  python则是人(程序员)与计算机沟通的介质   2. 什么是编程  编程就是程序员将自己想要让计算机做的事情用编程语言翻译出来写到一系 ...

  10. HCNP路由交换学习指南(第一章)学习笔记

    什么是路由? IP网络最基本的功能就是为处于网络中不同位置的设备之间实现数据互通. 为了实现这个功能,网络中的设备需具备将IP报文从员转发到目的地的能力. 以路由器为例,当一台路由器收到一个IP报文时 ...

最新文章

  1. 嵌入式闪存您了解多少?听听专家怎么说!
  2. C# Null 赋值
  3. TensorFlow 变量共享,命名空间
  4. android 设置键盘弹出动画,Android实现键盘弹出界面上移的实现思路
  5. 为什么做Web开发要选择PHP
  6. 大学计算机四级报名,2016下半年安徽理工大学计算机四级报名
  7. 动手学深度学习Pytorch Task02
  8. 利用ajax查询数据库显示在前台,ajax动态查询数据库数据并显示在前台的方法
  9. 使用Automake,Autoconf生成Makefile
  10. 高等数学习题全解指南下册同济第七版课后习题答案
  11. linux下借助有道在线词典查词
  12. 关于网络的命令及介绍
  13. Drupal独到的编程思想
  14. 历史上的今天:大型计算机先驱和小型机之父诞生;中国雅虎邮箱成历史
  15. 【电子技术】如何抑制共模、差模噪声?
  16. 数论-快速幂、矩阵快速幂、慢速乘
  17. 【day8】【洛谷算法题】-P3954成绩-刷题反思集[入门1顺序结构][附一周思考总结]
  18. MySQL——O4. 表结构设计和数据类型优化
  19. 我们都是中本聪:那些孜孜以求建立密码学货币的先驱们
  20. Excel 之 VBA 入门学习(一)宏与 VBA ,使用技巧

热门文章

  1. 用scrapy-splash爬取淘宝
  2. 网络与信息安全方向顶刊顶会
  3. 计算机二级大题知识点汇总,计算机二级office复习知识点「汇总」
  4. 力扣(Leetcode)633 平方数之和
  5. 网页中MP4视频格式要求
  6. R语言深度学习GPU版本的下载
  7. 科技论文写作常用句式结构
  8. python报IndentationError: unexpected indent的解决方法.
  9. 安卓手机使用VNET抓包京东wskey
  10. robocopy 中的/MIR参数