51单片机学习心得.docx
《51单片机学习心得.docx》由会员分享,可在线阅读,更多相关《51单片机学习心得.docx(9页珍藏版)》请在冰点文库上搜索。
51单片机学习心得
竭诚为您提供优质文档/双击可除
51单片机学习心得
篇一:
51单片机的学习经验(附学习总结)
51单片机的学习经验(附学习总结)
oFweek工控网讯:
作为一名电子技术从业人员,你学过单片机吗?
你会运用单片机吗?
我想你一定学过,但不一定会运用。
因为学习单片机比学习其他学科需要付出更多的努力和代价,不仅要学习理论知识还要练习实际操作,而且主要是在实际操作中才能真正学到单片机技术。
此外,学习单片机还需要投入一定的学习成本,随着你学习知识的扩展成本还会增加。
单片机作为一种简单的控制器在生活中有这广泛的应用,当然在工业型单片机在生产中也扮演着很重要的角色,所以对于一个学习自动化的工控人来说,学习单片机是非常有必要的。
单片机的学习经验
1、学习电子技术基础知识,如电路、模拟电路和数字电路。
这是学习电类相关专业的基础。
2、学习计算机硬件知识,如计算机的简单组成原理(只需要了解),当然要知道cpu是什么?
总线是什么?
一些相关概念。
3、程序编写的相关知识,主要是汇编语言和c语言。
了解结构化语言的程序设计方法,也就是三种结构(顺序结构、分支结构(或称选择结构)、循环结构),会一些常用的算法。
4、以上是基础,有了这些基础,学习51单片机就只要花几周的时间就能上手。
但学习单片机时,主要从单片机的存储器开始,其中特殊功能寄存器是重点,学会之后,就可以学习单片机的基础部分了,主要是四个部分:
51单片机I/o口的使用、中断的使用、定时器的使用、外部器件的扩展。
这些部分都可以用软件仿真(可以用proteus软件)。
5、可以买一两块廉价的单片机开发板,用廉价的方法(可以用热转印法做PCB板)仿制一些更简单的实验功能板,开始做板时千万不做得太复杂,我带过的很多学生中,有少部分人总是觉得太简单了,做个复杂的,结果做了个把星期,没有成功,最后只有放弃。
还有一点很重要,就是用pRoTeus仿真时,最好只做单一功能的仿真,否则可能与实际在硬件上做的结果不一样。
6、从网上下载一些实例进行研究学习,不断提高。
学习单片机的步骤
学习单片机的动机不外乎有四种:
一是为兴趣爱好而学,二是为专业而学;三是为饭碗而学;四是在工作中被逼而学。
不管是哪种动机,因主修专业的不同以及电子基础的深浅不同,对于不同的人可能采用不同的学习方法,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。
第一步:
基础理论知识学习
基础理论知识包括模拟电路、数字电路和c语言知识。
模拟电路和数字电路属于抽象学科,要把它学好还得费点精神。
在你学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。
否则,你的单片机学习之路不仅会很艰难和漫长,还可能半途而废。
笔者始终认为,扎实的电子技术基础是学好单片机的关键,直接影响单片机学习入门的快慢。
有些同学觉得单片机很难,越学越复杂,最后学不下去了。
有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。
单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来。
相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。
如果你觉得单片机很难,那就应该先放下单片机教材,去重温数字电路,搞清楚触发器、寄存器、门电路、coms电路、时序逻辑和时序图、进制转换等理论知识。
理解了这些知识之后再去看看单片机的结构和原理,我想你会大彻大悟,信心倍增。
模拟电路是电子技术最基础的学科,她让你知道什么是电阻、电容、电感、二极管、三极管、场效应管、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。
一般是先学习模拟电路再去学习数字电路。
扎实的模拟电路基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。
c语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。
当然,数学基础好、逻辑思维好的人学起来相对轻松一些。
c语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。
别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。
学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的c基础建立了。
当基础打好以后,你会感觉到单片机不再难学了,而且越学越起劲。
当单片机乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、
夜以续日、废寝忘食的投入到单片机的世界里。
可以这么说,扎实的电子技术基础和c语言基础能增强学习单片机信心,较快掌握单片机技术。
第二步:
单片机实践
这是真正学习单片机的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感。
。
。
其中的酸甜苦辣只有学过的人深有体会。
思想上要有刻苦学习的决心,硬件上要有一套完整的学习开发工具,软件上要注重理论和实践相结合。
1.有刻苦学习的决心
首先,明确学习目的。
先认真回答两个问题:
我学单片机来做什么?
需要多长时间把它学会?
这是你学单片机的动力。
没有动力,我想你坚持不了多久。
其次,端正学习心态。
单片机学习过程是枯燥乏味、孤独寂寞的过程。
要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫。
再次,要多动脑勤动手。
单片机的学习具有很强的实践性,是一门很注重实际动手操作的技术学科。
不动手实践你是学不会单片机的。
最后,虚心交流。
在单片机学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间。
2.有一套完整的学习开发工具
学习单片机是需要成本的。
必须有一台电脑、一块单片机开发板(如果开发板不能直接下载程序代码的话还得需要一个编程器)、一套视频教程、一本单片机教材和一本c语言教材。
电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板用来运行单片机程序,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试。
对于单片机初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和c语言教材是理论学习资料,备忘备查。
不要为了节约成本不用开发板而光用protur软件仿真调试,这和纸上谈兵没什么区别。
3.要注重理论和实践相结合
单片机c语言编程理论知识并不深奥,光看书不动手也能明白。
但在实际编程的时候就没那么简单了。
一个程序的形成不仅需要有c语言知识,更多需要融入你个人的编程思路和算法。
编程思路和算法决定一个程序的优劣,是单片机编程的大问题,只有在实际动手编写的时候才会有深切的感悟。
一个程序能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理。
如果程序不正常则要反复调试(检查、修改思路和算法),直到成功。
这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废。
学习编写程序应该按照以下过程学习,效果会更好。
看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程序,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,比较程序运行效果,领会其中的奥妙。
每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想。
当然,刚开始,看别人的程序源代码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照。
只要能坚持下来,学习收获会事半功倍。
在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓展,让程序产生更强大的功能。
同时,还要懂得通过查阅芯片数据手册(DATAsheeT)里有关芯片命令和数据的读写时序来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程序。
不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验。
第三步:
单片机硬件设计
当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的单片机编程水平相当不错了。
接下来就应该研究的硬件了。
硬件设计包括电路原理设计和pcb板设计。
学习做硬件要比学习做软件麻烦,成本更高,周期更长。
但是,学习单片机的最终目的是做产品开发----软件和硬件相结合形成完整的控制系统。
所以,做硬件也是学习单片机技术的一个必学内容。
电路原理设计涉及到各种芯片的应用,而这些芯片外围电路的设计、典型应用电路和与单片机的连接等在芯片数据手册(DATAsheeT)都能找到答案,前提是要看得懂全英文的数据手册。
否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。
电子技术领域的第一手资料(DATAsheeT)都是英文,从第一手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。
虽然有些资料也都是在DATAsheeT的基础上撰写的,但内容不全面,甚至存在翻译上的遗漏和错误。
当然,阅读DATAsheeT需要具备一定的英文阅读能力,这也是阻碍单片机学习者晋级的绊脚石。
良好的英文阅读能力能让你在单片机技术知识的海洋里自由遨游。
做pcb板就比较简单了。
只要懂得使用protel软件或AltimDesigner软件就没问题了。
但要想做的板子布局美观、布线合理还得费一番功夫了。
娴熟的单片机c语言编程、会使用protel软件或AltimDesigner软件设计pcb板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。
学习单片机的内容
第一步:
数字I/o的使用
使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/o功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。
每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
Io口的使用,最简单的就是点亮流水灯啦~comeon!
为了让没有单片机的同学也能顺利学习,我们可以用仿真软件来做,有视频喔,学习更简单,麻麻再也不用担心了,哈哈。
请看:
帖子链接
第二步:
定时器和按键的使用
学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。
数字集成电路可以实现时序电路,可编程逻辑器件(pLD)可以实现时序电路,可编程控制器(pLc)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。
定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。
按键,就不用说了吧,应用很广泛的,不多说,参见帖子,注意,按键扫描程序是用if还是while喔~最近在某论坛发现了一种新型按键识别思路(利用AD),也可以看看~
第三步:
中断
单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。
要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。
中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。
中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。
以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。
第四步:
与pc机进行Rs232通信
篇二:
51单片机学习心得
比特率表示每秒钟传输二进制代码的位数。
波特率表示每秒钟调制信号变化的次数。
波特率和比特率不总是一样的,对于将数字信号1或0直接用两种不同电压表示的所谓基带传输,比特率和波特率是相同的,所以,我们经常用波特率表示数据的传输速率。
RxD管脚采样率=16*波特率=(2^smoD)/2*溢出率。
即采样率与溢出率是否相同取决于smoD是否为1.
溢出率或采样率远远大于波特率,是16或32倍。
数据一个位传输过程中采样次数平均为:
采样率/波特率。
(波特率为每秒传输位数)
关于数据格式:
发数字:
如果是16进制发送,16进制显示,则是原数。
如果是16进制发送,字符显示,则显示该数字对应的AscII符号。
发字母:
如果是16进制发送,必须是0~f间的字符,用16进制显示,则是原数。
如果是16进制发送,必须是0~f间的字符,用字符显示,则显示该数字对应的AscII符号。
数字或字母用16进制发送,则是两个两个发送,且必须是0~f间的字符组合,
以上如果用字符格式发送,则数字或字母都按照字符格式发送,并且是一个一个发送,并且在sbuF中是用其对应的AscII码值储存。
显示则取决于显示格式。
串口中断函数内部可以进行多长时间的操作?
为什么操作时间长一些会影响数据的正常发送?
会不会是发送软件通过调整波特率设置来匹配接收管脚的采样率,实现比较合适的数据发送时间间隔。
接收端的采样频率只由溢出率和smoD影响,若接收端
因为执行中断程序而耽误时间,使得RI未及时置零,而影响采样到的数据进入sbuF,导致丢失,发生错误?
根据以下程序测试,该判断是正确的。
(数据发送一个字节的时间间隔可以用1/(10*波特率)计算)
#include
#defineucharunsignedchar
#defineuintunsignedint
uchara,flag;
voiddelay()//一个数字大约表示10微秒。
{
inti=4;
while(i--);
}
voidmain()
{
TmoD=0x20;
Th1=0xfd;
TL1=0xfd;
TR1=1;
sm0=0;
sm1=1;
Ren=1;
eA=1;
es=1;
pcon=0x80;
while
(1)
{
if(flag==1)
{
es=0;
flag=0;
sbuF=a;
while(!
TI);//直到数据发送完进行下面的。
TI=0;
es=1;
}
}
}
voidserial()interrupt4//可以理解为串口的中的程序是由于数据接收完一个字节后RI置1,使得进入串口的中断。
与定时器的中端无关。
{
p1=sbuF;
delay();//将接收端忙碌起来,导致发送与接收到的数据进入sbuF不同步进行
a=sbuF;
flag=1;
RI=0;
}
篇三:
51单片机二十天的学习心得
单片机最小系统实验板学习总结
在过去的二十多天里,我通过自学的方式,在哈尔滨工程大学郭天祥老师的视频为辅导下。
自己借了同学的一块单片机学习实验板,从单片机最基础的部分学起,感觉收获不少,现将我最近的学习心得分享给大家,也希望那些在单片机外面迷茫的同学们能够快速入门。
以获得更高的知识储备。
以前的我对单片机不知迷茫,甚至恐惧。
但是现在我发现喜欢上了单片机。
单片机用途太广泛了,我才发现基本上没有哪个领域能离开单片机了。
单片机非常好玩,真的能让人上瘾。
本着不想虚度大学生活的想法,我试着开始接触单片机,现在感觉已不能自拔。
郭天翔老师的单片机教学视频非常的棒,真的很感谢郭老师能把这么好的学习方法和大家分享。
在这个视频的辅助下,我基本上已经对单片机入门了。
从点亮第一个LeD灯开始,到现在对液晶的熟练使用。
一点一点剖析单片机的内部结构。
就像郭老师说的一样,实践真的很重要,有理论没实践的摸索,很困难,而且很枯燥,很难有毅力坚持下去。
经济能力许可的话最好买一个单片机快速开发板或者自己做一个都行。
把每一个理论从单片机上显示出来。
你就会越学越想学,越来越感觉自己会的东西太少了,你就会像饿狼一样不停的去咀嚼每一个知识点。
越学越有意思。
单片机外围电路的实验,可以通过proteus或Altium-design去
仿真实现,这些软件非常好用,也非常好学。
更进一步的话,如果学校实验室条件许可的话,也可以去实验室学习,在这里回收的更多,里面的牛人很多的。
因为之前汇编学的不是太好,我现在直接用的c语言去编写程序。
紧凑程度,方便阅读,可移植性都是其他语言不能比拟的,而且对帮助快速入门单片机很有帮助。
编译器是KeIL51.可编程,也可软件仿真。
单片机真的不是太难,但是要学的东西真是太多了。
也希望你能掌握正确的学习方法,学习顺利,获得更高的知识储备。