找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1487|回复: 10
收起左侧

关于C语言数组导致我oled不再点亮的问题

[复制链接]
ID:1080048 发表于 2023-5-26 16:02 | 显示全部楼层 |阅读模式
我正在通过51单片机在oled上画直线,可一旦我定义了oled_RAM[128][8]数组,然后我的oled就不亮了,之前写的多级菜单也没作用了,此外我已经更改target里的memory model为large了。我不知道是否与我定义的引脚有关,还是其他原因?
1.png
2.png
回复

使用道具 举报

ID:752974 发表于 2023-5-26 16:17 | 显示全部楼层
选用的CPU的RAM是多大的?注意空间。
回复

使用道具 举报

ID:1080048 发表于 2023-5-26 16:50 | 显示全部楼层
确实如2楼所说,我使用的是stc89c52rc,ram是8*128,更改memory model之后数全到xdata了,导致oled显示不出来,不过在画点的时候又出现了卡顿(没啥反应)的现象,我在想想吧
回复

使用道具 举报

ID:123289 发表于 2023-5-26 16:59 | 显示全部楼层
先查一下芯片的内存配置。
回复

使用道具 举报

ID:624769 发表于 2023-5-26 19:33 | 显示全部楼层
qaqrbt 发表于 2023-5-26 16:50
确实如2楼所说,我使用的是stc89c52rc,ram是8*128,更改memory model之后数全到xdata了,导致oled显示不出 ...

你到底看过手册么? 你哪来的自信 stc89c52rc  RAM 是 8x128 的?
所有  STC89xxxxxxRC  RAM 只有 512,  其中 XDATA 只有 256
只有 STC89xxxxxxRD 才有 1024 的 XDATA
回复

使用道具 举报

ID:1080048 发表于 2023-5-26 20:59 | 显示全部楼层
5楼说的对,抱歉之前一直没有看数据手册,我为我无知道歉,非常感谢五楼对我的指正
回复

使用道具 举报

ID:166284 发表于 2023-6-23 15:38 | 显示全部楼层
yzwzfyz 发表于 2023-5-26 16:59
先查一下芯片的内存配置。

我的用   STC12C5A60S2内部集成RAM 1280字节,其中 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024     也是出现了这个问题,  非常奇怪啊 ,  uchar displayRAM[8][127]或者uchar displayRAM[7][128]都没问题, 就是 uchar displayRAM[8][128] 会出现问题.....无解的存在,  按理说RAM是足够用了啊
回复

使用道具 举报

ID:166284 发表于 2023-6-23 15:39 | 显示全部楼层
munuc_w 发表于 2023-5-26 16:17
选用的CPU的RAM是多大的?注意空间。

我的用   STC12C5A60S2内部集成RAM 1280字节,其中 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024     也是出现了这个问题,  非常奇怪啊 ,  uchar displayRAM[8][127]或者uchar displayRAM[7][128]都没问题, 就是 uchar displayRAM[8][128] 会出现问题.....无解的存在,  按理说RAM是足够用了啊
回复

使用道具 举报

ID:883242 发表于 2023-6-23 16:46 | 显示全部楼层
zctwss321 发表于 2023-6-23 15:38
我的用   STC12C5A60S2内部集成RAM 1280字节渲� 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024 ...

你查编译生成的m51文件,数组显然越界了。
回复

使用道具 举报

ID:57657 发表于 2023-6-23 20:40 | 显示全部楼层
用unsigned char xdata指针检测下XRAM容量,数组越界会导致其他变量值异常修改。
回复

使用道具 举报

ID:624769 发表于 2023-6-23 22:23 | 显示全部楼层
zctwss321 发表于 2023-6-23 15:38
我的用   STC12C5A60S2内部集成RAM 1280字节,其中 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024 ...

你肯定 KEIL 里面用 large 了,你要用 Small 然后 uchar xdata  displayRAM[8][128]; 才行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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