立即注册
查看: 1520|回复: 2

[经验分享] 51单片机经典范例演练(二):对ROM容量进行拓展

已绑定手机
已实名认证
发表于 2021-11-24 17:00:31 | 显示全部楼层 |阅读模式 来自 广东省深圳市
有些情况下,单片机没有ROM或ROM容量不够时,我们需要对其进行拓展。
常见的ROM有紫外线擦除电可编程只读存储器(EPROM)、电擦除电可编程只读存储器(EEPROM)、Flash电擦除电可编程只读存储器(Flash EEPROM),这里我们优先选择电擦除的EEPROM。
由于51单片机是程序与数据分别存储的哈佛结构,因此对ROM的拓展也分为程序存储器与数据存储器这两个部分。

一、程序存储器的拓展
EEPROM,电可擦除可编程只读存储器既有可读写,又具有掉电保存的特点,因此EEPROM既可作为程序存储器又可以作为数据存储器。EEPROM一般以28为头命名,本节课本参考了《51单片机应用开发范例大全》,选择Atmel公司生产的AT28C64作为案例讲解。
AT28C64已经停产,可以用AT28C256代替(将ST28C256两个高位地址接地即可)。
1.jpg
1、AT28C64各引脚及功能
A0~A12  地址输入
D0~D7   数据输入/输出
~OE:数据输出使能端
~WE:写使能端
~CE:片选线
RDY/~BUSY就绪/忙输出
读出:当~CE和~OE为低电平且~WE为高电平时,由地址线所决定的存储单元中的数据发送到数据线;当~CE或~OE为高电平时,数据线设置为高阻态
字节写:当~OE为高电平、~CE或~WE为低电平时,在~WE或~CE加一个低电平脉冲来启动一个字节写过程,写入的地址在~WE或~CE的下降沿锁存,要写入的数据在~WE或~CE的上升沿锁存。
RDY/~BUSY:该引脚是一个开漏输出,可用于检测一个写过程是否结束。
如下图所示,进行连接即可:
2.jpg
当执行的程序地址大于单片机内部程序存储地址时,CPU会根据程序计数器的值自动到片外拓展的程序在程序存储器中取指令,并不需要额外的驱动代码。

二、外部数据存储器的扩展
数据存储器有两种拓展方式,一种是拓展RAM,另一种是拓展EEPROM,掉电后不丢失。
我们本次选择AT24系列EEPROM,这种可以在线读写的ROM芯片能让我们像使用硬盘一样的使用它。
AT24C02芯片的使用需要先了解我们还没有接触过的I2C通信。
51单片机并没有I2C功能,因此只能用通用I/O口进行软件模拟。
3.jpg
1、AT24C02各引脚功能
A0~A2用于片选
SDAI2C数据引脚
SCLI2C时钟引脚
WP高电平时为“写保护”,此时只能读,不能写
各硬件按如下方式进行连接:
4.jpg
在学习I2C通信之后,我们会回过头来编写I2C通信的驱动,完整的运行一遍。
51单片机的自身资源比较少,因此学会存储器的拓展对一些复杂或占用资源较多的算法来说很有必要。在第六期的课程中,我们会使用单片机实现一个简单的神经网络,实现神经网络模型算法对于单片机的存储量有一定要求,所以就需要外部存储器的帮助了。

发表于 2021-11-24 17:16:01 | 显示全部楼层 来自 北京市海淀区
学习了学习了
已绑定手机
发表于 2022-4-7 09:13:40 | 显示全部楼层 来自 上海市
学习的好帮手,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表