新手如何学习单片机
在工作中和在校的同学的交流中,听到的最多的是“单片机太难了”。
其实不是单片机难学,而是不知道怎么入门。
请大家记住一句话“单片机不是学出来的,而是玩出来的”。
下面结合自己自学单片机的体会,和大家一起来“玩”单片机。
准备好了吗?
我现在开始教大家如何学习单片机。
第一步:
先读通一本教材
唉!
?
太没创意了吧,还要看书?
不错,第一步还是要通读一遍教材,这样我们才能站在巨人的肩膀上。
读了一遍什么感觉,一个字晕。
这很正常,不然你就看不到这篇文章。
很多人在晕了之后就泄气了,或者换教材,接着晕,直至晕倒。
不过,现在告诉大家我们要向酒鬼学习,晕了不要紧,嘴上一直说“没醉”,至少还可以多喝半斤。
所以信心很重要。
第二:
晕着脑袋实践
第一步我们已经晕了,其实,我们是在似醉非醉,似醒非醒的最高境界。
趁着这么好的感觉(这种感觉是多少武林高手梦寐以求的),赶快练上几路拳脚。
首先要选好兵器。
最好还是有自己的独家装备,一开始装备不要太华丽,配套的视频一定要好,技术指导要负责任,这是关键,不要在乎板子的资源多少,现在做的比较好是吴鉴鹰的,吴鉴鹰单片机开发板性价比比较高的。
软件建议用Keilc51,硬件要有pc机和开发板,开发板要求有流水灯、数码管、独立按键、矩阵键盘、ad转换、液晶屏、蜂鸣器,这就差不多了。
软件网上有的是,下一个,还是免费的。
计算机没有可以先用下同学的。
开发板大概几百元,这比请朋友吃饭便宜多了。
再想想将来我们要靠他来闯荡江湖,这又算得了什么呢?
好!
兵器选好了,那就练吧!
提醒大家一句,降龙十八掌也是从扎马步练起的。
即便我们比郭靖聪明,也要先练马步,想想黄蓉就知道了。
现在就从最基本的流水灯开始,试着先控制一个发光管,慢慢的变换花样,做出自己的个性来。
是不是特有成就感,是不是不吃饭都不知道饿。
现在已经有点着迷了吧(个别人除外)。
第三:
带着问题解决问题
在实践中我们有很多现象解释不了,怎么办?
是自己慢慢领悟呢,还是向高手请教?
建议先自己领悟,实在不行再向高手请教,这是记忆最深刻,效果最好的办法。
但不要领悟的时间太长,否则会削减我们刚建立起来的信心;
事事都问,记忆就不深刻,成不了自己的东西,就像练武,只学到了招式,没学到内功。
如果这一步能过关,哈哈,相信你已经被单片机迷住了。
第四步:
自我修养,不断提高
达到这一步,不论是技术水平,学习方法,还是心理素质都达到一定的境界了,已经入门了。
俗话说师傅领进门,修行在个人。
到了这一步,下来就要看个人的努力和悟性怎样了,能否创造出自己的“黯然销魂掌”,那要看个人的修为了。
当然在学习单片机的过程中必须遵循一定的原则,坚守住一定的底线,这样才能用最少的经历,在最短的时间内获得大的进步。
1、万事开头难、要勇敢迈出第一步。
开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。
遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。
然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成HEX,刷进单片机中、运行。
必须熟悉这一套工序。
个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。
单片机是注重理论和实践的,光看书不动手,是学不会的。
2、知识点用到才学,不用的暂时丢一边。
厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。
比如你写流水灯,完全就没必要看中断的知识,专心把流水灯学好就是了,这是把整本书化整为零,一小点一小点的啃。
3、程序不要光看不写,一定要自己写一次。
最开始的时候,啥都不懂,可以抄人家的程序过来,看看每一句是干什么用的,达到什么目的,运行后有什么后果,看明白了之后,就要自己写一次,你会发现,原来看明白别人的程序很容易,但到自己写的时候却一句也写不出来,这就是差距。
。
。
当你自己能写出来的时候,说明你就真的懂了。
4、必须学会掌握调试程序的方法。
不少人写程序,把代码写好了,然后一运行,不是自己想要的结果,就晕了,然后跑到论坛上发个帖子,把程序一贴,问:
为什么我的程序不能正常运行?然后就等别人来给自己分析。
这是一种很不好的行为,应该自己学会发现问题和学会如何解决问题。
这就需要学习调试程序的方法,比如KEIL里,可以下断点啦,查看寄存器内容等等,这些都是调试程序的手段,当你发现你写的程序运行结果和你想象中不一样的时候,你可以单步,也可以下断点,然后跟踪,查看各相关寄存器内容,看看程序运行过中是不是有什么偏差,找出影响结果的地方,改正过来。
这一个过程非常重要,通过程序的排错,你可以学到的知识是书上得不到的。
5、找到解决问题思路比找到代码更重要。
我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。
要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你找到代码更为重要。
不少人很喜欢找人家的代码,有的人甚至有了代码就直接复制到自己的程序中,可以说,这不是一种学习的态度,无助于你编程水平的提高。
我几乎不怎么看人家的代码,多数时候是看别人的思路,有方框图最好,没有的话文字说明也可以,要从代码中看出别人处理问题的思路,是相当困难的,特别是大型的程序,看起来是非常的累人,所以现在我也明白了,以前读书时说的程序流程图很重要,现在算是知道了。
当你知道一个问题怎么去解决了,那么剩下的只是你安排代码去完成,这就已经不是什么问题了。
举个例子:
数码管动态扫描,没写过的初学者可能搞不清是怎么回事,其实,就是分时让每一时间段时只控制一只数码管显示数字,几只数码管轮流显示,由于速度很快,人眼的看起来是全部数码管都亮的。
明白是这么一回事,事情就好办了,剩下的事情,无非是你安排让一只只数码管轮流显示出相应的数值。
显示数字,然后延时一下,再下一只显示数字,延时,知道是这样,我们实际程序上只要做到这样就可以:
往段口送段码,然后打开位选显示一只,延时一下,再关闭位选,再送出段码,再打开另一只位选..仅此而已。
有了解决问题的思路,我们就能问题拆分开来,然后逐一的解决,如果动态扫描的原理都没懂,不知道如何做,那么这个程序是怎么也写不出来的。