单片机实训心得(多篇)

单片机实训心得(多篇)

单片机综合实训心得体会 篇一

一周的实训,让我们从另一个角度去发现单片机。期间我学会了很多宝贵的知识和经验,在这次单片机实训中我们巩固了我们平时所学的内容;

加深了对各种调试和仿真软件的使用技能;

掌握了单片机应用电路的设计和调试方法。

首先,我们要从所给定的元器件中设计出6个不同的电路,并编写程序实现相关任务要求。我们小组设计出的电路主有:

(1)数码管轮流显示百十个位的数。要求:数据来源于拨码开关;

个位显示完毕停留的。时间稍微长些。

(2)定时计数器实现对外部脉冲计数5次后,流水灯的状态由亮点左流动转化成闪烁5次,然后回到初始状态。

(3)单键改变流水灯状态。按键一旦按下,流水灯状态由暗点右流动转化成闪烁8次,然后回到初始状态。

(4)双键改变流水灯状态。按键K0(连接INT0)按下,流水灯状态由亮点左流动,转化成闪烁5次,然后回到初始状态;

按键K1(连接INT1)按下,流水灯状态由亮点左流动,转化成暗点右流动至最右端,然后回到初始状态;

并且按键K1级别高于K0。

(5)串口输出数据,实现在2个数码管上显示60秒计数器。

(6)在集成的8位数码管上动态显示出:1——8的效果。

其次,我们要对我们所设计的电路进行电路布局、连线,检查电路是否出现错误或者遗漏。

然后,学会用KEIL软件调试程序,并用该软件菜单的各项调试工具和窗口。再结合硬件和软件,进行整体调试。

最后,当我们根据相关要求从所给定的元器件中设计出6个不同的电路、编写程序、线路布局,调试成功,我们的设计就完成了。

在这实训期间我深刻的认识到了理论知识和实践操作必须是相结合的,也许在实训时会有很多各种软、硬件等故障。

在编程时我们就出现了很大的障碍,本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,最后不得不求出其他小组,原来本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱。

我们在做双键改变流水灯状态的电路时又发现了一个头痛的问题,发光二极管不亮、开关不管用,刚开始的时候,我们检查了好几遍就是没有发现问题,快要失去耐心是发现少两连接了两根线,这是个好现象让我们有了继续往下的勇气,终于在反复的检查研究中,我们发现发光二极管不亮的正负方向反了,开关接错了位臵,这才导致连接线路期间的错误不断。结果是可喜的,在我们小组竭尽全力,同学老师的帮忙下,我们的电路很成功。

我们会遇到很多挫折,不要气馁,不要放弃。我们只有这样才能提高自己的实际操作能力;

培养自己独立思考能力;

树立良好的心理素质和吃苦耐劳精神。因此,本实训对培养学生正确的劳动观念、组织纪律性、团队合作精神。

单片机综合实训心得体会 篇二

为期几天的单片机实训暴露出来很多学习上的问题,这些问题的发现将为我们以后的学习和工作找明道路,查漏补缺为进一步学习作好准备!

本次实验我们组做的课题是《交通灯控制》,这是一个实用性质非常强的题目。

首先,它非常联系我们日常生活,每当我们在马路上走的时候对我们的人身安全关系最密切的莫过于红绿灯,因此设计一款好的性能优异功能强大的交通灯控制系统是对所有车辆行人的一个最大的福音,是对社会的巨大贡献!

其次,交通灯控制系统是涉及到单片机、电路、信号、数学数字运算等多学科的一门综合性应用非常强的课题,这个课题的成功实践必将在一定程度上极大地激发我们在这些相关学科的学习兴趣,也会促使我们去向多学科综合应用的方面发展,这也是当今科学科技领域一个显著的特点。从这一点上来说这个课题的选取对所有参加这个课题研究的同学们来说都是一个非常好的锻炼。

再次,任何一个任务的完成,都体现了一个小组一个组织的配合,单纯一个人的力量是完不成很大很多的工作的,这就要求整个组里的成员共同配合积极协作,为了一个共同的目标努力。从这一点上来说,这个课题的意义就在于培养了我们大家团结协作的作风同时也培养了我们每个人在对待科学问题上孜孜不倦、严谨求实的科学作风,这对我们每个人来说都是相当有益的!

当然,通过做这个课题,也暴露出来了很多问题值得我们去探讨解决和克服:

第一,时间利用问题。由于课题难度较大,因此很多组员都以不会为理由而无所事事,在实验室上网玩游戏,耽误了宝贵的时间也造成了整个组课题研究效率的低下。再一个有关时间的问题就是时间利用率太低。

第二,组员之间配合不甚默契。也许是由于课题的原因,小组内成员之间总是各自干各自的缺少那种配合上的默契,结果到最后很多人都重复去做同一件事情造成了时间浪费、效率下降。

第三,课题研究不够深刻。课题研究总是浮于表面文章,对程序对最后结果研究不够造成虽然某一块地方做的比较好但是在大脑中没有一个总体的印象,无法理论联系实际,研究成果的应用严重背离实际现实,影响使用。

基本上,这次实训暴露出来的问题就这些,我且先总结到这里。这些问题的发现,有助于提高我们在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。团结协作、积极配合、严谨求实、踏实务实,是对这次实训的深刻总结。

另外,这次实训对我让我感受非常深的一点就是,作为同学的代表,作为一个小小的领导者,在做任何一件事情上都要细心严谨,杜绝差错;还要事事做在同学前边,事事做到点子上。错误传递领导的命令和迟到都是对工作的极度不负责,都是工作上的极大失职,以后要严格要求自己,坚决杜绝此类事情的再次发生,否则这一次次的“小错”必将带来人生中的“大后悔”!万老师这次的惩罚是对我的一次深刻的教训,要牢牢记住这次失职带来的教训,确保不再犯同样的错误!

最后,衷心感谢万老师给我们提供了这次难得的实训机会,给了我这么深刻的人生体会,这一切一切对我我来说是有益而无害!

单片机综合实训心得体会 篇三

最近,我对我的微控制器特别感兴趣,因为我可以看到它可以控制电机的旋转,我感觉很神奇。我想弄清楚它是如何做的?

我看到这本书:微控制器可以用两种语言写入,一个是C语言,另一个是汇编语言。汇编语言是一种机器语言,代码很麻烦,不容易记住。有必要掌握微控制器的内部结构和逻辑结构。通过查看几本书,我明白汇编真的太繁琐了,但我已经学习了C语言,我也参加了国家计算机的二级考试,我觉得我一方面有一个优势。可以快速学习。

但是,在学习中,我发现学习单芯片不仅需要软件的知识,还需要硬件知识。我在实践中买了一个芯片是一个活生生的例子。我没有相应的硬件知识。我甚至不知道单芯片微电脑。我为我的原始想法感到羞耻。单片机是一个很好的研究,我需要我学习它。

时间苍蝇,眨眼间,学期和结束,本学期的单片综合课程设计也在一周内完成。

俗话说,“良好的开始是成功的一半。”谈到课程设计,我认为最重要的是要设计专业的学前班,认真的研究教师,并选择一个有兴趣的话题。其次,教师对实验的解释将是一丝不苟,因为只懂,它将是半计量,如果你不明白,你将旨在选择这个话题,而且没有收获。最后,我们必须注意模块化,修改程序,还要注意调试程序,掌握方法。

单片机实训心得 篇四

通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础课理论知识运用到实践中去,我想做类似实习就为我们提供了良好的实践平台

学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。

(4)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。

(5)碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。

(6)小组要团结,小组之间要多交流。技术是靠不断的积累和交流才会进步的,封闭自守只会更加落后。

通过这次单片机设计我不仅加深了对单片机理论的理解将理论很好地应用到实际当中去同时也使我认识到自身存在的不足之处无论是理论上还是遇到问题的处理能力上都还有待提高而且这也激发了我今后努力学习的兴趣。发现问题、提出问题、分析问题、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中:

1、不管做什么事,计划是很重要的。没有一个完好的计划,做事情就会没有一个好的顺序,做事情会比较乱,很难成功。而有一个好的计划,不管做什么事都会事半功倍,做事心中有数,明确重点和缓急,不会有疏漏。这样才能提高成功率。

2、做事要多动脑,选出最好的方法。一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法。

3、要注意细节。细节决定成败,这句话在这次课题中不仅一次得到了印证,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行。因此我们不仅仅要有整体意识,也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。

4、最后,也是最重要的一点,通过这次课题,我们学到了很多有关单片机方面的知识,也对单片机有了更深入的了解。使我们受益匪浅。

总之,亲自动手是课堂学习的延续,电子领域随时随地都在发生着翻天覆地的变化,现有的知识储备总是落后于科技的发展脚步,我们只有不断学习新知识,才能做到面对新课题时游刃有余

单片机综合实训心得体会 篇五

随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。本学期我们就学习了单片机这门课程,感觉是有点难呢。也不知道整个学习过程是怎么过来得,可是时间不等人。

时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机实习课题也在一周内完成了。俗话说“好的开始是成功的一半”。说这次实习,我认为最重要的就是做好程序调试,认真的研究老师给的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起产品就会事半功倍,如果没弄明白,就迷迷糊糊的去做,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。

虽然这次的实习算起来在实验室的时间只有几天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。

当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。

通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

这个设计过程中,我们通过在原有的计数器系统进行了改进,使之增添了暂停、计数、清零等的三个控制功能,使之成为一个更加适用,功能更加完备的属于自己的一个系统。设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似实习就为我们提供了良好的实践平台。

首先在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机实习,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。

其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:C语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

最后,在实习之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。

单片机综合实训心得体会 篇六

随着大规模集成电路的出现及其发展,将计算机的CPU 、RAM 、ROM 、定时/数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机 。

单片机是微型计算机应用技术的一个重要分支,近年来在工业智能仪器仪表、光机电设备、自动检测、信息处理、家电等的得到广泛应用和迅速发展。

20xx年全国高校毕业生人数超过600万,可见需要就业的毕业生数目的庞大。另一方面,很多企业削减甚至取消了校园招聘计划,这“两重压力”带来了就业形势异常严峻的后果。据调查发现,企业需求与人才供给完全不对称,学生就业难而且企业招人也难的现象。在就业形势如此严峻的情况下,职业规划对一个大学生来说就显得很重要了。而看清市场需求则是职业规划的前提。目前,对于电子行业,嵌入式系统的发展势如破竹,据统计目前仅单片机设计行业至少有20-30万的人才缺口,仅北京市场嵌入式硬件开发工程师的需求就已经超过了5万人,而且还在持续增加。面对如此大的市场需求,相信大家有必要了解一下单片机。

单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书。单片机并不象传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”的因素。正是这个“软件”的原因使得许多初学者怎么也弄不懂单片机的工作过程,怎么也不明白为什么将几个数送来送去就能让数码管显示一串字符或控制一个电机的变速。对初学单片机的人来说,需要从书中大概了解一下单片机的各个功能寄存器,如果看的多了反而容易搞乱,现在市场上大多数讲单片机的书一开始就讲解较复杂的内存、地址、存储器什么的,更让初学者感到不知所云、难以入门。如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,能够产生什么实际效果,那么也许用不了几天就会觉得枯燥乏味而半途而废。简单的说,使用单片机实际上就是用我们自己编写的软件去控制单片机的各个功能寄存器。再简单些,就是控制单片机哪些引脚的电平什么时候输出高电平,什么时候输出低电平。由这些高低变化的电平来控制外围电路,实现我们需要的各个功能。

例如:在单片机应用系统中,经常需要通过RS-232串行口与微机进行通信。目前在各种操作系统中,Microsoft的Windows较为常见,而且大多Windows95/98等32位平台。以往在Windows平台上的串行通信多使用其提供的API函数来实现,这种方法使用起来需要许多底层设置,因而较为繁琐,并且难以理解。Microsoft推出的Activex技术提供了另外一种实现串行通信的方法。这种方法不仅相对较为简单,而且非常实用。尤其是Visual C++这种可视化面向对象的编程环境中,可以真正把串口看作一个对象,编程时只需简单的设置,理解起来也很容易。

学习单片机的最有效方法是理论与实践并重。学习与实践结合,边学习、边演练,循序渐进,这样举一反三,就能将用到的指令理解、吃透、扎根于脑海,甚至“根深蒂固”。也就是说,当你此次学习完某几条指令后(一次数量不求多,只求懂),接下去就该做实验了,通过实验,使你感受刚才的指令产生的控制效果,眼睛看得见(灯光)、耳朵听得到(声音),通过这些感性认识就能深刻理解指令是怎样转化成信号去控制电子元器件的。

单片机的特点 :具有优异的性能价格比;集成度高、体积小、可靠性高 ;控制功能强 ;低电压、低功耗。

单片机的应用 :

1 、在智能仪器仪表中的应用:在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。

2 、在机电一体化中的应用:机电一体化产品是指集机械、微电子技术、计算机技术于一本,具有智能化特征的电子产品。

3 、在实时过程控制中的应用:用单片机实时进行数据处理和控制,使系统保持最佳工作状态,提高系统的工作效率和产品的质量。

4 、在人类生活中的应用:目前国外各种家用电器已普通采用单片机代替传统的控制电路。

5 、在其它方面的应用:单片机除以上各方面的应用,它还广泛应用于办公自动化领域、商业营销领域、汽车及通信、计算机外部设备、模糊控制等各领域中。

单片机的基本组成 :它由 CPU 、存储器(包括 RAM 和 ROM )、I/O 接口、定时 / 计数器、中断控制功能等均集成在一块芯片上,片内各功能通过内部总线相互连接起来。

输入 / 输出引脚 P0 、P1 、P2 、P3 的功能 :P0.0~P0 。 7 : P0 口是一个 8 位漏极开路型双向 I/O 端口。在访问片外存储器时,它分时作低 8 位地址和 8 位双向数据总线用。在EPROM 编程时,由 P0 输入指令字节,而在验证程序时,则输出指令字节。验证程序时,要求外接上拉电阻。 P0 能以吸收电流的方式驱动8个LSTTL 负载。

P1. 0 ~P1. 7 ( 1~8 脚): P1 是一上带内部上拉电阻的 8 位双向 I/O 口。在 EPROM 编程和验证程序时,由它输入低 8 位地址。 P1 能驱动 4 个 LSTTL 负载。

为了高效的掌握单片机技术,拥有一款价廉物美的单片机开发套件则是非常重要的,这样我们就可以将自己设计的程序真正的在单片机里运行起来。以前的单片机硬件开发平台上千元的价格并不是一般的初学者所能够承受的。针对这样的现状,为了帮助更多想学单片机又没有经济能力的同学,我在电子创新实验室开发了一套超高性价比的单片机开发套件。该套件以它自身的结构特点,可用于8位单片机基础学习、各种电子方面的课程设计、相关单片机的毕业设计、电子方面的各种竞赛以及微控制器方面的项目研发等。它成为我追求嵌入式系统高手梦想的基石!

开发板摆在你的面前,亲自操作它,才会有深刻的体会,才能学明白它。从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西,当你编写的程序按你的意愿实现时,你能体会到学习单片机带来的无穷乐趣!

等初步学会了单片机软件设计后,可将通常由硬件完成的工作交由软件实现,这样,系统的体积、功耗、成本将大大降低,而功能得到提升与增强,使习惯于传统电路设计的人对单片机产生一种妙不可言的相见恨晚之感,真正感受、体会到现代单片微型计算机的强大作用,从而投身于单片机开发的行业中。从此,你的人生因为有了单片机而精彩!

还等什么呢,行动起来吧,找一套独特的造型、超高的性价比、详尽资料配备单片机开发板开启8位单片机教程的新高潮。在短期内,你将领略从8位单片机硬件设计到软件开发的整个过程,惊喜、激动、欢呼都将是你的切身体会,只要你肯努力、下功夫、多实践,一定会成功的!

单片机综合实训心得体会 篇七

两周的单片机课程设计实训,真是让我们受益匪浅,学到了很多东西,不管怎么样,先感谢学校给我的这么多机会。真正的学到了东西。

此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力。因为以前做过关于焊接的电工实习,所以对于我们机械设计专业的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍,先开始的显示时钟还算顺利,本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提。其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了。

系统以AT89S51为核心部件,利用软件编程,通过键盘控制和液晶显示实现了秒表的功能,能实现本设计题目的基本要求和发挥部分。尽量做到硬件电路简单稳定,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。

我们将各个部分的程序编好后怎么都连不起来,出不了预期的效果。对于硬件在编程过程中PCB板的接触又是一个头疼的问题,在进行编译的时候,数码显示管上什么都没有,按一下旁边与之相连的元器件时就有显示了,所以也花费了好多时间在PCB板的重新焊接上,最后在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期两周的单片机课程设计没有浪费,我们从中学到了很多知识,也让我们对单片机有了更深一步的了解。虽然最后结果是出来了,可这与老师的精心指导是分不开的,他引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以说老师是功不可抹的。

由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。

踉踉跄跄地忙碌了两周,我的单片机课程设计也终将告一段落。设计实物也基本达到预期的效果,但由于能力和时间的关系,总是觉得有很多不尽人意的地方,譬如功能不全、外观粗糙……数不胜数。但我可以自豪的说,这里面的每一段代码,都有我的劳动。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

总而言之,单片机课程设计对于我们有很大的帮助,我们从中受益匪浅。

单片机综合实训心得体会 篇八

一直想写一个帖子,将自己学习单片机的经历、经验和方法总结一下,今天终于动手写了,呵呵,这是我学习单片机的经验、心得、方法。希望对大家学习单片机有所帮助。

经常在群、论坛里看到有人问:怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。

20xx年的时候,因为制作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、多利用网络的搜索,学会提问题。一般来说,学习过程中,你遇上的问题,前人们多数也有遇上的,所以如果有什么不懂,在自己解决不了的时候,最好先到网上搜索一下,看能不能找到答案,找不到再到论坛里发问,发问也要有目的性,尽量简单明了的描述问题,让帮助你的人可以用最少的时间就看懂你说什么,毕竟人家帮助你是免费的,时间也是有限的。

以上就是我学习单片机的经历和心得体会,希望对大家会有帮助,说得有不好或不对的地方欢迎大家批评指正。