Подскажите новичку как соединить жк и atmega.
Re: Подскажите новичку как соединить жк и atmega.
Не, я понимаю то что b меняется, я лишь говорю, что если я ей и присваиваю значение-программа не идет(дело не в этой переменной, которая меняясь позволяет рисовать картинку, а в функциях, которые с ней работают)
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
Если еще не добились успеха, накидайте схемку подключения, я перелопачу МЭЛТовский исходник и набросаю Вам рабочий код. А там будем с вопросами разбираться, сейчас Вам нужен результат. 
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

- adrenocrome
- Потрогал лапой паяльник
- Сообщения: 365
- Зарегистрирован: Вт окт 21, 2008 15:03:06
- Откуда: moscow
- Контактная информация:
Re: Подскажите новичку как соединить жк и atmega.
Ок, я тоже вставлю свои пять копеек, как говориться.
Вот эту ф-ию я бы объявил после объявления WriteByte. То есть сначала объявляем WriteByte, потом WriteCode, в теле которой ссылаемся на WriteByte. Это понятно почему?
И опять эта запись в одну строку. Места что ли жалко? =)
Разберём WriteByte/ Я там комментарии поправил чутка. Понятно, что задержки конские конечно. Но чтоб увидеть, что ЖКИ работает - пойдёт.
Вот эту ф-ию я бы объявил после объявления WriteByte. То есть сначала объявляем WriteByte, потом WriteCode, в теле которой ссылаемся на WriteByte. Это понятно почему?
И опять эта запись в одну строку. Места что ли жалко? =)
Код: Выделить всё
void WriteCode(char b) {
WriteByte(b,0);
}
Разберём WriteByte/ Я там комментарии поправил чутка. Понятно, что задержки конские конечно. Но чтоб увидеть, что ЖКИ работает - пойдёт.
Код: Выделить всё
//Процедура выдачи байта в индикатор
void WriteByte(char b, char cd) {
WaitReady(); //Ждать готовности индикатора
[b]//При необходимости настроить здесь шину данных на вывод[/b] - это важное замечание! Порт А контроллера должен быть настроен на вывод!!! Иначе ничего работать не будет.
PORTB.1=0; //это по-видимому флаг записи в ЖКИ
PORTB.3=cd; //CD - данные или команда. Типа 0 - значит толкаем в ЖКИ данные, 1 - команду. Это к примеру, даташит не смотрел как там.
PORTA=b; //Выдать байт на шину данных индикатора
delay_ms(1); //
PORTB.2=1; //Скажем ЖКИ что ему надо проглотить то, что мы ему выдаём на шине данных
delay_ms(1); //Подождём пока ЖКИ переварит полученое
PORTB.2=0; //Скажем ЖКИ что мы закончили запись
delay_ms(1); //Подождём пока он это поймёт
}
День прошёл, а ты всё жив
Re: Подскажите новичку как соединить жк и atmega.
Спасибо!!! Если можете, покажите как одну точку зажечь-дальше сам должен понять))))
Вот как я его подключил к atmega16:
PORTA(0-7) содержит шину данных индикатора DB(0-7), подключенную соответственно PORTA.0 соединен с DB0, PORTA.1 с DB1.... и т.д...
PORTB.0=RES;
PORTB.1=RD/WR;
PORTB.2=E;
PORTB.3=A0;
Вот так всё подключено... Петухов из МЕЛТА(консультант или тому подобное) сказал, что всё правильно подключил.
Вот как я его подключил к atmega16:
PORTA(0-7) содержит шину данных индикатора DB(0-7), подключенную соответственно PORTA.0 соединен с DB0, PORTA.1 с DB1.... и т.д...
PORTB.0=RES;
PORTB.1=RD/WR;
PORTB.2=E;
PORTB.3=A0;
Вот так всё подключено... Петухов из МЕЛТА(консультант или тому подобное) сказал, что всё правильно подключил.
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
Alerr, информацию принял. Сейчас возвращаюсь из командировки (сижу с ноутом на вокзале в Николаеве), завтра утром буду в Севастополе и займусь делом. В общем, к вечеру ждите. 
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: Подскажите новичку как соединить жк и atmega.
Большое спасибо!!! Сам, я, тоже пока "в командировке", а пишу и читаю с телефона(
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
В общем, заняться мне было нечем, посему вечера решил не ждать. =)
В прикрепленном архиве - проект CVAVR с прошивкой и всеми бебехами.
Хотел документик разъясняющий написать в pdf-е, да решил, что это будет долго (да и не сегодня), и писать не стал.
В общем, пробуйте, экспериментируйте, вопросы задавайте.
ЗЫ. Из программы я исключил функции чтения с индикатора и вывода точки - оставил только то, что нужно для выведения на индикатор. С остальным, думаю, сможете разобраться по аналогии.
И да, еще - в свойствах проекта я установил тактовую частоту 4 МГц. Измените, если что.
В прикрепленном архиве - проект CVAVR с прошивкой и всеми бебехами.
Хотел документик разъясняющий написать в pdf-е, да решил, что это будет долго (да и не сегодня), и писать не стал.
В общем, пробуйте, экспериментируйте, вопросы задавайте.
ЗЫ. Из программы я исключил функции чтения с индикатора и вывода точки - оставил только то, что нужно для выведения на индикатор. С остальным, думаю, сможете разобраться по аналогии.
И да, еще - в свойствах проекта я установил тактовую частоту 4 МГц. Измените, если что.
- Вложения
-
- ATMega16_MT6116.rar
- (29.89 КБ) 164 скачивания
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: Подскажите новичку как соединить жк и atmega.
Спасибо, спасибо))) Работает! Пока разбираюсь...
Re: Подскажите новичку как соединить жк и atmega.
Чтож, видать мои познания в С почти на нуле(.
Можете разьяснить, что это (&= ~) делает к примеру вот тут PORTB &= ~_BV(E);
Когда поднялся к #define _BV(x) (1<<(x)) -не совсем понятно(для чего вы перемещаете x);
Не знаю для чего подключена вот эта библиотека: #include <stdio.h>???
Что значит эта строка: PORTB |= _BV(RES); //Снять сигнал RES -я понимаю, что снятие сигнала(а как это вот |= _BV(RES); функционирует????
)
Пока этого хватает для разбора. Принцип вывода, вроде,:
{ 0x00,0x00,0x00,0x00,0x00,0xC0,020,0xF8,0xF8,0xE0, //Верхнее поле(всё)
0x80,0x00,0x00,0x08,0x08,0xF8,0xF8,0xF8,0x08,0x08,
0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0xF8,0xF8,0x88,
0x88,0xE8,0x18,0x38,0x00,0x08,0x08,0xF8,0xF8,0xF8,
0x88,0x88,0xF8,0xF8,0x70,0x00,0x00,0x08,0x08,0xF8,
0xF8,0xF8,0x88,0x88,0xF8,0xF8,0x70,0x00,0x00,0x00,
0x00
},
{ 0x00,0x00,0x08,0x08,0x0E,0x09,0x01,0x09,0x0F,0x0F, //Нижнее поле(всё)
0x0F,0x0C,0x08,0x08,0x08,0x0F,0x0F,0x0F,0x08,0x08,
0x08,0x0C,0x0E,0x00,0x00,0x08,0x0F,0x0F,0x0F,0x08,
0x08,0x0B,0x0C,0x0E,0x00,0x08,0x08,0x0F,0x0F,0x0F,
0x08,0x09,0x07,0x0F,0x0E,0x08,0x06,0x08,0x08,0x0F,
0x0F,0x0F,0x08,0x09,0x07,0x0F,0x0E,0x08,0x06,0x00,
0x00
}
я понял как выводят)))
Можете разьяснить, что это (&= ~) делает к примеру вот тут PORTB &= ~_BV(E);
Когда поднялся к #define _BV(x) (1<<(x)) -не совсем понятно(для чего вы перемещаете x);
Не знаю для чего подключена вот эта библиотека: #include <stdio.h>???
Что значит эта строка: PORTB |= _BV(RES); //Снять сигнал RES -я понимаю, что снятие сигнала(а как это вот |= _BV(RES); функционирует????
Пока этого хватает для разбора. Принцип вывода, вроде,:
{ 0x00,0x00,0x00,0x00,0x00,0xC0,020,0xF8,0xF8,0xE0, //Верхнее поле(всё)
0x80,0x00,0x00,0x08,0x08,0xF8,0xF8,0xF8,0x08,0x08,
0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0xF8,0xF8,0x88,
0x88,0xE8,0x18,0x38,0x00,0x08,0x08,0xF8,0xF8,0xF8,
0x88,0x88,0xF8,0xF8,0x70,0x00,0x00,0x08,0x08,0xF8,
0xF8,0xF8,0x88,0x88,0xF8,0xF8,0x70,0x00,0x00,0x00,
0x00
},
{ 0x00,0x00,0x08,0x08,0x0E,0x09,0x01,0x09,0x0F,0x0F, //Нижнее поле(всё)
0x0F,0x0C,0x08,0x08,0x08,0x0F,0x0F,0x0F,0x08,0x08,
0x08,0x0C,0x0E,0x00,0x00,0x08,0x0F,0x0F,0x0F,0x08,
0x08,0x0B,0x0C,0x0E,0x00,0x08,0x08,0x0F,0x0F,0x0F,
0x08,0x09,0x07,0x0F,0x0E,0x08,0x06,0x08,0x08,0x0F,
0x0F,0x0F,0x08,0x09,0x07,0x0F,0x0E,0x08,0x06,0x00,
0x00
}
я понял как выводят)))
Re: Подскажите новичку как соединить жк и atmega.
Самое загадочное-как вы написали мой ник??? Вы его на бумажке чтоль сперва выписали???
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
Alerr, не за что. По вопросам.
1. _BV(x) - макрос, являющийся встроенным для среды WinAVR. Просто мне его очень удобно использовать, так как с первых дней написания программ на С я им пользуюсь. Этот макрос создает число с установленным битом x (это как раз та самая надпись (1<<x), о которой Вы спрашивали). Рекомендую, но не настаиваю.
2. За включение в проект библиотеки stdio.h прошу прощения - она здесь не нужна.))) Просто я ее не заметил и не удалил - она перекочевала сюда путем комбинаций Ctrl+C - Ctrl+V из другого, старого моего проекта.
3. Теперь самое интересное. Битовые операции. Разберем строку
Как я писал выше, макрос _BV(x) создает число с установленным битом x. Вообще, если бы я не определил E строкой #define E 2, то вместо E в скобках мне пришлось бы написать 2 - чтобы компилятор определил, какой бит в числе нужно установить. За сигнал E у нас отвечает вывод PB2, и для удобства я его так и определил - "E". С помощью макроса я создаю число 0b00000100 - число с установленным вторым битом. Это число нужно проинвертировать (зачем, будет ясно дальше) - инвертирование означает значок ~. Получаем 0b11111011. И с помощью накладывания маски &= (где в маске стоят единицы, соответствующие биты исходного числа не меняются, а где ноли - в исходном числе тоже будут ноли) я получаю состояние PORTB такое, что все биты, кроме второго, остаются неизменными. А второй обнуляется, сбрасывается. Это очень важно - ведь если я затрону другие управляющие сигналы, то работать у меня ничего не будет. Допустим, состояние PORTB было таким: 0b11111111. Тогда 0b11111111 &= ~(0b00000100); 0b11111111 &= 0b11111011; PORTB = 0b11111011. Думаю, с этим ясно.
4. Дальше.
Здесь тоже имеет место создание числа с установленным битом RES (он у нас нулевой) с помощью макроса _BV(x), и дальнейшее накладывание маски |=. Здесь по-другому. Там, где в маске стоят нули, биты исходного числа не изменятся, а там, где в маске единицы, биты исходного числа также примут значение 1. По сути, на Порт B мы накладываем маску 0b00000001, то есть устанавливаем нулевой бит (который отвечает за сигнал RES) в единицу, не затрагивая остальные биты (сигналы). А именно это нам и нужно.
5. По поводу вывода на дисплей. Да, действительно, поле дисплея МТ-6116 состоит из двух страниц, то есть нам нужен глобальный многомерный массив. Первый элемент массива отвечает за нулевую страницу, а второй элемент - за первую страницу. В то же время, каждый из элементов состоит из 61 байта, каждый байт - это один столбец страницы. Младший бит в байте означает верхний пиксель страницы, старший бит - нижний пиксель.
На бумажке я ничего не писал, естественно.
Существуют специальные программы - я пользуюсь FastLCD и Image2LCD. Первая позволяет задавать разрешение экрана и редактировать изображение или надпись попиксельно. Вторая программа преобразовывает любое изображение в массив чисел. Так что забудьте о пахоте вручную, пользуйтесь софтом - сэкономите кучу времени. =)
1. _BV(x) - макрос, являющийся встроенным для среды WinAVR. Просто мне его очень удобно использовать, так как с первых дней написания программ на С я им пользуюсь. Этот макрос создает число с установленным битом x (это как раз та самая надпись (1<<x), о которой Вы спрашивали). Рекомендую, но не настаиваю.
2. За включение в проект библиотеки stdio.h прошу прощения - она здесь не нужна.))) Просто я ее не заметил и не удалил - она перекочевала сюда путем комбинаций Ctrl+C - Ctrl+V из другого, старого моего проекта.
3. Теперь самое интересное. Битовые операции. Разберем строку
Код: Выделить всё
PORTB &= ~_BV(E);Как я писал выше, макрос _BV(x) создает число с установленным битом x. Вообще, если бы я не определил E строкой #define E 2, то вместо E в скобках мне пришлось бы написать 2 - чтобы компилятор определил, какой бит в числе нужно установить. За сигнал E у нас отвечает вывод PB2, и для удобства я его так и определил - "E". С помощью макроса я создаю число 0b00000100 - число с установленным вторым битом. Это число нужно проинвертировать (зачем, будет ясно дальше) - инвертирование означает значок ~. Получаем 0b11111011. И с помощью накладывания маски &= (где в маске стоят единицы, соответствующие биты исходного числа не меняются, а где ноли - в исходном числе тоже будут ноли) я получаю состояние PORTB такое, что все биты, кроме второго, остаются неизменными. А второй обнуляется, сбрасывается. Это очень важно - ведь если я затрону другие управляющие сигналы, то работать у меня ничего не будет. Допустим, состояние PORTB было таким: 0b11111111. Тогда 0b11111111 &= ~(0b00000100); 0b11111111 &= 0b11111011; PORTB = 0b11111011. Думаю, с этим ясно.
4. Дальше.
Код: Выделить всё
PORTB |= _BV(RES);Здесь тоже имеет место создание числа с установленным битом RES (он у нас нулевой) с помощью макроса _BV(x), и дальнейшее накладывание маски |=. Здесь по-другому. Там, где в маске стоят нули, биты исходного числа не изменятся, а там, где в маске единицы, биты исходного числа также примут значение 1. По сути, на Порт B мы накладываем маску 0b00000001, то есть устанавливаем нулевой бит (который отвечает за сигнал RES) в единицу, не затрагивая остальные биты (сигналы). А именно это нам и нужно.
5. По поводу вывода на дисплей. Да, действительно, поле дисплея МТ-6116 состоит из двух страниц, то есть нам нужен глобальный многомерный массив. Первый элемент массива отвечает за нулевую страницу, а второй элемент - за первую страницу. В то же время, каждый из элементов состоит из 61 байта, каждый байт - это один столбец страницы. Младший бит в байте означает верхний пиксель страницы, старший бит - нижний пиксель.
На бумажке я ничего не писал, естественно.
Существуют специальные программы - я пользуюсь FastLCD и Image2LCD. Первая позволяет задавать разрешение экрана и редактировать изображение или надпись попиксельно. Вторая программа преобразовывает любое изображение в массив чисел. Так что забудьте о пахоте вручную, пользуйтесь софтом - сэкономите кучу времени. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: Подскажите новичку как соединить жк и atmega.
Вроде понял Ваши побитовые операции-Вы просто работали полностью со всем портом В, а я писал: PORTB.n=x; В этом вроде и вся разница.... Для чего Вы написали: #define E 2, почему 2???
Можете обьяснить, почему моя инициализация не работает???? Я пытался запустить дисплей с ней, оказывается, что она не верна!?
void glcd_init() // верно
{
// LCD module initialization
PORTB.2=0;
PORTB.0=0; // 1 res
delay_us(15);
PORTB.0=1; // 2 res
delay_ms(2);
PORTB.0=0;
PORTB.1=0; // 3 reset
PORTB.3=0;
PORTA=0b11100010;
PORTB.1=0; // 4 (end)
PORTB.3=0;
PORTA=0b11001110;
PORTB.1=0; // 5 static drive on/off
PORTB.3=0;
PORTA=0b10100100;
PORTB.1=0; // 6 duty select
PORTB.3=0;
PORTA=0b10101000;
PORTB.1=0; // верхнюю строку на 0 (dis start line)
PORTB.3=0;
PORTA=0b11000000;
PORTB.1=0; //NonInvert scan RAM
PORTB.3=0;
PORTA=0b10100000;
PORTB.1=0; // 7 display on/off
PORTB.3=0;
PORTA=0b10101111;
}
Можете обьяснить, почему моя инициализация не работает???? Я пытался запустить дисплей с ней, оказывается, что она не верна!?
void glcd_init() // верно
{
// LCD module initialization
PORTB.2=0;
PORTB.0=0; // 1 res
delay_us(15);
PORTB.0=1; // 2 res
delay_ms(2);
PORTB.0=0;
PORTB.1=0; // 3 reset
PORTB.3=0;
PORTA=0b11100010;
PORTB.1=0; // 4 (end)
PORTB.3=0;
PORTA=0b11001110;
PORTB.1=0; // 5 static drive on/off
PORTB.3=0;
PORTA=0b10100100;
PORTB.1=0; // 6 duty select
PORTB.3=0;
PORTA=0b10101000;
PORTB.1=0; // верхнюю строку на 0 (dis start line)
PORTB.3=0;
PORTA=0b11000000;
PORTB.1=0; //NonInvert scan RAM
PORTB.3=0;
PORTA=0b10100000;
PORTB.1=0; // 7 display on/off
PORTB.3=0;
PORTA=0b10101111;
}
Re: Подскажите новичку как соединить жк и atmega.
Еще есть интересный вопрос: Может ли этот ЖК, допустим при проматывании текста вниз плавно отображать его.
Расшифрую-у меня будет стоять карта памяти(не большая), на ней текст-массив символов...
Я хочу сосчитать эти символы, загнать энное число в экран, при нажатии на кнопку "вниз/вверх", мк считывает символы с карты и формирует всё так, что выглядит как плавный подьем текста. Ну это как прокрутка в текстовом редакторе:
опускаешь ползунок-поднимается плавно текст.
Возможно ли такое????
Расшифрую-у меня будет стоять карта памяти(не большая), на ней текст-массив символов...
Я хочу сосчитать эти символы, загнать энное число в экран, при нажатии на кнопку "вниз/вверх", мк считывает символы с карты и формирует всё так, что выглядит как плавный подьем текста. Ну это как прокрутка в текстовом редакторе:
опускаешь ползунок-поднимается плавно текст.
Возможно ли такое????
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
Alerr, Ваша инициализация не работает уже хотя бы потому, что у Вас не выполняется функция WriteByte (точнее, Вы не проводите все необходимые операции с управляющими сигналами). Там поочередно дисплею выдаются команды с помощью функции WriteCode, которая, в свою очередь, вызывает функцию WriteByte - чтоб записать код команды в дисплей. Так вот, у Вас я не вижу выполнения всех процедур WriteByte при записи каждой команды. Могут быть еще какие-то нюансы (меня, например, смущает простое присваивание), но уже вышеуказанного вполне достаточно для того, чтобы дисплей не работал.
Я написал #define E 2, потому как хотел сделать код более читабельным. Когда я использую директиву #define, компилятор во время компиляции производит автоподстановку - вместо E он поставит 2, то есть поймет, что мне нужно установить (сбросить) второй бит в регистре. Сигнал E у нас управляется выводом PB2, отсюда и двойка.
И последнее - да, Вы сможете осуществить плавный сдвиг. Тут нужно будет применять математические операции с массивами. Вы можете ознакомиться с общими принципами на примере простеньких осциллографов на МК - схем, описаний и исходников в сети море.
Я написал #define E 2, потому как хотел сделать код более читабельным. Когда я использую директиву #define, компилятор во время компиляции производит автоподстановку - вместо E он поставит 2, то есть поймет, что мне нужно установить (сбросить) второй бит в регистре. Сигнал E у нас управляется выводом PB2, отсюда и двойка.
И последнее - да, Вы сможете осуществить плавный сдвиг. Тут нужно будет применять математические операции с массивами. Вы можете ознакомиться с общими принципами на примере простеньких осциллографов на МК - схем, описаний и исходников в сети море.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: Подскажите новичку как соединить жк и atmega.
Дошло почему именно 2!!! Насчет инициализауии: я писал инициализацию согласно даташиту, пункт в пункт... Там и нет этих функций... Разве не так???
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
Конечно же, там нет этих функций. Эти функции, извините, должен реализовать программист. Но там написано "подать команду.." - и так несколько пунктов. А у Вас команда не подается. Вы просто сбрасываете A0 и RDWR. А строб-сигнал кто подавать будет? А задержки устанавливать? А дожидаться сброса флага занятости? LCD-модуль попросту Вас не понимал, не воспринимал команды.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: Подскажите новичку как соединить жк и atmega.
Похоже, я плохо представляю принцип работы жк(... Получается жк считывает команды только после подачи строб сигнала??? Скажите, может я не понимаю правильно, прочитать данные- это прочитать данные с ножек шины данных, а без чтения, данные не запишешь в озу(после записать)... А из озу мк у жк все автоматически выводит???? Правильно понимаю?
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
Да, строб-сигнал в данном случае необходим для того, чтобы контроллер ЖКИ определил состояние управляющих выводов и при необходимости считал данные с шины.
Читать данные не обязательно. Но, по крайней мере, нужно дождаться сброса флага busy.
Контроллер выводит все автоматически, да.
Читать данные не обязательно. Но, по крайней мере, нужно дождаться сброса флага busy.
Контроллер выводит все автоматически, да.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: Подскажите новичку как соединить жк и atmega.
Обгаружил интересную вещь для меня.. Почему-то выводимые мною символы слегка с некоторых краев подразмазаны, ближние пиксели, расположенные по ходу рисования цифры горят на 1/4, кагбудто мк не успевает между пробелами снимать питание... Может,.. задержки увеличить? Но мне не помогло..
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Подскажите новичку как соединить жк и atmega.
Задержки не помогут. К сожалению, сам столкнулся сейчас с такой проблемой - правда, на бОльшем дисплее, и с ARM-контроллером. Ответа на вопрос пока что не знаю (мне коллега на работе посоветовал помощнее источник питания использовать - якобы ЖК не хватает питания, но это не факт). Разберусь - напишу.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
