找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3651|回复: 11
打印 上一主题 下一主题
收起左侧

c51单片机控制128*64显示屏,把部分数组设置为xdata屏幕不能正确显示,显示乱码

[复制链接]
跳转到指定楼层
楼主
问一下大家c51单片机控制128*64显示屏,把部分数组设置为xdata屏幕不能正确显示,显示乱码,什么原因?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:335709 发表于 2018-7-1 13:27 | 只看该作者
如果改之前不乱,改后乱的,那就是你改动那部分有问题。原因就在此了。
回复

使用道具 举报

板凳
ID:290578 发表于 2019-3-10 04:17 | 只看该作者
我也发现这个问题了, 数据使用code段的 没问题,说明显示函数本身没问题, 但xdata就是会乱码, 访问上不知出了什么问题, xdata段数据上下移动没问题的。
回复

使用道具 举报

地板
ID:471889 发表于 2019-3-10 09:27 | 只看该作者
放上代码与图片上来看看,LCD12864应该还好了
回复

使用道具 举报

5#
ID:466164 发表于 2019-3-10 11:59 | 只看该作者
没尝试过只知道,读取速度有差异。
回复

使用道具 举报

6#
ID:404797 发表于 2019-3-10 12:12 | 只看该作者
      俺也碰到这个问题。象下面这个例子,明明给xdata变量xdatastr赋值啦,可显示时为什么没内容。普通变量str就没这个问题。
#include<reg52.h>
sbit rs=P3^5;
sbit rw=P3^6;
sbit E=P3^7;
char *str="hello";
char xdata *xdatastr="It's A xdata str!";
//============================================
void delay(int ii)
{int i;for(i=0;i<ii;i++);
}
//-------------------------------------------
void writeCmd(unsigned char c)
{E=0;rw=0;rs=0;delay(10);
P1=c;delay(10);
E=1;delay(10);E=0;
}
//-------------------------------------------
void writeDat(unsigned char c)
{E=0;rw=0;rs=1;delay(10);
P1=c;delay(50);
E=1;delay(50);E=0;
}
//-------------------------------------------
void Prtstr(char *cp)
{char i=0;
while(cp!=0){writeDat(cp);i++;}
}
//--------------------------------------------
main()
{writeCmd(0x38);
writeCmd(0x0f);
Prtstr("str=");Prtstr(str);
writeCmd(0x80+0x40);
Prtstr("xdata str=");Prtstr(xdatastr);
while(1);
}

程序运行情况如下:

回复

使用道具 举报

7#
ID:475444 发表于 2019-3-11 07:03 | 只看该作者
zxwdown 发表于 2019-3-10 12:12
俺也碰到这个问题。象下面这个例子,明明给xdata变量xdatastr赋值啦,可显示时为什么没内容。普通变 ...

你拿错仿真了,别人要的是LCD12864. 再说了,LCD12864难吗?很简单啊,去了解一下显示汉字,显示字符,显示图片,知道页与列的概念,只要你要显示的东西合规,就不会有乱码!
这边有一大把12864的案例:http://www.51hei.com/bbs/space-uid-454000.html

评分

参与人数 1黑币 +8 收起 理由
struct00 + 8 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:404797 发表于 2019-3-11 12:51 | 只看该作者
就你?呸! 发表于 2019-3-11 07:03
你拿错仿真了,别人要的是LCD12864. 再说了,LCD12864难吗?很简单啊,去了解一下显示汉字,显示字符,显 ...

不好意思,我认为本楼的主要问题是xdata使用的问题,而不是显示问题。
回复

使用道具 举报

9#
ID:981034 发表于 2022-1-21 10:02 | 只看该作者
未搞清楚乱改,复原即可,我经常改程序当学习
回复

使用道具 举报

10#
ID:624769 发表于 2022-1-21 21:44 | 只看该作者
XDATA 牵涉到DPTR的操作,以及定义等等,
一般头文件都用 REG52.h  的人,估计建立项目时候单片机型号都是乱选的吧?

往往,单片机型号乱选,是造成XDATA不能正常工作根本原因。因为不同型号的单片机,编译的时候对于XDATA的操作都会不同。除非你用汇编,但是,有几个人用汇编呢?
回复

使用道具 举报

11#
ID:517951 发表于 2022-1-22 10:17 | 只看该作者
xdata 是要外接RAM 6116 ,如果实际电路没有,那不就是乱码?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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