发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表

51单片机总线扩展外设 -- 外部RAM测试

[复制链接]
262|3
手机看帖
扫描二维码
随时随地手机跟帖
tlled|  楼主 | 2023-1-15 17:30 | 显示全部楼层 |阅读模式
本帖最后由 tlled 于 2023-1-16 10:15 编辑

#申请原创#    @21小跑堂      
现在ARM芯片的内部存储和外设资源很丰富了,最近翻出了几个老旧芯片,设计个测试板来学习下51单片机总线的使用。

    一、硬件方面
    51单片机是学习MCU入门的基础,之前在教程上学习过外部总线的扩展方式。我设计这个板子主要是了解外设总线扩展的使用。   
外扩了2片6264(8K*8)RAM芯片,1片27C512芯片,1片UM82C55芯片和单色12864显示屏模块

    1.1、硬件实物图
    20230115163814.jpg

    1.2、电路图原理图
    20230115164053.png     20230115164111.png

    1.3、外部总线
    51单片机低8位地址线和数据线是共用的,需要地址锁存器来区分地址和数据线,比较常用的是74LS373或74LS273,我在原理图中设计兼容了这两种芯片。
    20230115171309.png
    这里使用到了MCU的ALE--地址锁存信号
    20230115171731.png

    外部总线使用了74LS138译码器来扩展外部设备的片选信号,连接示意图如下
    20230115172347.png

    电路图中,实际的连接。
    20230115165003.png

     这次测试的外部RAM地址总线地址:
     第一片6264地址范围:0000H~1FFFH (8K) , 在这个地址范围内,地址A15,A14,A13选择Y0端口,使能(U4)6264芯片
     第二片6264地址范围:2000H~3FFFH (8K) , 在这个地址范围内,地址A15,A14,A13选择Y1端口,使能(U5)6264芯片

    二、程序方面
    分别在RAM1(U4)和RAM2(U5)写入256个字节,变打印输出。
    访问外部总线设备使用到XBYTE,这个在头文件#include "absacc.h"中定义,使用时,要包含这个头文件。

    2.1、程序代码

#include "config.h"
void main(void)
{
        uint ram_addr=0;
        Init_Uart();                        
        TimerInit();
        //RAM1
        send_char_com(0x2A);
        for(ram_addr=0;ram_addr<256;ram_addr++)
        {
                XBYTE[ram_addr]=ram_addr;
                send_char_com(ram_addr);
        }
        send_char_com(0x2B);
        for(ram_addr=0;ram_addr<256;ram_addr++)
        {
                send_char_com(XBYTE[ram_addr]);
        }
        //RAM2
        send_char_com(0x2C);
        for(ram_addr=0;ram_addr<256;ram_addr++)
        {
                XBYTE[0x2000+ram_addr]=ram_addr;
                send_char_com(ram_addr);
        }
        send_char_com(0x2D);
        for(ram_addr=0;ram_addr<256;ram_addr++)
        {
                send_char_com(XBYTE[0x2000+ram_addr]);
        }

        while(1)
        {        
        }
}
    2.2、测试输出
    这里测试,我使用了STC89C52芯片,来完成外部RAM芯片的读写。
    2A开头是写入RAM1的数据,2B开头是从RAM1读出的数据
    2C开头是写入RAM2的数据,2D开头是从RAM2读出的数据。
    20230115170517.png
   
   电路图原理图: SCH_M51_BOARD.pdf (611.07 KB)

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 30.00 元 2023-01-17
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
forgot 2023-1-28 21:46 回复TA
点赞 
21小跑堂 2023-1-17 14:05 回复TA
传统51单片机RAM较小,大多需要外扩RAM,方便处理大量数据。在某些情况下,用普通51单片机通过片外扩展RAM要比直接使用增强型51单片机更能节约成本。 

相关帖子

cooldog123pp| | 2023-1-28 11:24 | 显示全部楼层
写的很详细,不过51带那么多外置ram应该是很远古的应用了吧,现在mcu自带的就很大了。

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则