搜索
bottom↓
回复: 12

12864 OLED液晶

[复制链接]

出0入0汤圆

发表于 2014-4-17 18:21:11 | 显示全部楼层 |阅读模式
用STC12C5A60S2在12864OLED液晶上任意显示一个点,用显存的方法,但显示的却是花屏,请问是什么原因?
以下是显存的程序:
uchar  xdata  OLED_GRAM[128][8];
//更新显存到LCD       
void OLED_Refresh_Gram(void)
{
        uchar i,n;                    
        for(i=0;i<8;i++)  
        {  
                OLED_WR_Byte (0xb0+i,OLED_CMD);    //设置页地址(0~7)
                OLED_WR_Byte (0x00,OLED_CMD);      //设置显示位置—列低地址
                OLED_WR_Byte (0x10,OLED_CMD);      //设置显示位置—列高地址   
                for(n=0;n<128;n++)OLED_WR_Byte(~OLED_GRAM[n][i],OLED_DATA);
        }   
}
//画点
//x:0~127
//y:0~63
//t:1 填充 0,清空                                  
void OLED_DrawPoint(uchar x,uchar y,uchar t)
{
        uchar pos,bx,temp=0;
        if(x>127||y>63)return;//超出范围了.
        pos=7-y/8;
        bx=y%8;
        temp=1<<(7-bx);
        if(t)OLED_GRAM[x][pos]|=temp;
        else OLED_GRAM[x][pos]&=~temp;            
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入93汤圆

发表于 2014-4-17 18:36:28 | 显示全部楼层
OLED是OLED,液晶是液晶

出0入0汤圆

发表于 2014-4-17 22:58:54 | 显示全部楼层
楼主还是上传一个工程吧,这样貌似看不出来问题

出0入0汤圆

 楼主| 发表于 2014-4-18 02:49:49 | 显示全部楼层
这段程序移植到32上完全没有问题!放到51上就不行了。不知道是不是RAM的问题。

本帖子中包含更多资源

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

x

出100入85汤圆

发表于 2014-4-18 13:18:04 | 显示全部楼层
注意大小端,数据引脚上下拉,还有内存大小128*8=1024=1K了

出0入0汤圆

 楼主| 发表于 2014-4-18 15:15:45 | 显示全部楼层
whatcanitbe 发表于 2014-4-18 13:18
注意大小端,数据引脚上下拉,还有内存大小128*8=1024=1K了

STC12C5A60S2的FLASH有60K,RAM有1280字节

出0入0汤圆

发表于 2014-4-19 00:33:22 | 显示全部楼层
本帖最后由 lswhome 于 2014-4-19 00:36 编辑
  1. UINT8 DispBuff[8][128];
  2.         for(y=0;y<8;y++)
  3.         {
  4.                 ST7565_Set_Pos(y,0);
  5.                 for(x=0;x<128;x++)
  6.                         ST7565_Write_Data(DispBuff[y][x]);//写入数据
  7.         }
复制代码

我是这样的,行地址设置自动增加,每一行(页)就设置一次地址,然后循环128次,就写入了一页的数据。目前没问题,使用60s2@24M自带的SPI,3毫秒左右刷满屏一屏

出0入0汤圆

 楼主| 发表于 2014-4-19 02:43:48 | 显示全部楼层
lswhome 发表于 2014-4-19 00:33
我是这样的,行地址设置自动增加,每一行(页)就设置一次地址,然后循环128次,就写入了一页的数据。目前 ...

请问您是用DST7565驱动的么?

出0入0汤圆

发表于 2014-4-19 03:08:04 | 显示全部楼层
xz199264 发表于 2014-4-19 02:43
请问您是用DST7565驱动的么?

那个OLED SSD1306 还是SH1106还是啥的,我记不好了,跟这个行列的排列方法是一样的,好像就只是初始化不太一样而已。
ST7565、UC1701X、1306、1106这几个控制器行列的排列方法好像都是一样的,指令也基本一样。。。。我记得我这里都是一个驱动,全都可以,就初始化稍微不同。。。用条件编译就搞定了吧

出0入0汤圆

发表于 2014-4-19 06:51:23 来自手机 | 显示全部楼层
ram溢出吧

出0入0汤圆

 楼主| 发表于 2014-4-19 09:27:29 | 显示全部楼层
lswhome 发表于 2014-4-19 03:08
那个OLED SSD1306 还是SH1106还是啥的,我记不好了,跟这个行列的排列方法是一样的,好像就只是初始化不 ...

现在我可以任意显示一个点,但再多就不行了,出错,两个点以上就排在一行了,水平没问题,就是高度都一样。能参考一下您的程序么?

出0入0汤圆

 楼主| 发表于 2014-4-19 09:28:57 | 显示全部楼层

我用STC12C5A60S2的FLASH,有60K.应该没有问题吧。

出0入0汤圆

发表于 2014-4-19 10:20:30 | 显示全部楼层
首先,STC默认是弱上拉,高速时候可能向上跳变的速度不够。

其次,请检查编译器结果,是否xdata只消耗了1024?多一字节也不行
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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