单片机学习心得 单片机学习心得体会范文5篇
【导言】此例“单片机学习心得 单片机学习心得体会范文5篇”的公文资料由阿拉题库网友为您分享整理,以供您学习参考之用,希望这篇资料对您有所帮助,喜欢就复制下载支持吧!
单片机学习心得【第一篇】
本人还是学生,此刻大三,接触单片机一年多以来,从最基础的51开始,到更高级点的MSP430,一向到此刻刚开始上手的STM32,编过的程序不算多,但加起来怎样也有上百个了,做过的东西仔细数数,能拿出手来算算的上是个样的也不下十个,算是小有所成吧。
但今日,我却发现,这一年我一向在走一条歪路。
先说一下情景吧,是这样的,最近同学几个合伙做个小项目,不算复杂,跟市面上的工程项目完全没法比,用难再需要使用的一个芯片是教师给的,从没用过,没有历程,至于一份电子版的数据手册,一切的一切都只能是从头开始,从底层开始,我们几个斌开始从最底层的逻辑时序、寄存器操作开始,但经过几天的研究,确实毫无效果可言。
为此,我们几个郁闷了好长时间,开始疯狂的上网搜资料,拷代码,却终究是不得而返,还让教师骂了一顿,因为这个项目是我们主动要求教师放给我们的,结果却耽误了工期。
我次我们几个人很受打击,最终决定大家一齐静下心来分析分析,到底我们败在了什么地方
最终总经过两天的思考、讨论、总结、检讨···,我们发现了问题的'所在,想来想去,这估计是很大一部分初学者正在面临的一个“瓶颈问题”,所以,由我净这个讨论的结果发布出来,期望与更多的人交流、分享、提高、共勉。
下头先总结一下我们失败的几点原因:
1、“都是开发板惹的祸”,能够说从开始学习单片机,哪怕是最基础的51、以致之后的MSP430、ARM,我没从未离开过开发板,并且这长达一年多的时间,养成了我们对开发板极大的依靠,尽管自我焊过51最小系统、绘制过430最小系统板,但都是参考的别人已有的电路图,连最基本的电路基本都没分析过,为什么要在这几个电阻,该加个多大的,不加会怎样样,太大了太小了会有什么后果,等等此类问题,我们从未分析过,全是COPY、COPY、再COPY,以致自我做过的东西不少,本事却未曾提高。
2、“全是例程误导我”,我们买来的开发板,往往都会带有丰富的例程,通常这也是卖家吹嘘、比拼的地方,但就是这些附带的历程,让我们与底层的开发绝缘了,有了例程,我们不用再一个代码一个代码地敲键盘,不用再去研究那些器件的数据手册、通信接口、寄存器、内部原理、以及很多商家没给我们加进去的功能,哪怕是将这些程序改到别的地方,我们也可是是在宏定义里改两个引脚配置而已,从未尝试过从底层写驱动、敲代码、写函数,从未尝试过快平台移植代码,开发呢些没用过的功能等等。
3、“现实环境太无奈”,这跟上头两个说的是不一样的方面,我们都是大学生,大学里此刻吵得火热的“大学生就业难”、“你是考研还是就业”、“你报XXX培训班了吗”“你考四六级证了吗”等等,好像上大学就是为了干这些,似乎没有这些,你就会陷入“毕业即失业”的困境。应对这些外来的干扰,越来越多的学生坐不住了,我们这些人也一样,尽管一向在学习自我的爱好,但当被人问得多了的时候,心里也难免会发毛、会害怕,从而导致一年来真正静下心来学这些东西的时间越来越少。
大体也就总结怎样多吧,经过这次失败,也算是教训深刻吧,此刻才大三,到大四毕业,还有近两年的时间,还不算太晚,再说将来的路还长,此刻发现这些,应当不算晚吧。
对我们来说,革命尚未成功,同志仍需努力啊!
开这贴,一为总结这次失败、而为自我立志改变、三为警示之后的同学、四为大家齐言献计。
大家有遇到同样问题的、要类似迷茫的、要好的提议意见的,欢迎回帖交流,大家一齐共勉。
单片机学习心得体会【第二篇】
两周的单片机课程设计最终顺利完成了,其中包含着欢乐,也有辛酸。我们选的设计题目是“数字温度计”,大家都觉得这个题目是比较简单的。其实不然,做了之后,发现设计电路虽然简单,但我们认为它真正困难的地方是程序设计,可是在我们同心努力下最终完成了。
我们刚选该题目时,真的是一头雾水,硬件电路不知如何下手,更何谈解决程序那块,因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少。可是,我们三人也没偷下懒,迅速分工去查阅和收集资料。我们去了图书馆借一些参考书,上网找一些相关资料,并且请教指导教师。经过不断努力,最终把数字温度计的思路和模型定了下来并开始分一个人去焊接硬件电路,剩下的去整理和修改程序。
经过一番整理和修改后,在电脑上进行仿真,仿真成功后准备焊接电路板。在焊接电路板中,我们首先对硬件电路进行布局,然后确认无误后,在电路板上进行焊接,这个过程我们觉得是做得比较快的,以至于后面出现了虚焊的错误。
焊接电路板完工,细心检查后,进行通电测试。结果液晶LCD没有显示,经过检查,原先是LCD坏了,在换了块新的后,能显示显示值。但还有个问题是,当报警电路不会报警,在请教教师后,发现走动蜂鸣器的电压太低了,是因为串接了一个太大的电阻。然后,我们换了一个小电阻,但这时蜂鸣器却一向在叫,停不下来,可是,在我们三人的的细心检查下,原先是在放大电路的一端虚焊了,这说明我们焊接电路的技术还不够好。在重新焊接那端后,数字温度电路最终成功实现功能,当时我们的心境都是无比兴奋和欢乐的,因为我们两周的辛苦没有白费。
在完成单片机课程设计后,我们发现我们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。但经过学习这一次实践,增强了我们的动手本事,提高和巩固了单片机方面的知识,特别是软件方面。从中增强了我们的团队合作精神,并让我们认识到把理论应用到实践中去是多么重要。
单片机心得体会【第三篇】
两周的单片机课程设计终于顺利完成,包括幸福和痛苦。我们选择的设计主题是“数字温度计”,每个人都认为这个主题相对简单。事实上,在这样做之后,我们发现虽然设计电路很简单,但我们认为它真正困难的是程序设计,但在我们的。共同努力下,它终于完成了。
当我们第一次选择这个话题时,我们真的很困惑。我们不知道如何开始硬件电路,也不知道如何谈论解决方案,因为我们学到的是单片机的理论知识,很少应用于实践。然而,我们三人并没有偷懒,迅速分工查阅和收集数据。我们去图书馆借了一些参考书,在网上找了一些相关资料,咨询了导师。通过不断的努力,数字温度计的思路和模型终于确定了,并开始单独焊接硬件电路,其余的是整理和修改程序。
经过一些整理和修改,在计算机上进行模拟,模拟成功后准备焊接电路板。在焊接电路板中,我们首先布置硬件电路,然后确认正确,然后焊接在电路板上。我们认为这个过程做得更快,以至于以后出现了虚拟焊接错误。
焊接电路板完成后,经仔细检查,进行通电试验。结果液晶LCD没有显示,通过检查,原来LCD坏了,更换后,可以显示显示值。但另一个问题是,当报警电路不报警时,在咨询了老师后,发现蜂鸣器的电压太低,因为电阻串联太大。然后,我们换了一个小电阻,但蜂鸣器一直在叫,停不下来,然而,在我们三个人的仔细检查下,原来是在放大电路的一端虚拟焊接,这表明我们的焊接电路技术不够好。重新焊接后,数字温度电路终于成功实现了功能。当时,我们非常兴奋和快乐,因为我们两周的努力没有白费。
在完成单片机课程设计后,我们发现我们仍然有许多缺点,我们学到的知识远远不够,所以有些功能不能被动地完成。但通过学习这一实践,我们提高了实践能力,提高和巩固了单片机的知识,特别是软件。它增强了我们的团队精神,并让我们意识到将理论应用到实践中是多么重要。
单片机学习心得体会【第四篇】
一直想写一个帖子,将自己学习单片机的经历、经验和方法总结一下,今天终于动手写了,呵呵,这是我学习单片机的经验、心得、方法。希望对大家学习单片机有所帮助。
经常在群、论坛里看到有人问:怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。
xx年的时候,因为制作FM发射电路采用了BH1415的芯片,需要用到单片机控制,所以开始接触使用单片机,虽然以前读书时作为一门功课学过,不过也快丢荒了10年了,基本上都忘光了,也算是从头学起了吧。我当时是买了一块实验板,很简单的功能,比论坛实验板还要少功能,还有一个仿真器,也是比较简单的,SST芯片的。然后开始从大家都知道的流水灯写起,万事开头难,第一个程序基本上就抄人家的,翻查了一份快速入门的学习资料,写下第一个程序。
然后,在仿真机是单步的看运行结果,从每一步执行,都硬件上反应出来的效果,很快,对单片机的运作有了一个非常感性的认识,这跟只看书然后自己想象运行是完全两码事。然后,是进一步的其它程序学习,一个月时间,基本上已经熟悉了51的各种硬件资源。把流水灯,数码管动态扫描,中断等等的学习了,然后就是写综合性的程序,也就是我发在论坛里的时钟。通过这个程序的编写,使自己的编程水平有了很大的飞跃。
之后,就是逐步学习编写更多的程序,各种外围器件的控制等等,通过编写程序使自己不断的提高。在学过汇编之后,我又转到了C语言学习,因为以前没有学习过C语言,一切都很陌生,所以自己沿用了学习汇编的方法,大约花了3天功夫基本就对C语言有了初步的了解,然后就是尝试写上面所说的时钟,以汇编程序的思路作为参考,以C语言来编写,花了几天功夫完成了这一程序,也实现了从汇编编程为主到C编程为主的转变。然后,就是以C语言编写外围器件的控制程序,以此来熟悉C的编程风格,一直到现在,基本上就是C语言编程,汇编已经是作为调试程序的辅助。
下面我概括了几点我的学习经验和心得体会:
1、万事开头难、要勇敢迈出第一步。
开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成HEX,刷进单片机中、运行。必须熟悉这一套工序。个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。单片机是注重理论和实践的,光看书不动手,是学不会的。
2、知识点用到才学,不用的暂时丢一边。
厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。比如你写流水灯,完全就没必要看中断的知识,专心把流水灯学好就是了,这是把整本书化整为零,一小点一小点的啃。
3、程序不要光看不写,一定要自己写一次。
最开始的时候,啥都不懂,可以抄人家的程序过来,看看每一句是干什么用的,达到什么目的,运行后有什么后果,看明白了之后,就要自己写一次,你会发现,原来看明白别人的程序很容易,但到自己写的时候却一句也写不出来,这就是差距……当你自己能写出来的时候,说明你就真的懂了。
4、必须学会掌握调试程序的方法。
不少人写程序,把代码写好了,然后一运行,不是自己想要的结果,就晕了,然后跑到论坛上发个帖子,把程序一贴,问:为什么我的程序不能正常运行?然后就等别人来给自己分析。这是一种很不好的行为,应该自己学会发现问题和学会如何解决问题。这就需要学习调试程序的方法,比如KEIL里,可以下断点啦,查看寄存器内容等等,这些都是调试程序的手段,当你发现你写的程序运行结果和你想象中不一样的时候,你可以单步,也可以下断点,然后跟踪,查看各相关寄存器内容,看看程序运行过中是不是有什么偏差,找出影响结果的地方,改正过来。这一个过程非常重要,通过程序的排错,你可以学到的知识是书上得不到的。
5、找到解决问题思路比找到代码更重要。
我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你找到代码更为重要。不少人很喜欢找人家的代码,有的人甚至有了代码就直接复制到自己的程序中,可以说,这不是一种学习的态度,无助于你编程水平的提高。我几乎不怎么看人家的代码,多数时候是看别人的思路,有方框图最好,没有的话文字说明也可以,要从代码中看出别人处理问题的思路,是相当困难的,特别是大型的程序,看起来是非常的累人,所以现在我也明白了,以前读书时说的程序流程图很重要,现在算是知道了。
当你知道一个问题怎么去解决了,那么剩下的只是你安排代码去完成,这就已经不是什么问题了。举个例子:数码管动态扫描,没写过的初学者可能搞不清是怎么回事,其实,就是分时让每一时间段时只控制一只数码管显示数字,几只数码管轮流显示,由于速度很快,人眼的看起来是全部数码管都亮的。明白是这么一回事,事情就好办了,剩下的事情,无非是你安排让一只只数码管轮流显示出相应的数值。
显示数字,然后延时一下,再下一只显示数字,延时,知道是这样,我们实际程序上只要做到这样就可以:往段口送段码,然后打开位选显示一只,延时一下,再关闭位选,再送出段码,再打开另一只位选仅此而已。有了解决问题的思路,我们就能问题拆分开来,然后逐一的解决,如果动态扫描的原理都没懂,不知道如何做,那么这个程序是怎么也写不出来的。
6、开动脑筋,运用多种方法,不断优化自己的程序。
想想用各种不同方法来实现同一功能。这是一个练习和提高的过程,一个问题,你解决了,那么你再想想,能不能换种写法,也可以实现同一功能,或者说,你写出来的代码,能不能再精简一点,让程序执行效率更高,这个过程,就是一个进步的过程。很多知识和经验的获得,并不是直接写在书让你看就可以得到的,需要自己去实践,开动脑筋,经验才能得到积累,编程水平才能有所提高。
7、看别人的代码,学习人家的思路。
这个在学习初期是很有用,通过看别人的代码,特别是有多年编程经验的人写出的具有一定水平的代码,可以使自己编程水平得到迅速的提高,同时,也可以结合别人的编程手法,与自己的想法融合在一起,写出更高水平的代码,从中得到进步。但要注意,切忌将学习变成抄袭,更不是抄袭完了就认为自己学会了,这样做只会使你退步。
8、尝试编写一下综合应用的程序。
从流水灯学起,到动态扫描,再到中断,那么,你可以试试写一下时钟这种综合性应用的程序,不要小看时钟,要写好它不是一件容易的事情,它包括了单片机大部分的知识,比如有按键(IO读取)、动态扫描(IO输出)、中断等,如何协调好各功能模块正常工作,才是编程者需要学习的地方,当你单独写一个功能的时候,比如按键读取,你可能感觉很容易,因为你的程序啥也不做,只是读按键。但把它和其它功能混合在一起,如何在整个程序运行中使每一部分都正常工作,这就不是写一个按键读取这么容易的事情,功能模块之间有可能会互相影响,比如你需要让数码管既能显示,又要去处理按键读取,怎么使这两部分都正常工作,这就是一个协调过程。当你有了这个处理协调能力,你就算是入门了。
9、着重于培养解决问题的能力,而不是具体看自己编写了多少代码或者做过什么。
“学单片机重点在于学习解决问题的思路,而不是局限于具体的芯片类型和语言”这一直是我的座右铭,是我学单片机多年来感悟出来的。经常看到有人说“你会驱动XX芯片,真牛啊”“你搞过XX项目,真厉害”之类的话,其实这是非常片面的,搞过XX芯片,搞过XX项目,只能说明你做过这一项目,它只是你的业绩,并不是代表能力就一定高。真正的能力应该是:“遇到没有解决过的问题或器件,能利用自己已学的知识,迅速找到解决问题的方法。”这个才是能力。写程序的过程就是一个创造的过程,几乎没有完全一样的项目,每次你遇上的几乎都不相同,所以你拥有的必须是你面对新项目时的创造能力,而不是标榜着你以往做过多少项目。当然,业绩也能从另一侧面反映你的经验和水平。
10、如果有可能,多学习计算机专业的知识,比如数据结构等。
这些是你解决问题的基础知识,你把这些知识应用得越好,就会发现越容易找到解决问题的方法,这就是为什么一个学计算机专业的人编的程序和一个非计算机专业的人编的程序有差异的原因。也是一个菜鸟进军到高手所要配备的知识。如果我们把编程分为宏观编程和微观编程,那么微观编程就是写具体的代码,比如控制某某器件的语句;而宏观编程就是如何对整个程序进行布局、安排,使功能模块以你想要的方式去运行,得出你想要的结果。如前所说“会控制XX器件”这些只能算是微观编程,能做到这一步还只能算是菜鸟级别,如果面对一个新的器件,你心里没底,没把握去写这个控制程序,那说明你还是一个初级的菜鸟。当你有了一定的编程经验,控制过相当数量的器件之后,你就会发现,控制器件这些工作都是相似的、重复的工作,体现不出编程的水平,最多也是写得好与不好的差别,只能算是一些小技巧的应用。而对整个程序进行布局、安排这些才是最头痛的事情,能达到宏观编程和微观编程都做好才是真正的高手。对于规模越大的程序,越能体现出这一点。
11、面对一个新项目时,多自己开动脑筋,不要急于找别人的程序。
有不少人面对一个新项目时,第一步想到的就是网上找别人写过的代码,然后抄一段,自己再写几句,凑在一起就完成任务,这虽然可能是省时间,但绝对不利你的学习。当你接到一个新项目时,应该先自己构思一下整个程序的架构,想想如何来完成,有可能的话,画一个流程图,简单的可以画在脑子里,对程序中用到的数据、变量有一个初步的安排,然后自己动手去写,遇到实在没办法解决的地方,再去请教别人,或看别人是怎么处理的,这样首先起码你自己动过脑想过,自己有自己的思路,如果你一开始就看别人的程序,你的思维就会受限在别人的思维里,自己想再创新就更难了,这样你自己永远也没办法提高,因为你是走在别人的影子里。
12、多利用网络的搜索,学会提问题。
一般来说,学习过程中,你遇上的问题,前人们多数也有遇上的,所以如果有什么不懂,在自己解决不了的时候,最好先到网上搜索一下,看能不能找到答案,找不到再到论坛里发问,发问也要有目的性,尽量简单明了的描述问题,让帮助你的人可以用最少的时间就看懂你说什么,毕竟人家帮助你是免费的,时间也是有限的。
单片机学习心得【第五篇】
对单片机也有了一个基础的了解。在这一年里,我学了DS18B20、128*64大液晶、数码管显示等。从最初的跑马灯,到整体融合,经历了一段时间。单片机仅有P0,P1,P2,P3,如果想把很多功能合在一齐的话,就得复用,或着用到扩展,可是那个扩展模块不好用,写起程序来会比较麻烦,其实复用好的话,基本IO口都够用!
学习的时候总是难免碰到一些问题!可是我的总结是:没关系,边做边想!或着讲瞎搞!不搞肯定不明白,搞了才会懂!过去的一些问题在此刻看来都是小case,什么定时器赋值啊,定时器的使用类型(模式0,模式1,模式2),当时就自我在那里看书理解,一大堆的文字在那里,看了很久也不懂!可是之后我懂得了上网找视频教程!刚开始的时候也总是想为什么这么做,为什么这么做,为什么这么做,一堆的为什么。此刻懂了,做多了,就觉得要这样做,要这样做,就是这么做的,没错!不会的时候想着,反正会弄懂的,多试试!
要相信熟能生巧,想想学习的时候,和此刻的程度,不是在一个档次的!熟悉了操作,一些疑惑也会虽之解开!
我最初开始学单片机是因为我喜欢编程,我觉得编程是一件乐趣的事!或着说享受技术带来的欢乐!我此刻懂得了有各门各样的语言,C语言是其中一种,还有更底程的'汇编语言,java之类的高级语言,这些我都很喜欢!它们各有各自的好处和用处!并且我不想只会一门语言,所以我要慢慢地学习各种自我喜欢的语言!
在学习的过程中遇到麻烦或着问题,已经习以为长了!遇到问题也不会焦虑,想的是该怎样解决!水平也是在不断解决问题中提高的,有这一点体会!其实初学单片机,碰到问题总是新的知识而已,因为单片机很简单,也不用很懂电路原理,明白什么时候给0,什么时候给1,其它的就交给硬件去处理。
我也不单单只想有关单片机的程序单片机功能简单,一向写单片机也会变得呆板的(这期间就一向写单片机的程序,不写其它思考性的编程),至少我是这么觉得。因为写单片机的程序一段时间后,我发现我的思路有点僵在单片机的思路上,自我想写一写其它的程序,不是单片机的,是C语言的一些有关数学计算(类似应用题的那种),写的时候却想的写单片机的感觉,有点难以集中到此刻要解决的问题!