我把单片机玩死了-学习-工作-成长故事


整理自贴吧帖子:http://tieba.baidu.com/p/3094118751?pn=1,点击阅读原文进入兴许可以和作者交流


大家好,我是 MCU起航,千千万万个苦逼的单片机从业者中的一个。电子工程师一枚,1986年生,09年毕业,在京工作四年。


简单讲下我当年学单片机的故事,注意:本贴只讲故事和经验,不讲技术和原理。那么现在,就让时间回到2009年的夏天。

当时刚从大学毕业,专业是微电子学。严格地说,我的专业是制作芯片,而我现在的工作是应用芯片,已经走偏了,本来该画版图的结果画电路去了是吧。。。不过没办法,这个专业是学校新开的,各个老师都是学校东拼西凑过来的,那种感觉就像用韭菜和茄子做出来的大拌菜一样,吃起来怪怪的。我到快毕业都没想好该怎么找工作,刚好这个时候宿舍的一个哥们刚刚参加了一个培训班回来。他觉得很好,因为刚好负责培训的张老师来学校讲课,于是跟我说:去*****吧,那里还不错(此处无广告)!


我就想无头苍蝇忽然遇到一扇窗户一样,毕业了家也没回,直接背上行李去培训部了。庆幸的是路上并不孤单,班里的同学凯凯、安保和超哥都一起去了。

地点在燕郊的创业大厦,食宿条件很艰苦。住宿的地方是租的一个两居室,里面放满了上下铺,还有其他来参加培训的同学,他们来自各个地方。在之后的几个月里,我和他们结下了深厚的友情。


20个人,分成了四组,每组负责不同的项目。我在第一组,要做一个波形发生器出来;凯凯在第二组,做一个具有IC卡读写功能的智能水表;安保在第三组,做一个带有语音提示功能的温度报警器;超哥在第四组,做一个按键可控的数字电源。


刚刚分到任务我有点晕,因为单片机我都还没摸过,就要做东西,这是不是有点不合适?虽然在大学里学过课程,但完全是理论课,东西都没见过,更别说做东西了。我估计凯凯他们跟我一样心理犯嘀咕,搞不清楚什么状况。但想想之前来参加的宿舍那哥们,他基础跟我差不多,但是他能搞定,我应该问题不大,于是咬咬牙,开始搞了。

第一步,项目需求分析,为期一周。老张(就是张老师,我们暗地里习惯称他为老张)在北京工作了近十年,各个公司都呆过,正规的,不正规的都熟悉,所以要求我们第一步先去做需求分析,知道自己负责的项目在市场上有没有空间,该如何定位,技术指标如何确定,原理框图如何绘制。


于是,我们开始了疯狂的.......上网,是的上网查资料。凡是和波形发生器相关的内容,都下载下来,然后共享。相关的厂家、型号、技术指标、设计方案、参照代码、市场分析等等等等,就记得那段时间是很疯狂的一段日子。我们像公司员工一样签到、签退,却要比他们更辛苦,因为我们晚上11点才离开实验室,是每天!大脑像运行到极致的CPU一样,用力的查看着每一条可能有用的信息,每一次呼吸都感觉自己很累,不确定今天能得到什么结果,也不知道明天会怎么样。于是,我不停的喝水,让自己有更多的上厕所的时间,这样可以多休息一会儿。


每周休息一天,日子很累,但却充实。我已经明显感觉到和波形发生器相关的各种关键词都充斥在我脑子里了,DDS、频率范围、单极性波形、双极性波形、调节精度、输出波形峰值等等。但这些还不够,因为我们得到的这些信息都是搜集来的,并不确定可行性。一切的一切,需要下周一老张审核我们的方案。而我们的心态,也从最开始的畏惧,逐渐被越来越多的疑问代替,然后抑制不住的想知道答案。


终于,开始方案审核了,老张让我们每人挨个讲解了一下自己的需求分析。然后指出不足,顺便夸了几句,给我们增加了点信心。最后给出了完整的方案。

第二步,开始动手?NO!老张说,去逛逛北京城吧!What?我们愣了.....好吧,最后才知道,原来是去中发电子市场采购。可以这么说,在北京搞电子的,没有人不知道中发电子市场,你能想到的一切器件,在这都能找到。而且,毕竟巧妇难为无米之炊,我们动手,总要有器件才行啊。所以,根据方案列出器件清单。面包板有了,是老张提供的,别的东西自己解决。于是,一群菜鸟,选了一个阳光明媚的日子,兴冲冲的来到了中发电子市场,任人宰割.......


记得那天,我买完电阻,路过一家二手仪器仪表的店铺,看着里面慢慢的仪器,不自主的就走了进去。老板以为我是某个学校的学生,随口跟我聊了几句,我问他二手示波器多少钱,他说看情况,便宜的三四千,好一点的七八千。忽然心里一动,又问他有没有波形发生器,他说有,然后告诉我在哪,怎么用。我很认真的看了很久,心想这就是我要做的东西啊。

第三步,用汇编语言熟悉单片机的基本功能。是的,你没看错,是汇编语言!就是说,之后的项目也要用汇编去完成。当时没有想明白,但是当我一个月后熟练的掌握51的底层结构的时候,我已经有点懂了。先从ORG开始,然后是MAIN...再然后MOVE来MOVE去,别人怎么写,我就抄过来,背下来,然后反复写几遍,竟然就懂了。


从对单片机的一无所知,到跌跌撞撞不小心滚进单片机的大门,就这么发生了。那几天是异常兴奋的,我感觉我就是万能的神,我可以控制一切芯片。每段代码,我写了好多遍,然后又下载了好多遍,每一次成功、失败的过程都激励着我前进。


记得有一天在调试数码管,代码改了一下,重新烧录,结果整个电路忽然就不工作了。我愣了,不至于啊,改动不是很大,就算有问题,也不至于整个电路没反应。于是我花了一个下午查看代码、检查电路都没找到问题。我问阿海,他瞄了我一眼说,你电路有问题吧...我无语,我的电路我清楚,不应该的。到了晚上,八九点的时候,我想再下载一次试试吧,代码没动,烧录进去,结果忽然就好了。我瞬间愣了一下,放佛想到了什么,马上打开AT89S52的器件手册,第一页的一个参数解决了我的所有疑惑:该芯片的flash区擦写次数为10000次。换句话说,因为多次擦写程序,导致这块单片机的程序存储区寿终正寝,已经快被我玩死了!

现在还记得当时兴奋的感觉,可能是因为一群疯疯癫癫的年轻人凑在一起,所以学习的过程并没有觉得多累,反而很嗨。当时用的ATMEL公司的89S52单片机,还是用并口线下载的。先从点亮LED开始,然后是蜂鸣器,串口扫描,串口中断,键盘和灯,键盘控制数码管,软件延时,按键消抖等等。随手放几个当年的代码,现在看来,真的是惨不忍睹


这是个串口扫描的:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV SP,#60H
MOV TMOD,#20H 
MOV TL1,#0FDH
MOV TH1,#0FDH
MOV PCON,#00H
SETB TR1
MOV SCON,#50H 
LOOP:JB TI,FH
JB RI,SD
SJMP LOOP
SD:CLR RI
MOV A,SBUF
INC A
MOV SBUF,A
FH:CLR TI
JMP LOOP
END

现在看来,写的很简陋。不过对于当时的自己来说,已经很知足了。


当时的我们,没有开发板,只有一块面包板。所有要用的东西,都是自己焊接的。可能耽误了很多时间,但是对后来工作中电路的检查能力,起到了很好的锻炼。因为我们手动焊接每一个LED,每一个电阻,每一个按键,接触了布局布线。所以导致我们对电路的敏感度非常高,在后来的工作中,检查故障电路的时候可以很快推断出故障出现的位置。这是那些整天叫嚣仿真万能的人体会不到的!!!这里还是要说一句,个人观点:初学者少碰protues仿真,什么时候用?当你已经完全学会单片机,在项目中要验证代码和原理可行性的时候再去仿真。想通过protues仿真来学习单片机,这真的是笑话了!

第四步,真的要动手开始做了。玩真的!具体指标记不清了,大概是:4×4矩阵键盘控制,数码管显示,频率10HZ~1000HZ按键可控,三角波、正弦波、方波可选。难点主要在频率可通过按键控制上,就是说从10到1000,我随便输入一个数字,输出端都要给出相应的频率。频率是通过定时器定时中断控制的,这就要求有一个算法,能根据输入值,计算出每次频率更新时,需要赋给的定时器初值。这涉及到16位的除法运算,汇编里面的除法器貌似只有8位,不够用。没办法,我们到处找16位除法的算法,最后用减法循环模拟了一个,效果还不错。


虽然是一个小组,但是我们四个暗地里多少也会有点竞争,谁都不想落在最后。最快的是阿海,波形发生器的每一步都是他先规划好,做出来,然后我们几个再去模仿。当然,不是单纯的复制。矩阵键盘的扫描上,我跟他的算法不一样,DAC0832的驱动电路,我俩也各不相同。但是,不可否认的是,他给我树立了很好的榜样的力量,让我知道,这个方向,这个思路是可行的。

记不清哪一天了,是个下午。我愣愣的把示波器打开,检测输出波形,当看到正弦波断断续续输出的时候,我傻了,原来我真的可以做出来。而那一天,距离我们开始做需求分析,不到45天。


后面的事情,很顺利了。大家的项目陆陆续续都出来,然后坐在一起进行经验交流。还有件事比较重要,就是学习C语言。虽然汇编效率高,但毕竟移植性太差,已经慢慢没落了,而C语言的生命力还很强,很多地方都能用到。


学完C语言,开始接触AVR和430单片机。在51里面摸爬滚打了一个月,可以说,我们是把51揉碎了,一点一点学完的,跟那种自学,仿真,或者看视频的效果完全不一样。当我拿到430的开发板的时候,我只用了3天时间去熟悉它。前面一天熟悉开发环境和开发软件,后面两天看相关例程。因为我们动手过、实战过、焊接过、调试过,当我们再去看这些高级单片机的时候,真的是一种轻而易举、水到渠成的感觉。

总结:很多人学51学的很仓促,觉得这是个很基本的东西,快没人用了,简单过一下就行。大错特错!
上世纪80年代,intel将8051的内核技术转让给各个厂家,这才有了现在的各种高级单片机。可以说430和AVR的内核都是51,只是多了一些寄存器和功能模块而已。记得逛一个论坛的时候,一位工作多年的老工程师说了这样一句话:51,妙用无穷!现在我才有一点体会到这种感觉,可以这样说,如果你能把51单片机吃透,记住,是吃透,市面上的所有单片机,你都可以信手拈来!


另外,花钱的事。怎么说呢....先上图




这是我学单片机买的板子,还有几块没照,光这些已经花了好几百。首先要说的一点,也是重中之重:学单片机一定要买开发板!因为他是实战的技术,你在电脑上玩赛车玩的再好,到实际中也不管用。Protuse的问题我在上面已经说过了,因为天朝大学的无能,没有搞清楚这个软件应该放在单片机应用的哪个阶段(个人观点,不喜勿喷)。


我参加培训花了4000元,后面,陆陆续续买开发板花了也有一千左右。但是没有一次会觉得不值。参加培训,我是在拿钱换时间,我一下子就跟从业十年的单片机工程师坐到了一起,单片机市场、类型、编程语言、画图经验、应聘技巧等等,用我老师的原话:你能学到我的一两成技术,就能正常就业了。


这里,我不是要催大家去参加培训,我的目的是转换大家的思路。尽量少做伸手党,要舍得投入,自学是最慢、最没效果的。


在本专业中,单片机被过度神话,尤其在部分院校,单片机被看作是救命稻草的存在。仿佛学好单片机就能走遍全天下,学不好连工作都找不到。


大概是11月份,进入找工作的阶段了。说起来比较丢人,因为我性格上比较内向,面试的时候表现的不是很好,错过了一些机会。找到的第一份工作是在一家医疗器械的小公司,月薪只有2500,因为当时已经毕业几个月了,不想再花家里的钱,所以有点着急。而且,试用的阶段也是比较戏剧性的。为什么?


公司那边同意给我一个试用的机会,前提是,把它们现有产品里面的一个bug改过来,限时一个月。当我打开他们的代码的时候,我乐了!为什么?可能这个问题对于别的新人来说很麻烦,但对我来说,太简单了。因为他们的代码竟然是用汇编语言写的!可能这就是缘分吧。


那个时候的我对汇编熟练到了什么状态?我可以看代码不需要注释!当然现在不行了,毕竟好几年没用了。也很感谢当时项目组的王公,帮我讲解产品的原理图,我才能快速的明白电路原理,另外,程序风格写的非常好。果然,半个月不到,问题解决了,我也顺利入职了。


后面的工作,比我想象的轻松很多。因为公司小,产品单一,所以研发的事情一拖再拖。主要工作就是组装机器、产品配送、故障电路调试、还有售后维修。周末偶尔回到燕郊培训部,感受一下当初学习的气息,顺便拿几片不要钱的芯片。也会跟找到工作的同学聊聊工作的内容,发现各有搞笑和无奈的地方。


培训部有一点很好,即使你离开了,想要什么资料,它都会帮你找来。记得10年初的时候想学一下cadence这个软件,问那边的朋友有没有相关资料。结果给我发过来一个2G的系列视频教程,是一个叫于博士的大神制作的视频教程,从原理图到PCB都有,把我乐坏了。因为当时这个教程在网上还没传开,所以显得很珍贵。


终于,待了不到一年,大概是2010年八九月份。做够了文案整理和国标的研究,我感觉到了自己的退化,这不是我应该做的。于是我提出了辞职,裸辞,就是说还没找好下家。刚好赶上当时换住的地方,一下子交了很多房租和押金,弄得自己很拮据。所以,这里奉劝各位,辞职以前,尽量找好下家,不然的话后果很严重。

阶段总结

总结:1、很多人写程序风格很烂,什么注释也不加。这是很坑人的,我可以负责任的告诉你,就算是自己写的代码,如果没有注释和良好的风格,三个月后,保证你自己也看不懂。这里贴一段当年入职时调试的代码,懂的人自然就懂了,知道写的风格有多好:
(不能全部贴上来,因为这是人家的产品,涉及到职业道德的问题)

;***************************************
keyvalue data 30h
power data 31h;理疗输出功率变量
time data 32h;治疗时间存储变量
timepal data 33h;输出功率定时参数低位
timepah data 34h;输出功率定时参数高位
timelastset data 35h ;备份用户设置治疗时间
STORE_TIME data 36h ;预热开始定时参数位置值存储空间


2、小公司锻炼人,虽然待遇一般,但是接触的东西多。一旦你换到一个新的环境,你会发现你比别人已经优秀太多了。


3、换工作的时候一定要谨慎,尽量找好下家再辞职,不然的话自己很被动。


锋芒渐露


当时在网上投了很多简历,记得有一天面试回来在公交车上。手机忽然响了,接通以后是一个中年男人的声音:


你会用单片机么,我们这需要单片机工程师,你过来吧!
我乐了,心想这公司招人的方式也太直接了,我就问他:
您那用的是什么单片机啊,51,430还是AVR?
谁知道他说了一句:
你说的都不对,430不是单片机,是DSP!


我愣了,心理纳闷,这是哪路神仙在玩我啊,430用了好几个月,明明是单片机,怎么到他那变成DSP了。直接说他不对吧,肯定不合适,会让人很没面子,于是问了问面试的地点,第二天就过去了。谁知道这一次,迎接我的,是一个超大的坑!坑爹的公司啊!当然了,这是后话,当时我的愿望还是很美好的。


面试的过程很诡异,现在想想,他貌似没有问我什么技术问题,当时的场景更像是一个传销人员给我洗脑。大致情况就是,他们公司之前是做工程项目的,比如修路什么的。企业很大,去年的利润是十几个亿。


但是是劳动力密集型企业,现在想转做技术密集型,所以准备成立一个部门,进驻电子行业,将来你们都会成为这个部门的骨干。前期待遇不是很高,月薪只有2500,但是后面部门做起来......可以想象,没经过什么风雨的我,一下子就被那大叔的十几个亿吸引了,满脑子都是钱,貌似没怎么考虑就答应了。


第二天去他们办公室,心凉了一半。真的是个办公室啊,只有不到20平米,焊接的试验台都没有,只是一个茶几,上面放了一个尖嘴的烙铁。尖嘴烙铁,貌似只有入门的学生或者修理工人习惯用,正经调试电路的人都是用平口烙铁的。里面三个人,一个叶工负责带头,两个小弟负责帮忙,其中一个人拿出本51的指令集,用手指着上面一个指令问我这是什么意思,貌似是想考考我。我瞄了一眼,顺嘴一说,他就没话了。虽然过去一年有点懈怠,但基本功还在。


当时貌似是在做一个单片机定时控制继电器的一个设备,想用弱电控制强电的开关。难度不大,主要是安全问题需要注意。据说去之前,两个小弟里面的一个已经做了快半年还没做好,用的还是51单片机。


刘工(就是昨天面试我那个)问我:你擅长哪个单片机,需要多久能搞定?



我看了下他们的原理图,以及需要实现的功能说:
51,430,AVR都能做,十个工作日左右吧。


刘工想了想说:别用51了,用高级一点的单片机,还能练练兵。


我说:那就AVR吧,下载调试也方便。


第二天我就后悔了,不是说做不了。正常的实验环境,是一点问题都没有的,问题是他这里不正常,什么都没有。没有示波器,没有试验台,没有面包板,没有下载线。仅有的一个烙铁还是尖嘴的,还有一些零散的电阻和LED,以及控制电路要用到的器件。


我擦了下冷汗,算了算要用到的器件说:我去趟中发....


下载线我自己学习的时候买了一条,主要用他们提供的一块液晶。AVR单片机控制的,具体型号记不清了,不过底层驱动都写好了,我只负责应用。然后多出来的几个引脚负责开关控制。总算在第十个工作日搞定了。这个时候,叶工有事请了半个月的假,又发生了一件让我想不到的事.....


貌似聘请叶工的月薪是5K多,而我们几个人都是2.5K,然后刘工感觉我的工作能力可以顶替叶工,毕竟这十个工作日我解决了很多问题。而且那两个小弟也开始向我靠拢,于是,刘工私下主动辞退了叶工,这让我们很是诧异,原来商场如战场是真的.....


后面的工作,进入了研发的节奏,这是我想要的。定时控制完了之后,有个项目,是要给一个仓库做一个温度检测系统。仓库很大,所以要用到zigbee技术,放置许多无线结点,然后数据上传到电脑上。我对zigbee比较感兴趣,于是着重看了很多相关的东西。最后发现,这个技术对应到单片机上,只是一些指令的控制,毕竟让一个单片机工程师整天研究通信频率、通信协议不太正常。于是刘工申请了几块模块,让我们进行测试。


我选择了mega8做为控制核心,一是调试方便,二是芯片体积小,引脚少用到温度检测上比较合适,第三,mega8上面有SPI接口,直接就能驱动zigbee模块,省得模拟了。


那两个小弟对此一片空白,于是我又去了一趟中发,买了几片mega8,焊接mega8的调试板,还有下载线,杜邦线。回来以后,又找了块黑板,给他们讲解了一下mega8如何使用。戏剧的是,去年这个时候我还在苦逼的学习,今年已经可以给人讲课了。


模块调试的很顺利,一个星期就调试通了,但是越来越感觉那个刘工人品有问题。之前辞掉叶工是一方面,后面许诺的很多福利都拿不到,然后又把销售和研发放在一个办公室,我一天有三分之一的时间都在听那个销售哥们打电话,根本没办法正常思考,最坑爹的是工资要拖欠三个月才发。反应了很多次,无果。


某天的一个下午,我给他们演示了如何把采集到的温度数据无线接收后,上传到电脑上,然后开始和软件部门的同事商量如何编写上位机收集串口数据的事情。刘工加入了我们的谈话,然后彻底毁了我对他的印象...
软件部的同事之前只会从数据库,或者固定的文件读取数据,这次我把数据发到串口上以后,他们不会采集,或者说他们之前没做过类似的东西。


这个时候,刘工插话了:是不是跟进制有关,换成二进制会不会好一些?
我......
刘工:要不八进制也试一下。
我看了看软件部沉默的同事,说:刘工,这个跟进制没关系,是我们两边现在对接不上。
刘工:真的么,换成十六进制呢?
我无语了,现在也想不起来那天是怎么结束的了,只是记得当时心里就累了,萌生了想走的想法,于是开始投简历。


总结:很多公司习惯返聘一些退休的高级员工,他们回来工作不是为了钱,只是为了找点事情做,所以工资开的很低无所谓。但这对应届生就有一个不好的影响,公司在招人的时候会说:我们这个德高望重的员工都拿这么点钱,你觉得你可以拿多少? 我相信很多应届生都不知道该怎么回答。


另外,面试的时候千万不要随便相信一些不知名公司吹出来的牛皮,公司利润再多,发不到你手上也没用。而且,如果方便的话,可以适当要求参观下办公地点,一定要清楚地知道会不会拖欠工资。

单片机

每天更新
单片机各种知识,电子制作DIY,及电子行业最新资讯,关注我们,棒棒哒!

2、宏晶公司的仿真单片机因为是使用串口仿真,所有在数据回传速度上有限制,这方面需要一些技巧,后期我还会给大家介绍用proteus来在线调试以及介绍一些仿真技巧,敬请期待

生成海报
点赞 0

Abin

我还没有学会写个人说明!

相关推荐

浅谈5类过零检测电路

在电力电子中,零点电压检测(通常简称为过零检测)技术被广泛应用。通过检测电路追踪交流电的电压变化过程,在交流电压为”零”的时刻输出信号,利用该信号我们可以做很多工程应用。例如,在智能开关产

第一次拖锡焊接

前言 前段时间在嘉立创打了几块 STM32 最小系统板,虽然辅助元器件都买的差不多了,但是主芯片 STM32 涨价太严重,就没买,一度搁置到上周。 购买替代芯片 后来找到了一个替代

电子工程师必备基础知识

电子工程师必备基础知识(一) 运算放大器通过简单的外围元件,在模拟电路和数字电路中得到非常广泛的应用。运算放大器有好些个型号,在