yak-40 писал(а):У меня после переполюсовки дисплейчик выжил

Чего и тебе желаю
У меня вроде тоже, спасибо!

По крайней мере он теперь не ест сотни миллиампер, и у него регулируется констрастность.
...но есть один нюанс - работать как нужно он пока тоже не хочет.

В Proteus'е работает, а в реале нет. Вместо букв полностью залитые знакоместа. Вот так выглядит хрестоматийный " Hello World! ":
Он же не умер, нет? 
Я кстати понимаю с чего путать контакты-то начал - Proteus в заблуждение ввёл, у него по умолчанию как раз контактами вниз экран, причём они именно в "наборотном" порядке. Вот например схема из статьи про подключение экранчиков (но у меня 8-пиновый вариант подключения):

Может у меня задержка маловата перед стробирующим сигналом? 1мс, вроде с запасом, в даташите к экранам в нС всё меряется. Вот код (фрагмент):
- Код: Выделить всё • Развернуть
int main(void) {
...
//Инициализация экрана
//Шина 8 бит, 2 строки
lcd_command(0b00111000);
//Очистка экрана
lcd_command(0b00000001);
//Инкремент адреса
lcd_command(0b00000110);
//Включение дисплея
lcd_command(0b00001100);
//Очистка дисплея
lcd_command(0b00000001);
//Сдвиг курсора вправо
lcd_command(0b00010100);
//Запись строки
lcd_write(" Hello world! ");
}
//Посылка команды
void lcd_command(char bCmd) {
//Запись
LCD_RW_PORT &= ~_BV(LCD_RW_PIN);
//Команда
LCD_RS_PORT &= ~_BV(LCD_RS_PIN);
//Начало строба
LCD_E_PORT |= _BV(LCD_E_PIN);
//Порт на выход
LCD_DDR = 0xFF;
//Команда
LCD_DATA = bCmd;
//Пауза
_delay_ms(1);
//Конец строба
LCD_E_PORT &= ~_BV(LCD_E_PIN);
//Порт на вход
LCD_DDR = 0x00;
}
//Посылка строки
void lcd_write(char *sString) {
//Счетчик
int i=0;
//Запись
LCD_RW_PORT &= ~_BV(LCD_RW_PIN);
//Данные
LCD_RS_PORT |= _BV(LCD_RS_PIN);
//Последовательный вывод строки
while(sString[i]) {
//Начало строба
LCD_E_PORT |= _BV(LCD_E_PIN);
//Данные символа на выход
LCD_DATA = sString[i];
//Пауза
_delay_ms(1);
//Конец строба
LCD_E_PORT &= ~_BV(LCD_E_PIN);
//Инкремент
++i;
}
}
Что-то не так?
Добавлено спустя 4 минуты 7 секунд:SERGEY_M писал(а):это ты к работающему компу Мегу с ЖКИ подключаешь? ...а за комп не боязно?
Ага, на фотке видно светящийся зад от компа (у меня программатор с LPT) за который мне, конечно, немного боязно, но надо ж как-то питаться! Хочется иметь стабильный источник питания, чтобы хоть по этому поводу не рефлексировать, а то голова треснуть может - столько всего узнать и учесть нужно!
