Перейти к содержанию
    

Помогите подключить к AVR LCD 16x2 SN74hc165

Помогите подключить к AVR LCD 16x2

По вот этой схеме!!!! схема в "Шпроте"

А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате
Присоединяюсь. Но даже не видя схемы можно предположить, что задача нерешаемая - 74HC165 имеет 8 входов и последовательный выход. Надо ее заменять на 74HC164 или 74HC595.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я извеняюсь за дезу в теме там 74hc164n!!!!
Так в чем вопрос? Что у вас не получается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В где проблема-то? Подключить три цифровых сигнала к любым GPIO выводам МК это проблема разве? :cranky:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема как организовать код на си временные задержки?
Самое простое решение - пустой цикл
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();
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое простое решение - пустой цикл
Простое, но не самое оптимальное. Лучше уж разобраться с работой таймера, прерываний и формировать временнЫе паузы с помощью таймера и его прерывания. Или если с прерываниями сложно, то по крайней мере настроить таймер на работу с переполнением кратным той же самой 1 мс, и выполнять опрос флага переполнения таймера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А еще лучше использовать SPI и горя не знать. Все само собой делается.

Хотя и программно дергать - задержки могут и не понадобиться.

У меня SPI работает на 4 мгц (OSC/2). При этом сам проц на одной плате, а регистр на другой в 20 см от него (плоский шлейф).

4 Мгц программно и не сделать. Так что можно и без задержек.

Все от платы зависит, от обвески.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А еще лучше использовать SPI и горя не знать. Все само собой делается.
Без программных задержек все равно не обойтись. Модуль SPI реализует только аппаратную загрузку данных в сдвиговый регистр, но времянку записи/чтения самого LCD-модуля SPI никак "сам собой" не сделает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, "та" времянка вообще не нуждается в задержках. Вернее, эти задержки будут происходить вполне самостоятельно. Даже слишком медленно будет. И без задержек.

 

А для каких-то больших задержек просто вставляем в первое попавшееся прерывание по таймеру

if (delay!=0) delay--;

 

А саму задержку в мэйне

delay=123;

while (delay!=0);

 

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

 

Но это употребляется для достаточно больших задержек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, "та" времянка вообще не нуждается в задержках. Вернее, эти задержки будут происходить вполне самостоятельно.
Спишем эту часть поста на послепраздничный дурман :biggrin:

А для каких-то больших задержек просто вставляем в первое попавшееся прерывание по таймеру

if (delay!=0) delay--;

 

А саму задержку в мэйне

delay=123;

while (delay!=0);

И тут же напарываемся на необходимость применения для переменной delay квалификатора volatile. Сказавши "А", говорите уж тогда и "Б". То бишь объясняйте начинающему про прерывания и особенности использования глобальных переменных, модифицируемых в прерываниях. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем откликнувшимся!!!!

Я тут нашол схему и проект в ВИНАВР вроде все компилится а результат ноль!!

2wireLCD.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа, хочу напомнить, что у LCD-индикаторов, которые выполнены на базе контроллера HD44780, время исполнения большинства команд примерно одинаковое, а вот пара команд потребуют достатосно много времени. В доках приводятся следующие цифры:

          команда                   время [ms]
-------------------------------     ----------
Чтение данных                           43
Запись данных                           43
Чтение флага готовности                  0
Запись адреса                           39 
Установка параметров интерфейса         39
Перемещение курсора                     39   
Управление дисплеем                     39
Перемещение в начало экрана           1530
Очистка дисплея                       1530

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

 

Я не полагаюсь на наличие задержек в коде. Задержки -- это как-то не кошерно. Всегда, тестирую флаг готовности перед очередным обращением к LCD. При этом получается скорость работы -- максимально возможная. Проблем ни разу не было. Поэтому настоятельно рекомендую не заорачиваться на "задержки".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...