|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 8:17 pm
|
Страница 1 от 1
|
[ 5 мнения ] |
|
| Автор |
Съобщение |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
 gsm LCD
Разполагам с няколко и бих желал да ги оползотворя, но срещам трудност да разбера лцд-та какви контролери имат. (за момента знам че са серийни и всеки един извод е известен)
Та питането е - знаете ли на siemens A70, nokia 6600 дисплеите с какви контролери са?
пс. за сименса се твърди на някой места че е с PCF8812, но определено не е с такъв.
|
| Пон Юни 28, 2010 10:30 am |
|
 |
|
juzisound
Ранг: Почетен член
Регистриран на: Съб Май 27, 2006 12:37 pm Мнения: 647 Местоположение: с. Згалево
|
Имам собствен код за Сименс А70. Контролера какъв е - не го помня точно - ама тогава намерих нещо из нета и с малко донагласяне стана. Помня, че контролера уж приличал на някой - на който му има книгата из нета... После се оказа, че не е съвсем същия - ама основните неща съвпадаха...
|
| Пон Юни 28, 2010 1:17 pm |
|
 |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
Ако не е проблем, би ли постнал командите за инициализация и съответно командите за писане по дисплея.
Другото което не знам със сигурност е - RS - ниско ниво - дата, високо - команда или обратното?
CS - по падащ или нарастващ фронт задава началото на серийното предаване?
RESET - високо или ниско ниво?
Някаква ориентировъчна честота с която предаваш данните, че се мъча аз с една 36мхз-ова мега и може и да му идва бързичко.
С команди за контролер PCF8812, не успях да го накарам да прави каквото и да е.
|
| Пон Юни 28, 2010 1:37 pm |
|
 |
|
juzisound
Ранг: Почетен член
Регистриран на: Съб Май 27, 2006 12:37 pm Мнения: 647 Местоположение: с. Згалево
|
Контролера е 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
}
|
| Пон Юни 28, 2010 4:54 pm |
|
 |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
Ехееее, жив и здрав!
Заработи от раз, след като сложих твоята инициализация (и това с ресета в началото е много важно)!
А от виртуална, директо в реална в момента в който дойдеш на море към Варна 
|
| Пон Юни 28, 2010 9:07 pm |
|
|
|
Страница 1 от 1
|
[ 5 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|