打印
[51单片机]

向51单片机说再见

[复制链接]
3100|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xr2015|  楼主 | 2015-6-9 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 向51单片机说再见
最近在访问论坛时看到好多人在讨论51单片机,有人说51单片机应该学习,它是基础;也有人说51单片机是过时的产品,现在产品应用已经不再选用了,也就失去了学习的必要性。从最初的51单片机学起,工作多年后现在基本应用32位MCU做项目,笔者觉得是时候向51单片机说再见了。

51单片机的辉煌过去

51单片机指MCS-51系列单片机,CICS指令集。由Intel公司开发,其结构增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源,内有128个RAM单元及4K的ROM。其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前国内的51单片机市场主要为国产宏晶的产品STC系列其号称低功耗,稳定与廉价的特点。

学习51单片机的误区

误区1:51单片机是学习的基础

“51单片机是学习的基础”这句话本身并没有错。在我读本科的时候,当时它无疑是学习的基础——毕竟那时没有更高级的单片机可以供使用,国内更没有更高级的教材供参考,老师的水平也是参差不齐,而51单片机正符合这样的需求,不仅有大量的成型的教材,广泛的示例,当时工作的实际项目也是51单片机为主,于是51单片机理所当然的成为当时的学习基础。要知道笔者读本科的时候是2004年,即10年前的东西。按照莫尔定律,电子行业每18个月更新换代,10年前的技术现在已经更新了6代了——事实也确实如此。

目前32位Crtex-M系列单片机的各种教程已经普及,其学习的难度不断降低。以意法半导体公司的STM32F系列单片机来说,意法半导体在推广产品初期大量赠送了核心板。免费赠送的核心板不仅有流行的32位Cortex-M系列微处理器,更在板上集成在线调试器。随机附赠的光盘或者链接更是提供了大量的示例源代码。我们只需要安装开发环境即可直接编译与下载调试。这时,如果再说51单片机是学习嵌入式的基础肯定是不合时宜了。

误区2:51单片机可以学习寄存器的操作

51单片机可以学习寄存器的操作,这一点儿是不容置疑的。我们分析一下其更深层的原因。在MSC-51单片机的编程环境中,最初是以汇编语言为主要编程语言。要知道汇编语言就是直接操作寄存器的,汇编语言是无法做到C语言的函数调用与封装的。如果说51单片机是以操作寄存器为优点,我觉得更应该说51单片机操作寄存器是一种无奈,是只有一个选项的选择题。

我们现在的Cortex-M系列单片机就无法学习寄存器了吗?显然不是。在硬件设计中,硬件的操作方式就是寄存器的操作,但是其实现却是可以不同。各微处理器提供的C语言库函数包其实质就是将操作寄存器的指令进行了C语言环境下的封装。我们这里用ST官方库函数举一个示例:

void USART_Init (USART1, *USART_InitStruct);//实现串口1的初始化,简单明了,无需注释

笔者在这里也想举一个示例来说明寄存器操作的步骤,但是操作寄存器实在是太复杂了,笔者不想去浪费时间去整理了。

通俗易懂的C语言,方便移植的C语言与硬件平台相对应的编译器联合,就能完成硬件的操作。有了简单、方便的方式,我们为什么还要考虑繁琐,复杂的汇编语言与寄存器操作呢?

误区3:51单片机的成本低

成本都是左右应用的主要因素。项目的立项主要考虑成本,销售的定价主要成本。低成本的方案才会在市场里占有优势。可是,51单片机真就是最低成本了吗?非也。现在按照功能划分,部分Cortex-m0系列的32位单片机的成本也能做3元*币。其性能已经是51单片机的好几倍了,而且更容易开发与维护。

还有另外一个成本:开发难度成本。51单片机不支持在线调试,有一些问题在编程初期没有发现,只有与硬件连接后才会显现出现来,例如控制操作中经常用到的延时。这时在线调试的巨大优势就体现出来了,它可以极其方便的查看微处理器当时的状态,使得问题的分析变得简单而透明。从而,有效降低开发的难度,缩短开发周期,节约开发资金。

误区4:51单片机入门简单

51单片机入门简单?我对于这个观点持保留意见。想要入门51单片机,我不仅熟悉该款单片机外设,而且还要充分了解寄存器的某位的意义。对于时钟,定时器的配置必须了如指掌。这样无疑会增大我的学习难度与熟悉的周期。如果我们使用32位单片机的库函数模式,我们只需要具备C语言的知识,了解API函数,直接看已经注释过的寄存器意思即可,不需要了解其底层的硬件实现,更不需要了解某个寄存器某个指定位的意义了。这样,减少了我的工作量,从而降低了开发难度。你说是51单片机入门简单,还是32位Cortex内核微处理器简单?

嵌入式系统的学习是非常枯燥而又有挑战性的事情。由于与实际的硬件直接连接,不仅要考虑编写的正确性,而且还要考虑硬件的可靠性。这时,简单、高效的软件编写就变向的降低我们开发难度与风险。51单片机已经是明日黄花,向前看才是发展。是时候向51单片机说再见了!

更多有兴趣学习单片机、嵌入式、ARM、PCB、FPGA、Linux、cortex-M3等的爱好者们
欢迎随时咨询徐老师QQ2269819323 TEL:18948782706  
深圳 广州 郑州 长沙 南宁五地八中心,欢迎免费试听体验课程。

相关帖子

沙发
NE5532| | 2015-6-9 22:51 | 只看该作者
一个文学爱好者,终于抛弃了用了多年的Woed2000,学会了Word2013,就认为自己写的**可以超越巴金琼瑶古龙了。
请对号入座。

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
chunk + 5 淡定
板凳
i55| | 2015-6-10 09:03 | 只看该作者
虽是软文,也要赞一下。除了死太惨这样的野**山寨,正经厂家都停产了51,所以说51已死没啥问题。死太惨也就是满足下国内内些学不会新把戏的老狗的需要。

使用特权

评论回复
地板
xr2015|  楼主 | 2015-6-11 11:40 | 只看该作者
英雄所见略同,希望大家多多重视技术提升,实践出真知!
技术学习可以找徐工切磋QQ2269819323

使用特权

评论回复
5
sudongcai74| | 2015-6-23 10:38 | 只看该作者
没有做过工程,没有最好,只有最适用的

使用特权

评论回复
6
autopccopy| | 2015-6-23 22:56 | 只看该作者
本帖最后由 autopccopy 于 2015-6-23 22:58 编辑

每个人都有自己的看法,看看一个长期用FPGA和DSP的博士是如何看51单片机入门的:(转载)
=================================================
前言
PREFACE

    作者记起第一次接触8051单片机是在1997年大学四年级第一学期,当时忙于考研,只
是验证了老师给出来的几个程序,并没有认真地学习这门课程。后来由于科研的原因,接
触的基本是大家认为高大上的Xilinx可编程门阵列(FPGA)和TI的数字信号处理器(DSP)。
虽然时隔17年后,才有机会再次接触STC单片机,但是可以站在更高的高度系统和全面
地理解和看待它。整个数字世界从低到高层次,依次是半导体开关电路、组合逻辑电路、
状态机、CPU、汇编语言、高级语言、操作系统和应用程序,这就是学习和认知的路线。
学习STC单片机也就是这条路线,当你掌握了这条路线的时候,你会发现STC单片机乐趣
无穷。

    2014年12月与STC的负责人姚永平先生在教育部信息中心举办的STC单片机决赛的评审
现场再次会面,期间姚总希望我能编写一本关于最新的STC单片机方面的教材。这
对我来说压力是很大的,这是因为在国内图书市场上,关于单片机的书籍不下上百种,而
且有几本单片机的书非常畅销。虽然此前我巳经系统编写过电子设计自动化方面的整套书
籍。但是编写单片机课程的教材对我来说也是一种挑战。在正式编写前,姚总建议我找到目
前市场上几本比较畅销的单片机书。当我找到这些书时,发现目前的单片机教材和书籍都
存在各种问题,不能很好地解决当前国内单片机课程教学所面临的困局。工程师编写的单
片机教材过于应用化,条理性有所欠缺;而高校老师所编写的单片机教材又过于理论化,
并且内容比较陈旧。

    在我编写单片机教材期间,姚总多次和我提到用STC单片机作为C语言教学平台,这
个想法与我不谋而合。作者曾连续三年第三学期给大学一年级电子信息类专业的学生进
行为期一周的C语言实训课程的教学,我发现情况就是前期的C语言课程教学中老师讲的
虽然很卖力,但是学生还是反映很抽象听不懂,似乎C语言课程都成了本科生掌握计算机
知识的障碍。问题症结所在,就是学生面对的是机器,无法有效地和这个机器进行交流,
他们不知道如何用人的思维与计算机对话。解决这些困扰的方法,就是让他们能够看到
CPU如何运行、存储器如何管理、如何控制外设的运行。而传统C语言教学使用的PC又
不能提供让学生看到这些细节的条件。虽然经过一些系统的练习,学生对C语言的学习有
了很大的进步,但是离教学要求仍然有一定的差距。我就一直在想,能不能在C语言实训
中引入一些好的硬件平台来帮助学生学习C语言?这个问题一直困扰着我。但是,当我在
编写这本单片机教材的过程中,眼前一亮,发现STC 8051单片机确实是个非常好的平台,
因为CPU中的运算器和控制器、系统存储器、外设等能让学习者一览无余,再加上神一般
的Keil uVision5软件集成开发环境,通过uVision5提供的调试器环境把单片机内部细节
看个清清楚楚明明白白,它将C语言中抽象的指针、数组和函数等语法通过图、表、变量
监控窗口全部都表示出来了。作者在编写第6章时,通过调试器提供的功能,把C语言中
抽象的语法真正地介绍清楚了。

    8051单片机自面世到现在经历了30多年,单片机课程教学中抛弃8051单片机的呼声
日益高涨,因为很多人认为8051落伍了。因此,他们希望一上来就开始学习更高级的处
理器。从技术上来说,8051是有些落后了。但是,8051带给初学者,特别是国内高校的学
生,是完善的生态系统,包括开放的内部结构、完全公开的指令系统、大量的应用设计
案例、容易人手的Keil uVision5软件集成开发环境等,这些都是初学嵌人式系统最好的
素材。我们经常说,简单的不一定是落后的。对于初学者来说,东西越简单学习起来就越
容易入门,学习的知识更加系统且更有条理。

    在编写本教材时,融人了作者在编写EDA工程系列丛书时所获取的大量新的知识,力
图最大限度地挖掘STC单片机的性能和特点。在本书编写完成的时候.终于可以说这句话
了:STC单片机是高职和本科学生,甚至是研究生学习嵌人式系统最好的人门级学习素材,
也是相关专业学生必须掌握的最基本的计算机软件和硬件知识及技能。

    在编写这本书的时候,以下面的思想为主线,以期待能更加透彻地表达“原理”和
“应用”之间的关系。

(1)这本书既然讲的是单片机的原理和应用,首先就必须要讲清楚单片机的原理。在
单片机的原理中,最重要的就是讲清楚8051 CPU的内部结构和指令系统,使得学生学
会如何分析一个新的CPU、CPU的共性等,以及指令系统的作用什么、指令系统和CPU之
间的关系等问题。

(2)关于在学习单片机的时候,是否还有讲解汇编语言的必要性的问题,最近在教育界
有很大的争论。这里必须强调,汇编语言是了解CPU结构最重要的途径。在实际应用中,
可以不使用汇编语言,但是必须让学生知道汇编语言在整个计算机系统中所起的作用,
最少也要让学生通过编写简单的汇编语言彻底地理解和掌握内部的结构。这是因为如
果学生不能很好地掌握的内部结构,即使将来他们使用C语言等高级语言编程单片机,
也很难编写出高效率的程序代码。

(3)对于应用部分来说,既要保留传统的应用例子,又应该引人一些新的综合性的例子。
这样,才能将单片机中的各个知识点联系在一起,以提高分析和解决在单片机实际应用
中所遇到问题的能力。

(4)能不能学好单片机一方面取决于教师能不能把单片机的理论真正地讲透,更重要的
是学生能不能充分地在实践中进行学习。业界工程师常说,单片机是玩好的,不是学好
的,可见实践在单片机学习中的重要性。

    本书从开始编写到完稿历时近3个月,全书共分为15章,以STC公司目前新推出的
IAP15W4K58S4单片机为平台,以Keil最新的uVision5集成环境为软件平台,亲自设计大
小案例近100个,这些设计例子都通过上述的硬件和软件进行了调试和测试。

    为了方便教师的教学和学生的自学,配套提供了该教材的教学课件和所用设计实例的
完整设计文件,以及视频教学资源,这些资源均可以进人清华大学出版社网站本书页面下
http://www.tup.com.cn)和网站:http://www.gpnewtech.com/study/STC/进行下载。

    在本书的编写过程中参考了STC公司最新的技术文档和手册,以及STC学习板原理
图和PCB图,在此对STC公司表示衷心的感谢。在本书编写的过程中,作者的学生李宝隆、
张艳辉负责部分章节的编写工作,黎文娟对本书的全部稿件进行了初步的完善和修改。在
本书编写的过程中,得到了STC公司梁工、谢工以及石晓倩经理在技术和市场服务方面的
热心帮助,特别是得到了STC公司姚永平先生的支持,他对作者在编写本书过程中遇到的
各种问题进行了耐心细致的回答。在本<书出版的过程中,也得到了清华大学出版社的大
力支持,在此表示深深的感谢。

    由于编者水平有限,编写时间仓促,书中难免有疏漏之处,敬请读者批评指正。
作者 2015年5月于北京
--------------------------------------------------------------------------------
作者简介
    何宾任教于北京化工大学信息学院,长期从事电子设计自动化方面的教学和科研工作,
与全球多家知名的半导体厂商和EDA工具厂商保持紧密合作。目前已经出版EDA方面的著作
20余部,内容涵盖电路仿真、电路设计、FPGA、单片机、嵌入式系统等。代表作有《Xilinx
FPGA设计权威指南》、《Xilinx All Programmable Zynq-7000 SoC设计指南》、《Altium
Designer13.0电路设计、仿真与验证权威指南》、《Xilinx FPGA数字设计——从门级到行
为级的双重描述》、《Xilinx FPGA数字信号处理权威指南——从HDL、模型到C的描述》、
《模拟与数字系统协同设计权威指南——Cypress集成开发环境》。

何宾老师的《STC单片机原理及应用》前6章PDF:[url=http://www.****ducst/book/HEBING/HEBIN-BOOK-1.ZIP]http://www.****ducst/book/HEBING/HEBIN-BOOK-1.ZIP(大小:66.7M)

何宾老师的STC单片机在线教学视频:[url=http://www.gpnewtech.com/study/STC/]http://www.gpnewtech.com/study/STC/


----------------------------------
仅供参考!51肯定不是万能的,同样ARM也一样,在不同的场合选用最适合的器件而已。
(303)


使用特权

评论回复
7
camy| | 2015-6-23 23:26 | 只看该作者

使用特权

评论回复
8
LockYourID!| | 2015-6-24 11:12 | 只看该作者
怎么样才能使一个论坛里面的人吵起来?
1、51单片机已死
2、XX编程语言已经过时


接下来………………

使用特权

评论回复
9
qduwg| | 2015-6-24 12:08 | 只看该作者
楼主所言极是。非常支持您的观点。

使用特权

评论回复
10
john_lee| | 2015-6-24 14:04 | 只看该作者
不管两派如何打嘴仗,事实的情况是:会 cortex-m 但不会 51 的人,想去学 51 的可能找不出几个;而会 51 但不会 cortex-m 的人,却绝大多数都想着或想过去学 cortex-m。

使用特权

评论回复
11
Adu0227| | 2015-6-24 14:14 | 只看该作者
成本决定一切

使用特权

评论回复
12
xr2015|  楼主 | 2015-6-24 14:48 | 只看该作者
其实就是各尽其用,毕竟51单片机还是鼻祖嘛,大家抱着开放的心态去看待就好了!
想了解更多单片机嵌入式学习技巧,可以找徐工Q2269819323!

使用特权

评论回复
13
chunk| | 2015-6-24 16:06 | 只看该作者
i55 发表于 2015-6-10 09:03
虽是软文,也要赞一下。除了死太惨这样的野**山寨,正经厂家都停产了51,所以说51已死没啥问题。死太惨也就 ...

ATMEL已经停产51系的芯片了?这可麻烦了。

使用特权

评论回复
14
Txapp| | 2015-6-24 18:27 | 只看该作者
51永远不会淘汰,就像自行车现在也继续存在,但主角不是你了

使用特权

评论回复
15
ddllxxrr| | 2015-6-24 20:02 | 只看该作者
我再说一遍吧,51永远都不会消失

使用特权

评论回复
16
lrhsx33| | 2015-6-25 09:41 | 只看该作者
市场定位不一样,暂时都有存在的必要。

使用特权

评论回复
17
coody| | 2015-6-25 13:00 | 只看该作者
楼猪,我还在大量用4位的MCU做各种简单便宜的手表呢,我也想换成32位的ARM,高大上,谁能告诉哪个32位的ARM满足我的如下要求,而我现在用的4位MCU是可以的:

1、工作电压:0.9~1.5V
2、工作电流不超过5uA。
3、带段码LCD驱动,至少32段。
4、价格在0.30~1.00 RMB之间。

楼猪,如果有合适以上条件的32位ARM,请告诉我型号。

使用特权

评论回复
18
whirt_noob| | 2015-6-26 08:54 | 只看该作者
公司的工控系统上就用了两片51单片机,非常的稳定

使用特权

评论回复
19
受不了了| | 2015-6-26 10:29 | 只看该作者
工控里最常用的PLC,做点很简单的事情主循环都是要10来毫秒,用51做,随便都比它快,当然它也学乖了,各种中断也加上了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

12

帖子

1

粉丝