如何学好单片机
了解单片机应用系统开发流程
我们学习单片机的目的就是为了进行嵌入式系统的开发,学好单片机首先要有一个整体认识,下面将简要介绍一下单片机应用系统的开发流程,如图1-22所示。
图1-22 单片机系统开发流程
(1)明确任务分析和了解项目的总体要求,并综合考虑系统使用环境、可靠性要求、可维护性及产品的成本等因素,制定出可行的性能指标。
(2)划分软、硬件功能
单片机系统由软件和硬件两部分组成。在应用系统中,有些功能既可由硬件来实现,也可以用软件来完成。硬件的使用可以提高系统的实时性和可靠性;使用软件实现,可以降低系统成本,简化硬件结构。因此在总体考虑时,必须综合分析以上因素,合理地制定硬件和软件任务的比例。
(3)确定希望使用的单片机及其他关键部件
根据硬件设计任务,选择能够满足系统需求并且性价比高的单片机及其他关键器件,如A/D、D/A转换器、传感器、放大器等,这些器件需要满足系统精度、速度以及可靠性等方面的要求。
(4)硬件设计
根据总体设计要求,以及选定的单片机及关键器件,利用Protel等软件设计出应用系统的电路原理图。
(5)软件设计
在系统整体设计和硬件设计的基础上,确定软件系统的程序结构并划分功能模块,然后进行各模块程序设计。
单片机程序设计语言可分为三类:
➢ 机器语言 :又称为二进制目标代码,是CPU硬件唯一能够直接识别的语言(在设计CPU时就已经确定其代码的含义)。人们要计算机所执行的所有操作,最终都必须转换成为相应的机器语言由CPU识别、控制执行。CPU系列不同,其机器语言代码的含义也不尽相同。
➢ 汇编语言 :由于机器语言必须转换为二进制代码描述,不便于记忆、使用和直接编写程序,为此产生了与机器语言相对应的汇编语言。用汇编语言编写的程序执行速度快,占用存储单元少,效率高。
➢ 高级语言 :高级语言具有很好的可读性,使程序的编写和操作都十分方便,目前广泛使用的高级语言是C51。
汇编语言和高级语言都必须被翻译成机器语言之后才能被CPU识别。
(6)仿真调试
软件和硬件设计结束后,需要进行进行进入两者的整合调试阶段。为避免浪费资源,在生成实际电路板之前,可以利用Keil C51和Proteus软件进行系统仿真,出现问题可以及时修改。
(7)系统调试
完成系统仿真后,利用Protel等绘图软件,根据电路原理图绘制PCB(Printed Circuit Board)印刷电路板图,然后将PCB图交给相关厂商生产电路板。拿到电路板后,为便于更换器件和修改电路,可首先在电路板上焊接所需芯片插座,并利用编程器将程序写入单片机。
接下来将单片机及其他芯片插到相应的芯片插座中,接通电源及其他输入、输出设备,进行系统联调,直至调试成功。
(8)测试修改、用户试用
经测试检验符合要求后,将系统交给用户试用,对于出现的实际问题进行修改完善,系统开发完成。
单片机学习方法探讨
单片机学习的过程应该是一个循序渐进、不断学习、不断积累的过程,大致分为三个阶段。
第一阶段:掌握开发单片机的必备基础知识。
首先是熟练掌握单片机的基本原理,虽然现在单片机厂商众多,但各家单片机的基本结构和原理都比较相近,例如内核结构、内存分配、中断处理、定时计数、串行通信、端口复用等一些最基本的概念和原理。除此之外,我们还需要学习模拟电子、数字电子、C语言程序开发以及原理图和PCB(Printed Circuit Board,印刷电路板)设计等知识。只有扎实的掌握了这些知识,在进行系统开发的时候,才能顺利地进行原理设计、PCB布板、程序编写、系统联调等工作。
第二阶段:在掌握好一款单片机原理和应用的基础上,开始学习其他各家单片机,了解其独有的功能和特点。
例如实际工作中若客户要求低成本,那我们可以选用和泰、义隆、华邦等这类台湾芯片;如果客户要求工业级的性能,那么最好从PIC、NEC、飞思卡尔、NXP等这些欧美和日式单片机中选择;若要进行功耗的开发,选用MSP430系列应该有一定优势;在进行测量仪器设计的时候,C8051和AduC842这类数模混合芯片又显得比较实用。
另外,平时要注意技术积累。在项目开发过程中将一些常用的接口程序和控制算法整理成模块或者函数,日后若在其他的项目开发中有同样或者接近的需求时,原程序可以直接或者进行少量改动后使用,这样一来会节约大量开发成本。
第三阶段:在实际的项目开发过程中,不断深入研究单片机应用技术,不断积累应用行业的专业知识。
有了扎实的单片机应用相关的基础知识,并且熟悉掌握了几款不同类型单片机的开发方法后,对于各种实际的应用项目,往往还需要理解和掌握外围电路相关的原理和分析方法,并结合实际的应用背景,综合考虑各种因素,才能设计出性能最优、结构最合理的单片机应用系统。
为什么大多数做嵌入式开发的都说做mcu开发没意思?
为什么大多数做嵌入式开发的人都说做MCU开发没什么意思,要做基于Linux系统的嵌入式开发。
因为大多数都是普通人,思想相对比较保守,也不太敢去冒险,毕竟做这个行业的基本都集中在北上广深,在这些物欲横流的城市,钱是男人唯一的安全感。
很多时候,我们都在种种压力下迷失自己,与自己的梦想背道而驰。
没办法,这就是生活!
我们在选择行业的时候,总是喜欢通过工资水平去评估这个行业值不值得我们去付出。
我当初进入这个行业,也是这样想的,收入高点,做什么事都有资金支撑,掌握一技之长才是真正的铁饭碗。
这种”现实”的思维,无形中让我走错了方向,在职业生涯频繁跳槽到工资高的公司而错过了行业趋势。
这么多年过去了,看到那些逆袭的同事朋友,虽然自己虽然每年工资都在涨,但生活却越过越吃力。
这才觉悟,大多数人打工做技术,再怎么努力,你也赶不上通货膨胀,等你成家有小孩以后你这种体会会更加深刻 。
所以,一味地去追求高工资,只会让你迷失自己 ,最后反而会影响你正确的判断 。
去谈论做嵌入式单片机开发和嵌入式Linux开发哪个更好,是典型的技术思维 。
一个只有技术思维的人,只会在技术上与人比高低来获得优越感。
如果你不脱离这种技术思维,很难在一个行业有好的发展,因为这是认知层面的问题,认知决定你的行为,行为导致你的结果。
即便你未来打算做嵌入式Linux,我都建议从单片机开始,单片机更接近硬件,把这块基础打好,再去学习嵌入式Linux会理解得更加深刻。
如果你做了单片机开发很多年的,也自己模仿过一些实时操作系统写过一些精简的程序架构,有这种基础再去学Linux,也就是1-2个月的事。
从事单片机开发也不是那些键盘侠说得这么简单的,比如说做无人机,里面涉及到很多别的行业的知识,比如空气动力学。
有些东西你不了解,你根本无法设计电路和写程序。
单片机只是工具而已,把外设开起来就没它什么事了,当然简单了。
如果你走全栈路线,涉及到的知识够你学一辈子了。
所以,选准一个行业深耕太重要了 。
每个行业都有不同的标准 和最佳实现方案 ,这才是我们真正要去积累的东西。
同行做一个产品要100块,你只需要70块,别人突破不了的技术,你突破了,这才牛逼。
这就是在一个行业积累的重要性,这些你只有对这个行业的产品非常熟悉,再加上自身技术提升才能达到。
这种即便只会单片机开发,你觉得工资会比嵌入式Linux低吗?
不过话又说回来,越到后面,每个月多个几千块工资对你来说根本解决不了什么问题。
技术只是工具,你掌握的资源才是让你收入实现阶级跨越的核心。
当你见过只会51单片机,年收入却能达到几百万的老板后,你就明白追求技术上的优越感毫无意义。
这也是我这么多年为什么不继续往Linux方向学习的原因,一是没这方面的需求,二是每个月多这么点工资对我意义不大,还会浪费我大量的时间。
如果你到了某种瓶颈,比如说收入瓶颈,这个时候你再想靠提升技术去实现收入突破是比较难的。
最后总结:
如果你现在很年轻,也有学历的资本,大可不必被自己思维限制,单片机和嵌入式Linux在某些程度还是相同的,可以两个都拿下。
如果你学历不佳,又急需一份工作,可以先从单片机开始学习,这两年这个行业还是很抢手的,未来我相信会更好。
相关问答
单片机 会被淘汰吗?单片机不会被淘汰。就像当年更高性能的单片机出来后,一直都有人说51单片机会被淘汰,可是我们看到,51单片机不但没有被淘汰,反而活的有滋有味。就像提问里说...
酒精检测系统的意义?对于酒精测试仪的现实意义主要体现在:随着经济的发展,汽车量也在不断增加,酒后开车行为严重影响到了社会的安全问题。驾车前的酒精检测就成为了重要谈论对象,...
现阶段有哪些国产的CPU和操作系统?其现状如何?国产cpu是有的,低端的有不少,大量的51单片机都能自产,再高级一些的低端通用单片机也可以自产。据说中国已经有自己28nm的制程,可能是产量少或者竞争力不高,...
专业工程设计的定义- 汇财吧专业问答test[回答]和房建相关的。从BIM设计过程的资源、行为、交付三个基本维度,给出设计企业的实施标准的具体方法和实践内容。BIM(建筑信息模型)不是简单的将数字信...