标题: 3课:单片机存储器结构 [打印本页]
作者: admin 时间: 2013-5-21 02:44
标题: 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根线就能代表了。
半导体存储器的分类
按功能能分为只读和随机存取存储器两大类。所谓只读,从字面上理解就是只能从里面读,不能写进去,它类似于我们的书本,发到我们手回之后,我们只能读里面的内容,不能随意更改书本上的内容。只读存储器的英文缩写为ROM(READ ONLY MEMORY)
所谓随机存取存储器,即随时能改写,也能读出里面的数据,它类似于我们的黑板,我能随时写东西上去,也能用黑板擦擦掉重写。随机存储器的英文缩写为RAM(Random Access Memory)这两种存储器的英文缩写一定要记牢。
注意:所谓的只读和随机存取都是指在正常工作情况下而言,也就是在使用这块存储器的时候,而不是指制造这块芯片的时候。不然,只读存储器中的数据是怎么来的呢?其实这个道理也很好理解,书本拿到我们手里是不能改了,能当它还是原材料——白纸的时候,当然能由印刷厂印上去了。
顺便解释一下其它几个常见的概念。
PROM,称之为可编程存储器。这就象我们的练习本,买来的时候是空白的,能写东西上去,可一旦写上去,就擦不掉了,所以它只能用写一次,要是写错了,就报销了。(现在已经被淘汰)
EPROM,称之为紫外线擦除的可编程只读存储器。它里面的内容写上去之后,如果觉得不满意,能用一种特殊的办法去掉后重写,这就是用紫外线照射,紫外线就象“消字灵”,能把字去掉,然后再重写。当然消的次数多了,也就不灵光了,所以这种芯片能擦除的次数也是有限的——几百次吧。(现在已经被淘汰)
EEPROM,也叫 E2PROM称之为电可擦可编程只读存储器,它和EEPROM类似,写上去的东西也能擦掉重写,但它要方便一些,不需要光照了,只要用电就能擦除或者重新改写数据,所以就方便许多,而且寿命也很长(几万到几十万次不等)。
FLASH,称之为闪速存储器,属于EEPROM的改进产品,它的最大特点是必须按块(Block)擦除(每个区块的大小不定,不同厂家的产品有不同的规格), 而EEPROM则可以一次只擦除一个字节(Byte)。FLASH现在常用于大容量存储,比如u盘
再次强调,这里的所有的写都不是指在正常工作条件下。不管是PROM还是EPROM,它们的写都要有特殊的条件,一般我们用一种称之为“编程器”的设备来做这项工作,一旦把它装到它的工作位置,就不能随便改写了。
下一课:4课:第一个单片机小程序
作者: 631016442 时间: 2013-5-21 10:59
前几年学过,都忘记了。这资料不错,谢谢!
作者: ringer_wlw 时间: 2013-5-25 18:10
了解很多
作者: 张扬青春 时间: 2013-6-8 07:38
能不能多给一些具体的例子,地址分配这一块总该觉比较模糊
作者: sudo_apt-get 时间: 2013-8-11 16:30
受益匪浅啊 感谢楼主
作者: Utopia、 时间: 2013-8-18 10:35
比喻很形象{:soso_e179:}
作者: c2y3h2 时间: 2013-8-31 09:15
谢谢分享!!!!!
作者: ouyang1990 时间: 2013-9-11 22:04
一天看一点
作者: yuqiaojiangzhu 时间: 2013-11-19 23:42
这资料很好啊,通俗易懂,比看枯燥的专业书有意思多了。
作者: zhuguorong19 时间: 2013-12-19 16:54
收益,非常感谢此论坛的帮助!
作者: 易冷 时间: 2013-12-22 15:33
谢谢楼主,个人觉得你写的比那书写的还好
作者: yazhou71021 时间: 2013-12-26 22:24
这节很重要
作者: huiyi0319 时间: 2014-3-5 15:30
很好,学习了,谢谢
作者: lixichunedu 时间: 2014-4-5 11:20
像楼主这样的高人才配做大学老师,现在的大学老师上课一点都没有趣味,只知道照本宣科PPT 都睡着了,原本美好的单片机学习兴趣就是被大学老师磨砂了...
作者: ivmmcu 时间: 2014-4-18 10:41
学习了,thanks。
作者: 雪中梅花 时间: 2014-5-15 14:56
感谢楼主学习了。
作者: bai926117 时间: 2014-5-28 17:30
有些懵!!
作者: yq11999 时间: 2014-6-5 22:39
又学到了
作者: 彭xianyang 时间: 2014-6-16 22:10
楼主好强大真的
作者: 06042021 时间: 2014-7-5 21:39
感谢楼主,比我在教材上学习好多了,一点都不乏味
作者: 亭子 时间: 2014-7-21 15:51
感谢楼主
作者: laotouzi 时间: 2014-7-21 16:34
Good,good。
作者: impel 时间: 2014-7-29 19:50
这资料不错,谢谢!
作者: zycheng 时间: 2014-8-1 13:14
太棒了
作者: 麟01 时间: 2014-8-4 16:12
初学者,先学单片机还是先学C语言?
作者: 浅墨画青梅 时间: 2014-8-29 13:51
要是四年前我知道这个论坛该多好啊,现在都毕业了
作者: xi.min 时间: 2014-9-9 22:54
学习了....
作者: mqkcq 时间: 2014-9-21 18:52
楼主厉害
作者: ziyuenet 时间: 2014-10-4 16:55
这资料很好啊,通俗易懂,比看枯燥的专业书有意思多了。
作者: dyp206 时间: 2014-11-12 16:21
通俗易懂,好!
作者: yjj2011 时间: 2014-12-15 15:26
初学者,跟您学习啦
作者: ardu 时间: 2014-12-16 12:04
学习学习
作者: pps111 时间: 2014-12-20 12:17
认真学习中
作者: danhm 时间: 2015-1-29 21:54
大学的时候很喜欢汇编,对这些搞得很清楚,好多年不用了,都忘完了
作者: 我的宝贝 时间: 2015-2-1 16:26
清晰明了。学习了
作者: zzqzhang 时间: 2015-2-24 15:27
谢谢分享,要好好学习。
作者: dimozun 时间: 2015-3-30 19:59
细致解析,赞一个
作者: 爱德华 时间: 2015-4-5 22:58
形象生动!
作者: WDSH 时间: 2015-4-9 20:15
写的太好了!看了不少的资料,重来没发现讲的这么通俗易懂的!楼主辛苦另了!期望出来更多更好的类似的教程
作者: 孤狼b组 时间: 2015-4-10 17:17
这套课程可不可以打包下载
作者: 十字路口十字路 时间: 2015-4-22 10:11
好资料啊,为什么不能下载 ,要是能下载就好了
作者: little_c 时间: 2015-6-13 08:38
大学时候学过,比起教材,这绝对的通俗。
作者: robin18532 时间: 2015-7-5 10:53
正适合初学 啊!
作者: 1146658338 时间: 2015-7-13 16:58
回复赚积分
作者: hzb123 时间: 2015-8-22 17:17
好形象生动
作者: hzb123 时间: 2015-8-29 21:58
通熟易懂,谢谢
作者: zhang1990 时间: 2015-9-11 18:51
谢谢楼主贡献...潜心看完他....
作者: yubozhi 时间: 2015-9-27 12:43
太经典了
作者: 隋二 时间: 2015-10-3 20:27
很好很详细,有的地方有点不懂
作者: madudu 时间: 2015-10-5 21:24
内容有点少,非常感谢
作者: 798265341 时间: 2015-10-16 14:59
讲得很好理解,不错
作者: wlr10120217 时间: 2015-11-14 13:29
讲的不错,通俗易懂
作者: yujuns 时间: 2015-12-1 16:58
有点事
作者: HJZ 时间: 2015-12-21 00:16
楼主能把一些很抽象的理伦用非常简单的比喻描述清楚,非法佩服!感谢了!
作者: fsdch 时间: 2016-1-23 11:41
"我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,"那个有颜色的字,是不是有误?
作者: forcx99831 时间: 2016-2-23 11:30
高手 666666666
作者: dhs9225 时间: 2016-3-7 15:48
学习中
作者: petertang 时间: 2016-4-2 12:05
跟您学习啦!简单明了!
作者: 来学习单片机 时间: 2016-4-15 00:21
学习了
作者: zhangjiahe 时间: 2016-4-25 15:09
说得很好,赞一个
作者: 多用表 时间: 2016-4-29 16:58
很好,学习了,谢谢
作者: 张宗学 时间: 2016-5-4 00:27
有点晕
作者: 坑神冷瞳 时间: 2016-6-17 14:55
受教了,万分感谢
作者: 燕子湖畔 时间: 2016-7-25 15:30
好资料,记下了这个资料还蛮详细的
作者: yjs 时间: 2016-9-25 10:35
有些内容真心不错
作者: abc_123 时间: 2016-10-24 09:02
很有用
作者: msifortinet 时间: 2016-10-26 08:32
找到好地方了,自学有方向
作者: B型血 时间: 2016-11-9 17:20
感谢楼主
作者: 随易而安 时间: 2016-12-3 15:25
学习了,
作者: 华美卧龙 时间: 2016-12-13 14:41
新手来也,感谢分享资料,后人乘凉
作者: 1560233113 时间: 2016-12-14 08:54
涨知识来
作者: 785240005 时间: 2017-1-26 14:14
这个好啊这个好
作者: zm614 时间: 2017-3-10 19:04
赞一个
作者: zm614 时间: 2017-3-10 19:04
复习一下
作者: Jjinheart 时间: 2017-4-8 21:39
谢谢大神的讲解
作者: 天下潞商 时间: 2017-4-10 06:41
楼主好强大真的。
作者: 姜姜姜姜 时间: 2017-4-13 20:43
老师讲的很详细
作者: xiaosheng0707 时间: 2017-4-14 14:36
楼主好强大真的
作者: 心情1314 时间: 2017-4-14 21:57
谢谢分享!!!!!
作者: 偶也 时间: 2017-4-27 21:17
大神带飞
作者: 偶也 时间: 2017-4-27 21:18
大神带飞
作者: Dymon 时间: 2017-5-23 16:12
发现了一个不错的论坛,这里边资料还是比较全面的,可以好好复习一下了
作者: 820590074 时间: 2017-5-28 12:06
谢谢分享。谢谢奉献。谢谢楼主。
作者: 伟讯科技 时间: 2017-5-31 09:29
能不能多给一些具体的例子,地址分配这一块总该觉比较模糊
作者: lanshou 时间: 2017-7-21 10:48
单元和小抽屉里的格子是一样吗?
作者: SIMPLE千堆雪 时间: 2017-7-22 08:59
很通俗易懂啊 谢谢楼主
作者: 发如雪 时间: 2017-8-1 19:37
谢谢提供
作者: Jackps27 时间: 2017-10-9 10:39
来抱抱楼主的大腿,刚刚开始接触,完全小白
作者: 老老家伙 时间: 2017-10-13 07:58
对存储器开始有一点点认识。谢谢!
作者: 孙唱唱 时间: 2017-10-24 18:22
以前只知道程序存储器ROM不知道read olny memory.只知道数据存储器RAM不知道random access memory.涨姿势了
作者: 电子FSY 时间: 2017-10-25 21:49
谢谢分享
作者: 白龙鱼服 时间: 2017-10-30 12:40
谢谢分享
作者: lyone2010 时间: 2017-11-2 03:25
谢谢分享,通俗易懂。
作者: 行痴 时间: 2017-11-6 15:43
谢谢分享!
作者: 追风筝 时间: 2017-11-9 09:38
感谢,赞一个
作者: allenlinhao 时间: 2017-12-4 11:49
不错,辛苦了
作者: chen19890708 时间: 2017-12-4 13:55
一点一滴学吧
作者: wyuejun8888 时间: 2017-12-8 09:56
讲的太形象了,教授级别了
作者: 小小黄 时间: 2017-12-10 11:52
新手,慢慢消化!!!
作者: 关闭v 时间: 2017-12-27 19:17
厉害了了了了了
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |