找回密码
 注册
关于网站域名变更的通知
查看: 326|回复: 1
打印 上一主题 下一主题

单片机里要RAM干啥?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-30 12:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机就是个小计算机,大计算机少不了的数据存储系统,单片机一样有,而且往往和CPU集成在一起,更加显得小巧灵活。
7 c# W& m, q* I* t6 B  D

9 R6 B5 X& M3 U5 m5 |: o
* Y" a+ R. w$ m8 }4 E% \
直到90年代初,国内容易得到的单片机就是8031:不带存储器的芯片,要想工作,还必须外加RAM和ROM,单片机成了3片机......
! E% i1 S/ N+ _4 r/ _2 j# C4 `: d
* k7 W4 g; v' N
现在不同了,大的小的又是51,又是AVR又是STC,还有什么430,PIC等等,都各说各的好,可是谁也不敢说“我不要存储器”。
8 q9 Q+ i* Z# n; b, Q2 u$ W4 b+ _
% M, ?/ c# Z1 v+ W+ j, j, O
单片机的数据存储手段* A' R- J8 D* Y, V/ t. \6 v
4 p& K4 @: `0 r7 ^  I) q

6 W4 v# {+ S3 w
# u- e! B5 Q* a  ]$ @4 V程序存储器ROM
, N- s4 }5 m) V: R: w3 B2 p
# p! R6 {; ]# E8 B

& i5 I: @7 Z) O3 r$ T, U

. I  P2 |6 m* ^

! d) z6 }1 Q2 e# W, y$ G( B2 o' Z
/ V& p  z% I4 ?* n4 x9 F
程序存储器里面存放的是单片机的灵魂:工作程序。
6 M' i9 r3 [0 \# l; _4 R

0 @. }# n' @( i+ H5 D/ O( U
小的可能只有1KB,最多只能装1024条8位数据,因为实际指令还有许多2字节,3字节指令,所以它还装不下1024条指令。大的也有128KB的。这些8位数据,要么在工厂里做模子光刻进去,要么一次性的烧写进去。
  m" I* w+ r" S& E, W8 S( L+ G

3 U& j, `, i. F# U
业余或开发,最多也就是用编程器这么一个特殊工具,把调试成功的机器码装载进去,或者像AVR单片机那样自己花几块钱做一条下载线,把电脑里这些东西灌进去(或许是AVR最吸引人之处)。
! a: |5 F$ l$ u" Q# s

2 f  [% n8 D3 T% y8 z6 I
它一旦进驻电脑的程序存储器中,除了借助上述装置便不能自由改写,在单片机运行时,只是从其中读出指令或固定的数据,所以给程序存储器一个“只读存储器”的别名,简写为ROM,包括用编程器写紫外线擦除内容的EPROM、用电擦除的EEPROM和现在新兴的FLASH ROM。

3 B$ E) J! K; V3 n5 B+ U1 O
+ C1 l! L9 D! R3 D+ k
. s3 Q' l& v' g# J
一次性写入的ROM,仅用于电路和程序固定的批量产品中,实际工作起来,都是一样的。

/ N4 E. i9 y$ E5 b( n% ~2 }  c
: }, u! r8 ^0 H& M# I) L2 b
为了定位ROM中的数据,每个8位存储单元都有一个固定的“地址”,通常用16进制数表示。例如,对于一个所谓4K的ROM,地址从0000H到0FFFH(即从0000,0001...4095),单片机运行时从哪个地址取数据,完全由程序本身决定,并不要我们干预。
& X% Z+ p$ G4 y* i% V

/ ?6 G2 @) K2 y. J5 a7 ~9 h) W
记住,给单片机一通电,它经过一个短暂的复位过程,立即转向ROM的最低地址0000H,在这里面放置的往往是一条“跳转”指令,它从这里一步跳到另一个地址:程序的真正起始地址,例如51机的0080H。

, L# [- C4 p: o% h' A4 n* g) v8 R; r7 B' P1 R
ROM是程序存储器,除了指令外,还包括运行程序必须的某些固定数据,例如:数据表。假如,我们要求在单片机的接口上输出00H到FFH(255)按正弦半波变化的数值,每秒10000次。如果硬要它按照公式一个个计算,对于它来说未免力不从心。可是我们可以把预先计算好的数值存入ROM中,到时候直接取出不是好多了?

+ p/ k6 v' \# `7 x5 J; ~/ x7 n3 w. V6 d' U3 N& V1 g- h
又如一个重要的应用:大家一定见过不少单片机的东西上面都有数码显示,那些个数字其实就是用单片机的口线控制数码管的字段电极电位。这些字形也是存放在ROM中的字模表,各个字模和0-9的数字(机器内当然是0000-0101二进制数)对应起来。常见的共阳极7段数码管,必须在阳极加正电,7个阴极都是地电位,才能显示数字"8",数字8对应的显示字码值是二进制数“10000000“(那个1对应的是小数点,高电位不让它显示)。
0 z: H$ ?( R1 K& R

. v# s  }: `+ j
数据存储器RAM
* `; I3 I" o! M7 C4 ]" K' _  ^% {
8 ?: f& ]$ f3 R: z, G$ ?! A. B5 [7 i7 [4 H8 P$ u1 ?" y! E8 s# u

" f( z. J- {) v) A6 h* N- E

" N# p4 C0 |: S3 ^  X/ Y  }9 `5 U; l6 ~; F1 i
这是个可以随时存取数据的一块存储器,也就是可以读(取)也可以写(存)的存储器,简称RAM。

2 R) \! a9 R* l9 h
; i( u$ J& X0 [  |; z
现在的单片机里面使用的RAM,属于静态RAM或SRAM,这个和电脑用的内存条有所不同。只要你把数据写入SRAM后,不断电或者不清除掉,这个数据就一直保存在那里。电脑用的是动态RAM,要不断给它加刷新脉冲才能保存数据。
0 ?( x( m, S0 O
: D; T6 ~1 M: r$ t# D' R
因为单片机处理的信息量比电脑小很多,所以它带的RAM也比较少:从完全不带、带128、256、...1K、2K,到4K,比ROM少多了。
3 d  w  l' j) l2 O3 w9 b
  e2 z- @8 \. X/ B7 o
因为实际上RAM只是作为数据临时存放的地方,除非进行图像处理需要存放大量的数据外。一般对于执行较简单任务的单片机,有这么多也够用,如果实在不够用也只能采取外加SRAM如6116、6264等等来扩展。

  u6 K7 h$ c/ P  Q. k# P+ W7 m  r, K
9 h- g. _5 K$ S% a/ R, t& N& U
' o  M8 B  V  _! `! D" K* B. b
为了对RAM单元存取8位二进制数,当然也得和ROM一样用“地址”来标示它的具体位置。假如某单片机有1K(1024)RAM,它的地址也是从0000到1024,或16进制数的0000H到03FFH。可见,和ROM的地址是一样的。

8 K* b8 \: C3 m
' z  f% q/ d* S) r. _) ^, Q% w
会不会混淆不清?3 v. m# U3 t: w2 l1 `" H
* Y5 b- ?* \* N! Z
. m4 g5 {5 }7 z6 r' J  v! w
不会,因为读ROM是由单片机的程序指针或转移指令或查表指令进行,而这些指令是不会进入RAM区的;读写RAM是另外的数据传送指令,也不会进入ROM区。这点也是和电脑不同之处,后者程序和数据都在内存条里面,地址不同,如果窜位了就会造成不可预见后果。单片机的这种存储器结构也称为哈佛结构。
9 R. r, [% v7 N! j4 B( ]( R  l% Z) E

- ^6 B' \2 z' D: _- F* Z
RAM在单片机里的用途  l  Z) \, X8 r, |9 ?
, R8 T7 i8 g' u. ~: e
6 B0 Z* s; {. A& w6 F) }
4 D6 s) z/ ]: z% N$ i
. X: R6 p: ]. i6 t8 @! x( x* C5 q& E
RAM在单片机里的用途,主要是存放临时数据。

8 X8 X; f# U; i) x$ t
8 z! @/ x- ]% N. E9 o
例如用单片机测温,每秒测1次,显示1分钟的平均值(1分钟更新一次):
- l3 w+ S2 D- c( G

$ {6 Z! h  u- t
我们先通过传感器、放大电路、A/D转换,把温度这个模拟量转变为成比例的二进制数,然后每秒钟1次把数字量通过输入口顺序存入到单片机的RAM中,然后对他们进行两两求和再平均的计算,最后的数值显示出来,然后把这60个存储单元统统写0清除旧数据,下次又是如此循环进行。
- Q; v" c" c. n9 j% A! ?: D
  H( q9 \2 K1 |% j
7 E: w( b# p: p- s2 s0 ?  X

# q% P! p3 w$ W% n6 C% c/ Y% T8 Q
2 X" R; p, x" F5 C: L$ [# ^9 {

该用户从未签到

2#
发表于 2020-4-30 13:50 | 只看该作者
大的也有128KB的。这些8位数据,要么在工厂里做模子光刻进去,要么一次性的烧写进去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-26 20:24 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表