带你摸透单片机内部结构原理,让你豁然开朗!

发布者:科技飞翔最新更新时间:2022-12-20 来源: zhihu关键字:单片机  内部结构  数据 手机看文章 扫描二维码
随时随地手机看文章

一、单片机内部结构分析

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

二、几个基本概念

1、数的本质和物理现象

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

请大家自己写上3盏灯的情况000 001 010 011 100 101 110 111我们来看,这个000,001,101 不就是我们学过的的二进制数吗?本来,灯的亮和灭只是一种物理现象,可当我们把它们按一定的顺序排好后,灯的亮和灭就代表了数字了。让我们再抽象一步,灯为什么会亮呢?是因为输出电路输出高电平,给灯通了电。因此,灯亮和灭就可以用电路的输出是高电平还是低电平来替代了。这样,数字就和电平的高、低联系上了。(请想一下,我们还看到过什么样的类似的例子呢?(海军之)灯语、旗语,电报,甚至红、绿灯)。

2、位的含义

通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,可以代表两种状态:0和1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。

3、字节的含义

一根线可以表示0和1,两根线可以表达00,01,10,11四种状态,也就是可以表达0到3,而三根可以表达0~7,计算机中通常用8根线放在一起,同时计数,就可以表示0-255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。


存储器的工作原理

1、存储器构造


存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的吗。

如上图左所示:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你可以把电线想象成水管,小格子里的电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。

有了这么一个构造,我们就可以开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看上图右)。可是问题出来了,看上图右,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看上图右,在每个单元上有个控制线,我想要把数据放进哪个单元,就把一个信号给这个单元的控制线,这个控制线就把开关打开,这样电荷就可以自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不同单元的控制线,就可以向各单元写入不同的数据了,同样,如果要从某个单元中取数据,也只要打开相应的控制开关就行了。

2、存储器译码

那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种方法称这为译码,简单介绍一下:一根线可以代表2种状态,2根线可以代表4种状态,3根线可以代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就可以代表了。

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

至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的引脚进来后,不直接接到各单元去,中间再加一组开关就行了。平时我们让开关打开着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。读和写信号同时还接入到另一个存储器,但是由于片选端不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不同时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。

从上面的介绍中我们已经看到,用来传递数据的八根线并不是专用的,而是很多器件大家共用的,所以我们称之为数据总线,总线英文名为BUS,总即公交车道,谁也可以走。而十六根地址线也是连在一起的,称之为地址总线。



关键字:单片机  内部结构  数据 引用地址:带你摸透单片机内部结构原理,让你豁然开朗!

上一篇:基于工业物联网下的交通气象站如何实现远程监测和智能预警
下一篇:学好单片机编程设计的方法和3个步骤

推荐阅读最新更新时间:2024-11-11 21:21

p18f458单片机通讯程序
p IC 单片机 p18f458上实现发送 缓冲器 0向接收缓冲器0发送数据的自测试模式 //该程序运行在pic 单片机 p18f458上实现发送缓冲器0向接收缓冲器0发送数据的自测试模式,其中接收采用中断方式 //发送采用查询方式 #include p18f458.h int CAN _FLAG; //定义标志寄存器 //**************初始化子程序*************** void initcan() { TRISB=(TRISB|0X08)&0XFB; //设置CANRX/RB3为输入,CANTX/RB2为输出 //设置CAN的波特率为125K,在Fosc=4M时,Tbit=8us,假设BRP=01h
[单片机]
ICCV7 For AVR 使用教程 Atmega16 单片机
1 如何用ICCV7 For AVR建立单片机程序工程 1.1 桌面新建英文文件夹 不能取中文名称。 1.2 打开ICCV7 For AVR 点击新建 选文件夹 写文件名,不要写中文 点击保存 此时就已经建立好工程。工程就是指桌面那个文件夹里的所有东西。 右侧这里圈起来的就是一些文件,一般情况下,在Files文件夹里放.c文件,在Headers文件夹里放.h文件,在Documents里放.txt说明文档。 1.3 添加main.c文件 回到桌面文件夹,随便找一个main.c文件放到文件夹里。 回到ICCV7 For AVR软件中,右键点击Files,再左键选择Add File。 选择文件。 main.c
[单片机]
ICCV7 For AVR 使用教程 Atmega16 <font color='red'>单片机</font>
基于单片机和CDMA的无线通信车载温控系统
  该系统利用GSM远程通信系统控制车内空调等器械运作。用户通过短信形式达到人机互动,克服红外线、无线等远程控制距离短的问题,还可以实现实时监控汽车的状态,为车主提供便利。   1 系统原理与结构   1.1 系统功能介绍   本系统能以10次/s的速度自动采集现场的环境温度和光照强度、采集空调和窗帘的开闭状态,并通过LCD液晶屏实时地显示出来。温度的感应范围-55~+125℃,精度为±0.5℃。光强的强度范围分为强、较强、中、较弱、弱5档。空调和窗帘的状态为开或者关。   用户可以通过手机或者小灵通等终端与GSM模块连接的系统之间进行无线通信,通信范围为移动网络覆盖的所有范围,做到了真正的通信范围无穷大。具体的通信为:
[单片机]
基于<font color='red'>单片机</font>和CDMA的无线通信车载温控系统
PLC与单片机的本质区别是什么?
想搞清楚PLC与单片机有什么不同,在网上搜了许多,看得头都大了,还是一团雾水。最后把其中说到点子上的一些句子,综合起来认真分析总结,本人认为PLC与单片机的差别应该是: 1.PLC是应用单片机构成的比较成熟的控制系统,是已经调试成熟稳定的单片机应用系统的产品。有较强的通用性。 2.而单片机可以构成各种各样的应用系统,使用范围更广。单就“单片机”而言,它只是一种集成电路,还必须与其它元器件及软件构成系统才能应用。 3.从工程的使用来看,对单项工程或重复数极少的项目,采用PLC快捷方便,成功率高,可靠性好,但成本较高。 4.对于量大的配套项目,采用单片机系统具有成本低、效益高的优点,但这要有相当的研发力量和行业经验才能使系统稳定。 从
[单片机]
单片机软件UART的设计资料
  目前扩展串口的方法主要有以下方法, ①、采用串口扩展芯片实现,如ST16C550、ST16C554、SP2538、MAX3110等,虽然成本较高, 但系统的可靠性得到了保证,适用于数据量较大、串口需求较多的系统;②、采用分时切换的方法将一个串口扩展与多个串口设备通信,分时复用的方法成本低, 但只适用于数据量不大的场合, 并且只能由这个单片机主动和多个设备通信,实时性差;③、用软件模拟的方法扩展串口,其优势也是成本低、实时性好, 但要占用一些CPU时间。   一般的软件模拟扩展串口方法,使用1个I/O端口、1个INT外部中断和定时器,该方法扩展的串口有2个缺点,①、由于使用了INT外部中断,故只能使用2个INT外部中断扩展2个
[单片机]
PLC变量的数据类型整理
现在高端的PLC的变量都需要自己定义的,今天整理下PLC变量的数据类型 一. BOOL 布尔型变量可被赋予“TRUE”真或“FALSE”假。这个值为逻辑量,占用1 位存储空间 可以看作是普通PLC的辅助继电器 二.整型变量 BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT 和UDINT。 注意,当较长的数据类型转换为较短的数据类型时,会丢失高位信息 三.REAL 和LREAL 是浮点数,用于显示有理数。可以显示十进制数据,包括小数部分。 REAL 是32 位浮点数, LREAL 是64 位浮点数 四.STRING 是字符串类型,一般用的比较少 五.DATE、TIME、TOD、DT 几种为时间
[嵌入式]
PLC变量的<font color='red'>数据</font>类型整理
工业4.0大有可为 云计算、大数据是关键支撑
“中国制造2025和德国工业4.0本质都是力求实现传统制造业与信息化的深度融合,迎接数字经济时代的到来。”在CeBIT 2015 ICT峰会上,浪潮集团董事长兼CEO孙丕恕应邀做了主题为《加强中德IT产业合作 创新合作伙伴关系》的演讲,就数字经济时代传统制造业如何融合信息技术实现转型升级进行了精彩阐述,并展望中德企业广阔的合作前景。   在数据经济时代,传统制造业如何升级?孙丕恕给出的答案非常明确:无论是中国制造2025,还是德国工业4.0,其重点都是依托云计算、大数据、移动互联网、物联网等新兴技术,实现基于网络的生产制造数字化与智能化,即智能制造或工业互联网。网络是外在,数据是内容,大数据将成为新的生产力。   孙丕恕
[嵌入式]
东芝将增强矢量控制引擎嵌入式微控制器系列
东京--(美国商业资讯)--东芝公司(Toshiba Corporation)(TOKYO:6502)今日宣布,该公司将着手开发新系列嵌入式微控制器产品,其中包括一种高端电机控制协处理器“矢量控制引擎”(Vector Engine)。 近年来,市场对能源与节能产品的需求有所增长。东芝正通过着手开发解决方案来推动各领域智能社区的发展,而半导体则是这项工作的重要组成部分。目前,交流电机普遍用于消费及工业电机应用领域,但是,市场(尤其是消费品市场)对更节能的直流电机的需求非常强劲。然而,需要高超的技巧才能有效控制直流电机,因为我们需要一种更为简单的解决方案。 东芝是首批通过推出协处理器矢量控制(矢量控制引擎)来提高电机应用能效的企业
[工业控制]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved