学单片机有前途还是嵌入式系统有前途?

著名嵌入式工程师吴坚鸿曾经发过一贴“学单片机有前途还是嵌入式系统有前途?”原贴如下:
http://www.makeru.com.cn/live/3523_1795.html?s=69821

我在深圳一直搞单片机的开发,接的项目各种各样,不计其数。很多朋友问我学习单片机有前途还是嵌入式系统有前途,毫无疑问的,当然是单片机有前途。

嵌入式系统现在炒得很火,满街到处都是嵌入式系统的培训。遇到很多刚入门的朋友,开口闭口都是嵌入式系统。好像觉得嵌入式系统就是武林秘诀,谁掌握了谁就是武林盟主。现在,我愿意公开我的独家心得跟大家分享,看了之后有收获的朋友,也不要感激我,只要记得这个文章的原创是吴坚鸿就可以了。目前的电子产品,用嵌入式系统的很少,大部分都是用单片机,因为单片机实时反应速度快,外围电路简单,价格便宜,开发周期短,这些都是嵌入式系统望尘莫及的,不要跟我说什么手机,PDA等东西是嵌入式系统,这些东西你能独立承接出来单干吗?大部分的朋友学了嵌入式系统后都无用武之地,空有屠龙之术。

即使有用武之地,那也要跟团队一起开展工作,跟团队开展工作,就意味着分工,一旦分工,就意味着流水线作业,单一,乏味,成就感有木有。学嵌入式的不一定比学单片机的厉害。单片机简单吗?一点都不简单。单片机的功夫在单片机之外。我搞这行那么多年,我觉得单片机是我这一辈子都学不完的。单片机不带操作系统,所以你写单片机程序,本身就意味着你在开发操作系统。嵌入式带操作系统,所以你写嵌入式程序,本身意味着你不用开发操作系统,只是在别人的系统上做一些应用开发。真正接触底层的,是搞单片机的人。不要以为你花一个月的时间就能精通单片机,我花十年都不会觉得我精通单片机。里面博大精深。你要掌握常用的不同厂家单片机,要掌握各种常用外围芯片,常用数字电路,模拟电路。你要还掌握CPLD,DSP的编程,你要会电路板设计,你英文阅读能力要好,你的学习能力要非常好,以上所有的都还不够,你必须有几年以上各种独立的项目开发经验。最后谈谈大家最关心的问题,学习单片机赚钱还是学习嵌入式赚钱?学习单片机,只要你技术过硬,一个笔记本电脑,再加一个农民房就可以在深圳单干,我就是这样过来的。学习嵌入式系统的,可能要依附大公司,如果你也出来单干,估计半年没接到一个单,即使接到单,如果开发周期三个月或者半年的,你要有充足的粮草储备。我觉得单片机开发是艺术,我做的每一个作品都让我充满成就感。最后奉劝所有搞技术的年轻人,做一行爱一行,不要急功近利,做好每一天的的工作,沉下心来,时间越久,经验越丰富,你就越牛。

其中引来众人的热议,希望可以为大家作为参考(粉色部分为吴坚鸿回复部分):

很少有资深的工程师谈谈自己的感想的(可能我没找到,有知道的给我推荐下哈…不甚感激),给我们些启发!顶顶… ——(1)如果你是在校生,除了多动手做实验外,专业基础课要重视,硬着头皮学,能学多少是多少。因为出来社会后就没有那么多时间去学基础课。基础课是最难学,也是最乏味的。真正搞单片机开发,入门是简单的。(2)如果你现在已经出来社会,那么就直接从C语言开始学,会编写简单的程序后,马上找单片机开发的工作,不管工资多少,管吃就行。至于用什么教材,我上个星期在帮朋友找教材的时候,看了网上郭天祥的《十天学会单片机》的视频第一课,感觉学习思路跟我是一致的,所以极力推荐。本人在此声明,如果我是郭天祥的托,天打雷劈,不得好死。

很少有在社会上打拼这么多年的 吧,不知阁下的单片机事业怎么样,可否分享一二?谢谢了——我的算不上什么单片机事业。但是我自己还是特别满足我现在的状况。我是自由职业者,喜欢电子,一直在外面接不同的开发项目,也有许多公司或者老板想招安我,我都一一谢绝。因为我过贯自由创作的日子,喜欢做不同领域的产品,我也喜欢每个月搞一两个项目,然后回广西老家跟家人团聚共享美时光。做技术开发我有我的原则,不搞破解别人程序的项目,不搞违法的项目(类似赌博机,给我再多钱我也不干)。

我也同意楼主的观点,从不同角度看确实有不同的结果

如果志向高些,或者目标长远些,单片机能达到的高度还是有限

但一般这类人学嵌入式之前都会学过单片机——一般这类人学嵌入式之前都会学过单片机”这个观点我也认同。我只是觉得如果不是工作很明确的需要,大部分的人学嵌入式都用不到。

我要开心学习每一天,减少与你们的差距…——你的学习心态不对。不要跟谁比,关键你要有这个兴趣,你在享受这个开发的过程。“心中无敌方能无敌于天下”。==马云语录   “无为就是有为” —老子的《道德经》

“我觉得单片机开发是艺术,我做的每一个作品都让我充满成就感。”这句话,我也很喜欢。。。但是我说个例子,现在不是有labview吗?而有的单片机可以进行labview for ARM 嵌入式移植,我想应该可以更加节约时间吧—— 单片机做的事情要尽量简单,速度要尽量快,成本要尽量低,开发周期要尽量短,这个才是单片机的独到之处。裸机跑的单片机比带操作系统跑的单片机效率要高。带操作系统的单片机实战中用不到。

我也同意楼主的意见。想请教一下楼主,我学单片机的,毕业了能干什么?能接什么样的工程?—— 第一步,先找到单片机开发的工作。第二步:在工作中学好画电路板。第三步:厚积薄发,多搞项目开发,多积累经验,方案费用不能低,一天的人工至少1000元,而且还是熟人的,打了折之后。不要把我们这行搞砸了。

学单片机可以单干吗—— 可以。我就是这样的。搞单片机的有点像作家,有的作家就是一次卖断产权,有的作家是靠图书出版的量来赚提成。

顶一下……现在在校大二,单片机接触了点,算是入了门,但是感觉现在主要任务是把课程学好,模电数电,自动控制原理,信号系统……所以一直没有太深入。但是看到同学都在搞嵌入式了,有点很慌张……不知道怎么办,因为有几个师兄搞嵌入式出去工作工资七八千,很羡慕。自己现在单片机没搞好,嵌入式没学,课程任务也越来越重了……搞来搞去却不知道该怎么办了?很担心方向没确定,以后找不到工作。看了博主文章还是很有感触的,不好高骛远,认真踏实点。—— 把基础学好,你的思路是对的。如果还有时间,可以多关注单片机,C语言和英语。做好了当天的事情之后,就不用恐慌未来。也不要急于成功,成功是靠命运的,非个人的努力能实现。真正成功的人,是相信命运的,相信命运的人,往往能随遇而安,用常识来思考。

我觉得各有所用,单片机是周期短。可嵌入式有技术含量啊—— (1)单片机入门感觉快,但是真正去做新项目的时候,往往会遇到很多书上你遇不到的问题,往往要折腾一段时间,甚至实在找不出路子,就要重新更换硬件电路,重新更换芯片,而这些问题一旦被你解决了,这些就是你的宝贵经验,这些是别人在书上学不到的,要有这么丰富的经验,功力,短期内很难达到。  (2)是不是只有少数人懂的才叫技术含量?足球,男女老少一看就懂,没技术含量?围棋,两个人静静呆在那里对战几个小时,你我都看不懂的,才叫技呆术含量?球星一个月就赚好几百万,棋王一次顶级比赛的奖金才十多万。这个现实让我深受启发。

不知道吴老师是否收徒弟???而且他也是广西的—— 有好处就收。今年刚过年回到深圳,项目不是很多的时候,我收了一个东莞的徒弟。我这个徒弟在东莞是有车有房,还在电子城开了一个柜台。我就收了他5000元,教两个星期。他天天开车来我这边学。

在学校学咯三年咯,单片机就学会咯,LEDLCD等简单的编程 ,其实真的还感觉不到什么用处饿,有谁能告诉下
单片机我学好咯到底能干嘛呢? —— 现在的社会人工越来越贵,好多的东西都要求智能化,自动化,单片机大有用武之地。

学技术的老了怎么办—— (1)学单片机的,是越老越吃香。不是吃青春饭。(2)大部分的人,在他还没老的时候,就已经开公司了。还有一部分是经常接到一些大工程,或者接到有量的产品订单,帮别人做PCBA。我在深圳看到这样人太多,好多都是30岁左右的人。  (3)你真正有本事的话,很多老板会要求你一起做,给你股份。我就遇到过很多这样的老板。

你好,前辈。我是车辆工程专业大三的学生,想请教前辈一些问题。我毕业后想去国外留学,但是国外没有汽车专业,所以只能考机械类的硕士。但是机械的东西现在想创新想做出成绩真的很难,所以想毕业后转向汽车电子方向。

现在大三了,时间还算充足,想毕业前把把电子的基础好好打一打,但是现在我的情况是几乎不懂电子,本科只浅显的学了电工学 电子学 单片机原理。我现在不知道要学什么,请前辈指点。也请前辈就我的汽车专业给我点建议,谢谢前辈了。

其他同学或是前辈要是有建议,小弟洗耳恭听—— (1)我不建议过多的关注未来,不建议过多地规划未来。未来不是你能控制的。多享受当下的生活学习比什么都重要。多听听内心现在想做什么,喜欢做什么就做什么。  (2)大部分的创新都来源于生活,有创新灵感的人,往往是那些享受生活的人,好的创新也是服务于生活。所以远大的理想还不如多关注一下自己现在的生活过得是不是有乐趣,远大的理想还不如现在多陪女朋友逛逛街,远大的理想还不如现在多抽时间回家陪陪父母。

(3)无论你现在学机械还是电子,都不意味着你以后有机会接触机械或者电子,更加不可能精确到你现在学汽车电子,你以后就能做汽车电子方面的研发。这个是命,不是你我所能控制的。

哎呀,我现在在自学STC单片机,工作只是智能电表程序功能测试,想把兴趣换成工作,怎么去过渡啊—— (1)你起码要自己能够单独编写一些简单的程序,比如按键程序,跑马灯程序,数码管显示程序。有这些水平后,你就开始找单片机的开发工作。  (2)要打动老板,写简历的时候要多动动脑筋。目的只有一个,让老板相信你能胜任单片机的开发工作。  (3)面试的时候,你要给老板这样一个感觉。单片机就是你的最爱。  (4)第一份工作,薪资多少不用太关注,管吃就行。

我是一名大三的学生单片机可以说是入门了,基本的程序还是可以自己独立编程的。可是现在自己就会感觉向继续学下去,却不知道该做什么了?现在自己就计划自己先做一些自己感兴趣的东西出来,像光立方(已做过),摇摇棒,旋转led(这两个在找时间和条件)。因为一直是自学的所以没有很好地条件去搞项目。不知怎么继续下去?—— 会用protel99画电路板吗?如果不会,赶紧学,这个很实用。  模拟电路,其中运放那一块,懂不懂?如果不懂,趁现在在学校,硬着头皮多看看这些基础的东西。

楼主,我现在在职一年了,从事着没什么技术含量的工作,一直想做研发方面的工作,最好偏硬的,现在想换工作,也想培训一下,不知道楼主有什么意见?—— 推荐看郭天祥的视频,用他的学习板来自学,成本低,能少走弯路。有点基本功夫之后,赶紧辞掉现在的工作,慢慢找一个需要编写单片机软件的工作,要过开发性质的,而不是售后技术支持或者维护的工作。

吴坚鸿,我没看懂这篇文章。—— 仁者见仁智者见智。这个文章只是我个人的见解。坦白的说,我以前也是决心要学嵌入式的,也决心要学VC设计电脑的上位机软件,但是我发现,单片机就够我一辈子学不完了。与其把战线拉得太长,还不如把有限的时间专注在自己的领域。因为我发现嵌入式仅仅在图形显示界面方面比单片机有优势,就是相当于电脑比单片机在图线显示方面有优势。所以我简单地把嵌入式看成是电脑编程。我搞单片机,我搞电子电路,为什么一定要去搞电脑上面的编程?

深练三十年,精炼需一生。—— 不错。

单片机的功夫在单片机之外~~~~~顶啊顶~总结下就是单片机适合单干,嵌入式适合团队,完毕!—— 不仅仅如此。嵌入式的业务不会很多,即使有,估计都是以公司为单位承接的。而单片机的业务量却很多,我每个月都有做不完的项目。大部分的老板,只要单片机能做的,当然首先是考虑单片机的,因为成本,开发周期,稳定性都比带操作系统的要好。什么情况下单片机不能做,在彩屏显示等需要复杂界面的情况下,而这个时候,老板还有两个选择,一个是单片机加电脑上位机,另外一个才是嵌入式。而正常情况下,老板会优先考虑第一种方案,其次才是嵌入式加TFT彩屏或者触摸屏。所以,我把搞嵌入式简单等同于搞电脑编程的,事实上,搞过嵌入式的,大部分都赞同我的观点。

我感觉单片机的成长的高度可能有限,而嵌入式的高度更高,更利于以后职业的发展。—— 单片机的成长空间是无限的,我做这行有六年多了,我觉得离天花板还很远,估计我这一辈子都不会满足的。单片机在程序上,你会越做越规范,越做越清晰,越做越模块化。在型号上,有各种各样的厂家,每个厂家又有各种各样的系列。在外围驱动上,那更加是五花八门。当你做的项目越多,你的资料库会越丰富,就像你往银行里存的钱一样。以后开发的项目速度会越来越快,稳定性越来越可靠。同时你的客户会越来越多。

单片机只是其中一种应该,如果是高端计算的话,用单片机肯定
不够的。。我觉得楼主指的嵌入式应该是指嵌入式应用之类的吧,也就是不用懂得硬件方面内容的工作吧!?  楼主的话还是很有道理的,特别是像我这样从上位机应用软件这边做过来的过来人,越来越深刻的感受到。这个是中国的悲哀,也不见得做硬件,软硬结合的嵌入式就是比C++更有技术含量,或许在国外做C++的薪水还更高,但是在这悲催的天朝确实是做软件是青春饭,越做越没前途,特别是到了30岁以后都得转型。。。写过这么多程序,始终觉得应用软件是最难写的。。但是却又是被人看的低,工资又少,逻辑又复杂,还是最容易被加班。。悲哀,为那些当初存在着程序梦想的苦逼孩纸们感到悲哀。—— 谢谢你的回复。你是目前回复字数最多的一个

另外,我不知道大家是如何理解我这句话“单片机的功夫在单片机之外。”搞单片机不纯粹是一个技术工具,还是一个平台,在这个平台上,你会有机会接触各行各业的老板,各行各业的信息。在这个平台上,你可进可退,进,机会成熟的时候,可以做一些有量的产品。退,可以继续搞项目工程。(对于“ 单片机的功夫在单片机之外 ”的解释)

我们学校现在要我们参加嵌入式培训,好像很有前途的,单片机的经历对学习嵌入式有不少好处吧—— 单片机的经历不但对学习嵌入式当然有帮助,对学习电脑都有帮助,因为这是最底层的东西。即使以后不搞单片机,对我们日常生活都有帮助,帮助你了解各种智能家电的原理。

呵呵。我也是工作多年的经验感慨,之前是做VC开发的,在有名的企业也干过,只是中国做软件的行业太不规范了,青春饭,看着之前公司的那些真正的软件高手30好几了都还啥都没混到还是个光棍,真的是备受打击。。没办法只能转行。。现在也有了些单片机和嵌入式的经验,但是也只是从程序方面去考虑这些项目,确实自己现在还是很不专业。前些时间去面试了很多公司,感觉一般做汽车电子,军工,通信,普通民用产品(比如美的)这类公司可能对单片机要求多点,因为可能考虑成本,实时性,稳定性方面的要求。但是一般做项目型的公司(就是从客户手上拿项目,或者是做特殊产品卖关系户),人家就不要搞单片机的,直接上ARM系统,能够把东西堆出来就行,确实感觉也是像楼主说的那样,这类公司不专业,没前途。因为是做关系客户,做的产品也不够好,能够应付过去就行了。。。。
但是我现在也还是有个疑惑。。现在也有很多同事是搞单片机的(51系列),跟他们聊天,包括网上看到的一些内容,感觉搞这个的也貌似没啥前途,做硬件的3年工作经验的比做软件3年工作经验的拿的钱少多了,我估计应该也是他们走的路线走错了。像楼主您这种层次的,说实话我真没见过,也不知道是咋样成长起来的。楼主能介绍些技术成长路线么?具体性的指点下我们这种想转型的菜鸟。。比如进哪类公司好,做神马行业好,看神马书好,学神马具体技术好…大概要花多长时间的成长期。。
弱弱的问下楼主,进工厂做这个,好么?——谢谢你的关注。要解除这些疑惑,首先要弄清楚公司的本质。有两种公司,一种是做量的公司。另外一种是做设计的公司。

做量的公司,永远都是以市场业务为核心的,在这样的公司里名义上是做单片机开发,实际上是做维护或者技术支持,好一点的就是做做产品升级,一年之中能有一个新产品让你开发,就已经很不错了,在这样的环境里,换成谁,谁都觉得单片机没前途。

设计类的公司,老板肯定也是这一行的技术牛人,他在开公司的时候就想到了,把你们都培养成技术牛人,如果以后给不了满意的薪水,你们迟早要自己出来单干,很纠结,怎么办?铁打的营盘流水的兵,要么就不开公司,要开就要设计好合理的分工制度。分权才方便管理嘛。因此把公司分成家电组,工控组,医疗保健组,汽车电子组,安防组,消费玩具组,等等,然后又把技术人员分成软件工程师,硬件工程师,测试工程师。当然,接项目谈价钱等核心肯定还是老板牢牢捉住。编写程序的时候,公司肯定会要求按照固定的模式来操作。变量命名要统一,每一行代码要有中文注释等等,无论以后谁来都能接手。在这样的公司里上班,技术会有一定的积累,但是客户资源没有积累,空间还是有限。

综上所述,进公司上班只能是暂时的,想一辈子在别人的公司里有作为,是不可能的。技术成长路线很简单,就是接项目做,不断地接项目做,在实战中积累经验,丰富你的资料库,积累你的客户资源,积累你的行业口碑。

怎么样才能接到项目?当然是利用互联网来多发布广告,可以在58同城,赶集网,好喇叭,兼职网等网站发布免费的广告,自己也要建一个对外宣传的个人网站,500元左右就可以搞一个,很划算。当你的项目越做越多,老客户与相关的朋友就越多,以后这些老客户给你的项目,你都做不完。我现在基本很少发广告了,因为很多熟人会帮我介绍。

找单片机开发的工作难啊,要本科,要几年的工作经验,像我这样刚出大学的专科生情何以堪啊——不怕。我就是大专毕业的,毕业于桂林航天工业高等专科学校,现在改名为桂林航天工业学院。我还认识一个在广州搞单片机的绝世高手,他叫林文,中专毕业的,他一年赚几十万,买车买房,老婆小孩都有了,才30多岁。事实上,等你接项目做的时候,没有人会关心你的学历,人家只在乎你的技术。我最近找了一个合伙人,他是初中毕业的, 我现在要带他从零开始学, 他很有学习的欲望,我很相信他学好单片机一点问题都没有。我这个初中毕业的合伙人,他之前是在工地做包工头的,现在32岁了,照样从零开始跟我学单片机。

PLC与单片机呢 有什么区别于未来前景——PLC内部就是由单片机做成的一个产品,用在工控大型设备上比较多。PLC能做的,单片机都能做,单片机能做的,PLC未必能做。单片机比PLC便宜多了。如果你现在还是在学习阶段,还不能明确未来工作是不是要用到PLC,那么,毫无疑问,学单片机绝对比PLC更加有前途。如果以后工作岗位上要用到,到时候再学PLC,也不会很难。

楼主你接的项目一般都是什么?——工控,仪器等项目比较多。以前还帮别人做过上位机开发,不过最近,我不接上位机开发的项目了,我只做自己最擅长的部分,电子电路,也就是单片机这部分。

前辈 ,你是从什么时候开始学习单片机的?我现在三十岁,学习单片机会不会年纪大了?——不会。我的合作伙伴今年32岁,初中毕业,照样从零开始学。江民软件的创始人,38岁才开始学计算机编程,关键看你的学习能力与态度。  我在学校的时候就开始学单片机了,而且当时我是我们专业里单片机最厉害的。毕业设计的时候,我是为数不多,真正做出实物来的学生。然后一毕业刚好就找到搞单片机开发的工作,我算是比较幸运的。想想我以前专业的同学,82个人,目前只有两个人搞单片机的,一个是我,一个是我的徒弟。

我也有个兄弟在深圳搞单片机,不过好久没联系了。我想哪天我也去深圳玩一玩,拜访一下吴总你,不介意吧?——我没你想象的那么高大,我就是一个自由职业者,称不上吴总,别人都叫我小吴。我在网上可能比较活跃,平时是比较内向的,大部分时间都是自己关起门来搞电子。如果不是业务关系,你那么热情来拜访我,我真的是有压力,为了避免你对我的这种好感“见光死”,你还是别来。我还是要谢谢你那么看得起我。

我们要参加比赛,一放暑假十几个人都跑光了, 我一个女生每天去实验室学单片机,从零开始,前途一片迷茫。——女生学单片机,很少,支持一下。

学校来了好几家嵌入式培训机构,鼓吹我们都去学——在学校,基础与动手实践是最重要。对于电子专业来说,如果单片机还没学好,就去学嵌入式,真是不应该。

学什么都一样,最主要是脚踏实地的学,。楼主能推荐点相关的英文资料吗?我觉得专业性强一点的英文资料很欠缺——要相关的英文资料干什么?如果是为了单片机而学英语,那么到处都是英文资料,随便下载一些IC的资料来阅读,不懂的就在百度上翻译。我以前读书的时候,是过了英语四级,出来工作之后,因为要看IC资料,一开始的时候,阅读还是很吃力,不过我凡是遇到不懂的单词,都会马上在百度上翻译看懂,虽然速度有点慢,有时候看懂一个IC资料,要花三四天时间,但是我坚持下来两三年后,阅读就不成问题了。关键还是要有耐心与坚持。

说的好,想当个体户就学单片机,单片机硬软并重,嵌入偏软件——。精辟。嵌入式其实就是PC编程,跟电子没什么关系。是属于两个不同的领域。搞电子的发展方向不应该是嵌入式。

楼主,我是一名即将大三的学生了,学的是通信专业,和电子有点关系。最近在看郭天祥的书自学51单片机。也算是进了个门,但是我有个疑惑想请问楼主。就是怎么样在学校把理论基础的东西学好?我们现在学校开的课好像什么都涉及一点,我们有学过数电、模电、信号与系统、通信原理,下学期要学dsp、图像处理、eda、通信电子线路、电磁波、信息论等等。。关于这些理论的课程我都需要一一用心地去掌握吗,还是要用到的时候再去学习?上学期一直都在自学tcp/ip(因为当时没找到方向,所以随便先学点东西),几乎所有的课都没去上,而且tcp/ip也没学得怎么样,现在打算以后往单片机、硬件这方面发展,专搞硬件有空也自己弄弄程序、软件。但是听楼主的话还有网上的帖子都有说到要把理论基础打扎实,但是就是不知道怎么走这一步,什么理论应该深入,什么不必深究,这一点我实在很费解(习惯了逃课自学,课堂上的东西的确难以吸收,我怕像上学期一样逃课结果会什么都学不了,但是专心理论的学习我又会没时间学好单片机)。还有楼主说高数要学好,我高数很烂。。不知道要怎么学好高数,工程数学这些也算是高数吗,要学到什么程度才可以把单片机和这些理论东西结合起来呢?思绪有点乱,望楼主能解答一二。——(1)问:就是怎么样在学校把理论基础的东西学好?答::只要上课认真去听,能听多少就多少,考试能够80分就够了。(2)问:我们现在学校开的课好像什么都涉及一点,我们有学过数电、模电、信号与系统、通信原理,下学期要学dsp、图像处理、eda、通信电子线路、电磁波、信息论等等。。关于这些理论的课程我都需要一一用心地去掌握吗?答:不需要。点到为止。还是那句话只要上课认真去听,能听多少就多少,考试能够80分就够了。硬件电路也不是你在学校一下子就能够掌握的,要以后在做项目中慢慢积累,慢慢消化。但是单片机,C语言是战略高地,你只要占领了这个高地,你就有了向外围电路扩展的资本。你不是说你看过郭天祥的书吗?你也可以看看他网上的《十天学会单片机》的视频,超级经典。我当初就看了他的第一课,他说了一句超级经典的话,顿时让我觉得他是单片机教育普及的第一人,大意是,先掌握单片机与C语言,“以后缺什么补什么”,这个双引号里面就是他的原话。

其仔细看了chenyao3612和吴坚鸿在《吴坚鸿谈学单片机有前途还是嵌入式系统有前途》一贴中的对话,chenyao3612也是一个十分坚持和有韧劲的电子学习者。他因为看了吴坚鸿的帖子,就讲述了自己学习的一些经历,我相信他的分享能够给很多电子学者一些启发。很多时候学习并不是一件很简单的事情,在学习中我们也有迷茫和看不到方向的时候,但是关键在于你是否能够像chenyao3612一样坚持下去。我一直都相信,人生不管是什么,都是一种学习,只要经历了,就是学习了;学习的话,不管你学什么,你都会进步,你知道了你以前不知道的东西,这就是一种进步。下面先是chenyao3612的讲述,之后有吴坚鸿的回复。

看了半天。终于从第一页看到了现在。我以前是学机械的。毕业了一直打杂,开车床,还不是数控的。

我为什么想学电子。

发现搞机械很不受人尊重,人人觉得机械不就那点东西。(其实我觉得机械比什么都要深奥。只是中国不重视基础,不重视基础材料。所以永远差日本德国十万八千里)。再就是现在国内懂电子的基本不懂机械。懂机械的基本不懂电子。我想会机械又会电子。所以我想学电子。所以我从去看五月份就开始在网上摸索,因为我高中物理学的还比较好。。对基础知识理解还比较清楚。所以虽然不专业。但总能说出点大概的味道来。譬如说什么信息传输。除了有线的。基本就是波(分为机械波和光波)。所有的东西都离不开这个东西。什么测距啊。什么无线电啊。什么光啊。所以我自认为我的理论还比较清晰。并且和比较喜欢这些基础的原理(虽然不能从专业的角度很懂,但我能从物理角度有自己的理解)。并且我觉得这些东西很重要。对以后开发项目很有帮助。对各种传感器能更好的理解。这些东西我只能理解但总不知道应该怎么去学电子。

去年我遇到一个贵人,我很喜欢和他谈这些大道理,基础知道原理。再就是把自己的想法也告诉他。他就问我,你说你想学,你到底想学什么?你总不能说什么都想学,你想学硬件还是软件?我说我什么都想学。我想学硬件也想学软件。什么都想学。想学电子想学机械。想学心理学。想学管理。他说好吧好吧。不管你以后想学硬件还是软件,你先学单片机吧。你可以先从51单片机学起。 那是去年的五月份。那说了那样的话给我。我那时什么叫单片机都不知道。在我心理一直以为硬件就是收音机数模电路。软件就是电脑。这是我去年的理解。但我现在回想学的又可笑,又有点道理。 从他说那些话给后。那个星期的周末我就去书店买了本21天学通51单片机。因为那书店里计算机类里关于单片机的书真的不多。。都是些高级的。很高深的东西。当时是那么觉得。。现在还是那么觉得。。。买了那本书后。我那一个月就天天看前面单片机的内部结构。和后面的中断,计时器。 重点还是单片机结构。再就是看了一点点汇编的操作指令。因为你懂一点点内部结构了再看汇编的指令感觉还算比较好理解。因为中断和计时器。我觉得有理解了。但是那些寄存器太多怎么都记不住啊。所以没看了。再就是中间的C51我一点都没有看。看啊看啊。迷迷糊糊的看。开始一点看不懂。再看第二遍。再看第三遍。再看第四遍。一个月后。终于有点点懂了。

当时只看前面的单片机结构。和后面的中断,计时器。重点还是单片机结构。因为中断和计时器。我觉得有理解了。但是那些寄存器太多怎么都记不住啊。所以没看了。再就是中间的C51我一点都没有看。(现在才发现,其实很个单片机都是不同的。)。好吧开始自己动手做程序了。就想学一门语言啊。。就在网上搜啊搜啊。有说先C的。有说先学汇编的。因为我觉得学东西就要从老东西学起。什么新东西不是老东西抽象来的。。所以我选择了汇编。自己就天天看汇编啊。。又看了一个月。完全是看书。还是没有操作过。 二个月就这么过去了。又开始迷茫了。就在网上搜啊找啊。终于知道了什么叫ISP,什么叫仿真,什么叫仿真器什么叫开发板。。好吧。为了学东西钱算什么。花了两三百买了个开发板和仿真器。电子发烧友电子的。但是还是不能动手。最多点两个灯。。所以搞来搞去就是会几个跳转。会让P1.0=0//灯亮了。P1.0=1//灯熄了。一两个跳转还好。。要是有三四个跳转自己就头都大了。唉,又买了本王爽的汇编语言,天天看,天天看。还跟着在DOS里面操作。妈的,这个东西也太基础了点吧,我觉得这么下去不是个办法,再就是发现怎么说的和我以前在21天学通51单片机里说的有点不同。不管是汇编语言,还是CPU,RAM,ROM结构。 我又开始想了。。后来才搞明白。原来王爽的这本书汇编是X86,我以前那个是8051.。操。完全两个不同的东西啊。我是学单片机的。不是学写QQ应用软件,或者什么驱动的。我现在这点皮毛都没有怎么可能理解那东西。。方向应该错了,马上又停下来了,再不停下来和我以前看的21天学通51单片机要浑了。头都大了。。。。。。

三四个月又过去了。。。这半年自己还是边在开车床,边在网上搜,什么是单片机,什么是三极管。什么是运放。 转眼到过年了。什么都不会。 又遇到那个贵人了。。他问我学的怎么样??我说学到很多东西啊。 他说能做什么东西了没?我说不能。就会点灯。他说你要试着做点复杂的。。我说好吧。。可是又不知道怎么下手。。。。但听说做东西的时候会学到很多东西的。。我就硬着头皮。可是再硬着头皮也还只是会点个灯而已。程序循环两下就晕了。。好吧。。。我又要开始思考了。。//************这里我特点建议在求学的道路上迷茫的人啊,当你们迷茫的时候不能放弃,在学什么东西还是接着学,重点来了,这时就要把自己抽离出来。要把自己当一个局外人。。站在一个很高的平台想自己的处境。********************// 当时我就把自己抽离出来。又开始想问题了。。当时就想程序肯定不是这么写出来的。妈的那么复杂。谁搞的明白啊。就算花结构图也画不明白啊。。肯定得学门高级语言。别人说高级语言什么结构什么模块的。应该那样才有头绪。 好吧我又买了本谭浩强的C语言。。妈的,好难看懂啊。。就像高中的教材书一样。。慢慢看是看的懂。。但懂了又怎么样? 天天算加减乖除那又是个什么意思? 真真假假,假假真真 再就是什么数据什么算法,什么运算符,什么表达式。。。。这些有什么意义啊。。这下又迷茫了。。又在网上查这个查那个。。他的。。看到一个广告所以又买了个学习资料。。。里面有视频。。。说什么从万能板学单片机。。。又看了一个星期。就学会了在外面接晶振。。再就是教你怎么下载了他写好的程序。可以有音乐。。。其实这些我以前就会了。。好吧再接着往下学吧。。开始讲C51了。。。可是一点听不懂。。 。我就翻我电脑里的东西。。不小心翻出了一个好东西。。这时就到了2012年7月份。就是前半个月。。。。原来第一个开发板送的光盘里里有个 郭天祥的十天学会单片机C语言。。。。终于原来就是这么简单。。他讲的我竟然都听的懂了。。为什么。。。为什么我也不知道为什么。。是他讲的好还是怎么了?确实是他讲的好。傻子都能看明白。。。但这时我又想了一个问题如果我不是因为前面我看了汇编,我会这么容易看懂了。我想我不能。。。原来WHILE IF FOR就是汇编里抽的JNC JMP等两三个指令组合的。。。这时我豁然开朗了。。。。。 这半个月来。我看视频十了。在我看到视频五的时候我辞职了。找了一份很轻松的工作。在一个电子厂做流水线的事。一天六个小时。工资很低,一个月一千块钱。我知道我要的是时间。我要的是接触电子。我要的学会用烙铁。我要的是学会认各种基本元器件。拟我什么都不管了。。。。。

因为以前的机械天天加班没时间学东西。再说也不是一个行业。。再说我觉得我自信我已经能自学了。我已经入门了。。。我会写程序了。。我掌握了LCD1602。 原来一切就是这么回事。。。什么IIC协议(这里说一下,我觉得IIC协议很重要,很多东西都是IIC协议或者是类似的人为定的协议。就像前面楼主说的那个三个单片机通信的问题。其实就是IIC协议的DIY。虽然没有真正的搞懂,也不会。但我是这么理解的。) 我现在要做的就是学精C语言的语法,学精通51单片机。试着去驱动一些IC。 我现在就在过着这样的生活。。白天上班。。晚上看周天祥。看C语言基础,,把语法规范。。(这时候看的懂C语言了)。

------------------------------------------------- 好吧。我把我摸索的过程在这里和大家分享到这里。。我觉得我每一步都走的很曲折。。但是我觉得真是这每一步曲折才让我到现在这个状态。我想要的状态。。我现在对硬件,软件,MCU,windows,嵌入式也有了自己的理解。。所以我来发表一下我的两个观点:

1.如果你想真正的学东西,想学精,想学的长远。还是先学汇编再学C。虽然学汇编有点难。但是你花两个月时间,就像我去年五六月份一样的。了解一下单片机结构和汇编语言。如果你只想玩一玩不求甚解的话就直接学C吧。。但我警告你学了C再学汇编就会觉得很难很难了。我不知道为什么。。反正网上别人学了C的再学汇编的人都这么说。。。说太难了。不要学。。但我当初什么都不会的时候都觉得汇编很简单。。。只是编不了大程序。。。但会点灯。。。。想点哪个就点哪个。。。要谁亮谁就亮,要谁熄谁就熄。。。。

2.先学单片机不要学嵌入式系统。单片机和嵌入式系统的关系就和汇编与C语言的关系一样的。。所以楼主的所有观点我都支持,赞同,顶。但是楼主说不要学汇编我就不能理解了。那你为什么又要人家学单片机不要学嵌入式呢???在我大脑里。你对知识对真理的看法是矛盾的。

其实很多人都很难入门,入门了就好了。其实很多人就陪MCU和CPU的关系都不知道。就连寄存器和存储器的关系都不知道。就连RAM,ROM的区别都不知道。就连I/O口与寄存器的关系都不知道。所以我建议从零的入门步骤是先花一两个月学51单片机内部结构和汇编。一定是51单片机的结构。和针对51的汇编。因为汇编有很多种汇编。单片机有很多种单片机。会了51.其它基本就会了。但就是因为大同小异的异。当一点都不懂的人遇到了这些不同的单片机头就会大。就会迷糊。所以一定是学51单片机的结构。和针对51的汇编。学到什么程度呢。能点灯就行了。。不要学的很精。。然后就是周天祥的十天学会单片机C语言。。。OK。。你就到我这个水平了。。。。我的水平就是小学一年级的水平。这半个月来我只会驱动1602CD。视频里的一些视频因为我是电子发烧友电子电子的开发板。所以有点不同。试验基本都做不了。。。但我觉得我能做好。。。因为1602还是被我整会了。。这里还有点建议。。。去学外围的IC的时候什么都是假的就是看IC的手册。看时序图。时序图很关键。

-------------------------------------------------唉。其实知识原来都很简单的。就是被人一层层的抽像了。所以我们就觉得好难好难了。。从麦克思维方程抽像出元器件。从元器件抽像出数字电路和模拟电路。 数字电路抽象就到CPU了。再抽象就到计算机了。高低电平抽像就到了0101. 0101抽象就到了汇编。。汇编再抽象就到了各种高级语言。一切都是抽象,一切都是浮云。。。。。。要藐视一切知识。要重视一切知识。非淡泊无已明志,非寂静无已志远。。楼主很宁静所以可以志远。但是把钱看的太重。非淡泊,所以无法明志。

楼主教个朋友。希望你能加我QQ290314786.太我学习的道路上指点一下我。。我不会拿一些具体的问题来问你的。我只是想有时候我有我的一些理解我想问一下你我理解的对不对。我不会拿一些具体的问题来问你的。我只是想有时候我有我的一些理解我想问一下你我理解的对不对。因为这对我很重要。。。再次谢谢。吴工,搞技术的人是相吸的, 先说到这里。我要拉屎了。我要吃饭了。 吴工。吴总。吴师傅一定要加我啊。不然我会很失望很遗憾的。。。。。。

——chenyao3612的观帖感悟

我很感动,看到你写了那么多东西给我,我仔细全部看完了。你这个回复很有参考意义,会给后面很多新人启发。你的观点我都认同,因为我们的学习体会都很相似。你提到“楼主说不要学汇编我就不能理解”,我当初说这句话的时候,只是想告诉大家一个信息,真正做项目的时候还是要用C语言,一旦用了C语言,单片机看起来就没有那么复杂了。你对汇编语言的理解很不错。我当时在学校的时候,一开始就是专门学X86的汇编,当时我就想,这个东西有什么用。最后一个学期,才学到单片机,当时就是用汇编来教学的,我那时候还不知道C语言也可以编写单片机的程序。正因为一开始用汇编教学,我们班里除了我和少数几个人之外,大部分的同学都没有坚持下去。我们学校的实验室里面的设备,没有仿真器,没有烧录器,只能敲入十六进制的代码。所以我们做实验的时候,就是先编写汇编程序,然后自己把汇编程序翻译成十六进制代码,然后一个个敲进去实验室的仪器里,我当初就是这样过来的。后来毕业工作之后,我才知道可以用C语言编写单片机程序,用了C语言之后,一切都So easy!,当然,很可能就是你说到的原因,因为我已经有了汇编的基础。

——吴坚鸿的回复

恩。其实我说的也有点过了。。我只是站在我的地方说一些问题。其实当我成家了。。我有孩子了。。我想我应该也会有这些现实问题。不管怎么样。我能理解你所说的。。你可以加我QQ吗???因为我自己会理解很多东西。但我不知道我理解的对不对。再就是我今后的学习目标。。我想跟您说一下。您也帮我指导和参考。主要还是长远的。一年两年三年五年。

呵呵,原来高手也是这么来的。。你一说我们的经历好像哦。可些现在我的水平还是六七年前你水平。但有点不同的是你还敲过十六进制的代码。那你和那个60的牛X工程师一样的啊。你敲的16进制。他敲的是0101.。也教我敲一下啊。 怎么把HEX文件直接敲进去啊?

——chenyao3612

我会把你当-朋友,但是不要加我QQ,有什么问题直接在我的帖里交流。

那是很古老的设备了。如果你开发过烧录器,你也可以明白它的原理。我就开发过AT89S52单片机与SST89E516RD单片机的烧录器,烧录器的原理就是类似于操作一个EERPOM。你只要把这些十六进制的数据存入到有固定地址的程序存储器里面,就完成了烧录的过程,很简单。具体的烧录时序,单片机的芯片的资料上有。当然,也有一些国产的单片机不会公开这些时序,因为它要防别人破解。

——吴坚鸿的回复

好吧。只要您能指导一下我的学习。在哪里都一样。我现在请教关于关于IIC协议的几个问题。

第一个就是那个第9帧数据的时候是从机自动把电平接低是吧???所以我主机在8帧数据完了我就要把数据线拉好,好检测从机有没把拉低是吧???

第二就是周天祥在视频里面说了一句如果从机过五秒后不应答就默认他已经应答了。这句话我一直不能正确理解。我自己是这么理解的。从机不应答就说明数据传输错了。但是他说五秒后不应该就默认他已经应该了那是他主机单方面的认为吧?其实从机这一字节数据还是没有收到正确吧?

第三就是IIC协议是一种固定的协议。有固定的格式。但有些IC的时序和那个IIC很像。但那都不叫IIC协议是吧?就像你说的那三个单片机通信的问题。等于就是你自己为那三个单片机建立一种协议。只是参考IIC或者是模拟? 我这样理解有没有问题

你的意思就是说给单片机烧程序就像单片机通过IIC协议对EERPOM里面写数据一样是吧?我这样理解有问题吗?

——chenyao3612

你问到具体的IIC协议的细节问题,我不能回答你,我也没有那个时间与心思专门为了你这个问题而去查找资料。我要告诉你的是一种思考问题的方式。通讯只有两种模式,一种是并口方式,一种就是串口方式。你说的IIC,SPI,RS232等等都是串口方式,一个脉冲只能传送一位数据。并口方式就是一个脉冲能传送1个字节(或者更多字节)的数据,传输数据更加快。至于IIC,SPI,这些细节时序,如果不是程序调试出了问题非要去查看这些协议,我一般都不理。我帮别人做项目,一般都是先在网上查找一些有没有现成的C语言驱动程序,找到这些驱动程序之后,然后站在人家的肩膀上做些修改,那就是我的程序了。如果真的找不到这些驱动程序,我才会自己花时间慢慢看IC资料的时序,慢慢调试。正所谓“攻心为上,攻城为下。”

你的理解基本正确。无论是用并口还是串口方式来传输数据,都是一样,关键是要把数据放到对应的“房间”里,就完成烧录的过程。

——吴坚鸿的回复

是啊。这点我也没搞明白。人家说IC的驱动程序。是不是就是说写好的时序子函数。我们拿过来了。只要往函数里面赋值或者做个表格就行了

——chenyao3612

是的。对于单片机的外围芯片,如果能找到现成的驱动程序是最好,如果没有就要自己根据IC资料来写。我要睡觉了,今晚先聊到这,最近我的项目太多,有三个项目客户等着我交货。本来还想今晚加加班搞,但是跟你聊得太投入了,只能明天再弄。晚安。

回答你第三个问题。三个单片机通讯,可以用RS232这些固定时序(或者IIC,SPI),这些固定时序可以不变,但是在这些时序上面传送的数据,每个数据的含义你可以自己来定义,哪个单片机做主机,哪个单片机做从机,从机收到哪些数据,然会返回什么数据,这些都是你可以定的,但是载体的RS232协议(标准时序)不用你来变。

把钱看得很淡一些,你说得很洒脱。等你每个月要上缴几千元的时候,你就不会那样说了,哈哈。有空再聊,

——吴坚鸿的回复

你可能感兴趣的:(单片机,嵌入式,嵌入式系统,STM32,单片机入门)