This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Msp430 pocket kit电子水墨屏显示为什么会一闪一闪

显示上一帧和下一帧图片之间会有全白到全黑刷新两三次,用的是指导书里的例程,是程序的问题还是硬件本身就是如此呢

  • 电子墨水屏本身会闪,就像亚马逊的kindle也有闪屏现象。

    但你说的刷新两三次,是比较严重的情况,觉得应该能够进一步优化。

    手里没有这个硬件,不能给出更具体的分析验证了。。。

  • 屏幕分辨率250*122 用的spi接口 下面是例程里的代码 新手表示看不太懂。。 运行到for循环结束下面几行时开始闪然后图片出来 不知道为啥 有哪里可以优化下吗  

    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    //xx 图片显示函数 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    void DIS_IMG(unsigned char num)
    {
    unsigned int row, col;
    unsigned int pcnt;


    SPI4W_WRITECOM(0x4E);
    SPI4W_WRITEDATA(0x00); // set RAM x address count to 0;
    SPI4W_WRITECOM(0x4F);
    SPI4W_WRITEDATA(0xF9); // set RAM y address count to 250-1; 2D13
    DELAY_S(5);
    SPI4W_WRITECOM(0x24);
    DELAY_S(5);
    pcnt = 0; // 复位或保存提示字节序号
    for(col=0; col<250; col++) // 总共250 GATE列 // send 128x250bits ram 2D13
    {
    for(row=0; row<16; row++) // 总共128 SOURCE行,每个像素1bit,即 128/8=16 字节
    {
    switch (num)
    {
    case 1:
    SPI4W_WRITEDATA(DisBuffer[pcnt]);
    break;
    case 2:
    SPI4W_WRITEDATA(gImage_logo[pcnt]);
    break;
    case 3:
    SPI4W_WRITEDATA(gImage_Orientation[pcnt]);
    break;
    case PIC_WHITE:
    SPI4W_WRITEDATA(0xff);
    break;
    default:
    break;
    }
    pcnt++;
    }
    }
    SPI4W_WRITECOM(0x22);
    SPI4W_WRITEDATA(0xC7); // (Enable Clock Signal, Enable CP) (Display update,Disable CP,Disable Clock Signal)
    // SPI4W_WRITEDATA(0xF7); // (Enable Clock Signal, Enable CP, Load Temperature value, Load LUT) (Display update,Disable CP,Disable Clock Signal)
    SPI4W_WRITECOM(0x20);
    DELAY_mS(1);
    READBUSY();
    DELAY_S(DELAY_TIME);
    }

    void SPI4W_WRITECOM(unsigned char INIT_COM)
    {
    unsigned char TEMPCOM;
    unsigned char scnt;
    TEMPCOM=INIT_COM;
    nCS_H;
    nCS_L;
    SCLK_L;
    nDC_L;
    for(scnt=0;scnt<8;scnt++)
    {
    if(TEMPCOM&0x80)
    SDA_H;
    else
    SDA_L;
    DELAY_100nS(10);
    SCLK_H;
    DELAY_100nS(10);
    SCLK_L;
    TEMPCOM=TEMPCOM<<1;
    DELAY_100nS(10);
    }
    nCS_H;
    }

    void SPI4W_WRITEDATA(unsigned char INIT_DATA)
    {
    unsigned char TEMPCOM;
    unsigned char scnt;
    TEMPCOM=INIT_DATA;
    nCS_H;
    nCS_L;
    SCLK_L;
    nDC_H;
    for(scnt=0;scnt<8;scnt++)
    {
    if(TEMPCOM&0x80)
    SDA_H;
    else
    SDA_L;
    DELAY_100nS(10);
    SCLK_H;
    DELAY_100nS(10);
    SCLK_L;
    TEMPCOM=TEMPCOM<<1;
    DELAY_100nS(10);
    }
    nCS_H;
    }

  • 看程序,使用的是全局刷新的方法。

    建议尝试局部刷新试试,应该能改善闪屏的问题。但要注意,局部刷新容易产生残影。

  • 谢谢大手的建议 有个问题是这样的话局部帧与帧之间是不是还是会一闪一闪的呀 这个闪闪的能通过修改程序语句改善吗

  • 因为墨水屏的原理,闪是肯定要闪的。

    但可以降低闪的次数,每次刷新不要闪的太多太严重