热度11|
其仔细看了chenyao3612和吴坚鸿在《吴坚鸿谈学单片机有前途还是嵌入式系统有前途》一贴中的对话,chenyao3612也是一个十分坚持和有韧劲的电子学习者。他因为看了吴坚鸿的帖子,就讲述了自己学习的一些经历,我相信他的分享能够给很多电子学者一些启发。很多时候学习并不是一件很简单的事情,在学习中我们也有迷茫和看不到方向的时候,但是关键在于你是否能够像chenyao3612一样坚持下去。我一直都相信,人生不管是什么,都是一种学习,只要经历了,就是学习了;学习的话,不管你学什么,你都会进步,你知道了你以前不知道的东西,这就是一种进步。下面先是chenyao3612的讲述,之后有吴坚鸿的回复。
看了半天。终于从第一页看到了现在。我以前是学机械的。毕业了一直打杂,开车床,还不是数控的。
我为什么想学电子。
发现搞机械很不受人尊重,人人觉得机械不就那点东西。(其实我觉得机械比什么都要深奥。只是中国不重视基础,不重视基础材料。所以永远差日本德国十万八千里)。再就是现在国内懂电子的基本不懂机械。懂机械的基本不懂电子。我想会机械又会电子。所以我想学电子。所以我从去看五月份就开始在网上摸索,因为我高中物理学的还比较好。。对基础知识理解还比较清楚。所以虽然不专业。但总能说出点大概的味道来。譬如说什么信息传输。除了有线的。基本就是波(分为机械波和光波)。所有的东西都离不开这个东西。什么测距啊。什么无线电啊。什么光啊。所以我自认为我的理论还比较清晰。并且和比较喜欢这些基础的原理(虽然不能从专业的角度很懂,但我能从物理角度有自己的理解)。并且我觉得这些东西很重要。对以后开发项目很有帮助。对各种传感器能更好的理解。这些东西我只能理解但总不知道应该怎么去学电子。
去年我遇到一个贵人,我很喜欢和他谈这些大道理,基础知道原理。再就是把自己的想法也告诉他。他就问我,你说你想学,你到底想学什么?你总不能说什么都想学,你想学硬件还是软件?我说我什么都想学。我想学硬件也想学软件。什么都想学。想学电子想学机械。想学心理学。想学管理。他说好吧好吧。不管你以后想学硬件还是软件,你先学单片机吧。你可以先从51单片机学起。 那是去年的五月份。那说了那样的话给我。我那时什么叫单片机都不知道。在我心理一直以为硬件就是收音机数模电路。软件就是电脑。这是我去年的理解。但我现在回想学的又可笑,又有点道理。 从他说那些话给后。那个星期的周末我就去书店买了本21天学通51单片机。因为那书店里计算机类里关于单片机的书真的不多。。都是些高级的。很高深的东西。当时是那么觉得。。现在还是那么觉得。。。买了那本书后。我那一个月就天天看前面单片机的内部结构。和后面的中断,计时器。 重点还是单片机结构。再就是看了一点点汇编的操作指令。因为你懂一点点内部结构了再看汇编的指令感觉还算比较好理解。因为中断和计时器。我觉得有理解了。但是那些寄存器太多怎么都记不住啊。所以没看了。再就是中间的C51我一点都没有看。看啊看啊。迷迷糊糊的看。开始一点看不懂。再看第二遍。再看第三遍。再看第四遍。一个月后。终于有点点懂了。
当时只看前面的单片机结构。和后面的中断,计时器。重点还是单片机结构。因为中断和计时器。我觉得有理解了。但是那些寄存器太多怎么都记不住啊。所以没看了。再就是中间的C51我一点都没有看。(现在才发现,其实很个单片机都是不同的。)。好吧开始自己动手做程序了。就想学一门语言啊。。就在网上搜啊搜啊。有说先C的。有说先学汇编的。因为我觉得学东西就要从老东西学起。什么新东西不是老东西抽象来的。。所以我选择了汇编。自己就天天看汇编啊。。又看了一个月。完全是看书。还是没有操作过。 二个月就这么过去了。又开始迷茫了。就在网上搜啊找啊。终于知道了什么叫ISP,什么叫仿真,什么叫仿真器什么叫开发板。。好吧。为了学东西钱算什么。花了两三百买了个开发板和仿真器。德赢Vwin官网 电子的。但是还是不能动手。最多点两个灯。。所以搞来搞去就是会几个跳转。会让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。视频里的一些视频因为我是德赢Vwin官网 电子电子的开发板。所以有点不同。试验基本都做不了。。。但我觉得我能做好。。。因为1602还是被我整会了。。这里还有点建议。。。去学外围的IC的时候什么都是假的就是看IC的手册。看时序图。时序图很关键。
-------------------------------------------------唉。其实知识原来都很简单的。就是被人一层层的抽像了。所以我们就觉得好难好难了。。从麦克思维方程抽像出元器件。从元器件抽像出数字电路和模拟电路。 数字电路抽象就到CPU了。再抽象就到计算机了。高低电平抽像就到了0101. 0101抽象就到了汇编。。汇编再抽象就到了各种高级语言。一切都是抽象,一切都是浮云。。。。。。要藐视一切知识。要重视一切知识。非淡泊无已明志,非寂静无已志远。。楼主很宁静所以可以志远。但是把钱看的太重。非淡泊,所以无法明志。
楼主教个朋友。希望你能加我QQ***.太我学习的道路上指点一下我。。我不会拿一些具体的问题来问你的。我只是想有时候我有我的一些理解我想问一下你我理解的对不对。我不会拿一些具体的问题来问你的。我只是想有时候我有我的一些理解我想问一下你我理解的对不对。因为这对我很重要。。。再次谢谢。吴工,搞技术的人是相吸的, 先说到这里。我要拉屎了。我要吃饭了。 吴工。吴总。吴师傅一定要加我啊。不然我会很失望很遗憾的。。。。。。
——chenyao3612的观帖感悟
我很感动,看到你写了那么多东西给我,我仔细全部看完了。你这个回复很有参考意义,会给后面很多新人启发。你的观点我都认同,因为我们的学习体会都很相似。你提到“楼主说不要学汇编我就不能理解”,我当初说这句话的时候,只是想告诉大家一个信息,真正做项目的时候还是要用C语言,一旦用了C语言,单片机看起来就没有那么复杂了。你对汇编语言的理解很不错。我当时在学校的时候,一开始就是专门学X86的汇编,当时我就想,这个东西有什么用。最后一个学期,才学到单片机,当时就是用汇编来教学的,我那时候还不知道C语言也可以编写单片机的程序。正因为一开始用汇编教学,我们班里除了我和少数几个人之外,大部分的同学都没有坚持下去。我们学校的实验室里面的设备,没有仿真器,没有烧录器,只能敲入十六进制的代码。所以我们做实验的时候,就是先编写汇编程序,然后自己把汇编程序翻译成十六进制代码,然后一个个敲进去实验室的仪器里,我当初就是这样过来的。后来毕业工作之后,我才知道可以用C语言编写单片机程序,用了C语言之后,一切都So easy!,当然,很可能就是你说到的原因,因为我已经有了汇编的基础。
我也想破例加你的QQ,但是我也有我的原则。有什么问题可以在我的帖里交流,我们还是做网友吧。重申一下我的立场,仅仅做网友。
——吴坚鸿的回复
恩。其实我说的也有点过了。。我只是站在我的地方说一些问题。其实当我成家了。。我有孩子了。。我想我应该也会有这些现实问题。不管怎么样。我能理解你所说的。。你可以加我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协议(标准时序)不用你来变。
把钱看得很淡一些,你说得很洒脱。等你每个月要上缴几千元的时候,你就不会那样说了,哈哈。有空再聊,
我真的睡觉去了,晚安。
——吴坚鸿的回复
唉,谁不喜欢钱。不过我们搞技术的要装的清高一点。那样才显得额外的牛B。就像周天祥说他大学从来不上课的。读研也从不上班。
在吴工这里能学到很多大的方向啊。。实在谢谢了。你的每段话都对我很有启发作用。真心的谢谢
——chenyao3612
在吴坚鸿这一系列的博文中,我已经说过很多次了。如果大家正在学习单片机,或者正准备学习单片机,可以去吴坚鸿的这个帖子中给他留言。有什么问题可以尽管向他请教,我个人是很崇拜他的,而且他对于网友的问题都很热心。