单片机背后的学问可真不少!

发布者:初入茅庐最新更新时间:2020-01-30 来源: elecfans关键字:单片机  指令  编程器 手机看文章 扫描二维码
随时随地手机看文章

我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?

这个地方就是单片机内部的只读存储器即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)。


存储器的工作原理

存储器构造

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


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


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


存储器译码

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


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

至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。


办法当然很简单,当外面的线接到集成电路的引脚进来后,不直接接到各单元去,中间再加一组开关就行了。平时我们让开关打开着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。


如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。读和写信号同时还接入到另一个存储器,但是由于片选端不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不同时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。


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

关键字:单片机  指令  编程器 引用地址:单片机背后的学问可真不少!

上一篇:基于C8051F系列单片机的数据采集系统USB接口设计
下一篇:单片机74HC138三八译码器的原理及应用方法

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

DIY 6位数显频率计
1.实验任务   利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHz的信号频率进行准确计数,计数误差不超过±1HZ。 2.电路原理图               图4.31.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P0.0-P0.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 (2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 (3).把“单片机系统”区域中的P3.4(T0)端子用导线连接到“频率产生器”区域中的W
[单片机]
DIY 6位数显频率计
89C51单片机与TLC2543芯片的串行A/D驱动程序设计
串行A/D转换器转换后的结果是以串行方式输出,数字量以串行方式输出可简化系统的连线,缩小电路板的面积,节省系统的资源。下面以TLC2543为例,介绍串行A/D驱动程序的设计。 89C51单片机与TLC2543芯片的接口电路图如下图所示。TLC2543的3个控制输入端CS(的反)、I/OCLOCK、DATAINPUT和一个数据输出端DATAOUT分别与单片机的P1.4、Pl.l、P1.2和P1.3引脚相连,单片机采用的晶振频率为12MHz。 电路设计时,我们将TLC2543有两个基准电压输入REF+、REF-分别与电源(VCC)、GND相连,这样连接可保证数字输出的满度和零点,但在高精度的测量要求中,如果VCC的质量一般,应
[单片机]
89C51<font color='red'>单片机</font>与TLC2543芯片的串行A/D驱动程序设计
利用精密模拟微控制器构建4mA至20mA环路供电温度监控器
电路功能与优势   该电路提供一种简单的高度集成温度.解决方案,它可以与4 mA至20 mA主机控制器接口。由于绝大部分电路功能都集成在精密模拟微控制器 ADuC7060/ ADuC7061 中,包括双通道24位Σ-Δ型ADC、ARM7处理器内核以及用于控制4 mA至20 mA反馈电路的DAC/PWM特性,因此本电路是一种成本非常低的温度监控解决方案。   ADuC7060/ADuC7061内集成的ADC和其它模拟电路性能优于其它集成模拟电路的微控制器竞争产品。与使用分立ADC和单独微控制器的解决方案相比,本电路堪称性价比最高、功耗最低、电路板面积最小的解决方案。高度集成和低功耗特性,使ADuC7060/ADuC7061能够直接采
[工业控制]
利用精密模拟<font color='red'>微控制器</font>构建4mA至20mA环路供电温度监控器
PIC单片机的4*4键盘子程序
!--StartFragment-- ;-------4*4键盘程序的使用-------- PC EQU 2 STATUS EQU 3 RA EQU 5 RB EQU 6 RC EQU 7 BIJIAO EQU 0F JIANZHI EQU 8 BUFFER EQU 9 BUFFER1 EQU 0AH BUFFER2 EQU 0BH COUNTER EQU 0CH CON1 EQU 0DH CON2 EQU 0EH PIC57 EQU 7FFH Z EQU 2 ;----------------------------- ORG PIC57
[单片机]
STM32单片机之ADC学习总结
因为公司的产品上需要使用AD来检测电池电压,要求不是很高,突然想用下DMA+ADC+TIM,以前以为很简单,实际使用中让我觉得很惭愧,遇到的问题让我一下子蒙了,不停的查资料,不停的测试,终于一个一个的问题都解决了,同时对stm32的ADC有了新的认识,并且打算再闲暇时间内将stm32的资源尽量的实践下。 我用的是STM32F4 来调试ADC3+DMA+TIM1(单通道),首先我先查看了下DMA的资料,之后参考官方提供的ADC3+DMA很快可以正常读取数据,之后我直接添加定时器触发AD转换,结果失败,我开始查资料看手册,逐渐对这三者之间的关系有了一个认识 首先定时器产生触发信号,AD检测到转换信号后开始转换,每转换
[单片机]
STM32<font color='red'>单片机</font>之ADC学习总结
单片机温度控制系统中的工频干扰及抑制措施
0 引 言 在研制分析测温仪时,尽管采取了有源滤波电路,但显示出的温度值个位仍然不稳定。根据A/D 转换电路分析,检测信号的不稳定电压在 0~0.5mv 之间,干扰信号主要来自电网的工频干扰。在电源整流过程中,产生了大量的高次谐波信号,这些干扰信号是造成显示不稳定的主要因素。抑制和消除工频干扰,我们采取了采样频率是工频(50Hz)整数(偶数)倍的双积分式 A/D 转换器,有效地解决了工频干扰问题。 1 干扰抑制原理分析 设A/D 转换器的输入信号为ui ,其包含真实信号uo 和 一系列工频干扰谐波信号ue 即: ui = uo + ue 式中ue 为: ue = U1 sinωt +U2 sin2ωt + U3 sin3ωt
[单片机]
<font color='red'>单片机</font>温度控制系统中的工频干扰及抑制措施
关于单片机的C语言编程基础知识(初学注意)
80C51上的 C语言 编程 C51的特色: (1)学习过C语言的同学在对单片机有了基本了解之后,就可以开始试着写一两个基于单片机的C语言的程序了。C51语言继承了ANSI C 的绝大部分的特性,基本的语法相同,同学们上手会比较快。但是,由于C51语言是对硬件进行控制的编程语言,其本身又在硬件结构上有所扩展以增强C语言对硬件的控制,如关键字sbit,data,code等(后面会讲他们是做什么的)。 (2)因为单片机不是我们平时用的计算机,他的英文名为MCU(微控制器),特点体现在这个 微 字。因而,它里面的硬件资源是非常少的,所以你在写程序的时候就要注意对RAM(存储数据)和ROM(存储程序)的使用。说白了,就是也程序的时
[单片机]
你应该知道的STM32F04x单片机时钟切换教程
本次编写的教程主要是针对STM32F04x系列的单片机,对于STM32单片机的时钟,想必使用过STM32的人都比较清楚,STM32它是基于 Cortex®-Mx系列内核的微处理器,芯片内部集成了丰富的外设。同时也集成了内部的时钟源。也就是说芯片不需要外接晶振就可以运行。但是大多数的使用情况都是使用了芯片外部的晶振,包括官方的标准固件库也都是默认使用外部晶振,但是有些特殊情况下,不需要使用外部晶振,这样可以节省一个晶振和两个谐振电容,最主要的是可以节省PCB板子的面积。但如果使用内部晶振,就得要编写程序,更改相关寄存器的值,切换至内部晶振才可以。对于芯片时钟源切换这样的事情,对高手来说是很简单,对于新手来说就有些搞不清了,因此本教程
[单片机]
你应该知道的STM32F04x<font color='red'>单片机</font>时钟切换教程
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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