微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机小白学步(24) 改版说明与学习思想

单片机小白学步(24) 改版说明与学习思想

时间:11-09 来源:互联网 点击:
从本篇起,《单片机小白学步》系列教程将做一个重大的改版。前面的文章暂且就不改动了,之后的文章将会重新编排。主要的改动如下:
  1. 文章全部使用Markdown进行编写排版,格式更加丰富,阅读起来也会更加轻松。

  2. 实验的工程源码,将上传至我的GitHub页面,可直接下载使用。

    我的GitHub主页
    https://github.com/jzj1993

  3. 为了方便统一讲解,也考虑到开发板资料可能有版权问题,本系列教程将和绿豆芽科技合作。大部分实验,将直接使用绿豆芽科技提供的51Start开发板。如果有这款开发板,可以直接烧写配套代码进行实验。如果没有,欢迎购买这款开发板。当然也可以通过简单的修改代码,在其他开发板上做实验。

  4. 部分实验仍然会使用面包板搭建最小系统,或通过Proteus仿真进行。

    绿豆芽科技官方淘宝店
    http://douyatech.taobao.com

    西安电子科技大学的学生,可直接到新校区综合楼西电实验室,购买配套开发板。

  5. 每个知识板块的介绍,大致会通过下面的顺序进行:

    • 首先对概念进行简单介绍;
    • 通过基本的例程实验,进行初步体验,加深理解;
    • 深入介绍底层结构和原理;
    • 介绍相关的编程技巧思想等内容,以及更深入的例程实验。

学习思想

经过反复的思考,得出了单片机学习的思想,并进行了总结。

单片机的学习有两个方向,分别介绍如下。

1. 关注上层应用实践

这个方向,就是直接考虑实际应用而不是实现原理。了解了各种通信接口、各种电路模块等,可将它们进行巧妙的组合,从而实现对我们的生活有用的产品。例如,通过结合显示屏、按键、单片机,就可以实现计算器、秒表、抢答器、游戏机等各种好玩有趣的东西。

学习这方面的东西,需要有较好的创新能力,善于从生活中寻找灵感。相对来说技术性会弱一点,使用的各种模块,完全可以采用现成的东西去实现。

这个方向有个比较典型的例子,是Arduino平台,常常被称为电子积木。硬件方面,各种电路模块都是做好的,直接通过导线插接就可以使用;软件方面,各种电路模块都有现成的模块化驱动,直接调用相应的函数就可以实现功能。使用Arduino时,往往只需要关心作品的创意,以及功能逻辑实现,而不需要深入研究具体的技术。

2. 深入底层挖掘原理

这个方向,就是从原理的角度深入理解单片机。例如寄存器的构成,CPU的执行方式等。深入一些,包括模拟电路,数字电路,微机原理等。甚至利用FPGA可编程逻辑器件,自行设计和实现CPU和单片机。

学习这方面的东西,需要较多的背景知识,包括模拟电路,数字电路,微机原理等,可以通过使用汇编语言进行单片机编程从而加强理解。如果有兴趣自行设计CPU,还可以学习Verilog或VHDL编程。

3. 总结

这里对此做个总结。

之前遇到不少人都提了同样的一个问题:学单片机到底要不要学汇编呢?

这里我举一个例子~

  • 假如你想学会做饭,最简单直接的方法,是直接购买做好的食材,只要学会控制火候,学会如何搭配各种食材和调料,并掌握必要的烹饪步骤等内容就可以了。

  • 有时候你可能想要做一些比较特别的菜,但是直接买来加工好的食材不能充分满足要求。这个时候就需要购买半成品,然后学会自己去加工了。

  • 如果对食材本身也有了解,例如什么季节哪些蔬菜会比较常见等,往往能做的更好,还能节省成本。

  • 如果有特别需要,还可以尝试自己种植一些蔬菜等~

学单片机也是一样的。关注上层应用实践,相当于直接使用现成的食材,去进行组合搭配,得到各种有用的东西。而深入底层挖掘原理,相当于去深入了解各种食材的特点,并能作出更好的选择。甚至,你还可以考虑自己从底层去实现一些模块,实现想要的效果。


所以对于“要不要学习汇编”这个问题,我的回答是,需要学习,但是不需要花费过多的精力。一开始直接用C语言进行单片机的学习,有了一定的认识之后,再简单的去学习汇编。其目的是,从中了解底层的工作原理,从而能更好的理解一些问题,能更好的应对一些特殊情况,更好的驾驭单片机系统设计。而实际去实现想要的创意和产品,直接通过模块化的C编程就可以了。直接用汇编,效率实在是太低。

上面说的两个方向,偏上层方向的学习,技术性相对弱化了,更多的是要考虑各种其他方面的问题,包括创意、产品、乃至市场需求等内容;而偏底层的原理学习,技术难度相对较大。一般情况下,学习单片机,需要对各种基本模块有所了解(食材),对底层的原理最好也有一些理解(食材半成品的加工),然后再学习一些上层的模块化编程思想、模块之间的组合等(食材的搭配、火控控制等)。可以根据个人兴趣和特长,有选择的学习相关知识。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top