前言:
本文引用地址:http://www.eepw.com.cn/article/203175.htm
近来在论坛总是见到一些菜鸟们在大叫:“我想学单片机”,“我要学单片机”,“如何入门啊?”,“你们怎么这么厉害,是怎样学的??”等等等等一系列的问题,实在是看多了也感到烦了,今天,就由我电子白菜厚着面皮,顶着无数老虾的砖头,在这里写上一篇单片机学习心得,让菜鸟们勇敢地跨出第一步。
首先解释什么是虾米先,以我个人意见吧,1。来单片机论坛的时候能够看懂大多数家伙在说什么,(当然不是看懂他们在灌水的帖子啦)并且能适当地提出问题(非弱智的问题)和讨论,解答别人的问题。 2。当希望自己用单片机开发一个东东,或公司要求开发一个方案的时候,能够很快地在心中建立一个基本模型,知道应该需要些什么知识,而自己又掌握多少,并根据一定的灵感开始搜索资料。
就是以上这2点了,如果你满足了,基本下面的东西你就当作是故事来读就可以了。
然后是心态问题,不久前看到有人这么问:“我想学单片机啊,因为听说很有钱途,请问学那种单片机最有钱途??”这个问题,我看到了就觉得反感,可以这么说,在这个坛子混的单片机大虾只有两种:第一是一直从事单片机类工作的;第二是爱好者,爱好者包括从事单片机工作的和非单片机工作的。的确,单片机是有一定的钱途,但对于那些本来不是从事单片机工作的,而又没有兴趣的,单从钱的角度出发的家伙,想学好单片机??恐怕是做白日梦。我个人认为,技术,是兴趣、生活需要、和个人目标的结合。而不是单单的向钱看!要知道,当一个相当艰难的项目完成的时候,开发者那种手舞足动的兴奋,不是完全来自于项目提成的奖金!所以炼虾米的第一要素是:爱好!!
以上是我认为学单片机应该具备的技术心态。
然后该说到单片机的学习上了,很多人抱怨自己学校没有单片机课上,所以自己不会单片机。其实并不然,以我为例,我以前在学校的确有单片机的课上,不过直到上完一个学期的单片机,我还是不知道自己在学什么!!考试的时候老师预先公布资料和答案了,考试的时候我们就抄上去就是了,结果,到考完试的一刻,我突然有点领悟:“我知道什么是中断啦”。。。。是的,一个学期的单片机,我就知道了这么多了。后来?后来是完全的自学,自己研究走出来的,如果靠学校那点所谓单片机,我早捡破烂去了!!所以对于我们这类非名校的学生哥而言,技术离不开自学。
第一章:偶然
这篇文章叫虾米是怎样炼成的,而不是什么单片机速成,所以我是在写故事,而不是在写教材。
我单片机起步于2002年10月1号,这个是个重要的日子。但注意,我在2002年9月的时候有了自己第一台烧写器和简单的实验板,但那时候不叫起步,因为我把这东西买回来了,还根本不怎么会用。
为什么我记得是2002年10月1号?而没有记错为10月2号?呵呵。。。
2002年国庆前几天,学校开始举办电子设计竞赛了,因为学校每次举办比赛,经费都是问题,所以这个什么电子竞赛根本不会隆重宣布,其实我当时还不知道的呢。直到有个同学偶然跟我提起,学校有比赛啊,你有打算参加吗?我当时不知道发了什么疯,就说,好啊,我参加!这样,一个单片机,甚至是电子白痴的命运就改变了。。。
然后就是出方案啦,我也不知道什么时候发梦梦见个什么古怪产品之类的,总之我就提出了一个用PC无线控制设备的方案。PC端用VC写的串口程序,传到单片机上,然后单片机启动无线发射模块,远程设备接收到信号后,由另一个单片机负责处理,控制一个16*2LCD和4个LED灯。
对于当时的我来说,难度真的很大的,因为我不会VC,不会单片机,不会LCD,无线发射模块我是买了一对,但没用过。也就是说,白手起家!!
但我还是决定做,不然很没面子。于是和2个MM组合起来,成为3人组报名学校的设计大赛了。
和MM组有个原因,1。方案是我提出的,我希望自己能够独立完成 2。组男生的话可能会在设计上有争议等的,随时破坏计划,还是MM听话点。。。。其实在最后,这两位MM的表现完全是出于我意料,他们实在是强!!很多问题都是他们帮忙解决的呢。
第二章:奋斗的开始
可能这篇故事写的不是很生动,也没什么趣味,有些朋友们或许看到一半就溜了,,但我依然希望能有人愿意看下去。。。也希望能让一些还没进门的菜鸟有所感悟。
和MM们组队后,‘工程’就要开始了,题目是“计算机远程控制系统”(呵呵,很牛的名字吧:),但由于我的方案相对于当时我们的实力来说是超前不少的,所以和MM们有个协议,因为我们都不会VC串口编程(VC也不会),所以VC部分我必须负责全部并在最短时间内完成,不然整过计划就不用再做了。回应第一章所说的,为什么我记得是2002年10月1号?因为我是在那天起呆在家里整整7天,干什么?研究VC啊!!!这是我到现在为止,第一个没有去玩的国庆节。从早到晚,除了睡觉,吃饭上厕所,就是屁股不离座,眼不离电脑!!你说,我会忘记吗??
当时做了一条串口线把电脑的两个串口连起来,然后串口1发给串口2,一边是用我的程序,另外一边是用串口调试软件。还有手上的几本VC书,就这样写出我的第一个VC程序出来。还记得当时成功发送的第一个字节是'r'!!到现在我还记得很清楚,当时真是开心死了,还马上把串口线和程序带回学校(我是走读生)给MM看,并正式宣布我们的项目开始。这国庆7天假期个中的困难和痛苦我就不想说了,只知道那是我技术之路的第一个起点。
人家都说VC难入门,是的,真的很难啊,不过你要知道VC存在并为这么多程序员所用,自然有他的道理,只要愿意坚持,困难是能够克服的,而且,你并不是第一个面对他的人,所以没有任何道理退缩。看到别的大虾能够成功,那自己为什么不行呢?所以炼虾米的第二要素是:坚持!!
第三章:尝试成功
在VC写的串口程序成功后,我们的计算机远程控制系统就要开始了。其实,当时的VC程序只能发数据,并不能收,因为收的话如果是mscomm要利用消息,如果是API的话要用线程,上面两个我当时都不懂,不过没问题,我的题目是远程控制,没有说是远程监控,所以单发就够用了,:)。剩下的就是单片机接收串口数据,然后控制射频模块发射,接收端就是模块接收后的单片机处理,例如亮LED和控制16*2LCD。
那时侯如何分配51的IO脚也弄了个半天呢,最后和2个MM协调好后,用了张A3纸画了两个大大的51,然后那个脚做什么,哪个脚接LED,那个脚接16*2LCD,那个脚按键。。。呵呵,是夸张了点,但当时还是菜鸟阶段啊~~~~
弄好管脚分配了,就做板子,别以为我很有钱,做工业板,我是拿万能板飞线做的,当时焊个MAX232也焊了半天,勉强焊好了个有串口的最小系统了,发射模块都还没焊上呢。但这时候要分工合作利用时间,于是开始写程序了,基本上是边看书本边写程序,半猜半写。用的是汇编。那时侯没有这里的家伙这么幸福,300元就能买个老丁的仿真器来调试程序,我用的是最纳闷的方法:N片51侍侯,130元的便宜烧写器写程序,编译通过,烧一片,插上板,上电!!出什么问题?拔下,猜猜原因后改程序,再烧再插拔。(当时没有S51的,其实那时侯有我也不会用ISP的),于是就是这样调试程序的了,其中多繁琐可能没多少人明白,因为你们买了个仿真器就插到上面去了,到程序完成了才拔掉。
直到整个项目完成为止,我有一片51烧坏了,估计是寿命到达终点了,1000次的寿命,代表我至少就这样插拔了1000次单片机。真不知道是什么滋味了。
总之当时就是这样天天写,晚晚写,还得和MM逃课了一个星期,终于搞定,发射距离是30M左右啦。20M内接收完全没有错误。还能在PC上按键,然后字母发射到远处的16*8LCD显示出来。(其实现在还想不通这么简单的东西当时居然要花一个多月呢,如果是现在,估计单片机程序我是一小时就出来了)