实用单片机心得体会范文【优质5篇】
单片机心得体会【第一篇】
1.无论什么时候我们都要以实际应用的角度去考虑程序的编写。
2.无论什么时候都不要让cpu白白浪费等待,尤其是延时(超过1ms)这样的地方。
3.设计相应驱动电路时候,应该仔细阅读芯片的数据手册,了解每个引脚的驱动能力,以及整个芯片的驱动能力。
4.最重要的是,如何去释放cpu(如果是led每500ms闪烁一次,那么可以设置1ms为基准,定时器定时1ms后,进入相应操作使计数加1,判断达到500时,进入led,这些函数执行的时间是相当短的,如果主程序中还有其他函数,则cpu会顺次往下执行,对于其它函数(有的话)也要采取相同的措施,保证其不堵塞cpu,若全部基于这种方法执行,我们的小系统依旧可以保证多个任务(多个函数)同时进行,系统的实时性得到了一定的保证。
),这是写出合格程序的基础。
5.数码管显示,动态显示的亮度比静态显示要差一点,所以在限流电阻时应略小于静态显示电路中,动态扫描显示刷新频率最好大于50hz,即每显示一轮的时间不超过20ms,每个数码管显示的时间不能太长也不能太短,时间太长会影响刷新率,导致总体显示呈现闪烁的现象,时间太短发光二级管的电流导通时间也就短,会影响总体的显示亮度,一般控制在1ms左右最佳。
6.模块化编程,初学单片机的'时候(开始是c语言),是接触一些芯片实现独立的功能,如ds1302,ds18b20等,程序也不会很大,所以所有的程序都放在一个文件里面。
随着学习的逐步深入,程序也愈来愈大,这给调试带来了一定的困难,后来了解了模块化编程这个概念,运用之后大大地改善了程序的可读性和可移植性。
下面简单的介绍。
#ifndef__ds1302_h__。
#define__ds1302_h__。
/*模块文件中函数等的申明文件*/。
#endif。
//上面几个条件编译和宏定义是为了防止重复包含。
这样我们就把各个模块的接口函数都引出到各自的头文件中,然后在主程序中调用这些模块的*.h头文件即可。
这点和c++中的类很像。
在数据类型定义的时候,有时候用typedef会取得很好的效果。
说到模块化编程,以前曾看过不少大虾的例子,他们的源文件和输出下载文件是放在项目文件夹下地不同文件夹中,如源文件放在src文件夹中,输出*.hex放在output文件夹中,这样整个项目就更显得清晰明了。
7.多任务程序,这个概念在前面也有提到,就是充分地利用cpu来实现多任务的前后台操作,相当于自己用程序构造一个基于前后台的多任务操作系统,换句话说就是通过定时器中断合理地分配cpu资源来响应不同的任务。
多个任务需要cpu关照的频度不一样,我们选择最快的那个频度来作为定时器的节拍(通常为最小公倍数,这样方便定时器分配),然后通过定时器分频,即满足各个任务的响应节拍。
voidtime。
单片机心得体会【第二篇】
二、设计内容。
1.设计并实现具有复位功能的单片机小系统。
2.利用单片机进行灯光的场景开关控制。
3.利用单片机进行灯光的循环点亮控制及速度变化控制。
4.利用单片机进行灯光的色彩连续变化效果控制。
5.利用单片机进行灯光的三色联动定时控制。
6.配合2至5项中功能,实现液晶屏输出功能或状态信息。(受器件条件限制,只需仿真方式实现。)。
7.以调节5或4项中的时间为例实现基于4x4键盘的输入功能。(受器件条件限制,只需仿真方式实现。)。
三、设计要求。
1.能启动、停止;。
2.能通过开关进行功能选择;。
3.要体现循环、组合和色彩变化的控制功能和效果,实现三色联动定时控制,
控制变化规律的类型或功能不少于5种;。
4.要有完善的课程设计报告。
四、设计流程。
本课程设计是采用80c51单片机设计艺术彩灯,通过keil进行c语言编程,通过protues进行软件硬件仿真。本设计成果,主要通过按键开关对彩灯进行控制,包括灯光的场景开关控制、灯光的循环点亮控制及速度变化控制、灯光的色彩连续变化效果控制、灯光的三色联动定时控制,以上内容均基于面包板完成。在4x4矩阵键盘和lcd液晶显示方面均在仿真下完成。
五、设计方案。
(一)硬件设计。
80c51单片机最小系统是由晶体振荡器和复位电路构成,如图所示晶振电路:复位电路:
单片机外部电路由八个彩灯,4x4矩阵键盘,1602lcd液晶显示和4个独立按键开关组成。以上电路可以完成本课程设计要求的所有功能。
单片机心得体会【第三篇】
通过今次单片机实训,使我对单片机的认识有了更深刻的理解。
系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。
当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。
我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。
当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。
这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
希望这次的经历能让我在以后学习中激励我继续进步。
经常在群、论坛里看到有人问:怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。
当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。
一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。
05年的时候,因为制作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、多利用网络的搜索,学会提问题。
一般来说,学习过程中,你遇上的问题,前人们多数也有遇上的,所以如果有什么不懂,在自己解决不了的时候,最好先到网上搜索一下,看能不能找到答案,找不到再到论坛里发问,发问也要有目的性,尽量简单明了的描述问题,让帮助你的人可以用最少的时间就看懂你说什么,毕竟人家帮助你是免费的,时间也是有限的。
以上就是我学习单片机的经历和心得体会,希望对大家会有帮助,说得有不好或不对的地方欢迎大家批评指正。
单片机心得体会【第四篇】
近年来,单片机技术的发展日新月异,作为一名电子工程专业的学生,我为掌握了单片机编程技术而感到无比自豪。这学期我们进行了一项关于单片机爱心灯的实践项目,通过自己的努力和团队合作,我不仅增长了专业知识,还体会到了团队合作的重要性和技术的无限可能性。在这个过程中,我经历了困难和挫折,但同时也获得了成长和收获。下面我将从项目的背景、实施过程、问题与解决以及总结体会等四个方面,来分享我在这个单片机爱心灯项目中的心得体会。
首先是项目的背景。作为一种新型的科技应用,爱心灯被广泛用于各种庆祝活动和节日,成为人们展示心意和情感的重要道具。在这个项目中,我们需要利用单片机技术和LED灯,来制作一个可以自动闪烁的爱心灯。这不仅需要我们掌握单片机编程技术,还需要与电路和电子器件的工作原理相结合,并且要能够通过编程来控制LED灯的亮灭,实现灯的闪烁效果。这对于我们这些电子工程专业的学生来说,是一次很好的实践锻炼机会。
其次是项目的实施过程。在实施这个项目的过程中,我们遇到了许多困难和挑战。首先是学习和掌握单片机编程技术,由于单片机编程语言和传统的高级编程语言有很大的区别,在刚开始的时候我感到非常困惑。不过,通过阅读相关的教材和实践的不断摸索,我逐渐掌握了基本的单片机编程知识,能够使用计数器和定时器等功能来控制LED灯的亮灭。其次是与电路和电子器件的配合工作,我们需要先设计和搭建电路,然后才能将单片机与电路连接起来,保证正常的信号传输。最后是通过调试和检验来确保爱心灯的正常运行效果,这需要我们有耐心和细致的工作态度。在实施过程中,我学会了认真分析问题的原因和解决方法,提高了自己的动手能力和解决实际问题的能力。
然后是遇到的问题与解决。在实施这个项目的过程中,我们也遇到了一些困难和问题。首先是程序的编写,由于单片机编程语言的特殊性,我们遇到了很多语法和逻辑错误。我通过不断调试和查找资料,找到了错误的原因并进行了修正。其次是电路的设计和连接,我们在电路的选材和搭建过程中也遇到了一些小问题,如电阻与电源的匹配、引脚连接错误等。通过不断尝试和研究,最终找到了解决办法。在解决问题的过程中,我体会到了团队合作的重要性,只有通过合作与沟通,我们才能及时解决问题,保证项目的顺利进行。
最后是对整个项目的总结与体会。通过这个单片机爱心灯项目,我不仅学到了很多专业知识,也收获了很多宝贵的经验。首先是锻炼了自己的动手能力和解决问题的能力,在遇到困难和挫折时能够保持积极的心态,并提出合理的解决方案。其次是加深了对单片机原理和编程技术的理解,开拓了自己的思维方式和创新意识。最后是感受到了团队合作的重要性,只有通过与团队成员的紧密配合和交流,我们才能够克服困难,取得较好的实验结果。这次实践项目对我来说不仅仅是一次学业上的实践,更是一次锻炼和成长的机会。
综上所述,通过这个单片机爱心灯项目的实践,我不仅掌握了单片机编程技术,还从中体会到了团队合作的重要性和技术的无限可能性。我认识到实践是检验理论知识的重要途径,只有通过实践才能够真正掌握和应用所学的知识。通过这个项目,我不仅获得了专业知识,也提高了自己的综合能力和动手实践能力。我相信,通过不断地学习和实践,我一定能够成为一名出色的电子工程师,为科技进步和社会发展做出贡献。
单片机心得体会【第五篇】
做了几十年技术工作,自认为技术还算过得去。
在自动化控制方面,我以前用的都是plc编程,现在于年逾五十岁之际,又有了要学习单片机的打算,只是还纠结于有没有必要学习?有没有能力学好的考虑之中。
每个人都有惰性,要想混下去总是有许多理由的。
从战略上讲,活到老、学到老是无需争辩的事情,超越自我、战胜自我的座右铭更是放之四海而皆准。
那么学会了技能是不是真的有用呢?考虑到自己最少还要工作十年以上,如果拿出点时间来学习技能,可以用十年以上,无论怎么看都是值得的。
而战术上真是问题多多,首先是年龄问题,这个年纪了,脑筋是不是给力,而学习这个技能的多是年轻人。
第二个是时间问题,自己本身有繁忙的工作,再加上生活琐事,一大堆的人际关系,还有电视电脑以及手机里的新闻和朋友圈的干扰,想一想就让人泄气。
其实,仔细分析自己的优势也不少,由于年龄大,自控能力应当是优势,自己总是教导孩子少玩多学,要有梦想!就像电影《功夫熊猫》里的主人公阿波!当年总是说孩子,现在孩子必然成为无言的监督员(看看我是怎么学习的)。
更大的优势是搞了多年的硬件,对硬件方面比较精通。
如果别人要学,光是硬件部分也够学一阵子的,更要命的是硬件部分需要理论联系实际,要做到精通是无法速成的(纯属给自己打气)。
我要学,只要搞清楚软件部分就ok。
思想斗争到此结束,开弓没有回头箭,下定决心,开始学习。
物质上的准备,仅一本教材是不够的。
于是在网上购买了一个单片机板子,没有想到商家竟然还赠送了视频教程。
有了这个教程学习变得容易了许多,本计划每天专心致志的学习四十五分钟,没想到几乎每次学习都超过这个时间。
这主要是学习中精神过于投入,经常忘了时间,经过了四个多月的学习,单片机已经尽在掌握,这迈出的一小步,其实是从维护到开发的一大步。
这次的学习成功,极大地鼓舞了我生活和工作的热情,响当当的事实再一次证明,一切困难都是纸老虎,只要排除干扰静下心来,那些所谓的困难,根本就是给自己的懒惰找借口而已。
通过这次的学习过程,笔者体会到,不静下心来是不可能成功的,这一点必须提醒大家。
在这次单片机的学习中,心灵上的收获大于技术上的收获。
我准备把这个学习的习惯一直保持下去!因此特把它写出来与志同道合的朋友分享,特别是一些年长的朋友。