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 - Michael_L

Pages: 1 ... 21 22 [23] 24
331
TFTs / Re: 2.4" TFT LCD Brightness Control
« on: April 01, 2014, 08:24:47 AM »
The backlight is independent of the TFT controller.  Therefore the latter would be correct; you would need to control the brightness externally.

332
Graphic LCDs / Re: NHD-C12864KGZ-FSW-GBW Readability problem
« on: March 28, 2014, 03:52:20 PM »
No problem!  How's that for lightning fast!  ;D

333
Character LCDs / Re: Problem with NHD-C0220BiZ LCD
« on: March 28, 2014, 03:50:17 PM »
Yes you can add custom characters to the CGRAM of the ST7036.  In the ST7036 datasheet, see pages 22-23 for details on the CGRAM, and pages 27 & 33 for details on how to use this command.  I've provided a small example below of me making a smiley face to address location 0x00 of the CGRAM:

Code: [Select]
void i2cwritecom(unsigned char c)
{
  Wire.beginTransmission(slave2w);  //slave2w = 0x3C (0x78 shifted over 1 bit)
  Wire.write(comsend);  //comsend = 0x00
  Wire.write(c);
  Wire.endTransmission();
}

void i2cwritedat(unsigned char d)
{
  Wire.beginTransmission(slave2w);
  Wire.write(datasend);  //datasend = 0x40
  Wire.write(d);
  Wire.endTransmission();
}

void CiZ_init()
{
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(0x39);
  delay(1);
  Wire.write(0x14);
  Wire.write(0x70);
  Wire.write(0x5E);
  Wire.write(0x6D);
  Wire.write(0x0C);
  Wire.write(0x01);
  Wire.write(0x06);
  Wire.endTransmission();
}

void setup()
{
  pinMode(RES, OUTPUT);
  pinMode(ASCL, OUTPUT);
  pinMode(ASDA, OUTPUT);
  digitalWrite(RES, HIGH);
  delay(10);
  digitalWrite(ASCL, LOW);
  digitalWrite(ASDA, LOW);
  delay(10);
  Wire.begin();
  delay(10);
  CiZ_init();
  delay(5);
  i2cwritecom(0x38);  //function set to set IS[2:1] to 0,0
  i2cwritecom(0x40);  //set CGRAM address (in this case, to 0x00)
  i2cwritedat(0x1B);   //write custom pattern to CGRAM
  i2cwritedat(0x00);   //
  i2cwritedat(0x0A);  //
  i2cwritedat(0x0A);  //
  i2cwritedat(0x00);  //
  i2cwritedat(0x04);  //
  i2cwritedat(0x11);  //
  i2cwritedat(0x0E);  //
  i2cwritecom(0x01);  //clear display and set DDRAM address to 0x00 (line 1, character 1)
  delay(2);  //2 ms delay
  i2cwritedat(0x00);  //write custom pattern stored in CGRAM address location 0x00 to DDRAM
}

334
Thank you for posting your results!

335
Graphic LCDs / Re: NHD-C12864KGZ-FSW-GBW Readability problem
« on: March 27, 2014, 05:38:04 PM »
You say the display works perfectly when plugged into the main board?  There may be an overlooked weak/loose connection somewhere on the extension board, or you may simply need to adjust the Electronic Volume command in your software to compensate for the "extended" setup.  Have you tried increasing/decreasing the value you are using with this command?  The command can be seen in the table of the controller's datasheet (page 50), here: http://www.newhavendisplay.com/app_notes/ST7565R.pdf
More details about the Electronic Volume command can be seen on pages 45 & 46.

336
Character LCDs / Re: I2C 'Busy' issue
« on: March 27, 2014, 05:28:52 PM »
Before I address the clear display command, first I would like to clear up the confusion regarding the i2c interface.

The ST7036 is a dot matrix LCD controller that can be used in several different ways.  There are several pins of the controller which are not accessible through the displays connections.  In particular, there are a couple of pins that dictate which interface is to be used.  Looking through the datasheet, you will see it can use a 4-bit/8-bit parallel , 4 line SPI, or i2c interface.  For this display, it is configured for use of an i2c interface only.  Anywhere in that datasheet where it talks about reading or checking busy flags, it is not applicable when using i2c (which is why it states what you have copied from page 14).  Therefore, there should be no read instructions used with this display.

As for the clear display command, if there is not a delay in place after you execute it, you will see exactly what you described.  As indicated in the ST7036 datasheet, this command (and the return home command) requires more execution time than the others.  To be safe  :), I like to use a 2ms delay after I execute either of these commands.

I have replicated the issue with an Arduino, and have posted my code below:

Code: [Select]
#include <Wire.h>

int RES = 22;
int ASDA = 20;
int ASCL = 21;

unsigned char text1[]={"  Newhaven Display  "};
unsigned char text2[]={" Clear Display Test "};
unsigned char text3[]={"   March 27, 2014   "};
unsigned char text4[]={"   Michael LaVine   "};

const char slave2w = 0x3C;   //(0x78 shifted over 1 bit)
const char comsend = 0x00;
const char datasend = 0x40;
const char line2 = 0xC0;

void show(unsigned char *text)
{
  int n, d;
  d=0x00;
  Wire.beginTransmission(slave2w);
  Wire.write(datasend);
  for(n=0;n<20;n++)
  {
    Wire.write(*text);
    ++text;
  }
  Wire.endTransmission();
}

void nextline(void)
{
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(line2);
  Wire.endTransmission();
}

void cleardisplay(void)
{
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(0x01);
  Wire.endTransmission();
}

void CiZ_init()
{
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(0x39);
  delay(1);
  Wire.write(0x14);
  Wire.write(0x70);
  Wire.write(0x5E);
  Wire.write(0x6D);
  Wire.write(0x0C);
  Wire.write(0x01);
  Wire.write(0x06);
  Wire.endTransmission();
}

void setup()
{
  pinMode(RES, OUTPUT);
  pinMode(ASCL, OUTPUT);
  pinMode(ASDA, OUTPUT);
  digitalWrite(RES, HIGH);
  delay(10);
  digitalWrite(ASCL, LOW);
  digitalWrite(ASDA, LOW);
  delay(10);
  Wire.begin();
  delay(10);
  CiZ_init();
  delay(5);
}

void loop()
{
  show(text1);
  nextline();
  show(text2);
  delay(1500);
  cleardisplay();
  delay(2);

  show(text3);
  nextline();
  show(text4);
  delay(1500);
  cleardisplay();
  delay(2);
}

I commented out the lines where you see delay(2); in the main loop, and saw the issue you are referring to.  I then uncommented these delays and ran the code again, and the display worked perfectly.  :D

337
Character LCDs / Re: Problem with NHD-C0220BiZ LCD
« on: March 26, 2014, 10:05:38 AM »
The same code works between the two displays, if the slave address is changed.  Do you have the same setup as you did with the C0216CiZ? I have provided some Arduino code for this display below, (you will see that it says C0216CiZ, but you will see in the comments by the slave address how it should be changed):

Code: [Select]
#include <Wire.h>

int RES = 22;
int ASDA = 20;
int ASCL = 21;

int test = 55;

unsigned char text1[]={"Newhaven Display"};
unsigned char text2[]={"    I2C TEST    "};
unsigned char text3[]={" March 26 2014  "};
unsigned char text4[]={" Michael LaVine "};

const char slave2w = 0x3C;  //3E for CiZ (0x7C shifted over 1 bit)  //3C for BiZ (0x78 shifted over 1 bit)
const char comsend = 0x00;
const char datasend = 0x40;
const char line2 = 0xC0;

void show(unsigned char *text)
{
  int n, d;
  d=0x00;
  Wire.beginTransmission(slave2w);
  Wire.write(datasend);
  for(n=0;n<16;n++)
  {
    Wire.write(*text);
    ++text;
  }
  Wire.endTransmission();
}

void nextline(void)
{
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(line2);
  Wire.endTransmission();
}

void CGRAM(void)
{
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(0x38);
  Wire.write(0x40);
  Wire.endTransmission();
  delay(10);
  Wire.beginTransmission(slave2w);
  Wire.write(datasend);
  Wire.write(0x00);
  Wire.write(0x1E);
  Wire.write(0x18);
  Wire.write(0x14);
  Wire.write(0x12);
  Wire.write(0x01);
  Wire.write(0x00);
  Wire.write(0x00);
  Wire.endTransmission();
}

void CiZ_init()
{
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(0x38);
  delay(10);
  Wire.write(0x39);
  delay(10);
  Wire.write(0x14);
  Wire.write(0x70);
  Wire.write(0x5E);
  Wire.write(0x6D);
  Wire.write(0x0C);
  Wire.write(0x01);
  Wire.write(0x06);
  Wire.endTransmission();
 
  CGRAM();
 
  Wire.beginTransmission(slave2w);
  Wire.write(comsend);
  Wire.write(0x39);
  Wire.write(0x01);
  test = Wire.endTransmission();
  Wire.endTransmission();
  if(test!=0)
  {
    while(1)
    {
      delay(100);
    }
  }
  delay(10);
}

void setup()
{
  pinMode(RES, OUTPUT);
  pinMode(ASCL, OUTPUT);
  pinMode(ASDA, OUTPUT);
  digitalWrite(RES, HIGH);
  delay(10);
  digitalWrite(ASCL, LOW);
  digitalWrite(ASDA, LOW);
  delay(10);
 
  delay(10);
  //CiZ_init();
  //delay(5);
}

void loop()
{
 
  Wire.begin();
  //TWBR = 12;
  //TWSR |= _BV(TWPS0);
  while(1)
  {
  CiZ_init();
  show(text1);
  nextline();
  show(text2);
  delay(1000);
 
  CiZ_init();
  show(text3);
  nextline();
  show(text4);
  delay(1000);
  }
}

339
Graphic LCDs / Re: NHD_12232KZ_mega.ino with arduino mega
« on: March 26, 2014, 09:53:57 AM »
The Arduino sketch I made only is meant to show how to initialize the display, and write data to the display RAM.  You should see alternating stripes on the display with this code.  If you would like to display characters (letters or numbers), you would need to accomplish this in software by using your own font table.  This is a graphics display and it is written to as such.  You should be able to find many different font tables on the Internet.  Here is one below, for example:

Code: [Select]
unsigned char Ascii_1[97][5]={     // Refer to "Times New Roman" Font Database...
                        //   Basic Characters
    {0xFF,0xFF,0xFF,0xFF,0xFF},     //   (  0)    - 0x0000 Empty set
    {0x00,0x00,0x4F,0x00,0x00},     //   (  1)  ! - 0x0021 Exclamation Mark
    {0x00,0x07,0x00,0x07,0x00},     //   (  2)  " - 0x0022 Quotation Mark
    {0x14,0x7F,0x14,0x7F,0x14},     //   (  3)  # - 0x0023 Number Sign
    {0x24,0x2A,0x7F,0x2A,0x12},     //   (  4)  $ - 0x0024 Dollar Sign
    {0x23,0x13,0x08,0x64,0x62},     //   (  5)  % - 0x0025 Percent Sign
    {0x36,0x49,0x55,0x22,0x50},     //   (  6)  & - 0x0026 Ampersand
    {0x00,0x05,0x03,0x00,0x00},     //   (  7)  ' - 0x0027 Apostrophe
    {0x00,0x1C,0x22,0x41,0x00},     //   (  8)  ( - 0x0028 Left Parenthesis
    {0x00,0x41,0x22,0x1C,0x00},     //   (  9)  ) - 0x0029 Right Parenthesis
    {0x14,0x08,0x3E,0x08,0x14},     //   ( 10)  * - 0x002A Asterisk
    {0x08,0x08,0x3E,0x08,0x08},     //   ( 11)  + - 0x002B Plus Sign
    {0x00,0x50,0x30,0x00,0x00},     //   ( 12)  , - 0x002C Comma
    {0x08,0x08,0x08,0x08,0x08},     //   ( 13)  - - 0x002D Hyphen-Minus
    {0x00,0x60,0x60,0x00,0x00},     //   ( 14)  . - 0x002E Full Stop
    {0x20,0x10,0x08,0x04,0x02},     //   ( 15)  / - 0x002F Solidus
    {0x3E,0x51,0x49,0x45,0x3E},     //   ( 16)  0 - 0x0030 Digit Zero
    {0x00,0x42,0x7F,0x40,0x00},     //   ( 17)  1 - 0x0031 Digit One
    {0x42,0x61,0x51,0x49,0x46},     //   ( 18)  2 - 0x0032 Digit Two
    {0x21,0x41,0x45,0x4B,0x31},     //   ( 19)  3 - 0x0033 Digit Three
    {0x18,0x14,0x12,0x7F,0x10},     //   ( 20)  4 - 0x0034 Digit Four
    {0x27,0x45,0x45,0x45,0x39},     //   ( 21)  5 - 0x0035 Digit Five
    {0x3C,0x4A,0x49,0x49,0x30},     //   ( 22)  6 - 0x0036 Digit Six
    {0x01,0x71,0x09,0x05,0x03},     //   ( 23)  7 - 0x0037 Digit Seven
    {0x36,0x49,0x49,0x49,0x36},     //   ( 24)  8 - 0x0038 Digit Eight
    {0x06,0x49,0x49,0x29,0x1E},     //   ( 25)  9 - 0x0039 Dight Nine
    {0x00,0x36,0x36,0x00,0x00},     //   ( 26)  : - 0x003A Colon
    {0x00,0x56,0x36,0x00,0x00},     //   ( 27)  ; - 0x003B Semicolon
    {0x08,0x14,0x22,0x41,0x00},     //   ( 28)  < - 0x003C Less-Than Sign
    {0x14,0x14,0x14,0x14,0x14},     //   ( 29)  = - 0x003D Equals Sign
    {0x00,0x41,0x22,0x14,0x08},     //   ( 30)  > - 0x003E Greater-Than Sign
    {0x02,0x01,0x51,0x09,0x06},     //   ( 31)  ? - 0x003F Question Mark
    {0x32,0x49,0x79,0x41,0x3E},     //   ( 32)  @ - 0x0040 Commercial At
    {0x7E,0x11,0x11,0x11,0x7E},     //   ( 33)  A - 0x0041 Latin Capital Letter A
    {0x7F,0x49,0x49,0x49,0x36},     //   ( 34)  B - 0x0042 Latin Capital Letter B
    {0x3E,0x41,0x41,0x41,0x22},     //   ( 35)  C - 0x0043 Latin Capital Letter C
    {0x7F,0x41,0x41,0x22,0x1C},     //   ( 36)  D - 0x0044 Latin Capital Letter D
    {0x7F,0x49,0x49,0x49,0x41},     //   ( 37)  E - 0x0045 Latin Capital Letter E
    {0x7F,0x09,0x09,0x09,0x01},     //   ( 38)  F - 0x0046 Latin Capital Letter F
    {0x3E,0x41,0x49,0x49,0x7A},     //   ( 39)  G - 0x0047 Latin Capital Letter G
    {0x7F,0x08,0x08,0x08,0x7F},     //   ( 40)  H - 0x0048 Latin Capital Letter H
    {0x00,0x41,0x7F,0x41,0x00},     //   ( 41)  I - 0x0049 Latin Capital Letter I
    {0x20,0x40,0x41,0x3F,0x01},     //   ( 42)  J - 0x004A Latin Capital Letter J
    {0x7F,0x08,0x14,0x22,0x41},     //   ( 43)  K - 0x004B Latin Capital Letter K
    {0x7F,0x40,0x40,0x40,0x40},     //   ( 44)  L - 0x004C Latin Capital Letter L
    {0x7F,0x02,0x0C,0x02,0x7F},     //   ( 45)  M - 0x004D Latin Capital Letter M
    {0x7F,0x04,0x08,0x10,0x7F},     //   ( 46)  N - 0x004E Latin Capital Letter N
    {0x3E,0x41,0x41,0x41,0x3E},     //   ( 47)  O - 0x004F Latin Capital Letter O
    {0x7F,0x09,0x09,0x09,0x06},     //   ( 48)  P - 0x0050 Latin Capital Letter P
    {0x3E,0x41,0x51,0x21,0x5E},     //   ( 49)  Q - 0x0051 Latin Capital Letter Q
    {0x7F,0x09,0x19,0x29,0x46},     //   ( 50)  R - 0x0052 Latin Capital Letter R
    {0x46,0x49,0x49,0x49,0x31},     //   ( 51)  S - 0x0053 Latin Capital Letter S
    {0x01,0x01,0x7F,0x01,0x01},     //   ( 52)  T - 0x0054 Latin Capital Letter T
    {0x3F,0x40,0x40,0x40,0x3F},     //   ( 53)  U - 0x0055 Latin Capital Letter U
    {0x1F,0x20,0x40,0x20,0x1F},     //   ( 54)  V - 0x0056 Latin Capital Letter V
    {0x3F,0x40,0x38,0x40,0x3F},     //   ( 55)  W - 0x0057 Latin Capital Letter W
    {0x63,0x14,0x08,0x14,0x63},     //   ( 56)  X - 0x0058 Latin Capital Letter X
    {0x07,0x08,0x70,0x08,0x07},     //   ( 57)  Y - 0x0059 Latin Capital Letter Y
    {0x61,0x51,0x49,0x45,0x43},     //   ( 58)  Z - 0x005A Latin Capital Letter Z
    {0x00,0x7F,0x41,0x41,0x00},     //   ( 59)  [ - 0x005B Left Square Bracket
    {0x02,0x04,0x08,0x10,0x20},     //   ( 60)  \ - 0x005C Reverse Solidus
    {0x00,0x41,0x41,0x7F,0x00},     //   ( 61)  ] - 0x005D Right Square Bracket
    {0x04,0x02,0x01,0x02,0x04},     //   ( 62)  ^ - 0x005E Circumflex Accent
    {0x40,0x40,0x40,0x40,0x40},     //   ( 63)  _ - 0x005F Low Line
    {0x01,0x02,0x04,0x00,0x00},     //   ( 64)  ` - 0x0060 Grave Accent
    {0x20,0x54,0x54,0x54,0x78},     //   ( 65)  a - 0x0061 Latin Small Letter A
    {0x7F,0x48,0x44,0x44,0x38},     //   ( 66)  b - 0x0062 Latin Small Letter B
    {0x38,0x44,0x44,0x44,0x20},     //   ( 67)  c - 0x0063 Latin Small Letter C
    {0x38,0x44,0x44,0x48,0x7F},     //   ( 68)  d - 0x0064 Latin Small Letter D
    {0x38,0x54,0x54,0x54,0x18},     //   ( 69)  e - 0x0065 Latin Small Letter E
    {0x08,0x7E,0x09,0x01,0x02},     //   ( 70)  f - 0x0066 Latin Small Letter F
    {0x06,0x49,0x49,0x49,0x3F},     //   ( 71)  g - 0x0067 Latin Small Letter G
    {0x7F,0x08,0x04,0x04,0x78},     //   ( 72)  h - 0x0068 Latin Small Letter H
    {0x00,0x44,0x7D,0x40,0x00},     //   ( 73)  i - 0x0069 Latin Small Letter I
    {0x20,0x40,0x44,0x3D,0x00},     //   ( 74)  j - 0x006A Latin Small Letter J
    {0x7F,0x10,0x28,0x44,0x00},     //   ( 75)  k - 0x006B Latin Small Letter K
    {0x00,0x41,0x7F,0x40,0x00},     //   ( 76)  l - 0x006C Latin Small Letter L
    {0x7C,0x04,0x18,0x04,0x7C},     //   ( 77)  m - 0x006D Latin Small Letter M
    {0x7C,0x08,0x04,0x04,0x78},     //   ( 78)  n - 0x006E Latin Small Letter N
    {0x38,0x44,0x44,0x44,0x38},     //   ( 79)  o - 0x006F Latin Small Letter O
    {0x7C,0x14,0x14,0x14,0x08},     //   ( 80)  p - 0x0070 Latin Small Letter P
    {0x08,0x14,0x14,0x18,0x7C},     //   ( 81)  q - 0x0071 Latin Small Letter Q
    {0x7C,0x08,0x04,0x04,0x08},     //   ( 82)  r - 0x0072 Latin Small Letter R
    {0x48,0x54,0x54,0x54,0x20},     //   ( 83)  s - 0x0073 Latin Small Letter S
    {0x04,0x3F,0x44,0x40,0x20},     //   ( 84)  t - 0x0074 Latin Small Letter T
    {0x3C,0x40,0x40,0x20,0x7C},     //   ( 85)  u - 0x0075 Latin Small Letter U
    {0x1C,0x20,0x40,0x20,0x1C},     //   ( 86)  v - 0x0076 Latin Small Letter V
    {0x3C,0x40,0x30,0x40,0x3C},     //   ( 87)  w - 0x0077 Latin Small Letter W
    {0x44,0x28,0x10,0x28,0x44},     //   ( 88)  x - 0x0078 Latin Small Letter X
    {0x0C,0x50,0x50,0x50,0x3C},     //   ( 89)  y - 0x0079 Latin Small Letter Y
    {0x44,0x64,0x54,0x4C,0x44},     //   ( 90)  z - 0x007A Latin Small Letter Z
    {0x00,0x08,0x36,0x41,0x00},     //   ( 91)  { - 0x007B Left Curly Bracket
    {0x00,0x00,0x7F,0x00,0x00},     //   ( 92)  | - 0x007C Vertical Line
    {0x00,0x41,0x36,0x08,0x00},     //   ( 93)  } - 0x007D Right Curly Bracket
    {0x02,0x01,0x02,0x04,0x02},     //   ( 94)  ~ - 0x007E Tilde
    {0x08,0x0C,0x0E,0x0C,0x08},     //   ( 95)  upward facing triangle/arrow
    {0x08,0x18,0x38,0x18,0x08},     //   ( 96)  downward facing triangle/arrow

};

To use something like this you need to create a function in your software.  For more details on how the display maps its RAM please refer to the controller's datasheet:
http://www.newhavendisplay.com/app_notes/SBN1661G.pdf
More specifically, pages 18-23.

340
Character LCDs / Re: I2C ACK issue
« on: March 26, 2014, 09:36:58 AM »
Great news! Thank you for sharing!

341
TFTs / Re: TFT Solid Models
« on: March 24, 2014, 08:24:44 AM »
Yes, we have 3d models available for each of those displays.  If you would like me to send them to you, please email us at nhtech@newhavendisplay.com

342
Character LCDs / Re: NHD-C0220BiZ- Series 2x20 Display mounting on PCB
« on: March 24, 2014, 08:08:00 AM »
The width of each backlight contact is 1.25mm.

343
Graphic LCDs / MOVED: NHD-3.5-320240MF-ATXL#-T-1
« on: March 21, 2014, 02:31:22 PM »

344
Character LCDs / Re: NHD-C0220BiZ- Series 2x20 Display mounting on PCB
« on: March 21, 2014, 10:31:49 AM »
1. All we have available to assist with this is the information in the mechanical drawing on page 3 of the datasheet: http://www.newhavendisplay.com/specs/NHD-C0220BiZ-FSRGB-FBW-3VM.pdf.
We have a 3d model available for the white backlight version of this display if that would help (only the backlight contacts will be different between the two).
If you would like this model, please email us at nhtech@newhavendisplay.com
2. The backlight contacts are not flexible.  They are rectangular, thru-hole contacts.
3. We don't use this type of connector to test these displays, as they are meant to be soldered directly to the PCB.  We don't have any recommended connectors for this type of setup.

345
OLEDs / Re: NHD-0420DZW-AY5 , Clear Display function
« on: March 21, 2014, 09:36:29 AM »
We were experiencing issues with the old forum, and we needed to make this new forum in hopes we would be able to import all previous posts.  Unfortunately we are not able to successfully perform this import, and therefore these old posts are now not available to view.  Of course you are right, it means many of the same questions will need to be answered, which is unfortunate for both our customers and us engineers!  :(  We deeply apologize for this complication, and any inconveniences it may cause, but we hope for this forum to be much better that the last, and easier to use with more features!

As for your clear display question, what interface are you using with this display?  Parallel? 4-bit or 8-bit? Serial?
All you are sending is command 0x01 and nothing else?  Once you send this command, that is when you are seeing these random characters?

Pages: 1 ... 21 22 [23] 24