View previous topic :: View next topic |
Author |
Message |
wangine
Joined: 07 Jul 2009 Posts: 98 Location: Curtea de Arges, Romania
|
ELEC & ELTEK 20x2 LCD module PDF |
Posted: Sat Jun 11, 2011 6:00 am |
|
|
I bought some 20x2 alphanumeric LCD modules.
The problem is that we did not burn in any way.
I can not find documentation for them and tried the drivers from the forum at the 2x16 and 4x20.
None of them go.
PDF, which I thought would be the equivalent is the lower.
I attached a picture of the LCD's can you know what type it is.
Connections are good guess is, with the delay in this PDF.
Display color is yellow.
I worked with several types of these but never from this company and I see that I have problems with them.
I searched the company ELEC & ELTEK and I found this code after the LCD.
Please help if you know something because I bought nothing else.
http://www.hexhoby.ro/download/PIC/LCD/TM202JBCWVBYA_%20LCD%20koko.pdf
http://www.hexhoby.ro/download/PIC/LCD/S3700233%201.JPG
Thank you very much, Bogdan |
|
|
wangine
Joined: 07 Jul 2009 Posts: 98 Location: Curtea de Arges, Romania
|
|
|
wangine
Joined: 07 Jul 2009 Posts: 98 Location: Curtea de Arges, Romania
|
|
Posted: Sun Jun 12, 2011 7:48 am |
|
|
After a day of searching
I finally managed to connect your display but now there's another issue.
characters are displayed incorrectly and the time of initialization of the display is too large, about 3 seconds.
I did other tests with 2x16 as a reference one another on port B. Port D
Driver is used for 20x4 but I saw that works with flex_lcd for 2x16.
These pins are used:
Code: | #define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_RS PIN_B1
#define LCD_RW PIN_B2
#define LCD_E PIN_B3 |
The program test from this, after lcd_init () of course;:
Code: | lcd_gotoxy(1,1);
printf(lcd_putc,"*********** 1");
|
if I try to change line 2 of the LCD display for example no longer displays anything.
Foto with LCD and test code
http://www.hexhoby.ro/download/PIC/LCD/S3700244%201.JPG
I have a chance to set up these sites LCD?
The processor is dsPIC33FJ64GS406 with 16xPLL enabled
|
|
|
wangine
Joined: 07 Jul 2009 Posts: 98 Location: Curtea de Arges, Romania
|
|
Posted: Sun Jun 12, 2011 1:20 pm |
|
|
After several trials and tests, I realized that my CPU is working too fast.
We made some changes in place delay_cycles (x) I put delay_us (x) s delay and put in some functions.
Code: | //---------------------------------------
// Read a byte from the LCD and return it.
#ifdef USE_RW_PIN
int8 lcd_read_byte(void)
{
int8 low;
int8 high;
output_high(LCD_RW);
delay_cycles(1);
high = lcd_read_nibble();
delay_us(26); //increase delay here !!!!
low = lcd_read_nibble();
return( (high<<4) | low);
}
#endif
//---------------------------------------- |
Code: | //----------------------------------------
// Send a byte to the LCD.
void lcd_send_byte(int8 address, int8 n)
{
output_low(LCD_RS);
#ifdef USE_RW_PIN
while(bit_test(lcd_read_byte(),7)) ;
#else
delay_us(60);
#endif
if(address)
output_high(LCD_RS);
else
output_low(LCD_RS);
delay_us(3); //replace delay_cycles(1);
#ifdef USE_RW_PIN
output_low(LCD_RW);
delay_cycles(1);
#endif
output_low(LCD_E);
lcd_send_nibble(n >> 4);
///delay_us(60); //*****
lcd_send_nibble(n & 0xf);
}
//---------------------------- |
Code: | //----------------------------
void lcd_init(void)
{
int8 i;
lcd_line = 1;
output_low(LCD_RS);
#ifdef USE_RW_PIN
output_low(LCD_RW);
#endif
output_low(LCD_E);
// Some LCDs require 15 ms minimum delay after
// power-up. Others require 30 ms. I'm going
// to set it to 35 ms, so it should work with
// all of them.
delay_ms(50);
for(i=0 ;i < 3; i++)
{
lcd_send_nibble(0x03);
delay_ms(50); // replace delay_ms(5);
}
lcd_send_nibble(0x02);
for(i=0; i < sizeof(LCD_INIT_STRING); i++)
{
lcd_send_byte(0, LCD_INIT_STRING[i]);
#ifndef USE_RW_PIN
delay_ms(50); // replace delay_ms(5);
#endif
}
}
//---------------------------- |
It works now, but the connections were correct access times had to be greater between sending characters.
To run both lines to be initialized twice something like
Code: | lcd_init();
delay_ms(50); // Minimum 1 ms required after power-up.
lcd_init();
delay_ms(100); // Minimum 1 ms required after power-up. |
Do not know the explanation
Well, the problem was solved |
|
|
|