AT89S51单片机的内部资源有哪些,分别是怎么使用的?

如何做到单片机与外围电路的完美组合?

单片机对于初学者来说确实很难理解,不少学过单片机的同学或电子爱好者,甚至在毕业时仍旧是一无所获。基于此,电子发烧友网将整合《单片机关键知识点全攻略》,共分为四个系列,以飨读者,敬请期待!此系列对于业内电子工程师也有收藏和参考价值。

单片机关键知识点一览:

系列一

  点击浏览下一页1:单片机简叙

  点击浏览下一页2:单片机引脚介绍

  点击浏览下一页3:单片机存储器结构

  点击浏览下一页4:第一个单片机小程序

  点击浏览下一页5:单片机延时程序分析

  点击浏览下一页6:单片机并行口结构

  点击浏览下一页7:单片机的特殊功能寄存器

系列二

  点击浏览下一页8:单片机寻址方式与指令系统

  点击浏览下一页9:单片机数据传递类指令

  点击浏览下一页10:单片机数据传送类指令

  点击浏览下一页11:单片机算术运算指令

  点击浏览下一页12:单片机逻辑运算类指令

  点击浏览下一页13:单片机逻辑与或异或指令祥解

  点击浏览下一页14:单片机条件转移指令

系列三

  点击浏览下一页15:单片机位操作指令

  点击浏览下一页16:单片机定时器与计数器

  点击浏览下一页17:单片机定时器/计数器的方式

  点击浏览下一页18:单片机的中断系统

  点击浏览下一页19:单片机定时器、中断试验

  点击浏览下一页20:单片机定时/计数器实验

  点击浏览下一页21:单片机串行口介绍

系列四

  点击浏览下一页22:单片机串行口通信程序设计

  点击浏览下一页23:LED数码管静态显示接口与编

  点击浏览下一页24:动态扫描显示接口电路及程序

  点击浏览下一页25:单片机键盘接口程序设计

  点击浏览下一页26:单片机矩阵式键盘接口技术及

  点击浏览下一页27:关于单片机的一些基本概念

  点击浏览下一页28:实际案例实践——单片机音乐程序设计

  1:单片机简叙

  什么是单片机 一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。

  单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。

  2:单片机引脚介绍

  点击浏览下一页

  单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

  ⒈ 电源:

  ⑴ VCC - 芯片电源,接+5V;

  ⑵ VSS - 接地端;

  ⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

  ⒊ 控制线:控制线共有4根,

  ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲

  ① ALE功能:用来锁存P0口送出的低8位地址

  ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

  ⑵ PSEN:外ROM读选通信号。

  ⑶ RST/VPD:复位/备用电源。

  ① RST(Reset)功能:复位信号输入端。

  ② VPD功能:在Vcc掉电情况下,接备用电源。

  ⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。

  ① EA功能:内外ROM选择端。

  ② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

⒋ I/O线

  80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

  拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为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,这是规定,不能由我们来更改。

  点击浏览下一页

  图1

  名字有了,我们又怎样让它变‘高’或变‘低’呢?叫人做事,说一声就能,这叫发布命令,要计算机做事,也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。让一个管脚输出高电平的指令是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规定的,我们不去研究。第二步,在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件工具“编程器”。如果你还不知道是什么是编程器,我来介绍一下,就是把你在电脑上写出来来的代码用汇编器等编译器生成的一个目标烧写到单片机的eprom里面去的工具,80c51这种类型的单片机编程是一件很麻烦的事情,必要要先装到编程器上编程后才能在设备上使用,而目前最新的89s51单片机居然在线编程(isp)功能,不用拔出来利用简单的电路就可以实现把代码写入单片机内部,本站有详细的at89s51编程器制作教程

  我们将编程器与电脑连好,运行编程器的软件,然后在编缉区内写入(D2H,90H)见图2,

  点击浏览下一页

  图2

  写入……好,拿下片子,把片子插入做好的电路板,接通电源……什么?灯不亮?这就对了,因为我们写进去的指令就是让P10输出高电平,灯当然不亮,要是亮就错了。现在我们再拨下这块芯片,重新放回到编程器上,将编缉区的内容改为(C2H,90H),也就是CLR P1.0,写片,拿下片子,把片子插进电路板,接电,好,灯亮了。因为我们写入的()就是让P10输出低电平的指令。这样我们看到,硬件电路的连线没有做任何改变,只要改变写入单片机中的内容,就能改变电路的输出效果。

  3:单片机存储器结构

  单片机内部存储结构分析

  我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。

  数的本质和物理现象:我们知道,计算机能进行数学运算,这可令我们非常的难以理解,计算机吗,我们虽不了解它的组成,但它总只是一些电子元器件,怎么能进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们能用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:

  请大家自已写上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根线就能代表了。

  点击浏览下一页

  3、存储器的选片及总线的概念

  至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,如图4所示。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的管脚进来后,不直接接到各单元去,中间再加一组开关(参考图4 )就行了。平时我们让开关关闭着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。注意图4,读和写信号同时还接入到另一个存储器,但是由于片选端不一样,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不一样时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-13
这是个哲学问题!想知道怎么使用,怎么达到完美,就要对事物多观察多比较多了解,所以应该先仔细阅读官方数据手册,然后实验证之,再跟其它类似的产品比较。要与外围电路完美组合,这不仅是技术,也是艺术,需要理论和经验。 (因为你没提出实质性问题,所以我给出的也是非实质性的回答!)本回答被网友采纳
第2个回答  2012-12-08
4组双向I/O口,4个中断,一个时钟,A/D ,D/A转换。基本就这些,怎么用,再分别查一下吧
第3个回答  2011-04-13
单片机都不会用就问这种问题。回去看书去。但你弄明白单片机就知道自己提的问题有多可笑。

AT89S51单片机的内部资源有哪些,分别是怎么使用的?
单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。 2、 振蒎电路:单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶体震荡器,电容,连上就能了,按图1接上即可。 3、 复位管脚:按图1中画法连好,至于复位是何含义及为何需要复要...

AT89S51单片机c语言程序在某引脚输出低电平的编程方法
首先,包含单片机内部资源的符号化定义头文件,该文件中包含了AT89S51单片机的资源符号。然后,在主函数main中定义输出P2.7引脚为低电平的代码。主函数无输入参数,也无需返回值,是单片机运行的复位入口。在主函数中,通过将P2_7赋值为0,使得引脚P2.7能够输出低电平,即接地状态。最后,使用死循环While...

AT89S51单片机c语言程序在某引脚输出高电平的编程方法
首先,确保包含AT89x52头文件,这是因为该文件中包含了单片机内部资源的符号化定义,包括了P1.3引脚的定义。在C语言中,通过包含此头文件,可以方便地访问和操作AT89S51单片机的各种寄存器。接下来,定义主函数`main(void)`。在单片机运行的复位入口处,通常需要定义一个`main`函数。此函数没有输入参数,...

...与一般单片机和微机组成结构比较,显著区别有?
5.电源范围更宽:AT89S51工作电压范围,达4-5.5V,而AT89C51在底于4.8V和高于5.3V的时侯则无法正常工作。6.抗干扰性更强:AT89S51内部集成看门狗计时器(Watchdog Timer),而AT89C51需外接看门狗计时器电路,或者用单片机内部定时器构成软件看门狗来实现软件抗干扰。

分析at89s52单片机的存储器结构
at89s52单片机内部高128(80~ffh)地址分配给特殊功能寄存器。这个地址空间和芯片内数据存储器的高128字节地址完全重叠,但两者在物理硬件上是完全独立的,用寻址方式来区分这个完全重叠的地址空间。使用直接寻址方式访问这个地址空间时,访问的是特殊功能寄存器;使用间接寻址方式访问这个地址空间时,访问的是...

数控车工毕业论文~~采纳了再加100
单片机存储器分为内部存储器和外部存储器,内部存储器又分为内部数据存储器和程序存储器,同样,外部存储器也分为程序和数据存储器。本系统采用AT89S51为核心单元,其本身带有128B的RAM和4KB的Flash内部程序存储器。对于数据存储器,内外两部分是独立编址的,用不同指令来访问不同的数据存储器,即,MOV访问片内,MOVC访问片...

急需智能仪器课程设计·· 加急
At89S51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机;片内含有4k字节的可反复擦写的只读程序存储器(PEROM)和128字节的随机存取数据存储器(RAM);器件采用AMTEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统;片内置通用2位中央处理器(CPU)和Flash存储单元,功能强大的AT89C51单片机可为您提供许多高...

51单片机系列的区别与特点介绍
另外,AT89C51、AT89s51替换8031后因不用外存储器,不必安装原电路的外存储器和373芯片。6、89S51与89C51的区别 MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场...

为何现在市场上的51单片机开发板都不再采用AT89S51单片机了?
我原本也只是学AT89S51的,但后来发现STC大部分芯片都自带了EEPROM,可以省去EEPROM的扩展电路。STC现出的一些芯片带有AD,捕获模式,PWM输出,多串口等等。像学单片机的话,我觉得STC还可以,因为自带资源还是蛮多的,跟AVR差不多了,如果能熟悉使用STC的芯片,我觉得再去学AVR单片机,或者arm等较高端的...

怎样设计一个用ADE7755和用AT89S51的单片机设计出一个电能表?
系统的中断资源分配为 INT0中断用于 AD7755脉冲检测,INT1用于秒同步检测,定时器 T0用于定时100ms,T1未使用,T2用于串行通讯程序波特率发生器,串行口中断设置为 RS485异步通讯接收中断。 2.2 程序模块的设计 电能表的工作过程主程序模块如图 3所示,每次上电要进行初始化,初始化包括对AT89S52单片机定时器、串行口、中断...

相似回答