学习单片机的心得体会

学习单片机的心得体会

   单片机是一门应用性和实践性很强的学科,很多人都想学习单片机,并且想知道如何学习单片机,基于本人学习单片机的过程和愉快经历,特写此篇文章和广大的单片机初学者一起分享,希望您能从中受益。

   熟悉单片机的人都知道,要学好单片机可不是一件容易的事,倒不是因为单片机很难学,而是很难找到一本专为单片机入门者而编写的教材。翻一下身边的单片机教材,都好像是为已经懂单片机的人而写的,一般先介绍单片机的硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计(随便说一下,很多书中的电路设计已经过时,并且有些程序还是错误的)。如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。学习使用单片机只能靠循序渐进的积累,下面就本人学习单片机的过程和经验做简要介绍。

   首先,学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。要想成为单片机高手,建议初学者首先学习汇编语言,学的差不多的时候,转入C语言学习。尽管汇编语言属于低级语言,编程效率低,但是较C语言具有目标代码简短,占用内存少,执行速度快等优点,更重要的是能使初学者尽快熟悉单片机的内部结构,并能对其进行精确的控制。汇编语言在单片机教材里面都会涉及,不需要单独购买教材和学习。 C语言是一门学问,有很多专业书籍来讲解,并且对我们今后的编程生涯有绝对的好处,因此要深入学习,千万不要自以为看了某某的视频教程就以为掌握了C语言,那只是C语言的一部分。在这里给大家推荐一本单片机C语言程序设计参考书,马忠梅等著,北京航空航天大学出版社出版的《单片机的C语言应用程序设计》,要求C语言基础。如果没学过C语言,建议学习清华大学谭浩强编写的C语言程序设计,这本书写的不错,通俗易懂。

   其次,是单片机教材选择。单片机是一门非常重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有一定地了解和感官认识,它的是怎样工作的,能干些什么?刚开始时,也许你看不明白,但这并不要紧,因为你还缺乏实践经验。现在单片机应用广泛,因此各个厂家分别推出了自己的单片机,按内部结构体系派系分:51系列、PIC系列、AVR系列、摩托罗拉等等……我们没必要每样都学!因为他们的编程方法和调试过程以及内部指令结构有一定的相似,只要学精通一款就OK了!尤其是用C语言编程,就几乎不用分什么派系,但是我们要选择一款有代表性的知识范围广,并且入门容易,书籍多。一般来说,MCS-51系列单片机已经得到广泛的普及和应用,市场上它的资料也比较多,用的人也很多。给大家推荐一些参考书,学习时只需要一本就足够拉。书名:《新编MCS-51单片机应用设计》,哈尔滨工业大学出版,作者:张毅刚;书名:《单片机原理及应用》,高等教育出版社,作者:张毅刚等;书名:《单片机高级教程: 应用与设计》,北京航空航天大学出版社,作者:何立民。相关教材还有很多,在这不一一列举。

   然后,是开发工具和开发环境的选择。选择一块合适的学习板,对于初学者来说一般无力接受,如果经济条件允许、本人又对单片机很感兴趣、有从事相关工作意向的话,鼓励大家购买。随便说一句,学习板功能要求太全,具有流水灯、数码管、独立键盘、矩阵键盘、AD或DA、液晶、蜂鸣器等就差不多啦,毕竟,功能齐全的价格比较高。仿真器对单片机初学者来说既是那么耳熟,同时又有些陌生,这主要是因为市场上传统的仿真器价格都在千元以上,对经济不是非常宽裕的人来说是不小的开支。同时仿真器是用来提高调试程序效率的,也不是非需不可的,如果你没有仿真器,遇到程序出错的时候,只好苦思冥想,反复烧写调试。随便推荐一下,学林电子的51tracer仿真器,有兴趣的朋友可关注一下。有了单片机教程板以后,先看下指导说明书,熟悉一下学习板,开卷有益。以后就得靠自己多练习了,将学习板与电脑连接好,先学会开发软件的使用,然后从最简单的流水灯实验做起,按照你自己的意愿控制流水灯,当你完成时,你会发现这是多么惬意的事情。太好玩了,你会觉得这不是在学习,而是在玩,当你发现,单片机能够按照你编写的程序工作时,你会觉得非常兴奋,比做什么事情都开心,这样你会慢慢迷上单片机,真的。不少网站上说搞定某个实验,就恭维的告诉你一声”恭喜你,学会了”自己学会了单片机,这有点可笑,这只能说明你算过关了,对单片机有了一定了解和会使用它了。但是单片机能完成的功能太多了,尤其是对外围器件的控制,综合起来能设计出许多意想不到的产品.因此除了入门外,精通可千万别轻易说出口。

   最后,在熟练掌握和应用后,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。最终,自己完全设计具有个人风格的电路,产品,这样你就是单片机高手拉。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。时下多家电子类的报刊杂志如:《电子制作》《无线电》《电子报》《电子世界》都开设了详细的单片机教程专栏,对于想学习单片机的朋友来说帮助很大,可以说现在的单片机教程环境是最好的,有网络,有书籍,有报刊杂志,还有视频教程,元件的采购方面也非常充足,相关的器材又多有便宜。如果每天能抽出两小时的时间去学习,快的一个月,慢的三个月就入门拉。

以下是一些经验:

(1) 学习单片机没有捷径,别指望两三天就学会,要坚持不懈,重在积累。

(2) 别崇拜高手,别相信天才,大部分人都不是天才(相信你也不是)!

(3) 单片机是一门应用性和实践性很强的学科,要多动手,多做实验。

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

(5) 碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,可以大大减少你的开发时间。

(6) 要多交一些朋友,多交流。技术是靠不断的积累和交流才会进步的,封闭自守只会更加落后。

希望大家多上网看看前辈的经验,可以少走很多弯路。最后,祝愿大家早日成为单片机高手。

<SCR

电子技术博大精深,电子产品五花八门,要想真正弄懂弄通,绝不是一朝一夕的事情。学习学好电子技术是一个循序渐进的过程,是一个坚持实验的过程。

  下面说说我是如何接触电子并爱好上电子的。

我从小就对电产生了强烈的兴趣,对电子和机械痴迷不己,成天将电池、小灯泡、电线连来连去。好几个手电在我手里变成了一堆烂铁。大哥心爱的半导体,我为了看里面有没有小人儿,让我给拆得七零八落,惊讶不己得是,里面并没有小人儿,只有些电线和一些不象人样儿的电子元件!最后的结果是挨了一顿打。哈哈,那时候的我,觉得挨打也值得,弄清楚了电线和一些元件连在一起也能唱歌、说话的!这算是我最早开始接触电子吧,也使我对电子产生了浓厚的兴趣。

上了初中后,接触了电的初级知识,初步认识了电压、电流和电阻,知道了他们之间的关系!又将小电珠和电线拿出来试验。这次可不是使用电池了,用得是220伏市电!根据小电珠的额定电压和电阻串、并联的公式,算出了用小电珠的个数(记得是用了56个),通电一试,成功啦!看着那么多的小电珠同时点亮,当时甭提有多高兴了,兴奋得当天晚上就没有睡觉!

书上的实验课我几乎都亲自做过,伏打电池大家还知道不?我做这个实验时,用得可是20多个土豆啊!大家一定会说“没成功”!哈哈,没亲手做过实验,谁都会认为不会成功!用铜片和锌片插在豆上,再连到小电珠上(大家一定会问,你怎么不用发光二极管呀?那时候我还没见到过这东东呢,大多显示的器件就是小灯泡),一个不着,两个还不着,直到用串并联的方法,连接到20个的时候,小电珠的灯丝变红了!我成功了!这个实验使我理解了,串并联并不仅限在电阻上,用在电源上同样可行,一个土豆就是一个小电源,并联使电源能量增加,也就是可以增大电流,串联可以增高电压!用发光二极管做这个实验,用不了这么多土豆,有兴趣朋友的可以试试!

  再以后认识了逻辑电路和数字电路,用CD4017、CD4013、CD4069和发光二极管做了一款数字钟,每天放在床头!看着它一秒就亮一个二极管的样子,听着他走时发出的声音,很欣慰的!

 现在又迷上了单片机,迷上了汇编语言,在51单片机教程论坛认识了好多老师,我又将开始我的电子实验啦!

 好了,大家共同学习吧;共同实验吧。

  记住,将自己的实验所得写在论坛里,大家分享啊!

将C向MCU(俗称单片机)8051上的移植始于80年代的中后期。客观上讲,C向8051 MCU移植的难点不少。如:

?8051的非冯?诺依慢结构(程序与数据存储器空间分立),再加上片上又多了位寻址存储空间;

?片上的数据和程序存储器空间过小和同时存在着向片外扩展它们的可能;

?片上集成外围设备的被寄存器化(即SFR),而并不采用惯用的I/O地址空间;

?8051芯片的派生门类特别多(达到了上百种之多),而C语言对于它们的每一个硬件资源又无一例外地要能进行操作。这些都是过去以MPU为基础的C语言所没有的。经过Keil/Franklin、Archmeades、IAR、BSO/Tasking等公司艰若不懈的努力,终于于90年代开始而趋成熟,成为专业化的MCU高级语言了。过去长期困扰人们的所谓“高级语言产生代码太长,运行速度太慢,因此不适合单片机使用”的致使缺点已被大幅度地克服。目前,8051上的C语言的代码长度,已经做到了汇编水平的1.2~1.5倍。4K字节以上的程度,C语言的优势更能得到发挥。至于执行速度的问题,只要有好的仿真器的帮助,找出关键代码,进一步用人工优化,就可很简单地达到十分美满的程度。如果谈到开发速度、软件质量、结构严谨、程序坚固等方面的话,则C语言的完美绝非汇编语言编程所可比拟的。今天,确实已经到MCU开发人员拿起C语言利器的时候了。

下面结合8051介绍单片机C语言的优越性:

?不懂得单片机的指令集,也能够编写完美的单片机程序;

?无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;

?不同函数的数据实行覆盖,有效利用片上有限的RAM空间;

?程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏;

?C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;

?提供auto、static、const等存储类型和专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址;

?提供small、compact、large等编译模式,以适应片上存储器的大小;

?中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;

?提供常用的标准函数库,以供用户直接使用;

?头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;

?有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;

?可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。

 

相关推荐