写在前面的话,我表示只是为了庆祝十一离我越来越近而写的,不过看到琳子姐的音响我心动了。
泡在坛子里面的大部分人应该都有学习微控制器入门的时候,我是07年上的大学,第一次接触的单片机就是8051系列的。高中时候有点兴趣,所以了大学之后就想着搞这些东西。开始的时候在图书馆看一些关于8051的书籍,先是讲发展史然后就是循序渐进的讲解每一个模块,附带汇编语言的小例子,看起来通俗易懂。只不过看了好几本类似的书籍感觉自己还是没有入门。其实在这之前还有点插曲,寝室在六楼每次上楼都能看到4楼的学长(那年他们大四了)在寝室搞单片机的制作。有一次我跑进去问他们如何学习这个,他们问我是几年级的,说自己是新生人家就不了我了,告诉我让我过几年在学。然后才有了自己天天在图书馆自学的事情,可惜到了大一下学期感觉还是没入门。
就这样快到了大二,有一次遇见一个三年级的学长聊了些关于这方面的东西。我记得他问我单片机中断的问题,搞了半天也没给人家表达清楚。深刻的意识到并没有了解单片机如何去完成任务的,虽然书上对每个模块讲的很详细。我也记得有一次在某qq群里面和一个与我一样的初学者聊天,他说他做了个交通灯可惜就是按键不起作用,程序发过来看看,发现就是主程序里面是while(1)里面每个一秒更新一次显示,而且主程序里面还在扫描外部按键,现在看来倒是觉得可笑。可是那会那会还觉得人家牛牛的,还很热情的和他讨论,压根就不知道中断怎么用,或者是压根就没理解这玩意。
这样,到了暑假了马上二年级了,很偶然的一次机会以前聊过的那个学长由于要读研,把他一个刚刚接手的项目交给我了,负责项目的老师其实是一个已经退休的老师。项目是采用PIC的单片机做一个数据采集的东西,数据通过USB发送给labview。他看我还不怎么熟悉,所以然我先做串口的,初生牛犊不怕虎,买了一堆万用板子芯片回来。哦 说漏了,在这之前用51做了编程器和电子钟,其实就是抄袭的别人的东西,在学长那里拿了一个编程器,那会的at89c51都是高压编程的。记得DIY的那个编程器是伟纳网上的那个,一个串口版本一个USB版本其实就是使用PL2303转接,PL2303那是我第一次使用热转印。电子钟功能也算是全,闹钟加上温度,显示采用LCD1602.我主要就是焊接好,读读别人的程序,然后下载进去,其实在这之前做了下proteus仿真。清晰的记得那个LCD明明仿真是显示的,怎么现实的就是不行呢,先后检查了复位电路,而那会还不知道用示波器去看晶振是否起振,还以为别人的代码有问题呢。过了两天我又去调试他,原来是那个调节背光的分压电阻的缘故,没调节好,而仿真的就无所谓了。我第一次看到的单片机现象比较高级不是跑马灯而是这个LCD1602显示的时钟,说实在的虽然不是自己写的代码,那会我也是很开心。
说到第一个自己真正写的代码的就是那个PIC的数据采集的东西了,由于本来就不是很熟悉单片机的开发流程,所以第一次接触PIC头很大。想到要编程所以买了个编程器其实就是国产的K150,后来玩熟悉了自己山寨了一个K128.其实那会我哪里知道单片机是能够仿真的,说的是硬件仿真不是什么proteus。也基本上是51的时候一个高压编程器就行了,其实我也有点点印象SST的某个片子里面有两个区域的RAM还是Flash就是专门用来做51仿真的,可惜等我懂了仿真的好时,我已经离开51太久了。还想说仿真的问题,等那个项目串口的做好了,准备做USB的我头真的大了,才忍痛买了个山寨的ICD2.5.这次使用PIC18F4550替换之前使用的PIC16F873,然而我又一次不淡定了,大家都知道microchip的pic集成开发环境是自己的maplab 然后编译器我记得16系列的还能找到和谐的版本,hi-tech公司的。可惜到了18系列我怎么也没法和谐过去,使用microchip自己的编译器,试用版的也是代码限制,懂的人都明白那个usb的东西代码量很大,自然也编译不过去。不过最近看到pic的低功耗我又一次去关注他了发现,这些东西都免费了,不然现在微控制器这么多的时代他想生存很难。
说了一堆关于PIC的东西就是想说那些年代,51在中国盛行,PIC也是半个老大,所以这些编译器都是需要钱买的,不怕你不买,因为你可选性很小。其实那时候很多片子已经有了什么430、avr也出现了。我还记得那会有人忽悠我说想学ARM你要从AVR开始,别搞51了,看看AVR多强大。的确搞传统8051的人(非c8051fxx系列)看到AVR真的会激动不已。还有这么牛的片子,里面有ADC、SPI、I2C。而且还是所谓的RISC指令集,其实我刚刚了解到这个名词的时候,也是半懂不懂的,反正就是孬孬的认为人家都说这个指令集牛逼肯定好,甚至有人会和我扯ARM的东东也是这个指令集,那会压根不晓得ARM是什么。
做完PIC的项目我算是真正的理解了单片机是如何工作的了。我会把它类比成生物或者计算机(天天搞这些东西反而对PC有了一定的了解)然后发现很多问题都是相通的。PIC的开发我全部是看他的数据手册,甚至示例程序官方都少之又少,那个年代受书本的影响不知道有数据手册和参考示例的说法。51的那些书籍其实就是翻译数据手册的,而当我明白这个道理回头搜索手册发现也找不到。示例代码那就多了对于51,网络上是泛滥。其实示例代码还是官方的好,那也是一次偶然我解除了AVR,看罢他的手册,一个字爽,有了他就能开发了,而且官网上能找到几个示例代码,我发现真的是再也不用担心我的学习了,so easy。
一直没有说我,搞51的事情,其实我也不记得是哪个时期我搞的51,不过毕业的时候我发现一堆小东西都是用51弄的,主要是stc的片子,也不记得什么时候转向他的,估计是编程方便而且内置的资源也还可以,不过stc是很操蛋的东西,不想多说,起码那会搞的时候不觉得,等后面用的片子多了就懂了这个道理。
此后二年级快结束的时候,一次在网上看到周立功推广的lm3sxx系列我清晰的记得那会叫流明勒瑞单片机,看罢觉得好牛马上买了个板子回来玩,玩了不到几个礼拜。看到ST也推入了中国市场,我hold不住了。他们开始忽悠我,st的才是主流,流明的不行。某次在qq上和人闲聊,那人说项目都从流明换到st了,还给我分析了st'的怎么好。果断我心动了,买了块红牛的板子来玩。然后就是一直用st的了,不过期间由于网络的项目,使用过lm3s8962和6911,这会应该是ti收购了流明进军M3市场。然后我就关注到整个行业新格局要来了。此后我又用msp430、富士通的片子,c2000,其实也就是拿来评估下就不怎弄了。
然而四年级的时候我忽然明白,这些都是浮云。其实资源够用就好。管你8051、AVR、PIC还是M0、M3。
时间飞快,才毕业一年,回忆自己走过的路,这微控制器发展真的是很快,作为学习为主的新手我们应该有一个正确的认识,不要一味赶时髦。写了一些和51无关的体外话题,权当是打发时间,马上下班了,发帖走人。祝大伙十一快乐,放完假又得工作,年底没有假了。