51单片机使用教程.doc
《51单片机使用教程.doc》由会员分享,可在线阅读,更多相关《51单片机使用教程.doc(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、|原作: 平凡的单片机|单片机教程第一课:单片机概述1、何谓单片机 一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制) 、RAM(数据存储) 、ROM(程序存储) 、输入/输出设备(例如:串行口、并行输出口等) 。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如 A/D,D/A 等。 天!PC 中的 CPU 一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。不,价格并不高,从几元人民币到
2、几十元人民币,体积也不大,一般用 40 脚封装,当然功能多一些单片机也有引脚比较多的,如 68 引脚,功能少的只有 10 多个或 20 多个引脚,有的甚至只 8 只引脚。为什么会这样呢? 功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。另外这种芯片的生产量很大,技术也很成熟,51 系列的单片机已经做了十几年,所以价格就低了。 既然如此,单片机的功能肯定不强,干吗要学它呢? 话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用 PIII?应用的关键是看是否够用,是否有很好的性能价格比。所以 80
3、51 出来十多年,依然没有被淘汰,还在不断的发展中。 2、MCS51 单片机和 8051、8031、89C51 等的关系我们平常老是讲 8051,又有什么 8031,现在又有 89C51,它们之间究竟是什么关系? MCS51 是指由美国 INTEL 公司(对了,就是大名鼎鼎的 INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如 8031,8051,8751,8032,8052,8752 等,其中 8051 是最早最典型的产品,该系列其它单片机都是在 8051 的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051 来称呼 MCS51 系列单片机,而 8031 是前些
4、年在我国最流行的单片机,所以很多场合会看到 8031 的名称。INTEL 公司将 MCS51 的核心技术授权给了很多其它公司,所以有很多公司在做以 8051 为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中 89C51 就是这几年在我国非常流行的单片机,它是由美国ATMEL 公司开发生产的。以后我们将用 89C51 来完成一系列的实验。单片机教程第二课:单片机的内部、外部结构(一)一、单片机的外部结构 拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为 89C51 的芯片,下面我们就看一下如何给它连线。 1、 电源:这当然是必不可少的了。单片机使用的是 5V
5、 电源,其中正极接 40 引脚,负极(地)接 20 引脚。 2、 振荡电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接 18、19 脚。只要买来晶振,电容,连上就可以了,按图 1 接上即可。 3、 复位引脚:按图 1 中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。 4、 EA引脚:EA 引脚接到正电源端。 至此,一个单片机就接好,通上电,单片机就开始工作了。我们的第一个任务是要用单片机点亮一只发光二极管 LED,显然,这个 LED 必须要和单片机的某个引脚相连,否则单片机就没法控制它了,那么和哪个引脚相连呢?单片机上
6、除了刚才用掉的 5 个引脚,还有 35 个,我们将这个 LED 和 1 脚相连。 (见图 1,其中 R1 是限流电阻)按照这个图的接法,当 1 脚是高电平时,LED 不亮,只有 1 脚是低电平时,LED 才发亮。因此要 1 脚我们要能够控制,也就是说,我们要能够让 1 引脚按要求变为高或低电平。即然我们要控制 1 脚,就得给它起个名字,总不能就叫它一脚吧?叫它什么名字呢?设计 51 芯片的 INTEL 公司已经起好了,就叫它 P1.0,这是规定,不可以由我们来更改。 |图 1名字有了,我们又怎样让它变高或变低呢?叫人做事,说一声就可以,这叫发布命令,要计算机做事,也得要向计算机发命令,计算机能
7、听得懂的命令称之为计算机的指令。让一个引脚输出高电平的指令是 SETB,让一个引脚输出低电平的指令是 CLR。因此,我们要 P1.0 输出高电平,只要写 SETB P1.0,要 P1.0 输出低电平,只要写 CLR P1.0 就可以了。现在我们已经有办法让计算机去将 P1.0 输出高或低电平了,但是我们怎样才能让计算机执行这条指令呢?总不能也对计算机也说一声了事吧。要解决这个问题,还得有几步要走。第一,计算机看不懂 SETB CLR 之类的指令,我们得把指令翻译成计算机能懂的方式,再让计算机去读。计算机能懂什么呢?它只懂一样东西数字。因此我们得把 SETB P1.0 变为( D2H,90H )
8、 ,把 CLR P1.0 变为 (C2H,90H ) ,至于为什么是这两个数字,这也是由 51 芯片的设计者-INTEL 规定的,我们不去研究。第二步,在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件工具“编程器“ 。我们将编程器与电脑连好,运行编程器的软件,然后在编缉区内写入(D2H,90H)见图 2,写入好,拿下片子,把片子插入做好的电路板,接通电源什么?灯不亮?这就对了,因为我们写进去的指令就是让图 2P10 输出高电平,灯当然不亮,要是亮就错了。现在我们再拨下这块芯片,重新放回到编程器上,将编缉区的内容改为(C2H,90H) ,也就是 CLR P1.0,写片,
9、拿下片子,把片子插进电路板,接电,好,灯亮了。因为我们写入的(C2H,90H)就是让 P10 输出低电平的指令。这样我们看到,硬件电路的连线没有做任何改变,只要改变写入单片机中的内容,就可以改变电路的输出效果。 三、单片机内部结构分析 我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即 ROM(READ ONLY MEMORY) 。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗
10、?原来在 89C51 中的 ROM 是一种电可擦除的 ROM,称为 FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM 进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为|ROM。 单片机教程第三课:几个基本概念数的本质和物理现象。 我们知道,计算机可以进行数学运算,这可令我们非常的难以理解,计算机吗,我们虽不了解它的组成,但它总只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如 37+45 是这样做的,先在纸上写 37,然后在下面写 45,然后大脑运算,最后写出结果,运算的原材料:37、45 和结果:82 都是写在纸上的
11、,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用0和1来代替这两种状态,规定亮为1,不亮为0 。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:状态 表达 0 0 0 1 1 0 1 1 请大家自已写上 3 盏灯的情况 000 001 010 011 100 101 110 111我们来看,这个 000,001,101 不就是我们学过的的二进制数吗?本来,灯的亮和灭只是一种物理现象,可当我们把它们按一定的顺序排好后,灯的亮和灭就代表了数字了。让我们再抽象一步,灯为什么会亮呢?看电路1,是因为输出电路输出高
12、电平,给灯通了电。因此,灯亮和灭就可以用电路的输出是高电平还是低电平来替代了。这样,数字就和电平的高、低联系上了。 (请想一下,我们还看到过什么样的类似的例子呢?(海军之)灯语、旗语,电报,甚至红、绿灯)位的含义: 通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,可以代表两种状态:0 和 1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位” ,用 BIT 表示。字节的含义: 一根线可以表示 0 和 1,两根线可以表达 00,01,10,11 四种状态,也就是可以表示 0 到 3,而三根可以表达0-7,计算机中通常用 8 根线放在一起,同时计数,就可以表达到 0-255
13、一共 256 种状态。这 8 根线或者 8 位就称之为一个字节(BYTE) 。不要问我为什么是 8 根而不是其它数,因为我也不知道。 (计算机世界是一个人造的世界,不是自然界,很多事情你无法问为什么,只能说:它是一种规定,大家在以后的学习过程中也要注意这个问题)存储器的工作原理: 1、存储器构造存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的 1234 这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的嘛。图 2图 3让我们看图 2。这是一个存储器的示意图:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小
14、格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存|的,就不用我们操心了,你可以把电线想象成水管,小格子里的电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元” 。有了这么一个构造,我们就可以开始存放数据了,想要放进一个数据 12,也就是 00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图 3) 。可是问题出来了,看图 2,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话
15、,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看图 2,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就可以自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不同单元的控制线,就可以向各单元写入不同的数据了,同样,如果要从某个单元中取数据,也只要打开相应的控制开关就行了。2、存储器译码那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片 27512 存储器中有 65536 个
16、单元,把每根线都引出来,这个集成电路就得有6 万多个脚?不行,怎么办?要想法减少线的数量。我们有一种方法称这为译码,简单介绍一下:一根线可以代表 2 种状态,2 根线可以代表 4 种状态,3 根线可以代表几种,256 种状态又需要几根线代表?8 种,8 根线,所以 65536 种状态我们只需要 16 根线就可以代表了。3、存储器的选片及总线的概念至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,如图 4 所示。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如
17、果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是 0FFH 另一个存储器的单元是 00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的引脚进来后,不直接接到各单元去,中间再加一组开关(参考图 4)就行了。平时我们让开关打开着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上
18、,数据就被送出去了。注意图 4,读和写信号同时还接入到另一个存储器,但是由于片选端不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不同时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。从上面的介绍中我们已经看到,用来传递数据的八根线并不是专用的,而是很多器件大家共用的,所以我们称之为数据总线,总线英文名为 BUS,总即公交车道,谁都可以走。而十六根地址线也是连在一起的,称之为地址总线。半导体存储器的分类 :按功能可以分为只读和随机存
19、取存储器两大类。所谓只读,从字面上理解就是只可以从里面读,不能写进去,它类似于我们的书本,发到我们手里之后,我们只能读里面的内容,不可以随意更改书本上的内容。只读存储器的英文缩写为 ROM(READ ONLY MEMORY )所谓随机存取存储器,即随时可以改写,也可以读出里面的数据,它类似于我们的黑板,我可以随时写东西上去,也可以用黑板擦擦掉重写。随机存储器的英文缩写为 RAM(READ RANDOM MEMORY)这两种存储器的英文缩写一定要记牢。注意:所谓的只读和随机存取都是指在正常工作情况下而言,也就是在使用这块存储器的时候,而不是指制造这块芯片的时候。否则,只读存储器中的数据是怎么来的
20、呢?其实这个道理也很好理解,书本拿到我们手里是不能改了,可以当它还是原材料白纸的时候,当然可以由印刷厂印上去了。顺便解释一下其它几个常见的概念。PROM,称之为可编程存储器。这就象我们的练习本,买来的时候是空白的,可以写东西上去,可一旦写上去,就擦不掉了,所以它只能用写一次,要是写错了,就报销了。|EPROM,称之为紫外线擦除的可编程只读存储器。它里面的内容写上去之后,如果觉得不满意,可以用一种特殊的方法去掉后重写,这就是用紫外线照射,紫外线就象“消字灵” ,可以把字去掉,然后再重写。当然消的次数多了,也就不灵光了,所以这种芯片可以擦除的次数也是有限的几百次吧。FLASH,称之为闪速存储器,它
21、和 EPROM 类似,写上去的东西也可以擦掉重写,但它要方便一些,不需要光照了,只要用电学方法就可以擦除,所以就方便许多,而且寿面也很长(几万到几十万次不等) 。再次强调,这里的所有的写都不是指在正常工作条件下。不管是 PROM、EPROM 还是 FLASH ROM,它们的写都要有特殊的条件,一般我们用一种称之为“编程器”的设备来做这项工作。一旦把它装到它的工作位置,就不能随便改写了。单片机教程第四课:第一个小程序上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯不断地闪烁,这就有一定的实用价值了,比如可以把它当成汽车上的一个信号灯用了。怎样才能让灯不断地闪烁呢?实际上就是
22、要灯亮一段时间,再灭一段时间,也就是说要 P10 不断地输出高和低电平。怎样实现这个要求呢?请考虑用下面的指令是否可行: SETB P1.0 CLR P1.0 这是不行的,有两个问题,第一,计算机执行指令的时间很快,执行完 SETB P1.0 后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了 CLR P10 指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完CLR P10 后,不会再去执行 SETB P1.0 指令,所以以后再也没有机会让灯灭了。 为了解决这两个问题,我们可以做如下设想,第一,在执行完 SETB P1.0 后,延时一段时间(几秒或零点几秒)再执行第二条指令,就可以分
23、辨出灯曾灭过了。第二,在执行完第二条指令后,让计算机再去执行第一条指令,不断地在原地兜圈,我们称之为“循环“ ,这样就可以完成任务了。 以下先给出程序(后面括号中的数字是为了便于讲解而写的,实际不用输入): 主程序:LOOP: SETB P1.0 ;()LCALL DELAY ;()CLR P1.0 ;()LCALL DELAY ;()AJMP LOOP ;();以下子程序DELAY: MOV R7,#250 ;()D1: MOV R6,#250 ;()D2: DJNZ R6,D2 ;()DJNZ R7,D1 ;()RET ;()END ;()按上面的设想分析一下前面的五条指令。第一条是让灯灭
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 使用 教程
限制150内