|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 11:36 pm
|
Страница 1 от 1
|
[ 4 мнения ] |
|
6 разреден LCD дисплей OD-601
| Автор |
Съобщение |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 6 разреден LCD дисплей OD-601
Някой да го е използвал ?
Цял ден се мъча и не мога да го подкарам с изпитан софт и хардуер. Имам чувството, че документацията в сайта на Комет не отговоря на разположението на крачетата. Нов дисплей, подавам 64 Hz BP сигнал на 26 краче, след това търся сегментите, за да проверя дали отговаря на описанието, светят си както си искат, 2-ри дисплей същата работа. Май излиза, че проблема не е в моят тевелизор.
Няма логика, 1-во краче е сегмент А на 6-ти разряд, т.е. на LSB разряда по тяхната документация. Кой ще тръгне да разкарва проводници от единия край на стъклото до другия ? Всички пинове излизат кръстосани. Гледал съм подобни LCD дисплеи, на които под ъгъл се вижда опроводяването, обикновено разреда се опроводява с най-близките крачета. Освен 1-во да не е първо ами 26-то краче
П.П.
Лошо, намерих причината, купих го за OD-601, но не е такъв ! Комет не посочват сайт на производителя, но като се поразтърсих попаднах на http://www.orientdisplay.com/standard-lcd-panels.html , които имат сходни означения на техните стандарти LCD панели. Оказва се, че ако моят OD-601 го приема за OD-609, то всичко ще си е наред, демек Комет не продават OD-601 ами OD-609, въпреки че LCD панел OD-609 въобще не фигурира в ценовата листа на Комет.
Ебатий тюрлю гювеча, язък за платките, язък за труда.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Яну 29, 2007 5:51 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Дрънни им една шайба (или меил) да си оправят бакията, поне да не горят повече хора.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Яну 29, 2007 8:39 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
Тия ако бяха доставчик тук - жална им майка. Последната година и половина живота ми е някак си много по-лек без Комет около мен  .
|
| Пон Яну 29, 2007 8:55 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Какво да им се обаждам, само време да губя в обяснения кое, как и къде. Напънах се малко ( без да се изпускам ) и подкарах дисплея, като софтуерно коригирих пиновете на дисплея, голяма щуротия, ама нямам избор:
 |  |  |  | Код: /* lcd[0] - LSB lcd[1] lcd[2] lcd[3] lcd[4] lcd[5] - MSB */ void UpdateDisplay(void) { int8 i; static short _bp = 0; /* Това е код от предишни проекти. Тук не тръгна, заради обърканите крачета на OD-601 по документацията на Комет. _BP = ! _BP; // Toggle _BP i = 0; do { // lcd[i] = display.lcd[i] > 31 ? charE : CharTable[display.lcd[i]]; if( display.lcd[i] > 31 ) lcd[i] = charE; else lcd[i] = CharTable[ display.lcd[i] ] ; if( ! _BP ) lcd[i] = ~lcd[i]; } while( ++i < 6 ); i = 6 * 8; do { _Data = shift_left( lcd, 6, 0 ); _Clock = 1; _Clock = 0; } while( --i ); _Strobe = 1; _Strobe = 0; */ /* Следващите маймунджулъци са поради сбъркания дисплей OD-601, който по разположение на крачета не е OD-601,ами OD-609. Мислех, че ще може с друга таблица да се прекодирва първата, обаче не може да стане тъй като сегментите след ротацията се оказах произволно пръснати по 4094 регистрите. Наложи се да се правят 6 * 8 if проверки, за да се прекодира оригиналната кодова таблица в нов масив remap, за да може все пак дисплея да се управлява при тази версия на платката. _BP крачето по начало беше на pin на процесора, а всички сегменти се управляваха от 6 бр. 4094. Сега на мястото на _BP се пада сегмент на дисплея, затова използвам нова фиктивна променлива _bp, която в крайна сметка се копира в remap[5].7 .Не работя директно с ramap[5].7 защото функцията shift_left(remap,6,0) я нулира, когато зареждам 4094 регистрите ! */ _bp = ! _bp; i = 0; do { /* Следващия код, незнайно защо на PIC16F87x професори работи, а на PIC16F68x професори не работи. Големи лайна маа CCS C компилатора ( вересия 3.249 ). Не съм гледал в листинга каква е причината. lcd[i] = display.lcd[i] > 31 ? charE : CharTable[display.lcd[i]]; */ if( display.lcd[i] > 31 ) lcd[i] = charE; else lcd[i] = CharTable[ display.lcd[i] ] ; if( _bp ) lcd[i] = ~lcd[i]; } while( ++i < 6 );
// Следва тюрлю гювеч имам баалдъ кодът: remap[0] = remap[1] = remap[2] = remap[3] = remap[4] = remap[5] = 0; if( _bp ) remap[5] |= 0x80;
if( lcd[0] & 0x01 ) remap[5] |= 0x40; // Digit 0 ( LSB ) if( lcd[0] & 0x02 ) remap[5] |= 0x20; if( lcd[0] & 0x04 ) remap[4] |= 0x08; if( lcd[0] & 0x08 ) remap[5] |= 0x01; if( lcd[0] & 0x10 ) remap[4] |= 0x80; if( lcd[0] & 0x20 ) remap[5] |= 0x08; if( lcd[0] & 0x40 ) remap[5] |= 0x04; if( lcd[0] & 0x80 ) remap[5] |= 0x02;
if( lcd[1] & 0x01 ) remap[4] |= 0x40; // Digit 1 if( lcd[1] & 0x02 ) remap[4] |= 0x20; if( lcd[1] & 0x04 ) remap[5] |= 0x10; if( lcd[1] & 0x08 ) remap[4] |= 0x01; if( lcd[1] & 0x10 ) remap[3] |= 0x08; if( lcd[1] & 0x20 ) remap[4] |= 0x10; if( lcd[1] & 0x40 ) remap[4] |= 0x04; if( lcd[1] & 0x80 ) remap[4] |= 0x02;
if( lcd[2] & 0x01 ) remap[3] |= 0x80; // Digit 2 if( lcd[2] & 0x02 ) remap[3] |= 0x40; if( lcd[2] & 0x04 ) remap[3] |= 0x20; if( lcd[2] & 0x08 ) remap[2] |= 0x10; if( lcd[2] & 0x10 ) remap[2] |= 0x08; if( lcd[2] & 0x20 ) remap[3] |= 0x04; if( lcd[2] & 0x40 ) remap[3] |= 0x02; if( lcd[2] & 0x80 ) remap[3] |= 0x01;
if( lcd[3] & 0x01 ) remap[2] |= 0x80; // Digit 3 if( lcd[3] & 0x02 ) remap[2] |= 0x40; if( lcd[3] & 0x04 ) remap[2] |= 0x20; if( lcd[3] & 0x08 ) remap[1] |= 0x10; if( lcd[3] & 0x10 ) remap[3] |= 0x10; if( lcd[3] & 0x20 ) remap[2] |= 0x04; if( lcd[3] & 0x40 ) remap[2] |= 0x02; if( lcd[3] & 0x80 ) remap[2] |= 0x01;
if( lcd[4] & 0x01 ) remap[1] |= 0x08; // Digit 4 if( lcd[4] & 0x02 ) remap[1] |= 0x80; if( lcd[4] & 0x04 ) remap[1] |= 0x40; if( lcd[4] & 0x08 ) remap[0] |= 0x04; if( lcd[4] & 0x10 ) remap[1] |= 0x20; if( lcd[4] & 0x20 ) remap[1] |= 0x02; if( lcd[4] & 0x40 ) remap[1] |= 0x01; if( lcd[4] & 0x80 ) remap[0] |= 0x10;
if( lcd[5] & 0x01 ) remap[0] |= 0x08; // Digit 5 ( MSB ) if( lcd[5] & 0x02 ) remap[0] |= 0x80; if( lcd[5] & 0x04 ) remap[0] |= 0x40; if( lcd[5] & 0x08 ) remap[0] |= 0x20; if( lcd[5] & 0x10 ) remap[1] |= 0x04; if( lcd[5] & 0x20 ) remap[0] |= 0x02; if( lcd[5] & 0x40 ) remap[0] |= 0x01; if( lcd[5] & 0x80 ) bit_set(PORTC,3); // PORTC.3 is old _BP pin ! else bit_clear(PORTC,3);
i = 6 * 8; do { _Data = shift_left( remap, 6, 0 ); _Clock = 1; _Clock = 0; } while( --i ); _Strobe = 1; _Strobe = 0; }
|  |  |  |  |
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Вто Яну 30, 2007 1:32 am |
|
|
|
Страница 1 от 1
|
[ 4 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 17 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|