Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - facotl

Pages: [1]
2
Customer Projects / NHD-C12864A1Z-FSRGB-FBW-HT1 in action
« on: February 15, 2016, 09:27:28 AM »
Here is a demo of a small graphics engine I designed that allows me to embark moving pictures on a lightweight platform (Cortex M type, here a nRF52832) and being reasonable on the occupied memory size (compression). The screen Newhaven Display (NHD-C12864A1Z-FSRGB-FBW-HT1) which is given for 3-4 fps is here pushed to its limits with some tricks.

Demo video in on my tumblr page:
http://fabiencomte.tumblr.com/post/139358255959/voici-une-d%C3%A9mo-dun-petit-moteur-graphique-que

3
Hello,
It's about the pixel reactivity. I measured with scopemeter and i fill all the screen in about 10 ms. But the pixels that change from clear to black looks leasy (you can see the grey transition). The ones that change from black to clear are fast enough (you don't see the transition).

4
Hello,

Thank you for the response.
Maybe i not explicated my problem very well.
It's not a full screen of one color. It's an industrial display and i wish to update strings up to 3 to 4 times per second with a good lisibility. I noticed that when i draw a new string, time to be "clear" is around an half of second.

5
Hello,

Is there any initialisation setting that can improve display speed (clear to black and black to clear speeds) ?


6
Graphic LCDs / Re: NHD‐C12864A1Z‐FS(RGB)‐FBW‐HT1 Initialization
« on: January 13, 2016, 03:31:29 AM »
Ok i found sorry.

NHD to MPU schematic is with 1 on left (view from screen side) and i imagined it was bottom side.


7
Graphic LCDs / Re: NHD‐C12864A1Z‐FS(RGB)‐FBW‐HT1 Initialization
« on: January 13, 2016, 01:50:36 AM »
When i say doesn t work it s nothing on screen.

Can screen have been broken with a bad value of "V5 Voltage Regulator Internal Resistor Ratio Set" ?

8
Graphic LCDs / Re: NHD‐C12864A1Z‐FS(RGB)‐FBW‐HT1 Initialization
« on: January 13, 2016, 01:40:30 AM »
Hello,
I ported code on mbed for test and it doesn t work. I have blue backlight on if i call disp1 in while, and blue disapear if i just call disp1 before while.


#include "mbed.h"


DigitalOut mosi(PC_12);
DigitalOut sclk(PC_10);
DigitalOut cs(PA_13);
DigitalOut rst(PA_14);
DigitalOut a0(PC_3);


void comm_out(char c)
{
  int i;
  cs = 0; //digitalWrite(CS, LOW);
  a0 = 0;//digitalWrite(AO, LOW);
  wait(0.000001);
  for(i=0;i<8;i++)
  {
    if((c&0x80) == 0x80)
    {
      mosi = 1;
      sclk = 0;
      wait(0.000001);
      sclk = 1;
      wait(0.000001);
    }
    else
    {
      mosi = 0;
      sclk = 0;
      wait(0.000001);
      sclk = 1;
      wait(0.000001);
    }
    c = c<<1;
  }
  cs = 1; //digitalWrite(CS, HIGH);
  a0 = 1; //digitalWrite(AO, HIGH);
  wait(0.000001);
}

void data_out(unsigned char d)
{
  int i;
  cs = 0; //digitalWrite(CS, LOW);
  //digitalWrite(AO, HIGH);
  wait(0.000001);
  for(i=0;i<8;i++)
  {
    if((d&0x80) == 0x80)
    {
      mosi = 1;
      sclk = 0;
      wait(0.000001);
      sclk = 1;
      wait(0.000001);
    }
    else
    {
      mosi = 0;
      sclk = 0;
      wait(0.000001);
      sclk = 1;
      wait(0.000001);
    }
    d = d<<1;
  }
  cs = 1; //digitalWrite(CS, HIGH);
  wait(0.000001);
}
void disp1(unsigned char pic[1024])
{
    unsigned int a, i;
    unsigned char page = 0xB0;
    unsigned int x = 0;
       
    for(i=0;i<8;i++)
    {
       
        comm_out(page);
        comm_out(0x10);
        comm_out(0x00);
        for (a=0;a<128;a++)
        {
            data_out(pic[(a+x)]);
        }
                 x+=128;
         page++;
    }
}
void screen_init(){
  //pinMode(RES, OUTPUT);
  //digitalWrite(RES, LOW);
  rst = 0;
  //delay(120);
  wait(0.120);
  //digitalWrite(RES, HIGH);
  rst = 1;
  //pinMode(CS, OUTPUT);
  //pinMode(AO, OUTPUT);
  //DDRA = 0xFF;
  //PORTA = 0xFF;
  //digitalWrite(CS, HIGH);
  //digitalWrite(AO, HIGH);
  cs = 1;
  a0 = 1;
 
  comm_out(0xA2);  //added 1/9 bias
  comm_out(0xA0);   //ADC segment driver direction (A0=Normal)
  comm_out(0xC8);   //added
  comm_out(0xC0);   //COM output scan direction (C0=Normal)
  comm_out(0x40);   //Operating Mode
  comm_out(0x25);   //resistor ratio
  comm_out(0x81);   //electronic volume mode set
  comm_out(0x19);   //electronic volume registerset
  comm_out(0x2F);   //power control set
  comm_out(0xAF);   //displayON/OFF ‐ set to ON
}



int main()
{
    screen_init();
 
    unsigned char pic[1024];
   
    for (int i = 0; i < 1024; i++)
    {
        if (((i >> 4) & 0x00000001) > 0)
        {
            pic = 0xFF;
        }
        else
        {
            pic = 0x00;
        }
    }
   
    while(1) {
         disp1(pic);
 
 
    }
}

Pages: [1]