Отговори на тема  [ 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-то краче :oops:


П.П.
Лошо, намерих причината, купих го за 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
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Дрънни им една шайба (или меил) да си оправят бакията, поне да не горят повече хора.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Яну 29, 2007 8:39 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Тия ако бяха доставчик тук - жална им майка. Последната година и половина живота ми е някак си много по-лек без Комет около мен :D .


Пон Яну 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
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 4 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 14 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни