Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

gsm LCD
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=7944
Страница 1 от 1

Автор:  michev [ Пон Юни 28, 2010 10:30 am ]
Заглавие:  gsm LCD

Разполагам с няколко и бих желал да ги оползотворя, но срещам трудност да разбера лцд-та какви контролери имат. (за момента знам че са серийни и всеки един извод е известен)
Та питането е - знаете ли на siemens A70, nokia 6600 дисплеите с какви контролери са?

пс. за сименса се твърди на някой места че е с PCF8812, но определено не е с такъв.

Автор:  juzisound [ Пон Юни 28, 2010 1:17 pm ]
Заглавие: 

Имам собствен код за Сименс А70. Контролера какъв е - не го помня точно - ама тогава намерих нещо из нета и с малко донагласяне стана. Помня, че контролера уж приличал на някой - на който му има книгата из нета... После се оказа, че не е съвсем същия - ама основните неща съвпадаха...

Автор:  michev [ Пон Юни 28, 2010 1:37 pm ]
Заглавие: 

Ако не е проблем, би ли постнал командите за инициализация и съответно командите за писане по дисплея.
Другото което не знам със сигурност е - RS - ниско ниво - дата, високо - команда или обратното?
CS - по падащ или нарастващ фронт задава началото на серийното предаване?
RESET - високо или ниско ниво?
Някаква ориентировъчна честота с която предаваш данните, че се мъча аз с една 36мхз-ова мега и може и да му идва бързичко.
С команди за контролер PCF8812, не успях да го накарам да прави каквото и да е.

Автор:  juzisound [ Пон Юни 28, 2010 4:54 pm ]
Заглавие: 

Контролера е PCF8812U или много подобен.
Виртуалната бира да е СТУДЕНА!!!

// Дефиниране на пиновете използвани за LCD интерфейса
#ifndef SPI_INTERFACE
#define a70_sclk RC3 // nokia lcd sclk pin 2
#define a70_sda RC5 // nokia lcd sda pin 3
#endif
#define a70_dc RC4 // nokia lcd d/c pin 4
#define a70_res RA5 // nokia lcd res pin 8

// Lcd Commands (normal Functionset)
#define GLCD_FUNCTIONSET (0x20)
#define GLCD_SETXADDR (0x80)
#define GLCD_SETYADDR (0x40)
#define GLCD_DISPLAYBLANK (0x08)
#define GLCD_DISPLAYFLUSH (0x09)
#define GLCD_DISPLAYNORMAL (0x0C)
#define GLCD_DISPLAYINVERT (0x0D)

// Lcd Commands (extended Functionset)
#define GLCD_FUNCTIONSETEXT (0x21)
#define GLCD_BIAS (0x13) // Bias 1:48
#define GLCD_TEMPCOEF (0x06) // TF = 2
#define GLCD_SETVOP (0x80)





//--------------------------------------------------------------------------------------------------------------------------
void a70_write_command(unsigned char data)
{
#ifdef SPI_INTERFACE
a70_dc = 0; // byte is a command it is read with the eight SCLK pulse
SSPBUF = data; // Записва байта за изпращане в буфера
while( !BF); // изчаква докато трансфера завърши
data = SSPBUF; // Прочита отново буфера - това е за да изчисти приемащия SPI буфер
#else
unsigned char c;
a70_dc = 0; // byte is a command it is read with the eight SCLK pulse
for(c=8; c!=0; c--){
a70_sclk=0;
if((data&0x80)==0) a70_sda=0;
else a70_sda=1;
a70_sclk=1;
data<<=1;
}
#endif
}
//--------------------------------------------------------------------------------------------------------------------------
void a70_write_data(unsigned char data)
{
#ifdef SPI_INTERFACE
a70_dc = 1; // byte is a data
SSPBUF = data; // Записва байта за изпращане в буфера
while( !BF); // изчаква докато трансфера завърши
data = SSPBUF; // Прочита отново буфера - това е за да изчисти приемащия SPI буфер
#else
unsigned char c;
a70_dc = 1; // byte is a data
for(c=8; c!=0; c--){
a70_sclk=0;
if((data&0x80)==0) a70_sda=0;
else a70_sda=1;
a70_sclk=1;
data<<=1;
}
#endif
}
//--------------------------------------------------------------------------------------------------------------------------
void a70_gotoxy(unsigned char xnokia, unsigned char ynokia) // Nokia LCD Position cursor
{
a70_write_command(0x40|(ynokia&0x0F));
a70_write_command(0x80|(xnokia&0x7f));
}
//--------------------------------------------------------------------------------------------------------------------------
void a70_clear_DDRAM(void) // clear all DDRAM (set all bits to zero) 6 rows по 84 columns по 8 pixels
{
unsigned int i;
a70_gotoxy(0, 0);
for(i=816; i!=0; i--) a70_write_data(0);
}

//--------------------------------------------------------------------------------------------------------------------------
void init_a70(void)
{
a70_res=0; // reset chip during 250ms
DelayMs(1); // Намалено от 250 на 10 мс. По спецификация трябва да е по-голям от 100 нано сек.
a70_res=1;
DelayMs(5); // Тоя дисплей спецялно изисква да има време задръжка тук

a70_write_command(0b00010001); // !!!! Set VOP range !!!
a70_write_command(0x21); // set extins extended instruction set
a70_write_command(0b00001000+1); // Set voltage multiplier factor 11 2
a70_write_command(0b00010000+4); // Bias system 111 4
a70_write_command(0b10000000+85); // SetVop - Contrast
a70_write_command(0x20); // horizontal mode from left to right, X axe are incremented automatically , 0x22 for vertical addressing ,back on normal instruction set too 0x20 for horizontal

#ifdef ALL_PIXEL_ON_TEST
a70_write_command(0x09); // mode control - all pixels on - for test only
DelayMs(250); // изчакване да стоят включените пиксели на екрана
a70_write_command(0x08); // mode control - blank change (all pixels off)
DelayMs(10);
#endif
a70_write_command(0x0c); // mode control normal change - преминаване към нормален режим на работа на екрана
a70_clear_DDRAM(); // reset DDRAM, otherwise the lcd is blurred with random pixels
}

Автор:  michev [ Пон Юни 28, 2010 9:07 pm ]
Заглавие: 

Ехееее, жив и здрав! :prayer:
Заработи от раз, след като сложих твоята инициализация (и това с ресета в началото е много важно)!
:partyman:
А от виртуална, директо в реална в момента в който дойдеш на море към Варна :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/