学习单片机的正确方法

发布者:冷漠之心最新更新时间:2020-01-11 来源: eefocus关键字:单片机  正确方法  型号 手机看文章 扫描二维码
随时随地手机看文章

学习什么单片机

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

如果你这些条件都没有,那就跟着我学吧,我建议你学习51 单片机。

为什么要学习51单片机

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

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

如何学习单片机

 

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

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

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

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

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

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

1) 鹦鹉学舌

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

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

2) 照葫芦画瓢

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

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

3) 他山之石,可以攻玉

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

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

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

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

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

单片机学习的准备工作

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

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

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

其次呢,我们从战术上要重视它。你说单片机这东西,如果十天八天就学会了,那么这个技术还能值钱吗?我可以这样去表达,如果一个技术很简单就被学会,那么很多人都会的这个技术,肯定也没什么前途和钱途。那究竟多久能学会呢?我给大家制定的学习方案,根据每个人的基础不同,平均每天要拿出 2 个小时以上的学习时间,大概一到三个月可以入门。

入门的概念是给你一个单片机开发任务,你起码知道要努力的方向和解决问题的大概方法了。

技术这东西,关键是坚持做下去,有恒心和耐心,如果长时间不用的话,肯定还会生疏。所以要想成为单片机高手,起码需要一年左右的单片机开发的历练才行。成为单片机高手的概念就是你自己可以从头根据自己的想法,去设计一个电路,根据需要的功能编写代码,做一个产品出来。

2) 教材和教程

要学习单片机这门技术,良好的教材和教程必不可少。单片机方面,大家可以直接学习我们这部教程,以及配套的视频教程。本着开源、共享的理念,我们的视频教程都是免费开放的,大家可以直接下载或者在线观看。另外,因为我们做单片机开发使用的是 C 语言,所以最好能再学习一下本站《C语言教程》,遇到一些 C 语言的细节问题的时候,可以方便大家查阅,或者你也可以直接把相关问题通过谷歌和百度搜索一下,绝大部分情况下它们都会给你满意的答案的。

3) 电脑一台、单片机开发板一块

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

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

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

单片机开发环境搭建--Keil uVision4安装教程

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

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

图1-1 Keil安装欢迎界面
图1-1 Keil安装欢迎界面


2) 点击“Next”按钮,弹出“License Agreement”对话框,如图 1-2 所示。这里显示的是安装许可协议,需要在“I agree to all the terms of the preceding License Agreement”打勾。

图1-2 “License Agreement”对话框
图1-2 “License Agreement”对话框


3) 点击“Next”按钮,弹出“Folder Selection”对话框,如图 1-3 所示。这里可以设置安装路径,默认安装路径在“C:Keil”文件夹下。点击“Browse...”按钮,可以修改安装路径,这里建议大家用默认的安装路径,如果你要修改,也必须使用英文路径,不要使用包含有中文字符的路径。

图1-3 “Folder Selection”对话框
图1-3 “Folder Selection”对话框


4) 点击“Next”按钮,弹出“Customer Information”对话框,如图 1-4 所示。大家输入用户名、公司名称以及 E-mail 地址即可。

图1-4 用户信息
图1-4 用户信息


5) 单击“Next”,就会自动安装软件,如图1-5所示。

图1-5 安装过程
图1-5 安装过程


6) 安装完成后,弹出来安装完成对话框,如图 1-6 所示,并且出现几个选项,大家刚开始把这几个选项的对号全部去掉就可以了,先不用关注有什么作用。

图1-6 安装完成
图1-6 安装完成


7) 最后,点击“Finish”,Keil 编程软件开发环境就这么装好了。

Keil uVision4简单使用教程

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

图1-7 工程文件
图1-7 工程文件


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

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

图1-8 字体设置(一)
图1-8 字体设置(一) 


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

图1-9 字体设置(二)

关键字:单片机  正确方法  型号 引用地址:学习单片机的正确方法

上一篇:DS18B20函数库建立实验
下一篇:单片机压力传感器的实时监测和报警程序

推荐阅读最新更新时间:2024-11-09 17:02

单片机】【学习日志】51单片机学习日志[Day2、2022.1.10]
第一部分:数码管 一、基础知识 1、数码管引脚定义(单个数码管) 上方的为 共阴极连接 下方的为 共阳极连接 把 “8”分为 8个段,分别为“A、B、C、D、E、F、G、DP(顺时针) ,正好对应寄存器的 8个字节。 引脚定义 1.1引脚类型 若其为共阴极连接 A、B、C、D、E、F、G、DP 段 的阴极均接 3、8号引脚 A段 阳极接 7号引脚 B段 阳极接 6号引脚 C段 阳极接 4号引脚 D段 阳极接 2号引脚 E段 阳极接 1号引脚 F段 阳极接 9号引脚 G段 阳极接 10号引脚 DP段 阳极接 5号引脚 共阳极则反过来即可。 2、数码管引脚定义(多个数码管)(
[单片机]
【<font color='red'>单片机</font>】【学习日志】51<font color='red'>单片机</font>学习日志[Day2、2022.1.10]
单片机_LCD12864显示自己制作的图片(时钟为例)
显示屏上显示自己想要的背景图,然后再在背景图上增加相应的功能,应用ps可以很方便的修改图片为自己想要的。 准备软件: phtotshop cs3 自用的一款,小巧非专业实用的ps软件,下载地址如下, 链接:https://pan.baidu.com/s/1R2ydl_TXEP7pWUv8VFlMbA 提取码:a1rz 字模提取软件 链接:https://pan.baidu.com/s/1aHq8Noin0VTgdnHIhhSGfQ 提取码:uiqg 1.用ps(Photoshop)新建一个 注意宽度和高度要和12864的一样,选择位图,为一位。 2,为了方便调整图片,我们选择图像模式为灰度,(
[单片机]
<font color='red'>单片机</font>_LCD12864显示自己制作的图片(时钟为例)
[单片机][at32][填坑日记] [USB卡包] usb快速发包导致卡包(二)
一、usb避免卡包全流程解释 上电初始化USB外设 // 针对带电池和不带电池的操作 不带电池则上电初始化,带电池则检测到USB_5V则初始化 #if BS_POWER_SWITCH static uint8_t bat_soc_tick = 0; if (get_sys_state() == SYS_STATE_POWER_ON) { main_send_signal(SIGNAL_SYS_POWER_ON); } #else main_send_signal(SIGNAL_REFRESH_USB); #endif if (event.value.signals & S
[单片机]
[<font color='red'>单片机</font>][at32][填坑日记] [USB卡包] usb快速发包导致卡包(二)
STM32F103单片机驱动TM1637数码管显示模块
最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一下,方便以后参考。 使用的单片机是STM32F103C8T6最小系统 使用的数码管模块是TM1637四位数码管显示模块 实际运行效果 下面先看一下TM1637和数码管连接的具体线路图 实际使用的模块没有带按键,只用了4个数码管,模块和单片机连接只需要4根线VCC、GND、CLK、DIO。芯片和单片机通信使用的是I2C总线,下面就来说一下如何通过I2C总线驱动这个数码管模块。 为了方便移植,这里使用 IO口模拟I2C总线,所以首先要将延时函数准备好,延时函数使用任何一种方式都可以,可以根据自己的习惯使用自己的
[单片机]
STM32F103<font color='red'>单片机</font>驱动TM1637数码管显示模块
基于51单片机的智能垃圾桶设计
一.硬件方案 本设计主要是利用单片机设计并制作一套智能垃圾箱。要求以单片机为控制核心,通过红外传感器检测是否有人扔垃圾,并自动打开垃圾箱盖,扔完垃圾后再自动关闭。 主要由51单片机+独立按键+电机驱动模块+2个红外传感器+蜂鸣器报警模块等组成;如图: 二.设计功能 (1)两个按键分别为复位按键、手动打开垃圾桶按键。 (2)当智能垃圾桶红外线检测到有人时,将控制步进电机打开垃圾桶。 (3)如果人一直在垃圾桶旁边时,垃圾桶将一直打开,当人离开5S后,盖子将自动盖上。 (4)当桶内红外检测到垃圾满时,单片机将开启声光报警,并且自动取消打开桶盖模式,智能通过手动按键打开桶盖。 (5)当垃圾清理完时,系统将恢复自动模式。 三.设
[单片机]
基于51<font color='red'>单片机</font>的智能垃圾桶设计
基于PIC单片机的厨房设备智能组合控制设计
随着智能家电控制技术的不断发展,具有多功能和智能化的厨房控制器成为厨房电器设备发展的主流。和传统单一厨房设备控制器相比,多功能厨房控制器具有占用空间小、成本低、功能多、便于设备统一管理,使用安全、方便等优点。 系统以PIC单片机作为主控制芯片,选用VFD(Vacuum Fluorescent Display)真空荧光屏为显示器,结合气敏传感器,热敏电阻,高压点火器,继电器等受控对象,通过检测外部信号以及内部定时时间状态可以控制各种受控对象工作状态之间的相互转换,实现对厨房电器设备的智能控制。系统结构框图如图1所示。 1 各单元电路硬件设计 1.1 电源电路设计 设计所需的6组工作电源均由如图2所示的电路提供。6组电源分别为
[单片机]
基于PIC<font color='red'>单片机</font>的厨房设备智能组合控制设计
基于AT89C2051单片机制作的电子万年历的原理及设计
很多用AT89C205l制作电子万年历的文章,介绍的都是采用单片机内部定时计数器作定时计时,难免受到停电的影响而需要经常调整,为此,笔者设计制作了AT89C20Sl+DSl302的电子万年历。 该万年历的特点是;动态显示、遥控操作;能按多位数码管或多点输出I采用DSl302时钟模块,走时准确、停电能继续计时(精度±5秒/日左右若采用有源晶报,如DS32Hz,走时精度甚至可达到年误差小于2分钟)。 一、功能 显示年、月、日、星期、时、分。遥控操作、整点报时、定时报时及定时显示、停电自动计时等。 二、硬件电路设计 AT89C2051作为数据处理,DSl302作为计时处理及停电继续走时,用13只LED数码管显示年、月、日、星
[单片机]
基于AT89C2051<font color='red'>单片机</font>制作的电子万年历的原理及设计
51单片机内存扩展:从片内ROM跳转到片外ROM
源于一年前想自己动手给51写个OS,编译选Large模式,调试时整个流程都跑的好好的,可是烧写到片上后得不到预期的效果,后来查书才知道51单片机片上只有4KRom,如果没有扩展片外Rom,当访问4K以外的程序空间,程序指针又会回到最开始执行。参考手册扩展片外Rom后,能访问达64K的程序空间。网上能搜索到的扩展方式都是将EA引脚接地,让MCU上电后从外部ROM开始执行。但查看芯片手册,明明说EA为高时,程序从片内ROM执行,当执行到0x1000以上地址时(标准51单片机),会跳转到片外ROM执行。按网上的做法,为了扩展个片外ROM,片内的基本ROM都不用了,有点浪费了,于是开始找资料如何从片内跳转到片外执行。 射人先射马,发帖
[单片机]
51<font color='red'>单片机</font>内存扩展:从片内ROM跳转到片外ROM
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved