教学内容:单片机概述
1、何谓单片机一台能够作业的核算机要有这样几个部份构成:CPU(进行运算、操控)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人核算机上这些部份被分红若干块芯片,装置一个称之为主板的印刷线路板上。而在单片机中,这些部份,悉数被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,并且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
天!PC中的CPU一块就要卖几千块钱,这么多东西做在一同,还不得买个天价!再说这块芯片也得十分大了。
不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功用多一些单片机也有引脚比较多的,如68引脚,功用少的只需10多个或20多个引脚,有的乃至只8只引脚。
为什么会这样呢?
功用有强弱,打个比方,商场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。别的这种芯片的出产量很大,技能也很老练,51系列的单片机现已做了十几年,所以价格就低了。
已然如此,单片机的功用必定不强,干吗要学它呢?
话不能这样说,实践作业中并不是任何需求核算机的场合都要求核算机有很高的功用,一个操控电冰箱温度的核算机莫非要用PIII?运用的关键是看是否够用,是否有很好的功用价格比。所以8051出来十多年,仍然没有被筛选,还在不断的发展中。
2、MCS51单片机和8051、8031、89C51等的联络
咱们往常老是讲8051,又有什么8031,现在又有89C51,它们之间究竟是什么联络?
MCS51是指由美国INTEL公司(对了,便是大名鼎鼎的INTEL)出产的一系列单片机的总称,这一系列单片机包含了好些种类,如8031,8051,8751,8032,8052,8752等,其间8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功用的增、减、改动而来的,所以人们习气于用8051来称号MCS51系列单片机,而8031是前些年在我国最盛行的单片机,所以许多场合会看到8031的称号。INTEL公司将MCS51的中心技能授权给了许多其它公司,所以有许多公司在做以8051为中心的单片机,当然,功用或多或少有些改动,以满意不同的需求,其间89C51便是这几年在我国十分盛行的单片机,它是由美国ATMEL公司开宣布产的。今后咱们将用89C51来完结一系列的试验
单片机的内部、外部结构(一)
一、单片机的外部结构
拿到一块芯片,想要运用它,首要有必要要知道怎样连线,咱们用的一块称之为89C51的芯片,下面咱们就看一下怎样给它连线。 1、电源:这当然是必不可少的了。单片机运用的是5V电源,其间正极接40引脚,负极(地)接20引脚。 2、振蒎电路:单片机是一种时序电路,有必要供给脉冲信号才干正常作业,在单片机内部已集成了振荡器,运用晶体振荡器,接18、19脚。只需买来晶振,电容,连上就能够了,按图1接上即可。 3、 复位引脚:按图1中画法连好,至于复位是何意义及为何需求复要复位,在单片机功用中介绍。 4、 EA引脚:EA引脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开端作业了。
二、 使命剖析
咱们的榜首个使命是要用单片机点亮一只发光二极管LED,明显,这个LED有必要要和单片机的某个引脚相连,不然单片机就无法操控它了,那么和哪个引脚相连呢?单片机上除了方才用掉的5个引脚,还有35个,咱们将这个LED和1脚相连。(见图1,其间R1是限流电阻)
依照这个图的接法,当1脚是高电平常,LED不亮,只需1脚是低电平常,LED才发亮。因而要1脚咱们要能够操控,也便是说,咱们要能够让1引脚按要求变为高或低电平。即然咱们要操控1脚,就得给它起个姓名,总不能就叫它一脚吧?叫它什么姓名呢?规划51芯片的INTEL公司现已起好了,就叫它P1.0,这是规则,不能够由咱们来更改。
姓名有了,咱们又怎样让它变高或变低呢?叫人干事,说一声就能够,这叫发布指令,要核算机干事,也得要向核算机发指令,核算机能听得懂的指令称之为核算机的指令。让一个引脚输出高电平的指令是SETB,让一个引脚输出低电平的指令是CLR。因而,咱们要P1.0输出高电平,只需写SETB P1.0,要P1.0输出低电平,只需写 CLR P1.0就能够了。
现在咱们现已有办法让核算机去将P10输出高或低电平了,可是咱们怎样才干核算机履行这条指令呢?总不能也对核算机也说一声完事吧。要处理这个问题,还得有几步要走。榜首,核算机看不懂SETB CLR之类的指令,咱们得把指令翻译成核算机能懂的办法,再让核算机去读。核算机能懂什么呢?它只懂相同东西——数字。因而咱们得把SETB P1.0变为(D2H,90H ),把CLR P1.0变为 (C2H,90H ),至于为什么是这两个数字,这也是由51芯片的规划者–INTEL规则的,咱们不去研讨。第二步,在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件东西”编程器”。
咱们将编程器与电脑连好,运转编程器的软件,然后在编缉区内写入(D2H,90H)见图2,写入……好,拿下片子,把片子刺进做好的电路板,接通电源……什么?灯不亮?这就对了,由于咱们写进去的指令便是让图2
P10输出高电平,灯当然不亮,要是亮就错了。现在咱们再拨下这块芯片,从头放回到编程器上,将编缉区的内容改为(C2H,90H),也便是CLR P1.0,写片,拿下片子,把片子插进电路板,接电,好,灯亮了。由于咱们写入的()便是让P10输出低电平的指令。这样咱们看到,硬件电路的连线没有做任何改动,只需改动写入单片机中的内容,就能够改动电路的输出作用。
三、单片机内部结构剖析
咱们来考虑一个问题,当咱们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就能够履行这条指令,那么这条指令必定保存在单片机的某个当地,并且这个当地在单片机掉电后仍然能够坚持这条指令不会丢掉,这是个什么当地呢?这个当地便是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?方才咱们不是分明把两个数字写进去了吗?原本在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,方才咱们是用的编程器,在特别的条件下由外部设备对ROM进行写的操作,在单片机正常作业条件下,只能从那面读,不能把数据写进去,所以咱们仍是把它称为ROM。
半导体存储器
几个基本概念
数的实质和物理现象。
咱们知道,核算机能够进行数学运算,这可令咱们十分的难以了解,核算机吗,咱们虽不了解它的组成,但它总仅仅一些电子元器材,怎样能够进行数学运算呢?咱们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,终究写出成果,运算的原材料:37、45和成果:82都是写在纸上的,核算机中又是放在什么当地呢?为了处理这个问题,先让咱们做一个试验:
这儿有一盏灯,咱们知道灯要么亮,要么不亮,就有两种状况,咱们能够用’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,是由于输出电路输出高电平,给灯通了电。因而,灯亮和灭就能够用电路的输出是高电平仍是低电平来代替了。这样,数字就和电平的高、低联络上了。(请想一下,咱们还看到过什么样的相似的比方呢?(水兵之)灯语、旗语,电报,乃至红、绿灯)
位的意义:
经过上面的试验咱们现已知道:一盏灯亮或许说一根线的电平的凹凸,能够代表两种状况:0和1。实践上这便是一个二进制位,因而咱们就把一根线称之为一“位”,用BIT表明。
字节的意义:
一根线能够表于0和1,两根线能够表达00,01,10,11四种状况,也便是能够表于0到3,而三根能够表达0-7,核算机中通常用8根线放在一同,一起计数,就能够表过到0-255总共256种状况。这8根线或许8位就称之为一个字节(BYTE)。不要问我为什么是8根而不是其它数,由于我也不知道。(核算机国际是一个人工的国际,不是自然界,许多作业你无法问为什么,只能说:它是一种规则,咱们在今后的学习过程中也要留意这个问题)
存储器的作业原理:
1、存储器结构
存储器便是用来寄存数据的当地。它是运用电平的凹凸来寄存数据的,也便是说,它寄存的实践上是电平的高、低,而不是咱们所习气以为的1234这样的数字,这样,咱们的一个疑团就解开了,核算机也没什么奥秘的吗。
图2 图3
让咱们看图2。这是一个存储器的示目的:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子便是用来寄存“电荷”的,电荷经过与它相连的电线传进来或开释掉,至于电荷在小格子里是怎样存的,就不必咱们操心了,你能够把电线幻想成水管,小格子里的电荷就象是水,那就好了解了。存储器中的每个小抽屉便是一个放数据的当地,咱们称之为一个“单元”。
有了这么一个结构,咱们就能够开端寄存数据了,想要放进一个数据12,也便是00001100,咱们只需把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图3)。可是问题出来了,看图2,一个存储器有许多单元,线是并联的,在放入电荷的时分,会将电荷放入一切的单元中,而开释电荷的时分,会把每个单元中的电荷都放掉,这样的话,不论存储器有多少个单元,都只能放同一个数,这当然不是咱们所期望的,因而,要在结构上稍作改变,看图2,在每个单元上有个操控线,我想要把数据放进哪个单元,就给一个信号这个单元的操控线,这个操控线就把开关翻开,这样电荷就能够自在流动了,而其它单元操控线上没有信号,所以开关不翻开,不会受到影响,这样,只需操控不同单元的操控线,就能够向各单元写入不同的数据了,相同,假如要某个单元中取数据,也只需翻开相应的操控开关就行了。
2、存储器译码
那么,咱们怎样来操控各个单元的操控线呢?这个还不简略,把每个单元元的操控线都引到集成电路的外面不就行了吗?作业可没那么简略,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不可,怎样办?要主意削减线的数量。
咱们有一种办法称这为译码,简略介绍一下:一根线能够代表2种状况,2根线能够代表4种状况,3根线能够代表几种,256种状况又需求几根线代表?8种,8根线,所以65536种状况咱们只需求16根线就能够代表了。
图4
3、存储器的选片及总线的概念
至此,译码的问题处理了,让咱们再来重视别的一个问题。送入每个单元的八根线是用从什么当地来的呢?它便是从核算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器材,如图4所示。这样问题就出来了,这八根线已然不是存储器和核算机之间专用的,假如总是将某个单元接在这八根线上,就不好了,比方这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,仍是低电平?岂非要打架看谁历害了?所以咱们要让它们别离。办法当然很简略,当外面的线接到集成电路的引脚进来后,不直接接到各单元去,中心再加一组开关(参阅图4)就行了。平常咱们让开关翻开着,假如的确是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线挑选:读操控端、写操控端和片选端。要将数据写入片中,先选中该片,然后宣布写信号,开关就合上了,并将传过来的数据(电荷)写入片中。假如要读,先选中该片,然后宣布读信号,开关合上,数据就被送出去了。留目的4,读和写信号一起还接入到另一个存储器,可是由于片选端不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误解”而开门,形成抵触。那么会不一起选中两片芯片呢?只需是规划好的体系就不会,由于它是由核算操控的,而不是咱们人来操控的,假如真的呈现一起呈现选中两片的状况,那便是电路出了毛病了,这不在咱们的评论之列。
从上面的介绍中咱们现已看到,用来传递数据的八根线并不是专用的,而是许多器材咱们共用的,所以咱们称之为数据总线,总线英文名为BUS,总即公交车道,谁者能够走。而十六根地址线也是连在一同的,称之为地址总线。
半导体存储器的分类
按功用能够分为只读和随机存取存储器两大类。所谓只读,从字面上了解便是只能够从里边读,不能写进去,它相似于咱们的书本,发到咱们手回之后,咱们只能读里边的内容,不能够随意更改书本上的内容。只读存储器的英文缩写为ROM(READ ONLY MEMORY)
所谓随机存取存储器,即随时能够改写,也能够读出里边的数据,它相似于咱们的黑板,我能够随时写东西上去,也能够用黑板擦擦掉重写。随机存储器的英文缩写为RAM(READ RANDOM MEMORY)这两种存储器的英文缩写必定要记牢。
留意:所谓的只读和随机存取都是指在正常作业状况下而言,也便是在运用这块存储器的时分,而不是指制作这块芯片的时分。不然,只读存储器中的数据是怎样来的呢?其实这个道理也很好了解,书本拿到咱们手里是不能改了,能够当它仍是原材料——白纸的时分,当然能够由印刷厂印上去了。
趁便解释一下其它几个常见的概念。
PROM,称之为可编程存储器。这就象咱们的练习本,买来的时分是空白的,能够写东西上去,可一旦写上去,就擦不掉了,所以它只能用写一次,要是写错了,就报销了。
EPROM,称之为紫外线擦除的可编程只读存储器。它里边的内容写上去之后,假如觉得不满意,能够用一种特别的办法去掉后重写,这便是用紫外线照耀,紫外线就象“消字灵”,能够把字去掉,然后再重写。当然消的次数多了,也就不灵光了,所以这种芯片能够擦除的次数也是有限的——几百次吧。
FLASH,称之为闪速存储器,它和EPROM相似,写上去的东西也能够擦掉重写,但它要便利一些,不需求光照了,只需用电学办法就能够擦除,所以就便利许多,并且寿面也很长(几万到几十万次不等)。
再次着重,这儿的一切的写都不是指在正常作业条件下。不论是PROM、EPROM仍是FLASH ROM,它们的写都要有特别的条件,一般咱们用一种称之为“编程器”的设备来做这项作业,一旦把它装到它的作业方位,就不能随意改写了。
单片机的内外部结构剖析(二)一、程序的完善
上一次咱们的程序实在是没什么用,要灯亮还要重写一下片子,下面咱们要让灯不断地闪耀,这就有必定的实用价值了,比方能够把它当成轿车上的一个信号灯用了。怎样才干让灯不断地闪耀呢?实践上便是要灯亮一段时刻,再灭一段时刻,也便是说要P10不断地输出高和低电平。怎样完成这个要求呢?请考虑用下面的指令是否可行:
SETB P10
CLR P10
……
这是不可的,有两个问题,榜首,核算机履行指令的时刻很快,履行完SETB P10后,灯是灭了,但在极短时刻(微秒级)后,核算机又履行了CLR P10指令,灯又亮了,所以底子分辩不出灯曾灭过。第二,在履行完CLR P10后,不会再去履行SETB P10指令,所以今后再也没有机会让灭了。
为了处理这两个问题,咱们能够做如下想象,榜首,在履行完SETB P10后,延时一段时刻(几秒或零点几秒)再履行第二条指令,就能够分辩出灯曾灭过了。第二在履行完第二条指令后,让核算机再去履行榜首条指令,不断地在原地兜圈,咱们称之为”循环”,这样就能够完结使命了。
以下先给出程序(后边括号中的数字是为了便于解说而写的,实践不必输入):
;主程序:
LOOP: SETB P10 ;(1)
LCALL DELAY ;(2)
CLR P10 ;(3)
LCALL DELAY ;(4)
AJMP LOOP ;(5)
;以下子程序
DELAY: MOV R7,#250 ;(6)
D1: MOV R6,#250 ;(7)
D2: DJNZ R6,D2 ;(8)
DJNZ R7,D1 ;(9)
RET ;(10)
END ;(11)
按上面的想象剖析一下前面的五条指令。
榜首条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条一模相同,也是延时,第五条应当是转去履行榜首条指令。第二和第四条完成的原理稍后谈,先看第五条,LJMP是一条指令,意思是搬运,往什么当地搬运呢?后边跟的是LOOP,看一下,什么当地还有LOOP,对了,在榜首条指令的前面有一个LOOP,所以很直观地,咱们能够认识到,它要转到榜首条指令处。这个榜首条指令前面的LOOP被称之为标号,它的用处便是给这一行起一个姓名,便于运用。是否必定要给它起名叫LOOP呢?当然不是,起什么姓名,完全由编程序的人决议,能够称它为A,X等等,当然,这时,第五条指令LJMP后边的姓名也得跟着改了。
第二条和第四条指令的用处是延时,它是怎样完成的呢?指令的方式是LCALL,这条指令称为调用子程序指令,看一下指令后边跟的是什么,DELAY,找一下DELAY,在第六条指令的前面,明显,这也是一个标号。这条指令的作用是这样的:当履行LCALL指令时,程序就转到LCALL后边的标号所标定的程序处履行,假如在履行指令的过程中遇到RET指令,则程序就返回到LCALL指令的下面的一条指令持续履行,从第六行开端的指令中,能够看到的确有RET指令。在履行第二条指令后,将转去履行第6条指令,而在履行完6,7,8,9条指令后将遇到第10条令:RET,履行该条指令后,程序将回来履行第三条指令,行将P10清零,使灯亮,然后又是第四条指令,履行第四条指令便是转去履行第6,7,8,9,10条指令,然后回来履行第5条指令,第5条指令便是让程序回到第1条开端履行,如此循环往复,灯就在不断地亮、灭了。
在标号DELAY标志的这一行到RET这一行中的一切程序,这是一段延时程序,大约延时零点几秒,至于详细的时刻,今后咱们再学习怎样核算。程序的终究一行是END,这不是一条指令,它仅仅告知咱们程序到此结束,它被称为”伪指令”。
二、单片机内部结构剖析:
为了知道延时程序是怎样作业的,咱们必需首要了解延时程序中呈现的一些符号,就从R1开端,R1被称之为作业寄存器。什么是作业寄存器呢?让咱们从现实生活中来找找答案。假如出一道数学题:123+567,让你答复成果是多少,你会立刻答出是690,再看下面一道题:123+567+562,要让你要上答复,就不这么简单了吧?咱们会怎样做呢?假如有张纸,就简单了,咱们先算出123+567=690,把690写在纸上,然后再算690+562得到成果是1552。这其间1552是咱们想要的成果,而690并非咱们所要的成果,可是为了得到终究成果,咱们又不得不先算出690,并记下来,这其实是一个中心成果,核算机中做运算和这个相似,为了要得到终究成果,往往要做许多步的中心成果,这些中心成果要有个当地放才行,把它们放哪呢?放在前面提到过的ROM中能够吗?明显不可,由于核算机要将成果写进去,而ROM是不能够写的,所以在单片机中还有一个区域称为RAM区(RAM是随机存取存储器的英文缩写),它能够将数据写进去。
特别地,在MCS-51单片机中,将RAM中分出一块区域,称为作业寄存器区。