电子说
已经准备学习单片机,该做哪些准备呢?资深工程师告诉你如何有准备的学习单片机
这里的准备,笔者将其分为两大类:精神和物质上的准备。
1.精神准备
“千里之行,始于足下”,单片机一天、一周学不会。玩单片机一定不能“1.01³×0.99²<1.01(三天打鱼、两天晒网)”,要有持之以恒的毅力与决心。学习完几个例程后,就应及时做实验,融会贯通,而不要等几天或几个星期之后再做实验,这样效果不好甚至前学后忘。另外要有打“持久战”的心理准备,不要兴趣来时学上几天,无兴趣时放上几个月。玩单片机(In Doing Anything)很重要的一点就是持之以恒。
(1)不要一说写代码就去向别人要源代码。一定要先好好思考,完了记下自己的问题点,再去请教别人,之后借鉴别人的思路再去编程。不要只走马观花看了看实验现象,傲慢的向别人炫耀,已经会单片机的编程了。
(2)学习一个新的软件,一定要多看帮助手册,书上讲的肯定没官方的全面。倘若连软件都没看一眼,就盲目的问东问西,让人觉得你很幼稚。
(3)不要蜻蜓点水,得过且过,细微之处往往体现实力。
(4)把时髦的技术挂在嘴边,还不如把过时的技术记在心里。
(5)看得懂的书,请仔细看;看不懂的书,请硬着头皮看。不要指望看了一遍书就能记住和掌握什么。书读百遍、其义自现。
(6)对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先要学会自己找答案,比如Google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你答案。这样的人平时一定也很懒!
(7)到一个论坛,要学会看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了。作为初学者,谁也不希望自己的帖子没有人回是吧?
2.物质准备
笔者将物质准备分为两类:软件和硬件准备。
1)软件准备
这里的软件不仅仅指C语言,还包括汇编、C++、G语言等,电子基础(例如电阻、电容等)、模拟电路、数字电路、高频电路等,概况的说,就是要有理论知识的储备。
读者看着以上的软件准备要点,或许想“哭”,别“哭”,乖。等读者将以上技术都学完了或者学会了,再去学单片机,那就OUT了。因为上面的任何一门(仅仅一门)学科,就足足够你大学几年喝一壶。那如何学,请读者手头备几本书,以便“查”阅。
有人说“零基础”学单片机,这句话本来就是骗人的,现在没有什么人做什么事都是从零开始,除非你搭乘时光机回到原始社会。永远记住一句话:站在别人的肩膀上,你会看的更远、飞的更高!因为有了以上基础,笔者相信你“玩”起来会更开心,如果这些不会,那可谓真是零基础了。俗话说——The early bird catches the worm,你就得比别人起的更早,睡得更晚,付出得更多,就像残弈悟恩一样,早起晚睡,勤能补拙嘛。如何付出?不是去借本数电、模电、C语言书,从第一页开始背,背一页忘一页,书背完的同时也忘完了。
笔者建议:需要什么,就去查什么,现玩现查。例如,要点亮一个LED,开始是包含头文件:#include
讲述软件准备的最后,回答读者一个网上提了很多遍的问题:该学汇编还是学C语言(C51)?
答:若只是为了用单片机做产品,C51足够了。若要深入研究、搞发明,自己生产单片机,那必须得学汇编。该书是以为了做产品而写,所以主要讲述C51。
这估计是争论最大的一个问题了,有些人坚持学单片机软件一定要用汇编,也有人坚持选择高级语言。C51刚推行时,单片机内部资源比较宝贵,而且C51本身的编译器效率也不够高,导致当时很多人选择用汇编来写代码。
现在的情况是怎样的呢?编译器效率高了,单片机内部的资源也丰富了,用C来写单片机软件不会再遇到以前程序代码太大,单片机运行不起来的问题了。外面的企业,大部分都是用C,C好写,可读性强,可移植性强。那么汇编就不用学了吗?光会C也还是不够的,你还得了解汇编,实际上不是了解汇编指令,是了解单片机的体系结构。鉴于这样,笔者认为玩单片机,还是用C,但是平时也得多看看汇编代码,最低要求就是:能熟练运用C写代码,能读懂汇编代码。
这里汇报个情况,在大学里老师基本都是用汇编教学,听说(笔者自迷恋上电子之后,就从不去上课了,^_^)笔者的老师也是用汇编教单片机编程。可大多数读者工作以后,公司要求用C,当时大家都大骂一顿老师,现在明白老师的良苦用心了,用C教学,老师要轻松很多,而老师却选择汇编,为什么在大家眼中的“坏老师”要如此吃力不讨好呢?
这是因为,用汇编教,能让大家更清晰的掌握单片机的体系结构,运行机理,掌握单片机的核心本质,用汇编读者才会掌握什么是立即寻址,直接寻址,什么是间接寻址,什么是偏移量等一系列问题。不知道这些,用C也能把程序玩转,若不知道运行机理,读者不觉得心慌吗?以后学ARM时能看懂启动代码吗?又能编写完整的启动代码吗?读者说我可以CTRL+C、CTRL+V啊,那笔者就无语。
2)硬件准备
单片机是一门实践性非常强的学科,不实践一切都是“空中楼阁”。笔者将硬件又分三类:本、开发板、实战工具,这里结合笔者的经验,以问答的形式来为读者讲述。
(1)书要不要?
答案是:要。别小家子气,买本书几十块都舍不得,你还学什么呢?为了省钱看电子书,浪费的时间绝对超过书的价值。当然如果查资料,只能看PDF,另当别论。再说了,拿着一本书,坐在图书馆,或许还能静下来。笔者曾经在图书馆一待就是几个小时哈。相反,在电脑上看电子书,总忍不住东点点、西看看,这样浮躁的你会更加浮躁。
(2)开发板要不要?
答案是:花点钱买块开发板是非常必要的。笔者相信看此书的人,还不至于会自己做开发板,因此强烈推荐买一块开发板。
买的板子可以把注意力集中在软件开发上,软件开发过程中可以不必担心硬件上的问题。咱本来就刚刚起步,写个程序半天没反应,也不知道是硬件还是软件,到头来,雄心壮志没了。另外,买板子更省时间,再有就是买的资料相对来说比较齐全。说到这里,可能被一些只为赚钱,不顾及初学者想法的“商业”人士把风气给搞砸了,有些甚至为了做广告,说买开发板,送一注彩票,对于这样的卖家,读者可以直接忽视。
开发板就好比农民种地的种子,只要能合理利用,它便会生根发芽,最后定能收获丰盛的果实。想要种好地,不要不舍得去买好种子。玩单片机,建议大家一定要多做实验,一开始可以模仿笔者所写的程序在开发板上做些简单的实验,模仿时千万不要满足只在开发板上运行一下,一定要自己动手把程序敲进电脑、一句一句分析透彻,不懂的地方拿出课本来查,琢磨琢磨笔者的编程思路,然后再编译、下载、看现象。只有这样边玩边查,才能使那些看起来很复杂、摸不着头脑的单片机的知识变的很具体;只有不断的做实验,在实践中学习,才能真正扎实掌握单片机的基本知识,有了这些单片机的基本知识和自己的亲身体会及经验以后,就该朝着自己动手设计的方向迈进了。
再说了,买一块开发板,就是买一个平台,“有了平台,你便可以轻松的爬上别人的肩膀”。有了单片机的实验平台,你才能去试验更多的程序,才能积累更多的模块化的源程序,积累更多的单片机开发的经验和思路,才能踏进单片机开发的大门。
(3)仿真学不学?
远离虚幻,走向真谛。笔者的远离虚幻意思是不要借助仿真去学单片机,只用软件模拟仿真是永远成不了高手的。所谓仿真就是用Protues软件去模拟实验现象。不知读者看了目录之后有没有发现,笔者没有写单片机仿真,不是读者不会。曾经在实验室,当老师看着笔者仿真的——简易波形发生器时,老师吃惊地说了一句:原来这东西这么好看。这东西说白了就只是好看,没有多少实践之意。笔者也见过有些同学做毕设时,仿真的很完美,怎么一搭电路,调试之后就发现了好多问题,还跟我说,Keil编译的结果是0错误、0警告。软件仿真也通过了,为何这里有问题呢?残弈悟恩当初就很纠结,0错误、0警告就能说明所写程序是正确的,根本不是。举个例子,你要让8个LED灯亮,应该是:P2=0x00;可你写了:P2=0xff;这也是0错误、0警告啊,可能达到效果吗?仿真中,什么都是理想的,电流、电压、阻抗等若考虑不周到,或许能猜出个正确结果。可实际电路中,电流、电压大了,电路板可能会冒烟,晶振频率可能不稳定,导致程序运行混乱。说到晶振,记得笔者在珠海某电子公司工作时,所用晶振为27MHz(是用在机顶盒上),刚开始测试发现频率确实为27MHz,但后来机子工作以后,频率就变了,之后也找了供应商,测试都好的,无奈之下,一位同事说,将晶振外壳接地吧,这一接,问题果断解决了。笔者说这些,没有一点贬低仿真软件或仿真的重要性,只是建议读者玩单片机,必须要多实践,多焊接电路、多调试电路,不要停留在理论和仿真上。
关于这点,读者跟随本书就可以了。首先,笔者一一讲述了每个入门实验,等大家把这些实验做熟练了、彻底掌握了,那毫无疑问单片机肯定是入门了。之后就需要提高,如何提高,就得学一些与单片机有瓜葛,但不是单片机内容,例如PCB设计、上位机编程、操作系统等。再把这些与单片机相结合,做一些东西,那才可以说你真正会单片机了。
(4)该玩哪种单片机?
先来个故事,笔者曾工作时,经理让一位同事去搞DB850(VFD屏)的测试,可那同事刚好辞职,这项任务就落在了我的头上。先看了看数据手册,之后开始设计电路,该电路的核心是升压,就是将系统工作的电压(5V)升到VFD所需的电压(32V),笔者最后选择的升压方案是——BOOST电路。设计好之后就画板、打样。等板子发出之后就开始编写程序,这时有位同事说:你用的是什么单片机?我说:51(是增强型的C8051F系列)单片机。他又说:51不是过时了吗,在说了这东西(VFD屏)不是雷雄(另一位同事,技术很牛,人也很低调)搞过了嘛,人家还用的是AVR单片机。此时的笔者真是哭笑不得,说你懂技术吗,说的全是行外话,不懂吗,在电子行业都工作了2年了。他主要想表达的意思是AVR单片机比51单片机(现在STC公司出品的STC15系列的单片机也很高级啊)高级,所以用AVR单片机的人比用51的人技术高。笔者当初就想说一句,可又没说出口,要是你想拿所用单片机的高级(其实C8051F系列的单片机在性能方面并不比AVR单片机差)来判断一个人的技术,那么笔者干脆用ARM、FPGA(这些笔者都不在话下)得了,问题是杀鸡何必用牛刀,打一只蚊子还需二炮出动嘛?就简简单单的一个VFD测试,只需5个I/O口,一般的单片机完全足够。
其实单片机原理都是相通的,就像电脑一样,不同的电脑只是配置不同,不同的单片机也只是配置不同(汇编指令不一样是后话),只要认真掌握了任何一款单片机,再学习其它款,都可以在很短的时间内学会。51系列作为经典的一款单片机,它的资料非常丰富,也比较容易掌握,因此,从51开始入门应该是非常明智的选择。
在这里笔者要批判一些观点,有人老是叫嚣:51早就过时了,还学这玩意,要玩起码得从玩ARM开始吧。他们连基本的道理都不懂,没有学会初等数学,怎么能学会高等数学呢?(除非你是天才)不学51,就想着学ARM、FPGA,你那是一口气要上珠峰,多半“死”在半路,估计你从此连51的小山都没信心爬了。再说俺们只是以51入门,不是只学51,读者将来都是要登“珠峰”的人,因此打好基础很重要。
全部0条评论
快来发表一下你的评论吧 !