最新学习单片机的几大步骤.docx
- 文档编号:96521
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:9
- 大小:24.29KB
最新学习单片机的几大步骤.docx
《最新学习单片机的几大步骤.docx》由会员分享,可在线阅读,更多相关《最新学习单片机的几大步骤.docx(9页珍藏版)》请在冰点文库上搜索。
最新学习单片机的几大步骤
学习单片机的几大步骤
我的硬件之路(致初学者)(附文中提到的:
学习使用单片机的八个步骤)
2008-07-1221:
37
每一个人都在为自己的将来作着各种各样的计划,都在考虑我们未来的职业,既然我们已经选择了硬件,那么我们就热爱它吧,把我们的才能与热情都奉献出来,我们不仅仅能够得到物质的补偿(赫赫,现在还没有得到什么物质补偿,我想毕业后就会的),还会在精神上感到满足与快乐(已经有所感受了,哈哈)。
我是一个还没有踏上社会的学生,没有丰富的项目经验和社会阅历,所以凡想在此文中获取高深的人生哲理与职业箴言,那我恳请您赶紧不要看下去,如若不然,我恐怕受到您的讥笑;仅以此文献给那些刚刚踏上硬件之路和还在徘徊的同学们,我简要的记录了我的学习经历和其间自己所获的一些心得,以避免初学者走弯路或者是少走弯路。
我深知对于一个初学者来说,身边有一个手把手的老师那该是多么幸福的一件事情,他的一句不经意的话或许我们初学者都要花上几天甚至是几个月的时间去思考和验证。
但是我们身边并非总是有一个这么样的老师,我们就需要在网络上去寻找答案了,前人的经验是非常值得借鉴的,我们从他们写得一些文章中可以悟出一些东西,为我所用,或者是从中吸取精神动力等等。
搞硬件的人一定要读一读任正非的文章,李嘉诚的文章,周立功的文章,以及网上流传的其他一些文章。
现在还记得学习单片机的时候找到的一片文章叫做《学习单片机的八个步骤》。
这些文章总是像一个指路标,指引初学者向着正确的方向走去。
此文纯属无稽之谈,毫无含金量,若是能够给初学者带来哪怕是一点点地影响,能够为你们提供一点点地帮助,那么我将感到无限的欣慰。
我总是想用最简短的话语来表达我的思想,说出我最想对初学者说的话,但是往往力不能及。
也深知大家时间的宝贵,不愿把时间浪费在毫无意义的事情上,所以我把我最想说的话用提纲的形式列在文章的前头了,没有时间的话,各位看官只需看看前头就可以了。
优秀硬件工程师需要什么(来自网上文章以及自己的总结):
1.对硬件无限的热情(第一位,本人认为)
2.数字电路、模拟电路、protel等(高频等其他的知识我还没有用过)
3.C语言
4.单片机(汇编语言)
5.FPGA(包括verilog/vhdl、sopc)
6.ARM(包括嵌入式操作系统,建议先学UCOS,适合初学者)
7.DSP
以上并非每一种都要精通,根据自己的实际,5、6、7可以选择其中的一到两种,当然都会的话那更好。
2-4本人认为这是基础,必须精通。
硬件需求配置:
1.学习单片机的话,仿真器是必不可少的,有没有编程器倒是影响不大,建议自己买一块即插即用的万能板,自己搭建系统来试验。
这样不用烙铁焊接了,因为我们作为学习者,很容易焊错器件或者是引脚。
买开发板的话,就会对硬件的连接不会很了解,建议初学者自己搭建系统以及其他的外扩器件。
这会让你对整体的硬件连接了如指掌。
全在自己的掌控之中。
还有有一台示波器的话那是再理想不过了,
那会帮助我们分析解决问题,特别是在做串口实验、中断、I2CEEPROM读写的时候。
2.学习FPGA,那么就不能像学习单片机一样找来一片芯片就可以动手了。
像51类单片机的引脚不是很多,但是FPGA就不一样了,往往有几十个甚至一百多的引脚,我用的altera的ep1c20有144个引脚,全贴片工艺,所以这个时候我们就必须在市场上买一个开发板了。
我用的是altera公司的EP1C20cyclone系列的开发板,是我们办公室的人以前买的,现在正好我用。
据说是5000元,还是大学计划时
候买的。
有条件用好的当然好,但是对于我们一般初学者用的话,只要带有常用功能的开发板就可以了,市场上1000元左右的还是有的。
3.ARM学习的话,当然也离不开开发板的购买,上次给我二导提建议给我买一个,他很爽快的答应了,让我挑选一块,我选了周立功的smartarm2200,1980元RMB,货现在还没有来。
学习arm的话,嵌入式操作系统是少不了的。
操作系统有很多,用的最多的是linux,由之发展而来的有uclinux、armlinux等;其次是ucos。
本人建议先学习ucos,它代码量少,容易学习。
要是有altera的nios开发板的话,也可以学习ucos,altera公司的nioside支持好几种RTOS,其中就包括ucos,直接用就ok了。
4.DSP属于比较高的层次,对人的要求比较高。
开发板价格应该也不菲,我现在还没有用过。
各位同学看了后会发现学习这些东西不光是时间、精力的问题,还涉及到一个让我们同学们很感冒的问题,那就是器件的购买,这些都需要钱,而且价格都不菲。
大部分的我们是没有这份闲钱的,同学们可以找几个志同道合的同学一块买,还可以一块讨论。
要是学校实验室有的话就在实验室搞,要是导师有就找导师要,总之不要放过任何可能的机会,同志们要深知我们的命运把握在我们自己手中,既然选择了硬件这条路,就要认认真真地走下去,不光要走下去,还要想方设法走的很好。
以上都是我的一家之言,同学们千万不要全信,仅给诸君一个初步的认识,如若错误还请一笑了之,纯当小孩之言,无稽之谈。
在啰嗦之前,我想介绍一下我办公室的人员组成,因为这个对我有很大的影响。
办公室有四个人,一个是拥有十一年工作经验且已拥有自己专利的高级工程师(我的导师要他带我,我习惯叫他二导,这是我为什么在这个办公室的原因),一个是拥有5年经验热心助人的工程师,还有两个分别是电源和视频方面的专家或者元老级人物。
耳濡目染,自己渐渐的对硬件发生了浓厚的兴趣。
从单片机,FPGA,SOPC硬件的搭建以及软件编程,以及现在正在努力研究的ARM,我是凭着无限的热情来做的。
热情不是唯一的原因,还有另外一个原因就是试验室给我提供了很好的学习环境。
学习单片机的时候,试验室有现成的winbond51单片机,有伟福仿真器,有advancedlabtool48uxp万能编程器,有一台十二万的示波器,自己买个万能板,找本书就在上边进行试验了。
从简单的led闪烁、数码管显示、pwm到中断、串口通信(单片机与单片机通信,单片机与pc机通信)、I2Ceeprom读写、A/D转换、温度的测量等等,给我成就感的是每一个试验经过资料的查找、程序的编写以及调试、再到后来问题的解决,那份成就感与喜悦之心只有有过这种经历的人才能够体会。
正是有这份热情和爱好,常常在实验室呆上十二三个小时,通常是晚饭在食堂吃了后直接到验室,晚上九点半回寝室(办公楼10点关门)。
虽说那时候没有做过什么大项目,但是这每一个小小的实验也是人生知识的积累,有了这些知识的积累,我想也为以后作更大的项目打下了基础。
刚进实验室的时候,我的二导就给了我一块开发版,是altera公司的niosep1c20cyclone系列开发板,当时是以大学计划买的,5000RMB。
于是就开始了我的fpga学习之路。
以前学习过verilog,当时只是停留在纯粹的理论阶段,编几个小小的程序,用quartus-ii自带的仿真软件进行一下仿真就ok了。
用仿真软件进行仿真,往往能够得出你所想要的结果,但是一旦下载到芯片里边运行的话问题就会接踵而来。
和单片机机学习一样,万事开有难。
我做的第一个实验也是点亮led。
自己编写程序(几行而已),编译,引脚分配,仿真,然后就用jtag下载线连接开发版板和pc机,将sof文件下载到芯片。
现在想起来这是多么简单的几个步骤,但是对于当时的我来说,是花费了很多的时间和精力来查找资料和埋头做实验的。
特别是引脚的分配,对着文档只说需要这么做,然而为什么要这么做呢?
当时没有过多的想法,只想让我看到实验的结果,有了结果我就有了无限的成就感和对做实验的热情,所以当看到经过我的努力,在我的第一个fpga实验里led按照我的意图来动作的时候,那种喜悦之情与当初学习单片机时候实现led闪烁的情形是多么的相似。
这也是我做实验的一个惯例和一个经验,那就是边做实验边看书,在实验中发现问题,遇到不懂的问题或者原理在查找相关的文档,我习惯动手,要是让我坐在实验室看上哪怕是1天的纯理论书籍,我的脑袋也会爆炸的,赫赫,因为没有这么看过书,所以脑袋也一直没有爆炸。
以及后来学习ucos嵌入式操作系统我也采用的这个方法,我把它叫做"阶梯成就感"(在写这篇文章的时候突然觉得这个词语很符合这种情形,临时想出来的)。
抱着这种热情,自己后来一点一点地深入的学习fpga,一些常规逻辑电路的设计,包括逻辑门电路、数据选择器、编译码器、加减乘除运算器、移位器,到后来的稍微复杂的电路设计,包括FIFO、数字跑表、频率计、状态机、交通等的控制、卡式电话计费系统以及UART等。
以上的试验我都是采用的verilog语言来实现的。
当初接触fpga的时候向学习VHDL,那时同学们都用verilog,以便和他们讨论问题的方便,后来就改学习verilog了,一学不要紧,发现自己深深地爱上了verilog,因为对于我来说,他无疑更加适合我。
这也是我的一个经验,那就是看看你旁边的人用的是什么工具,他们用的工具往往不是你最喜欢的或者是不是当前最流行的和用的最广泛的,但是你若要和他们交流讨论问题的话,那你还是迁就一下,大环境是这样的,和你旁边的人所用工具一样,交流起来也会顺畅方便。
来实验室后,因为我们实验室的员工用的伟福的仿真器,所以软件当然还是用伟福提供的。
伟福的软件不怎么好,只支持汇编,比起大名鼎鼎的keilc51那是逊了一大截。
但是在前期的时候我还是选择了伟福的软件,因为我不想到时候我有问题不会的时候周边没有人帮助我。
再后来,经过自己的摸索和向身边的工程师们请教,伟福用的已经很熟悉了,汇编也有了自己的一套,这个时候我开始在伟福里边嵌入keil,用c语言来写程序,但是调试的时候用伟福软件还是有缺陷,比如说不能够单步执行。
所以再后来我下载了keilc51软件,从此以后我正式的在keil的开发界面下写程序了。
当然仿真的时候也可以在keil环境下用伟福仿真器,我想伟福在制造他的产品的时候就已经考虑到这点了,他的一些产品肯定要兼容主流软件keil的。
用了keilC51后就不想用伟福编译软件了,同样的用了c写程序后,就不想用汇编了。
但是汇编是每一个硬件研发工程师们都必需的,汇编有c不可企及之处,有时候还非用汇编不可。
汇编的运行效率高,但是写起来很是繁琐,繁琐规繁琐,当在某些特定的时刻,汇编发挥了他不可替代的作用。
比如在将usoc移植到单片机的时候,与处理器相关的程序还真是必须用汇编来完成。
再后来,开始学习sopc。
从最小系统硬件平台的搭建,到简单的led闪烁程序的编写,到sof文件在芯片上跑起来,看着led的亮与灭,心中一直充满着无限的热清。
每一次接触新知识都有一种发自内心的激动,每一次接触的新东西我都是从最简单的led闪烁开始,从单片机到fpga到sopc再到ucos,只有每天的一个小小的进步才能让我拥有对工作的热情,只有这每天小小的看得见的"阶梯成就感",才能激发自己对更多知识的追求。
本人比较欣赏altera公司推出的可编程片上系统(即sopc),她解放了我们搭建硬件系统的繁琐,仅仅需要按照需求在系统里边加上自己的IP核和一些必须的外设。
altera公司或者其他的第三方公司已经为我们提供了性能和功能很完善的IP核,我们所要做的只是将这些IP核加入到我们的系统里完成我们需要的功能。
硬件系统完成后,需要在altera公司为我们提供的niosIDE环境里边对我们的硬件系统进行软件编程,在这里,完全用c语言来完成我们所需要的功能。
与前边学习单片机、fpga一样,第一个实验还是led闪烁,然后慢慢的转向一些比较复杂的功能设计上去,也无非是实现以前用verilog实现过的一些功能。
两者的区别是:
一种完全用verilog语言来实现全部功能;一种需要先用sopcbuilder搭建硬件系统,然后在nioside中进行软件的编程。
这两种方法都能够实现我们需要的功能,但是后者更方便快捷,因为在这种方法里,我们使用的是"拿来主义",IP核已经实现了我们的功能,要做的仅仅是去用它而已。
最近一段时间在学习ucos嵌入式操作系统,主要是运用在FPGA里面。
nios已经为我们移植好了,不需要修改任何文件。
在nios用户界面里进行一些相应的设置,就可以用它了。
altera公司为我们提供的模板里边有几个很好的例子,任务管理、信号量、邮箱传递、事件标志、时间管理等都为我们提供了很好的模板,我们需要作的是认真的阅读它,研究它,必要的话对模板进行一些改写来完成自己的功能,这是模仿的更高的一个境地了,把他的一些东西进行吸收转化成为自己的东西,我想这是一个硬件爱好者和初学者非常乐于做的事情。
在进行fpga学习的时候,我遇到过事情停滞不前,没有进展,心情沮丧的时候。
那个时候对底层硬件一无所知,连对基本的原理图也看不懂,更别说程序在开发板上是怎么运行的了。
再到后来进行nios开发的时候,这种沮丧感与日俱增,每天一点进步也没有,那是一个很漫长的日子,现在想起来,依然庆幸自己没有绝望,没有对自己热爱的硬件失去信心。
后来事件出现了转机。
有一次我和我办公室的一个工程师聊天,谈到了我的空惑,他建议我先学习单片机,自己搭建硬件平台从最小系统做起。
这个工程师热心助人,学习方面的问题他总是很耐心的为我解答,让我受益匪浅,我很庆幸能够在这种环境当中学习,虽说我不在高校,但是研究所为我提供的学习环境与硬件设施我想不是每个高校学生能够享受到的。
我想说的是,遇到问题的时候,当我们感觉事情没法进展下去的时候,我们不妨换一种方式,多与周边的人聊聊天。
在我的环境里,我的导师是一个拥有近30年硬件开发经验的资深研究员,才开始的时候我什么都不懂(赫赫,感觉现在依然什么都不懂,东西越学越多,总也学不完),但是我总喜欢跑到我导师的办公室和他瞎聊。
他和蔼可亲,容易接近,和他交流的时候总是给我一些职业和人生方面的忠告,这些忠告将会伴随着我的人生。
人生总是有很多坎坷,我们的学习也是的。
在这个时候我们就要看看任正非写给华为员工的一封信《要快乐的度过充满困难的一生》,在那里我们可以找到好好活下去的理由;当看中了某件事情的时候,我们就需要鼓足勇气,满腔热情地去迎接它,遇到困难的时候多和别人交流,或者是去网上看看李嘉诚的写给青年的《areyouready》,在那里我们可以学到谦虚、勇气、智慧、毅力。
最后送给我们的初学者一句话。
《圣经》中马太福音里的一句话:
凡有的,还要加给他叫他多余;没有的,连他所
学习单片机的八大步骤
学习使用单片机就是理解单片机硬件结构,在汇编或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转换
MSP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。
学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。
使用A/D转换功能的简单的例子是设计一个电压表。
第六步:
学会PCI、I2C接口和液晶显示器接口
这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。
第七步:
学会比较、捕捉、PWM功能
这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。
如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。
第八步:
学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计
学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。
到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。
即使如此,也算是单片机大虾了。
顺便说一句,MSP430单片机的技术支持是非常好的,负责任的工程师大虾会在关键时候,挺身而出,使你化险为夷。
---------(转自EDN博客)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 学习 单片机 步骤
![提示](https://static.bingdoc.com/images/bang_tan.gif)