| Микроконтролери и електроника 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 ] |
| Заглавие: | |
Ехееее, жив и здрав! Заработи от раз, след като сложих твоята инициализация (и това с ресета в началото е много важно)! А от виртуална, директо в реална в момента в който дойдеш на море към Варна |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|