51过时了吗? 点击:4714 | 回复:80



冰的临界点

    
  • 精华:5帖
  • 求助:0帖
  • 帖子:14帖 | 151回
  • 年度积分:0
  • 历史总积分:1207
  • 注册:2012年4月05日
发表于:2012-04-14 11:49:14
楼主

看到这个问题,相信大家很多人都在问,也有很多人想知道,还有很多人有自己的看法,今天我在这里发表一下自己的观点。

现在在大学里,51单片机仍是电子类专业必修的课程,然而这几年随着ARM的火爆,很多51的学习者有了专业一个疑问:既然大家都在用ARM,我们为什么还要学51?而且找工作的时候人家也比较关注有过ARM使用经验的。

为了解决这个疑问,我们首先需要分清下面几个概念:单片机、ARM、DSP、FPGA/CPLD,这几个关键词是学习电子的人常见的几种芯片(我不知道该统称什么,姑且这么叫吧)。这几个词要分类的话首先要把FPGA/CPLD和其他的分开,因为FPGA/CPLD的原理和单片机、ARM、DSP不同。

FPGA/CPLD是通过硬件实现功能的,FPGA是Field-Programmable Gate Array的缩写,即现场可编程门阵列;CPLD是Complex Programmable Logic Device的缩写,即复杂可编程逻辑器件。通过名字可以看出,二者都是可编程的逻辑器件,即实实在在的硬件,通过对硬件编程以实现某种特定功能。说直白一些,二者就是一个与非门或者或非门阵列。由于所有的逻辑式子都可以变换成与非结构或者或非结构,因此所有的逻辑功能都可以通过FPGA/CPLD实现,编程后的芯片相当于一个数字芯片,如加法器,移位寄存器等。二者的区别在于FPGA是基于RAM结构的,CPLD是基于ROM机构的,这些不是本次讨论的重点,不再赘述。

再说单片机和ARM及DSP的关系,单片机是“单片微型计算机”的简称;ARM是Advanced RISC Machines的简称,它只是一家微处理器设计企业的名字,因此ARM是他们设定的微处理器的统称;DSP是Digital Signal Processing的简称,即数字信号处理。了解了这些,我们可以说单片机是所有所有MCU(微型控制单元)的统称,ARM是DSP只是他们的一种,ARM属于用公司名称的一种称呼,而DSP则是根据功能(数字处理)命名的一种称呼。但是,在行业内,单片机一般特指8位或16位的MCU,在本文中仍采用大家熟悉的叫法,把单片机和ARM放在并列的位置。

了解了这些,我们还需要了解一个问题,什么是51单片机。这个问题本不想说,可是看到有人说51是AT89C51的简称,所有觉得有必要提一下。1980年,Intel推出了首款单片机8051(这个8051有可能是公司内部的设计编号,我没有找到为什么叫这个),之后又陆续推出了与8051指令完全相同的8031、8032、8052等系列的单片机,初步形成了MCS-51系列。1984年,Intel出售了51核,此后,世界上出现了上千种51单片机,如爱特梅尔、飞利浦,华邦,还有国内的宏晶等。51单片机泛指所有兼容8051指令的单片机。当然,一些公司购买51核后增加了一些功能或者寄存器等,增加的这些东西是不兼容的。于51单片机处于并列关系的有AVR系列,PIC系列等,他们的区别在于虽然都属于8位机(PIC系列的有16位的),但所使用的指令集不同,这也就是区别一个单片机系列的一种方法。

51单片机过时了吗?要了解怎么一个问题,首先得搞清楚51单片机在市场中的应用情况以及将来的发展情况。众所周知,自从ARM出现以来,短短的几年内便出现了ARM7、ARM9、M3、M4、A8、A9、A10等等多个系列,其性能也得到了飞速发展,以其高性能,低价格,低功耗等优势迅速占领了MCU的江山,比起当年的51有过之而无不及。作为32位机,其性能是毋庸置疑的,即便是相同的时钟速率,32位机的处理一些数据的速度也要快于8位机,如一个32位的加法运算,8位机至少需要4个周期,而32位机只需要一个周期即可完成。ARM的优势在于较高的处理速度,还有丰富的外设资源,还有就是较大的数据和程序存储空间。相比之下,51单片机就没有优势了吗?当然不是,51单片机的优势在于小巧的内核,成熟的技术(其实现在ARM的技术也很成熟),还有就是位操作。在相当多的应用场合,我们并不需要ARM如此强大的处理功能和速度,而是只需要简单的控制,51单片机已经完全可以满足实际的需求,这样一来,ARM的优势便显的不再重要,而51的位操作则是ARM达不到的,也许你会说ARM同样可以实现位操作,但如果你了解的比较深的话会发现,ARM的位操作是通过移位,与或等操作之后实现的,而51单片机则又位寻址空间,是真正的位操作。再一个就是价格,在价格上最便宜的ARM好像已经降到了0.5美元(可能是这个价格,记不清了),而最便宜的51可能是0.5RMB。但一些中档的ARM则要比高端的51单片机便宜了。十几或者几十RMB的ARM的性能是同价格的51单片机无法比拟的。此外,由于51内核简单,一些高端的51增加的功能使得他们的51单片机操作起来变得异常复杂,而且不同厂家的操作完全不同,这样就增加是使用的难度。综合看来,在高端或者中端应用方面,51单片机已经没有了任何优势,其市场主要是一些老产品或者不想学新东西的老工程师在支撑,其消亡也是必然的。然而在低端应用方面,51仍然可以占有一席之地,除了操作和价格上的微弱优势,其更大的优势在于学习简单。

从学习角度来讲,衡量是否学会一个MCU的标准应该是你写的程序你应该知道他是怎么执行的,应该具体到某一个指令所涉及到的寄存器,看到一个指令之后脑子里应该是一串01运算才行,而不是可以简单的应用了。虽然现在很多公司推出的新产品都给出了固件库,可以使工程师更快的进行编程使用。但是,这样的结果是使更多的硬件工程师变成纯软件工程师而已。你会对一个芯片编程,但你并不了解他。也许有人说,反正我能用了就行了,干嘛非要了解它呢。其实这样想就错了,要想真正的用好一个芯片。不了解他是不行的,甚至不深入全面的了解都是不行的,一些硬件上的简单改动有可能使系统的性能发生很大的变化。因此要想设计一个比较好的产品,必须对芯片本身有一个深入的了解。在这方面,51单片机由于内核简单,很容易上手并容易深入了解。学习起来比较简单。熟练掌握了51,再学习其他的芯片,如ARM也是很简单的,因为所有的微控制器的功能结构框架都是一样的,了解了一种之后再学习另一种很简单。相比复杂的ARM结构,51结构就显的很简单了,甚至可以认为,ARM是在51的结构上增加的许多功能模块构成的,虽然二者的结构并不真的相同。

前几天在论坛里看到有人呼吁,别学51了,改学ARM吧。我觉得这样的人应该属于二者都没有学好的人,二者的区别和联系肯定不清楚才这样喊的,同时有过51和ARM学习经验的人应该知道,学精了51再学ARM所用的时间只不过是看一遍芯片手册的时间(有些夸张),而直接以ARM作为MCU入门的话则要费很大的劲。对于一个从来没有接触过单片机的人来说,面对复杂的ARM手册往往会感到无从下手。可以这样比喻一下,学ARM是一口气登上一座高山,而学51相当于到了半山腰。在半山腰上的风景虽不及山顶,却仍可有所作为。而再从半山腰的高度上山,难度自然减小了。至于有人抱怨说找工作的时候没人要只会51的,我觉得应该这样看这个问题,学51和学ARM并不存在冲突,了解了51只后当然可以再学ARM。

我觉得,即便将来51的应用没落了,学习51仍是一种不错的入门手段,就行学计算机的一直在学X86一样。我不反对直接选择ARM入门,但却反对那些不了解51就呼吁大家放弃51的人。作为电子产品的设计者,如何在种类繁多的MCU中选择自己合适的一款才是最重要的。

虽然不可否认51单片机越来越多的被高端产品,尤其是ARM所替代,但我仍觉得51单片机没有过时,学习51单片机也没有过时!

 



楼主最近还看过



newber1983

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 10回
  • 年度积分:0
  • 历史总积分:98
  • 注册:2011年1月16日
发表于:2012-11-11 02:48:29
41楼

有时候 杀鸡焉需用牛刀

有时候 杀牛还需要先练习杀鸡壮胆

 

伍琪生

  • 精华:2帖
  • 求助:0帖
  • 帖子:1238帖 | 11365回
  • 年度积分:212
  • 历史总积分:63767
  • 注册:2006年8月05日
发表于:2012-11-11 09:40:49
42楼
引用 newber1983 的回复内容: 有时候 杀鸡焉需用牛刀有时候 杀牛还需要先练习杀鸡壮胆 

这个我赞成,学习需要从基础开始

纵横军团_MCU

  • 精华:0帖
  • 求助:1帖
  • 帖子:6帖 | 494回
  • 年度积分:0
  • 历史总积分:1666
  • 注册:2012年8月11日
发表于:2012-11-11 11:02:24
43楼
在一些简单控制和计算功能的场合还是很实用的。

flashsky

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2012年11月09日
发表于:2012-11-15 20:44:00
44楼
51没过时 啊,事实上现在兼容51系列的单片机大行其道,俺就做过台湾那啥stc的单片机产品.....

原创军团-88王

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 30回
  • 年度积分:0
  • 历史总积分:252
  • 注册:2008年3月23日
发表于:2012-11-16 13:54:26
45楼

怎么可能过时咧????

 

龙游乾坤2007

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 215回
  • 年度积分:0
  • 历史总积分:2849
  • 注册:2010年12月23日
发表于:2012-11-16 14:34:06
46楼

万丈高楼平地起啊,学习都得从基础开始,学会了51,我明白了计算机的基本运行机理,我学会了C语言设计,因此,我明白了工控行业各种工控设备的原理及构造,甚至对各种协议的理解都非常深刻,各个击破,从51开始

grbxznu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 22回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2012年7月24日
发表于:2012-11-16 16:18:31
47楼
51是基础啊,精通工控以及其他高端单片机的人51必然不会差,而且51是精髓啊,入门比较好,让你没有高中基础去学习微积分也费劲

莫其麟

  • 精华:14帖
  • 求助:0帖
  • 帖子:125帖 | 5688回
  • 年度积分:0
  • 历史总积分:29157
  • 注册:2004年2月27日
发表于:2012-11-16 18:30:40
48楼
51有些时日了,曾经了解过。         

hale128

  • 精华:0帖
  • 求助:16帖
  • 帖子:19帖 | 100回
  • 年度积分:0
  • 历史总积分:268
  • 注册:2012年7月30日
发表于:2012-11-29 10:28:30
49楼
51还不过时。。。因为单片机和ARM的硬件原理基本相同,只不过ARM功能更强大,能跑系统。。。学习51对学习ARM是有帮助的。。。

MatLab.XP

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 371回
  • 年度积分:0
  • 历史总积分:1340
  • 注册:2005年7月29日
发表于:2012-12-04 13:14:39
50楼

ARM 是51的升级换代产品,中高档产品中已经很好看见单片机的身影了,抵挡市场,价格优势的原因,还在用着!在过些年ARM的价格降到和51的水平差不多了,其实51就真的推出市场了!但就现在这个市场来看,还要需要一段时间!

但就学习来看,学习学习51,和ARM并不是冲突!51是学习他的特殊功能寄存器,这些懂了,无论哪个厂家的单片机基本都一样!ARM高级是高级在他能跑系统,而且片内存储片外存储,处理速度 都要比单片机高好多!

但是整个嵌入式的开发除了程序外,还有外围硬件设计,外围硬件选型,产品结构设计等等。

也就是说51到ARM过度不是很难!

话说回来,大多数工程师还在拿ARM当单片机用,没有运行起系统来!linux 几万行的程序代码没有个几年功夫是不能吃透的!

 

Z676916830

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2012年2月15日
发表于:2012-12-23 16:33:40
51楼

分析得很在理,非常赞同

工程0

  • 精华:1帖
  • 求助:0帖
  • 帖子:1帖 | 24回
  • 年度积分:0
  • 历史总积分:83
  • 注册:2009年3月02日
发表于:2012-12-26 09:52:18
52楼
工作真么多年了,还在学习中,汗颜!

sfx8723

  • 精华:0帖
  • 求助:10帖
  • 帖子:95帖 | 455回
  • 年度积分:0
  • 历史总积分:6079
  • 注册:2012年2月16日
发表于:2012-12-26 10:05:39
53楼
只看标题还以为说的是51节呢?      

yangyiwei1204

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 122回
  • 年度积分:0
  • 历史总积分:996
  • 注册:2012年7月12日
发表于:2012-12-28 13:56:09
54楼
还没过时,依旧挺好用的。去年就有学过一点

wangchuanshu

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:72
  • 注册:2012年2月23日
发表于:2013-01-12 17:32:17
55楼
宏晶的51单片机功能和速度都很高,抗干扰能力很强,一般工业控制都够用,价格便宜,易学易用。工业控制没有必要求新,够用就行,关键是可靠性。

杨寻欢

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 56回
  • 年度积分:0
  • 历史总积分:240
  • 注册:2003年7月11日
发表于:2013-01-18 12:53:24
56楼

我就是搞单片机设计的,我认为8051是最好的单片机,因为生产厂家多,易购买到,便宜,很多变种的8051,很多外设

,现在国内比流行的8位机有,8051,PIC,AVR,STM8,我都有所了解,还是觉得8051好,品种多。PIC16Fxx系列的性能比不上8051,PIC16Fxx系列和AVR系列的致命弱点是只有一级中断优先级,这对做很多紧急的控制不利,而且比8051贵,STM8性能不错,不过觉得不适合初学者,PIC18Fxx系列比一些ARM还贵,总之我的结论是,学习单片机先学8051,设计过一些系统后,再学ARM CORTEX的M0,M3,M4,学单片机要学好,要多做实验,还有很很多的接口电路,很多的算法要去了解,8051永远不会过时的

西域之鹰_3004

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 711回
  • 年度积分:224
  • 历史总积分:123130
  • 注册:2011年3月04日
发表于:2013-01-18 13:01:09
57楼

各有所长                   

伍琪生

  • 精华:2帖
  • 求助:0帖
  • 帖子:1238帖 | 11365回
  • 年度积分:212
  • 历史总积分:63767
  • 注册:2006年8月05日
发表于:2013-01-21 11:16:32
58楼
51属于基础,她的技术还在延续

mengmengxiyu1998

  • 精华:0帖
  • 求助:0帖
  • 帖子:283帖 | 534回
  • 年度积分:0
  • 历史总积分:2941
  • 注册:2013年1月04日
发表于:2013-01-21 11:43:22
59楼
。。。。。。。。。。。。。。。。。。。

sdwfgg

  • 精华:0帖
  • 求助:2帖
  • 帖子:16帖 | 108回
  • 年度积分:0
  • 历史总积分:242
  • 注册:2013年1月11日
发表于:2013-01-29 16:57:39
60楼
俺 是外行,没学过这个,不过听过。

热门招聘
相关主题

官方公众号

智造工程师