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

6 разреден LCD дисплей OD-601
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3653
Страница 1 от 1

Автор:  [ Пон Яну 29, 2007 5:51 pm ]
Заглавие:  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 8:39 pm ]
Заглавие: 

Дрънни им една шайба (или меил) да си оправят бакията, поне да не горят повече хора.

Автор:  Dimitar [ Пон Яну 29, 2007 8:55 pm ]
Заглавие: 

Тия ако бяха доставчик тук - жална им майка. Последната година и половина живота ми е някак си много по-лек без Комет около мен :D .

Автор:  [ Вто Яну 30, 2007 1:32 am ]
Заглавие: 

Какво да им се обаждам, само време да губя в обяснения кое, как и къде. Напънах се малко ( без да се изпускам ) и подкарах дисплея, като софтуерно коригирих пиновете на дисплея, голяма щуротия, ама нямам избор:

Код:
/*   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;
}


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