xz199264 发表于 2014-4-17 18:21:11

12864 OLED液晶

用STC12C5A60S2在12864OLED液晶上任意显示一个点,用显存的方法,但显示的却是花屏,请问是什么原因?
以下是显存的程序:
ucharxdataOLED_GRAM;
//更新显存到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,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|=temp;
        else OLED_GRAM&=~temp;          
}

tim 发表于 2014-4-17 18:36:28

OLED是OLED,液晶是液晶

sgzzour 发表于 2014-4-17 22:58:54

楼主还是上传一个工程吧,这样貌似看不出来问题

xz199264 发表于 2014-4-18 02:49:49

这段程序移植到32上完全没有问题!放到51上就不行了。不知道是不是RAM的问题。

whatcanitbe 发表于 2014-4-18 13:18:04

注意大小端,数据引脚上下拉,还有内存大小128*8=1024=1K了

xz199264 发表于 2014-4-18 15:15:45

whatcanitbe 发表于 2014-4-18 13:18
注意大小端,数据引脚上下拉,还有内存大小128*8=1024=1K了

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

lswhome 发表于 2014-4-19 00:33:22

本帖最后由 lswhome 于 2014-4-19 00:36 编辑

UINT8 DispBuff;
        for(y=0;y<8;y++)
        {
                ST7565_Set_Pos(y,0);
                for(x=0;x<128;x++)
                        ST7565_Write_Data(DispBuff);//写入数据
        }
我是这样的,行地址设置自动增加,每一行(页)就设置一次地址,然后循环128次,就写入了一页的数据。目前没问题,使用60s2@24M自带的SPI,3毫秒左右刷满屏一屏

xz199264 发表于 2014-4-19 02:43:48

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

请问您是用DST7565驱动的么?

lswhome 发表于 2014-4-19 03:08:04

xz199264 发表于 2014-4-19 02:43
请问您是用DST7565驱动的么?

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

reynold007 发表于 2014-4-19 06:51:23

ram溢出吧

xz199264 发表于 2014-4-19 09:27:29

lswhome 发表于 2014-4-19 03:08
那个OLED SSD1306 还是SH1106还是啥的,我记不好了,跟这个行列的排列方法是一样的,好像就只是初始化不 ...

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

xz199264 发表于 2014-4-19 09:28:57

reynold007 发表于 2014-4-19 06:51
ram溢出吧

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

geniuskim 发表于 2014-4-19 10:20:30

首先,STC默认是弱上拉,高速时候可能向上跳变的速度不够。

其次,请检查编译器结果,是否xdata只消耗了1024?多一字节也不行
页: [1]
查看完整版本: 12864 OLED液晶