如何学习单片机-自学篇.docx_第1页
如何学习单片机-自学篇.docx_第2页
如何学习单片机-自学篇.docx_第3页
如何学习单片机-自学篇.docx_第4页
如何学习单片机-自学篇.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

今晚又是写程序,睡不着,写点东西吧,也算是自己的一个总结 。 首先是两个字 “喜欢”! 一个东西 光有10分钟的热度是不够的。从事单片机工作,就意味着你以后是和枯燥的程序、调试、乱码、 未知的软硬件错误、熬夜、脸上的豆豆联系在一起。(有点夸张,哈哈!) 如果你选择了这种生活,并且确定你有一种精神能指引你一路走到底,至于是什么精神,只有你自己知道。 是满屏幕的0101,还是一串串胡乱的ABCD,还是成功后的成就感,还是天生俱来的对电子类东西的痴迷,还是喜欢别人在外面花天酒地却喜欢独坐电脑面前,攻克技术的颠峰。不需要理由,世界上就有这样一种人。那么确定了上面的之后,让我们开始吧!单片机也叫做单板机、单片微型计算机。麻雀虽小,五脏俱全,那么如果你学过计算机组成原理,我相信你应该能更好的理解单片机的内部结构。如果没有学过,也不要紧,那就拿小麻雀开刀,再一层层自下而上的学习。 刚开始学单片机的时候,看到厚厚的一本书,不要一咬牙要一下子把书全部看完。看得仔仔细细明明白白。 先看看目录,无非就是介绍单片机的历史,然后它内部的组成原理,然后是指令,然后就是接口。先说历史,知道51单片机是现在资料最丰富,最适合上手拿来开刀的就是了。不要觉得书上的知识老。这都N多年前的了,现在是不是都不一样了。兼容这个词的意思是:比如你用ATC51写的程序,拿到ATS51、52 STC 都能用,只是后续的片子在一些地方更加完善,功能更强大。 比如:在书上老掉牙的2051上的MOV A,#00H 用到其他51系列上也是一样的。你看它的片子的介绍上,写了一句“完全兼容51系列单片机” 那么OK 。别管那么多,只管用就是了。我发觉我废话多了,这不知道写到那去了。抽跟烟,继续。 上面的意思是说:面前是一坐山很高,然后我就一咬牙,慢慢爬吧,我不信我爬不上去了,或许爬到一半就退缩了,退而再攻之。 我拿个测量仪来,噢,原来这山总共7000米,半山腰有个亭子,到那是3500米,刚开始那1000米坡度很小 2000米的时候有个茅房(_) 6000米的时候有个美女正在洗澡,山顶有个和尚庙。行,心中有了底,上! 刚开始的时候初学一定要用汇编,可能大家也看到了,关于C和汇编的讨论,各有各的说法,我个人觉得初学者,完全没有必要去追求什么飘逸的风格,就用笨拙的汇编。虽然它像一头大苯熊一样,但是,当你能和大笨熊亲切的交流,屈驾自如的时候,再去和漂亮的兔子MM 鸳鸯戏水,会更加的得心应手。 汇编刚开始你会觉得很烦,就是在那MOV 过去MOV 过来。JB、JC、 JNB 、JNC 、DJNZ 很难记,不像C 一个IF 一个DO WHILE 就搞定的事。但是,用汇编你能更加了解一条指令在CPU内存的执行过程,能更加亲切的和P0 、P1 、P2 、P3 的每一个口线交流,不需要C 的屏蔽底层,而是直接的就和底层亲密接触。这里有人要说我什么什么的了, 还是那句话:个人意见,仅供参考。在写延时程序的时候,DJNZ 是双周期指令,比如12M的晶振,那么,一条指令是1US, 那么你要精确的知道自己这段延时程序能延时多少US 或者多少MS ,那么你对51单片机内部的指令、周期,对以后写有严格时序操作的程序就更加得心应手。比如,看到一个片子的PDF 数据总线要拉低多少MS ,地址总线要拉高多少US ,等待周期要等待多少US/MS ,那么,不要怀疑,自己写指令搞定它,成功以后你会发现你从最底层的了解了一个片子是怎么传送数据,怎么通信。这样的经历对你以后再接触其他 子的时候是莫大的帮助。像关于书上的内容,指令不用记得那么死,或者说完全不需要记。需要的时候,马上查,在查的过程中会更加加深你的印象(说点丢人的话 JC JB JNB JB 这些 指令我到现在都从来不记,我又不应付考试,我书随时就在旁边 用的时候去翻就是了。) 这也就提到了练习,程序和指令不要只看不用,实践是检验真理的唯一标准。实践出真知,这都是老话了,不过用在单片机的学习上是太贴切了,单片机本来就是实践性很强的。像我在学校的时候,每次实验课 都认真的做,抓住每次上机的机会。板子很贵,自己买不现实,而上机的时候能接触到的每一次都很宝贵。LED流水灯、十字口交通灯这些程序很基础。在一次一次的小程序成功的过程中,你会更加喜欢上单片机,并且坚定继续为之不离不弃的决心。 熟能生巧,我还记得我刚开始的时候,经常是把指令写错,把跳转的标号写错。经常用系统的关键字,变量未定一存储空间就用等等等等。 但是一次又一次错误下来,得到的是程序的正确性的大大的提高。在这里我建议刚开始先多读别人的程序,而且是完整的,备注多的,格式规范的。从最开始就养成良好的编程风格,而不是随意的乱添乱加 胡乱的复制粘贴。 看懂别人程序里的每一句代码的意思,为什么要加这条,这条指令的作用是什么?如果不清楚,马上翻书去查,在查的过程中,更加加深对这条指 或者这段子程序的用法的深刻的记忆。下次自己用的时候才能像自己一样的拿来得心应手,这也是为什么要选择51系列的单片机。因为它的示例代码网上铺天盖地,而且高手也不会吝啬的把初学要用的代码共享,得到这些代码的途径是很方便的。得到的有用的信息也是最多的,像 1302 、1602 、DS18B20 、LED 、串口 、DA /AD 、常用的接口与51的驱动程序,这些五六电子网都有很多, 汇编版本的 、C 版本的都有。不要觉得都是几年前的东西,都是人转来转去,老掉牙的东西,先都拿来消化掉,再为自己所用。 大家也许也发现了,在百度里找一些程序的时候看到一版的汇编代码,但是没有一点注释,2个字:痛苦! 所以,为了方便大家,也为了以后你能方便别人,刚开始写程序就要习惯,给程序写备注,为了别人能看懂 像一个大的工程,都是团队合作。你几千的代码而且没有备注,别人几千的代码也没备注,那好吧,先花个1天的时间把程序看懂了,再干其他的吧。程序中像子程序名,入口参数,出口参数,内存的分配,关键语句的单条备注,标号的顶格,代码的缩进 等等 。良好的编程风格绝对会让你在以后的工作和学习过程中事半功倍。;-;*子程序;-next: mov a,th0 ;/读取计数值TH0swap a ;/高4位与低4位对换mov r1,a ;/保存到R1anl tl0,#0f0h ;/取TL0高4位,低4位忽略不计 写了一些小程序之后,就可以做些完整的小实验,也可以参照别人的程序来写。比如写一个接口芯片的驱动,不再是点亮一个灯,又点另外一个灯。 这种的完整的验证型的实验非常重要,不要希望上课的时候老师给你的程序能让你突飞猛进,只有自己不断的做实验,写程序,才能让自己学得更快。 像买到的板子,都有完整的代码,这对于学习是很好的资料,因为它能所见即所得,不再是书上的纸上谈兵,那么程序是正确的,看懂了以后自己可有试着改里面的某个地方。你能找到它的核心的那几条或一段代码,那么说明你对这段程序的理解已经更上一层楼了 。初学者买板子很重要,而板子上的示例代码和技术支持更重要。通过这个板子你能接触到一个平台供你学习,那么这个板子就是值的。如果板子买来了就闭门造车,那么,板子再好也不是件好事。功能特别强大的板子,没有必要去买,当你用到板子上的什么激光、摄像头的时候,我想你也已经不会再用那块板子开发东西了,基本的液晶、数码管(是个很强大的东西 像我不喜欢什么软件仿真 在有问题的地方 设置个断点 程序执行到这一步 把值读出来 显示到LED上 简单方便 )常用的51的接口有就够了,说到自己做实验板,买来的板子都有完整的电路图,对于电子基本共不扎实的朋友,买来后看懂原理图,再慢慢 自己做板子好一点。 买了同一种板子的能有个交流区是最好的,各个问题和程序拿出来大家交流,能起到很大的作用,也会少走很多弯路,目前这个正在筹划当中。我会尽快和站长联系,开个专区供大家交流和学习用。上面提到了基本功,这才记起。(不好意思_) 像搞单片机,分几种:上层的和底层的、上下通吃的。不过刚开始的 都不是很复杂,我建议大家上下通吃。还是那句话,有不懂的马上查资料。电容、三级管、二级管、放大、整流、稳压、滤波、上拉 /限流电阻,还有Protel 99 SE 自己画电路图等等这些基本功,随着学习的深入,都要一点一点的累积起来,不懂不要紧,问题是不能让一个问题一直捆饶着你,要有一种精神:不搞懂它 ,我就不罢休的精神。那么我相信任何困难都不会成为阻止你成功的绊脚石。 又说到哪来了?夜深了,瞌睡来了* 单片机,要天天碰。调程序就到板子上结合着硬件环境调试,像DA/AD 我刚开始学的时候那一章的内容根本都没看,直到后来要做个东西,需要AD转换,去翻了下TLC1543D 的PDF,然后看了下它的时序,去网上找了下示例代码,然后写的程序。像书上的 ADC0809、DAC0832 我是在用了其他转换片子后,回过头去看的时候发现这片子缺陷确实太多,然后再去看它的程序和使用方法很简单。这里的意思并不是说书上的 ADC0809、DAC0832 不重要,而是说大家学一个东西的时候,如果能结合板子学的话或者说能马上用到,那么是最好,成效也是最快的。实践的力量确实是不能小窥的,而现在普遍的大学生的高分低能,学软件工程的,让用VB 写个小程序都不会写。单片机90多分的写个LED都不会,连单片机具体什么样子都没见过,找工作的时候一大堆的奖,一大堆的废话。拿出自己做的作品,随意的和招聘的人聊各个单片机的优缺点,正确的说出每种常用的片子的用途、用法,证明自己的实际的动手能力。找工作是难,但是分人。我相信,在大学实验室里呆2年的人和在大学里谈2年恋爱的人、打2年网游、看2年小说、聊2年QQ 、打2年CS的人的结果绝对是不一样的,乱七八糟的写了。很多大家能看完不甚感激。如果有什么地方不对的,还请大家多多指正,我也是个学习者,深切的感到刚学单片机的时候的困惑。希望写下的东西,对大家能有目前单片机的应用可以说是相当的广泛,已经渗透到我们生活中的各个领域。从高端导弹的导航装置,飞机上各种仪表的控制,自动控制领域的机器人,以及自动化过程的实时和数据处理,到我们日常生活的各种智能IC卡系统,安全保障系统,录象机,摄象机,手机,电视,全自动洗衣机,以及可控玩具,电子宠物,等等,都是单片机“惹的祸”。而且,目前我国的单片机教育已经向高中教育发展,可见在不久的将来,单片机对于工科学生而言就会象电路基础原理一样成为基础课。 在工作中和在校的同学的交流中,听到的最多的是“单片机太难了”。其实不是单片机难学,而是不知道怎么入门。请大家记住一句话“单片机不是学出来的,而是玩出来的”。下面结合自己自学单片机的体会,和大家一起来“玩”单片机。准备好了吗?我现在开始教大家如何学习单片机。 第一步:先读通一本教材 唉!?太没创意了吧,还要看书?不错,第一步还是要通读一遍教材,这样我们才能站在巨人的肩膀上。读了一遍什么感觉,一个字晕。这很正常,不然你就看不到这篇文章。很多人在晕了之后就泄气了,或者换教材,接着晕,直至晕倒。不过,现在告诉大家我们要向酒鬼学习,晕了不要紧,嘴上一直说“没醉”,至少还可以多喝半斤。所以信心很重要。 第二:晕着脑袋实践 第一步我们已经晕了,其实,我们是在似醉非醉,似醒非醒的最高境界。趁着这么好的感觉(这种感觉是多少武林高手梦寐以求的),赶快练上几路拳脚。 首先要选好兵器。现在学校实验室都有单片机实验箱,把握好实验的时间,或者和老师搞好关系,有时间就玩两把。不过最好还是有自己的独家装备,一开始装备不要太华丽,能用就行。软件建议用Keil c51,硬件要有pc机和开发板,开发板要求有流水灯、数码管、独立按键、矩阵键盘、ad转换、液晶屏、蜂鸣器,这就差不多了。软件网上有的是,下一个,还是免费的。pc机没有可以先用下同学的。开发板大概几百元,这比请朋友吃饭便宜多了。在想想将来我们要靠他来闯荡江湖,这又算得了什么呢?五六电子网这里就有一些公认的性价比很高的开发板,可以去邮购一个。我当初就是从五六电子开始起步的。 好!兵器选好了,那就练把!提醒大家一句,降龙十八掌也是从扎马步练起的。即便我们比郭靖聪明,也要先练马步,想想黄蓉就知道了。现在就从最基本的流水灯开始,试着先控制一个发光管,慢慢的变换花样,做出自己的个性来。是不是特有成就感,是不是不吃饭都不知道饿。现在已经有点着迷了吧(个别人除外)。 第三:带着问题解决问题 在实践中我们有很多现象解释不了,怎么办?是自己慢慢领悟呢,还是向高手请教?建议先自己领悟,实在不行再向高手请教,这是记忆最深刻,效果最好的办法。但不要领悟的时间太长,否则会削减我们刚建立起来的信心;事事都问,记忆就不深刻,成不了自己的东西,就像练武,只学到了招式,没学到内功。如果这一步能过关,哈哈,相信你已经被单片机迷住了。 第四步:自我修养,不断提高 达到这一步,不论是技术水平,学习方法,还是心理素质都达到一定的境界了,已经入门了。俗话说师傅领进门,修行在个人。到了这一步,下来就要看个人的努力和悟性怎样了,能否创造出自己的“黯然销魂掌”,那要看个人的修为了。少许的帮助。写得不好,请大家见晾了。 学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。 第一步:数字I/O的使用 使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。 第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。 定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。 第三步:中断 单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某 种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等 。 中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。 以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。 第四步:与PC机进行RS232通信 单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。 USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊! 第五步:学会A/D转换 MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。 使用A/D转换功能的简单的例子是设计一个电压表。 第六步:学会PCI、I2C接口和液晶显示器接口 这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。 第七步:学会比较、捕捉、PWM功能 这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。 如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。 第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计 学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前经常有单片机爱好者问我们,如何学习单片机?学习单片机的步骤是什么? 我们初略总结了一下,单片机学习的过程基本上可分四个阶段: 第一阶段 是先浏览教科书里的硬件部分,大至了解单片机的硬件结构。如ROM、RAM、地址、IO口等,以及看一些厂家的MCU资料(Data Sheet),来加强MCU所提供各项资源的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论