新闻中心

EEPW首页>嵌入式系统>设计应用> 教你学单片机 1 :简介,关于单片机的OOXX

教你学单片机 1 :简介,关于单片机的OOXX

作者: 时间:2016-11-25 来源:网络 收藏
微处理器的四十年历史: 四十年回顾 CPU处理器全面发展史
后来,微处理器的发展就越来越迅猛了,掀起了一场个人电脑时代的技术革命,微处理器越来越风行,渗透到了人们生活的各方各面。人们见识到了微处理器的强大,于是他们就有一种想法,既然微处理器这么强大,是不是所有设备都可以由它来控制呢?如果可以的话确实是很方便,这个想法很美好,但是有一个问题:虽然相对大型计算机来讲,微机的体积和功耗是少了很多,但如果要把它应用在日常生活中的小设备上,比如把它放到洗衣机上,让它控制洗衣机自动运行,很显然它还是太大了,因为根据冯诺依曼架构,一台计算机必须具有五个部分,分别是:运算器,控制器,存储设备,输入设备,输出设备。运算器和控制器集成在一起变成微处理器,但还是需要内存,还有IO设备,所有这些东西加在一起才可以正常工作。而现在人们想把这套东西放进洗衣机里面工作,先不说功耗和体积,它的价格就远远要高过洗衣机本身好多倍了。人们又在想,有什么办法可以制造出一个可以担当此类工作的计算机系统呢。其实计算机所做的工作是很广泛的,称之为通用计算机,“通用”两个字表示它什么都可以做,但是如果我们只要它用来执行某一些特定的,而且不复杂的任务,换句话说,我们能不能制造出这样一种计算机,它必须功耗足够小,价格让人可以接受,功能可以不用那么强大,只需要执行一些简单的事情就行了,这样不就可以满足人们日常生活中对小型计算机系统的需求了?比如自动洗衣机?自动洗碗机?按照这种想法,人们就在想,可不可以把个人计算机再微型化,要变得足够小、足够小才行,最好小到把功能都放到一块芯片里面,用一块芯片就可以执行所有功能!这时候,单片机就出现了,单片机全称:单片机微型计算机,它按照人们的愿景,把本来需要放在外围的随机存储器RAM,程序存储器ROM,IO设备,定时器,CPU等等这些部件全部集中在一起芯片中,只要对它进行编程就能实现各种功能!这就是单片机的由来。
1976年,英特尔推出它的第一款单片机:MCS-48。Zilog公司也于1976年研发出Z80微处理器。应该算是单片机的最早版本。而1980年,英特尔在MCS-48的基础上,推出了MCS-51系列8位单片机,这个系列无论在性能还是容量上都较之前的单片机型号有了很大的提高,由于它是如此地好用,MCS-51架构到现在还是风靡全球,占领了低端单片机的大部分市场,很多芯片制造商就是购买了英特尔的MCS-51内核然后自己推出基于该内核的芯片,而我后面要讲的内容都是以51单片机为平台的。
后来,随着时代的发展,IC制造技术越来越高超,(根据IT行业的摩尔定律,每过18个月,CPU的速度就会提高一倍,内存容量会增大一倍),单片机的性能也越来越强大,体积也越做越小,渗入到生活的各方各面,从以前的MCU时代(性能较弱,内部只能运行简单的控制程序)进入了SOC时代(System on chip,即片上系统,在芯片上运行操作系统),比如现在的移动终端,像手机、MP3等无不是用单片机作为控制核心,这些芯片已经达到很高的运行速度,性能直逼90年代中期的PC,目前最高端的手机CPU主频已经超过了1.5G Hz。以前只能在电脑上做的事情现在单片机也可以很轻易地做到了,而且功耗还比电脑低得多。
这就是单片机的简单发展史。
而现在,你即将进入这一领域,你可以想象一下,用你的手敲出一行行代码,经过编译器编译之后变成单片机可以执行的机器码,然后经过一个下载器和一个下载软件,机器码就变成数字流通过导线一条条注入单片机内部,单片机把你的机器码全部记录在他的ROM里面,下载完毕之后,你按原计划连好线路,接上电源,在你还没反应过来的一瞬间,单片机就按照你的交代在乖巧地运行着代码了!这一切看起来那么神奇,让人振奋,你可以充分发挥你的想象,让单片机为你做任何事情,让你感到成就感十足!
好了,如果你看到这里觉得很有趣,正在考虑想磨拳擦掌大干一场了,那我首先祝贺你,你的兴趣已经被激发起来了,这是最重要的。但我也得打击一下你,单片机不是那么好学的,需要你具有编程基础,还要有一点点电子学的基础。你没学过编程?没学过电子?没关系,这些都可以学,最重要的是你必须有一颗坚持到底的心。老实告诉你,在你写代码的时候通常你不可能会第一次就可以把一个完全正确地写出来,它有时候会产生BUG(软件漏洞),导致程序错乱,这时就需要你奈心地进行DEBUG(漏洞调试),直到它正常运行;有时候硬件也会出问题(不是有时候,是大多时候),这时候也需要你一点一点地检查硬件电路,上网查找资料,直接到硬件调通。这个过程有时候是很漫长并且痛苦的,大多数人就是因为这样而放弃了学习。不过你要知道,你的每次辛苦付出得到的都是超值的回报,比如你在一次软件调试中成功地解决了某个算法的漏油,证明你在之后再次应用到这个算法的时候就会得心应手,不会再犯错。高手都是从菜鸟进化来的。慢慢地,你就会非常享受每次调试完系统之后那种愉悦的成就感了。
OK?没问题?你觉得你能承受?你觉得你会坚持到底?嗯,我暂且相信你,毕竟你都看到这里来了。
那你可以开始学单片机了。
第一个问题是,你需要选择一个什么样的单片机来学?你上网搜索,搜着搜着,你发现,有一大堆单片机型号罗列在你面前,接着你去逛技术论坛,想听一下高手们的意见,结果发现每种型号的单片机都有专门的技术版块,每种都有很多资料,每个版块的人都在向你说:学这种吧,OOXXOOXX~~~T_T~~~。你晕了。有时候选择的东西太多了也是个麻烦事。
这时候,你可能很想听一下某个当初也是这么迷茫的人的建议。
我的建议是,先学51单片机吧!好好地学,先把它学熟了再说吧!不要管有些人说:51过时了,几十年前的架构,现在谁还用?我很想知道,他说这话的时候有没有认真地学过51,是不是所有指令都会用了?
事实就是,其实学哪种单片机都一样,因为单片机的基本原理都是相通的,没有太多特别的区别。但如果你刚开始入门学习,你必须要一个适应期,在这个适应期里你应该不止是使用单片机,你还得把它从里到外都搞通,你会用C语言熟练地给它编程之后,还必须要学会用汇编(关于汇编与C语言的纷争我之后将会专门讲一下),你还得了解它的内部结构,比如它是属于哪种指令集(复杂指令集CISC和精简指令集RISC),比如它在函数调用的时候都发生了哪些作用。总之,在最后,你必须要懂得以机器执行指令的过程来理解你的代码的含义,这时候你才算成功地学会了单片机(而不是简单地把单片机的外设学会,然后用高级语言按照人类的思维给它编程,然后下载了事)。你懂得以机器的角度来思考高级代码之后,一理能百理明,你会发现很多事情都是相通的,你会在上《微机原理》的课程里比别人学得轻松,因为你已经懂得计算机工作的最基本原理。
既然学哪种单片机都一样,为什么要特别选择51呢?这是因为一般情况下51单片机比别种类型的单片机外设要少,功能相对简单一点,虽然这样,但这对初学者来说却是至关重要的。想象一下你刚上学的时候,老师从教你认识0-9的数字开始,然后教你加减法,后来再教你乘除法,当你有一些基础之后,才开始教你函数和几何,最后才是微积分。同样的道理,当你开始学单片机的时候,要怎么让你慢慢接受一个你以前从未接受过的概念?你当前希望解释这个概念的模型要越简单越直白越好,由浅入深。据此,51单片机给了你一个最简单轻松的学习环境,有道理不?另外,51架构的存在已经有几十年了,应用已经很广泛(暂时不要去考虑哪种单片机有前景,千万不要去纠结这种问题,你都还没入门,就想起飞来了),所以相对其他单片机来说资料更齐全,对你学习更有帮助。
经过一番解释,我试图说服你,学51没错。你被我说服了吗?好吧。假如你还在犹豫之中,接下来我就大概一下介绍目前比较多人学的几种芯片。
先说51,51是这类芯片的内部架构,全称8051,制造商有很多,但内核都是购买英特尔公司的。51跟其他芯片相比主频比较低(主频即是CPU每秒执行的指令数),一条指令的执行需要用12个时钟周期(一个时钟脉冲称为一个时钟周期),也就是说,需要给他12个时钟脉冲才会完成一条指令;所以虽然有时候51的外部晶振频率比别人高,但其实执行速度没有别人高。51一般内存比较小,标准C51(因为使用51内核的芯片很多,资源也不相同,下面我以标准C51来介绍)只有128字节内存,而且头32个字节还要被用做通用寄存器,能给用户使用的其实只有96字节。有32个通用IO口,可作为输入或者输出,P3口还有第二功能,串口等等,先不说这么多,以后再慢慢介绍。有8KB的程序存储器。51使用的是复杂指令集CISC(什么东西?先不用管,了解就行了,呵呵)。

关键词:单片机简

评论


技术专区

关闭