【转载】一位工程师的单片机开发之路

时间:2022-04-30 20:09:12

    单片机的重要性在后PC时代逐渐加重了,现在更多的电子设计者和爱好者讨论最多的话题莫过于嵌入式系统的设计,C51、VHDL、RTOS、CPLD、FPGA、DSP、ARM已是当今挂在电子工程师嘴边最多的几个词,由于工艺的进步,家庭智能化已不是空中楼阁,其中功能越来越强大、体积越来越小、成本越来越低的MCU出现正是这场革命的推动者。那么,做为一个电子设计者、爱好者以及即将成为电子工程师的在校学生,为了迎接这常革命,或者说为了找到一份自己心仪的工作,我们应该具备哪些知识呢?面对这么多必须的技术,作为一个初学者我们又该从何学起?学好这些东西的代价如何?等等…….,这些都是前段时间朋友们问我最多的问题了,由于时间关系,我就不一一回信做答了,这里就写写我走过的路和一些个人心得,希望对同仁们有所启发。 


    我是97年开始接触电脑的,那时我对电脑的概念几乎为0,开始是从QB(VB的前身)学起,比较幸运吧,我认为这是最适合初学者的语言了,虽然刚开始我什么都不懂,就是直到现在我也没认真的写过一段VB的程序,可是它给了我很多概念性的东西,也是我C的入门老师了。我比较笨,所以始终认为学东西一步一步来,从浅到深,没学好不要紧,但是概念的东西要把握住,最好入门时有人教或有现成的东西摹仿,这样最省时间,也比较有成就感而少了一些挫败。


    我的专业是测控技术,万金油,什么都学,什么都半桶水的那种。不过出来做了几年开发的工作后,我发现我的专业还是比较好的,比较势利的说就是更切中于市场,总结现阶段电子设计工程师必需的技术和技能,我认为有以下几点:1是大学里学习的最基础的东西,包括电路、数电、模电,当然还有高等数学和英语了,重要性我就不强调了,不过还得说说E语,害死人的东西了,没办法,谁让现在的技术资料全都是E文的,翻译的知识不是过时就是不知其所云,对一项新技术掌握的程度和速度——这是一项非常重要的能力,否则你只能吃别人的剩饭。2是单片机和C语言,这是电子工程师的工具,不学不行,不过刚学习时不要贪多,也不要好高务远,老老实实的一步一步来,多动手,要重视概念,东西都是相通的,会了C51转到AVR C也就不用一个星期了,具体项目设计时根据各种单片机的特点进行选择就行了。我是从8031开始学的,纯理论,就是上机实验也是听出来的,那时候C51可没出来呢,中国大学的弊端啊,经费少,设备陈旧,老师光说不练,打击积极性啊。真正的动手是从到公司工作开始的,自己学PROTEL(这也是必需的,就不用我废话了)再用公司的钱画板(别人的钱,不用白不用),然后照书上抄例子,具体的学习过程请看下文专门介绍。3点必需知识是CPLD/FPGA设计,我个人用途最多的是在结构化设计方面,CPLD非常灵活,有着很多独特的用途(篇幅有限,我就不多介绍,请看网站的相关文章),随着工艺的进步,价格在一步一步的走低,相信不久它会象单片机一样遍地开花的。4点必备的知识是嵌入式操作系统,如KEIL的TINY OS,Ucus,Ulinux,因为你不可能整天围着低端产品转吧,相信有一天你会用到16位32位的单片机,这时候你就不能老用C51的编程思想了,试想C++用在单片机里的快感吧:)5是DSP了,我精力有限,选修,呵呵,就不多说了。


    总之,小平同志说了,不管黑猫白猫,抓住老鼠的就是好猫。在产品设计时也是一样,只要你知识全面,在设计时综合考虑,灵活应用,只要是最符合的就是最好的,不过这需要更多的知识作为后盾的:)前面废话太多,还是转回单片机入门的话题吧。


    我是从8031开始的,学习时有一点微机原理的知识,8086那种,学校里就只能教这些落伍的但最基础的东西了,数电和模电那时也是有点概念的,所以我个人认为我单片机入门是比较快的。刚开始我们学的是51的基本原理、架构,后来就是指令集,我的老师是汇编专家,所以扣的东西很细,哪个指令执行几个周期啊、直接寻址间接寻址的区别啊,ACALL、LCALL有什么不一样啊等等,这些问题都要求我们深刻到心,所以说初学者有高手(起码要老手)指点,如果一点概念都没有就想靠自学成才是非常难的,不过出来后发现这些东西用的较少,可是对加深理解倒是非常有帮助的。学校里学的东西主要是有一个概念,练习编程也主要是看别人的程序,就算是上机也是把别人的程序抄进去后编译完成就行了(有时候程序可不都对,能编译出来也不容易啊:)  ),因为那时实验设备较贵,中国*急功近利,对一般教育投入的基金不多,所以就算我是科班出身,但是编程器也是工作后才开始用到的,那时只知道有编程器这样的一个把HEX文件写进单片机里的东东,仿真器倒是有几个,不过是老师的实验品,限制很多,什么P0、P2口不能做IO口,EA脚仿真时要接地啊,很烦人,所以到现在为止我对仿真器都有排斥,其实没仿真器也有好处的,我的几个比较大的项目就是在没仿真器的情况下完成的。学习知识动手是少不了的,特别是应用性的知识,不多动手绝对是行不通的。


    我学习单片机真正的动手是从工作后开始,自己学PROTEL,然后用公司的钱画了板(花了400元,深圳价),接着找现成的程序编译后烧进单片机里验证,不过这时候已没人教你了,工作后就是这样,虽然公司招人时说有培训,但那只限于特定的知识。我第一次实验就连晶振都不起震,对着书画的板的,一切没错啊,弄了两天,问了很多人,跳了几条线,最后把书上画的33PF的电容换成22PF的就OK了,就这么简单的问题却搞的我灰头灰脑的,后来照书上的程序又运行了几个,很少有现成就能用的,花的时间不少,倒是有一个和我一起进公司的同事,他没有基础,所以买了一个学习开发板,最后学起来入门的好象比我快,可能是我比较笨吧:) 可是在买开发学习板时也是出了问题的。下面就是我针对自己和别人在学习中出现的问题向初学者提几个建议:


1、 学好单片机要花多少钱?


    这个是大家关心的问题,现在没钱就做不了事的,大学的学费都会使某些家庭家破人亡呢(说笑了)。总体来说学习单片机从89C51开始比较好,最基础,学的人多,问的地方也多,盗版的东西也多。学习51需要一个程序编译器,KEIL的C51大名鼎鼎,7.04版盗版的都出来了,对学习来说盗就盗一回吧,这一项花销是0。编程器呢?我想你是比较幸运的,现在有ISP下载的单片机,可以在线下载程序,这是现在技术的趋势,学习和小批量的产品用这个都可以了,89S51、52、53都支持ISP下载功能,AVR的单片机大部分也都支持,我最反对个人买编程器的,特别是买一些杂牌的,能省则省,这一项只买一个下载线就行了(自己做也行,不过不会给你省钱的,事也不少),30钱。在有就是一块DEMO板了,自己做也可以,不过就是自己做最简单的也要100多,我是反对初学者自己做板的,精力废不起,你是要学单片机的不是学PROTEL的,再说初学者很少有一次就搞定板的。现在DEMO板很多,这部分是主要花钱的地方,100到700都有,关键是结合自己的情况了。有钱的还可以找辅导,1000元左右吧。所以我说学习单片机只要花100到2000元就行了,关键是看自己怎么想了。


2、 DEMO板选择要注意的问题


    现在板子很多,档次和价格也很多。选DEMO版主要注意2点,<1>是功能,板子最好采用模块化设计,每个模块都要和单片机独立分开,留出引线,这样一来实验时可以动手插线,加深电路的认识,也给以后开发时留有余地,另外单片机的管脚也都要连出来,作用也和上面的一样,这样的学习板以后可以做开发板用,还有一定要有ISP接口啊。仿真功能可以不要,那也要花钱的,在有了ISP接口下载后其做用真的很小了,有时侯仿真功能出了问题更难找。不要只关心价格,既然要买最关心的应该是自己最需要什么。如果没钱或爱好者可以选功能少的,专业人士我想最好一次性买功能全的,以后做项目时可以当开发板用,不用花第一次开板的钱,我想带有CPLD和多CPU的最适合了,可编程的器件多以后的用处就多,不要学完后板就没用了。对了,板的尺寸一定要关心,不要只看介绍上的照片啊,我就上了一次当。<2>点关心的是帮助文档,这可是关键的地方,花了钱买了东西,听他吹的功能很多很多,回来发现帮助文档简简单单,可照着操作的东西没有,你还得从新摸索一遍,这样你的钱不就白花了,更有甚者给你的例子程序都是错的,那你就哭吧,对于初学者,那你就跳楼吧。这可是重点的,因为现在做DEMO板的人多,利润低,很多人都是抄的,可能他本人都没上机试过,你别只听他说有论坛支持,那是虚的东西,只有论坛支持那你直接上论坛去算了,干嘛要花这钱?技术支持也重要,但不能寄托在这上,试想那么多人有那么多问题,他该理会哪个好呢?所以关键还是要看文档,不要看有多少资料,要看是不是开发者本人写的,用心不用心,可照着上面的步骤操作吗?