Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите подключить к AVR LCD 16x2 SN74hc165
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
freon
Помогите подключить к AVR LCD 16x2
По вот этой схеме!!!! схема в "Шпроте"
Александр Куличок
Цитата(freon @ Jan 6 2009, 06:06) *
Помогите подключить к AVR LCD 16x2
По вот этой схеме!!!! схема в "Шпроте"

А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате
Сергей Борщ
Цитата(Александр Куличок @ Jan 6 2009, 11:47) *
А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате
Присоединяюсь. Но даже не видя схемы можно предположить, что задача нерешаемая - 74HC165 имеет 8 входов и последовательный выход. Надо ее заменять на 74HC164 или 74HC595.
freon
Я извеняюсь за дезу в теме там 74hc164n!!!!
Сергей Борщ
Цитата(freon @ Jan 6 2009, 15:08) *
Я извеняюсь за дезу в теме там 74hc164n!!!!
Так в чем вопрос? Что у вас не получается?
rezident
В где проблема-то? Подключить три цифровых сигнала к любым GPIO выводам МК это проблема разве? cranky.gif
freon
Проблема как организовать код на си временные задержки?
Сергей Борщ
Цитата(freon @ Jan 6 2009, 17:01) *
Проблема как организовать код на си временные задержки?
Самое простое решение - пустой цикл
Код
void delay_1_ms()
{
#define CYCLES_PER_MS   100 // подобрать, чтобы функция исполнялась 1 мс
    volatile unsigned char i;
    for( i = 0; i < CYCLES_PER_MS; ++i)
      ;
}

void delay_ms(unsigned char time_ms)
{
    while(--time_ms)
         delay_1_ms();
}
rezident
Цитата(Сергей Борщ @ Jan 6 2009, 20:13) *
Самое простое решение - пустой цикл
Простое, но не самое оптимальное. Лучше уж разобраться с работой таймера, прерываний и формировать временнЫе паузы с помощью таймера и его прерывания. Или если с прерываниями сложно, то по крайней мере настроить таймер на работу с переполнением кратным той же самой 1 мс, и выполнять опрос флага переполнения таймера.
DpInRock
А еще лучше использовать SPI и горя не знать. Все само собой делается.
Хотя и программно дергать - задержки могут и не понадобиться.
У меня SPI работает на 4 мгц (OSC/2). При этом сам проц на одной плате, а регистр на другой в 20 см от него (плоский шлейф).
4 Мгц программно и не сделать. Так что можно и без задержек.
Все от платы зависит, от обвески.
rezident
Цитата(DpInRock @ Jan 6 2009, 21:14) *
А еще лучше использовать SPI и горя не знать. Все само собой делается.
Без программных задержек все равно не обойтись. Модуль SPI реализует только аппаратную загрузку данных в сдвиговый регистр, но времянку записи/чтения самого LCD-модуля SPI никак "сам собой" не сделает.
DpInRock
Ну, "та" времянка вообще не нуждается в задержках. Вернее, эти задержки будут происходить вполне самостоятельно. Даже слишком медленно будет. И без задержек.

А для каких-то больших задержек просто вставляем в первое попавшееся прерывание по таймеру
if (delay!=0) delay--;

А саму задержку в мэйне
delay=123;
while (delay!=0);

Разрядность delay устанавливаем соответственно аппетиту.

Но это употребляется для достаточно больших задержек.
rezident
Цитата(DpInRock @ Jan 6 2009, 21:50) *
Ну, "та" времянка вообще не нуждается в задержках. Вернее, эти задержки будут происходить вполне самостоятельно.
Спишем эту часть поста на послепраздничный дурман biggrin.gif
Цитата(DpInRock @ Jan 6 2009, 21:50) *
А для каких-то больших задержек просто вставляем в первое попавшееся прерывание по таймеру
if (delay!=0) delay--;

А саму задержку в мэйне
delay=123;
while (delay!=0);
И тут же напарываемся на необходимость применения для переменной delay квалификатора volatile. Сказавши "А", говорите уж тогда и "Б". То бишь объясняйте начинающему про прерывания и особенности использования глобальных переменных, модифицируемых в прерываниях. wink.gif
freon
Спасибо всем откликнувшимся!!!!
Я тут нашол схему и проект в ВИНАВР вроде все компилится а результат ноль!!
zhevak
Господа, хочу напомнить, что у LCD-индикаторов, которые выполнены на базе контроллера HD44780, время исполнения большинства команд примерно одинаковое, а вот пара команд потребуют достатосно много времени. В доках приводятся следующие цифры:
Код
          команда                   время [ms]
-------------------------------     ----------
Чтение данных                           43
Запись данных                           43
Чтение флага готовности                  0
Запись адреса                           39
Установка параметров интерфейса         39
Перемещение курсора                     39  
Управление дисплеем                     39
Перемещение в начало экрана           1530
Очистка дисплея                       1530

Данные для этой таблички я взял из своей рабочей теради, Туда они попали из какого-то дэйтшита. В свое время не записал, а за давностью времени уже и не помню. Кроме того, нужно учитывать, что эти времена зависят от температуры.

Я не полагаюсь на наличие задержек в коде. Задержки -- это как-то не кошерно. Всегда, тестирую флаг готовности перед очередным обращением к LCD. При этом получается скорость работы -- максимально возможная. Проблем ни разу не было. Поэтому настоятельно рекомендую не заорачиваться на "задержки".
rezident
Цитата(zhevak @ Jan 7 2009, 00:04) *
Данные для этой таблички я взял из своей рабочей теради, Туда они попали из какого-то дэйтшита. В свое время не записал, а за давностью времени уже и не помню.
Найти даташиты HD44780U и ее клонов вовсе не проблема. laughing.gif
Цитата(zhevak @ Jan 7 2009, 00:04) *
Я не полагаюсь на наличие задержек в коде. Задержки -- это как-то не кошерно. Всегда, тестирую флаг готовности перед очередным обращением к LCD. При этом получается скорость работы -- максимально возможная.
При используемой топикстартером схемотехнике это не получится. Используемый сдвиговый регистр только на вывод работает и не "умеет" переводить свои выходы в Z-состояние. Для реализации функция чтения флага готовности нужно менять схему подключения, тип сдвигового регистра и вводить по крайней мере еще пару сигналов.
DpInRock
Резиденту.
А сказав Б, надо горить и Ц и Д и Е и Ё....
Отвечать на вопросы следует по мере их возникновения. Иначе ответ выродится в книгу. Написанную с конца. А в начале будет Библия. Или Коран. Хум хау.

Задержки не нужны. Не встречал контроллера, который бы работал медленнее сдвигового регистра, который управляется медленным процессором.
rezident
Цитата(DpInRock @ Jan 7 2009, 02:31) *
Задержки не нужны. Не встречал контроллера, который бы работал медленнее сдвигового регистра, который управляется медленным процессором.
Это ATmega164 "медленный контроллер"? 07.gif
DpInRock
Он загонит в сдвиговый регистр данные примерно за 2 микросекунды (с SPI). Значит скорость изменения сигналов на выходе регистра будет не меньше 2 микросекунд.

Это каким задумчивым должен быть контроллер, чтобы ему не хватало естественной задержки аж в 2 микросекунды?
rezident
Цитата(DpInRock @ Jan 7 2009, 03:35) *
Он загонит в сдвиговый регистр данные примерно за 2 микросекунды (с SPI). Значит скорость изменения сигналов на выходе регистра будет не меньше 2 микросекунд.
Фу, блин! Понял. 01.gif "И тут до армян дошло первое действие" (с) biggrin.gif Вы оказывается про ненужность задержек между записями в сдвиговый регистр утверждаете. С этим согласен. А я-то воспринял, что вы вообще отрицаете необходимость задержек, даже между записями данных/команд в LCD-модуль.
Кстати, у zhevak в табличке опечатка. Все времена там в микросекундах (µs, мкс), а не миллисекундах (ms, мс) приведены.
zhevak
Цитата(rezident @ Jan 7 2009, 04:17) *
Кстати, у zhevak в табличке опечатка. Все времена там в микросекундах (µs, мкс), а не миллисекундах (ms, мс) приведены.

Гы-гы! А я даже как-то и не обратил на это внимание. Конечно же микросекунды! А то, приколитесь пацаны -- экран очищается полторы секунды. Наверно очченнь тщаттэльнно чистится...

Сожалею, но поправить размерность в табличке уже нет возможности. Мои извинения за то, что ввел в заблуждение народ. Постараюсь быть внимательнее.
mrKirill
Цитата(freon @ Jan 6 2009, 09:06) *
Помогите подключить к AVR LCD 16x2
По вот этой схеме!!!! схема в "Шпроте"

Чего то не понял сути проблемы. Где Вы взяли данную схему? Там же и исходники должны были быть. Наклонировали на всех форумах видимо доступных.
В ветке AVR в теме исходников уже давно все решено (оттуда небось и схема взята, единственно там 8бит режим)
http://electronix.ru/forum/index.php?showt...st&p=131435
И все замечательно работает (сам лично проверял).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.