Показать сообщение отдельно
Старый 24.04.2006, 16:49   #4
Overheat
Guest
 
Сообщения: n/a
По умолчанию Ответ: В дисплее WinStar черные квадратики

Дело в том, что WinStart сменили контроллер в ЖКИ. А в новом контроллере изменились временные характеристики. В частности Enable cycle time стал 1200нс вместо 400нс. Но на деле оказалось, что сигнал Enable необходимо держать более 5мкс, на всякий случай мы теперь ставим 20мкс.

Интересно, что величина данной задержки влияет только на команду clrscr(), остальные команды выполняются нормально. Так что исходный текст подпрограммы, которая отправляет команду на ЖКИ выглядит следующим образом.

__monitor void DisplayCtrlWrite(unsigned char byte) {

ResetBitsPort(CTRL2_PORT,MASK_DRS); // Установить состояние линии DRS - 0
WritePort(IODATA_DIR,0xFF); // Направление на выдачу
WritePort(IODATA_PORT,byte); // Данные на выдачу
ResetBitsPort(CTRL2_PORT,MASK_DEN); // Установить состояние линии DEN - 0
if(byte == 1) _delay_mks(20);
SetBitsPort(CTRL2_PORT,MASK_DEN |MASK_DRS); // Установить DRS - 1 DEN - 1
SetBitsPort(CTRL2_PORT,MASK_DRS); // Установить состояние линии DRS - 1
WritePort(IODATA_DIR,0x00); // Направление на прием
return;
}
  Ответить с цитированием