реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помогите подключить к AVR LCD 16x2 SN74hc165
freon
сообщение Jan 6 2009, 04:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 1-10-07
Пользователь №: 30 962



Помогите подключить к AVR LCD 16x2
По вот этой схеме!!!! схема в "Шпроте"
Прикрепленные файлы
Прикрепленный файл  AVR_164_LCD.rar ( 4.84 килобайт ) Кол-во скачиваний: 70
 
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jan 6 2009, 09:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата(freon @ Jan 6 2009, 06:06) *
Помогите подключить к AVR LCD 16x2
По вот этой схеме!!!! схема в "Шпроте"

А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 6 2009, 10:00
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Александр Куличок @ Jan 6 2009, 11:47) *
А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате
Присоединяюсь. Но даже не видя схемы можно предположить, что задача нерешаемая - 74HC165 имеет 8 входов и последовательный выход. Надо ее заменять на 74HC164 или 74HC595.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
freon
сообщение Jan 6 2009, 13:08
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 1-10-07
Пользователь №: 30 962



Я извеняюсь за дезу в теме там 74hc164n!!!!
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 6 2009, 14:23
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(freon @ Jan 6 2009, 15:08) *
Я извеняюсь за дезу в теме там 74hc164n!!!!
Так в чем вопрос? Что у вас не получается?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2009, 14:26
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



В где проблема-то? Подключить три цифровых сигнала к любым GPIO выводам МК это проблема разве? cranky.gif
Go to the top of the page
 
+Quote Post
freon
сообщение Jan 6 2009, 15:01
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 1-10-07
Пользователь №: 30 962



Проблема как организовать код на си временные задержки?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 6 2009, 15:13
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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();
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2009, 15:36
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Сергей Борщ @ Jan 6 2009, 20:13) *
Самое простое решение - пустой цикл
Простое, но не самое оптимальное. Лучше уж разобраться с работой таймера, прерываний и формировать временнЫе паузы с помощью таймера и его прерывания. Или если с прерываниями сложно, то по крайней мере настроить таймер на работу с переполнением кратным той же самой 1 мс, и выполнять опрос флага переполнения таймера.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 6 2009, 16:14
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



А еще лучше использовать SPI и горя не знать. Все само собой делается.
Хотя и программно дергать - задержки могут и не понадобиться.
У меня SPI работает на 4 мгц (OSC/2). При этом сам проц на одной плате, а регистр на другой в 20 см от него (плоский шлейф).
4 Мгц программно и не сделать. Так что можно и без задержек.
Все от платы зависит, от обвески.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2009, 16:21
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(DpInRock @ Jan 6 2009, 21:14) *
А еще лучше использовать SPI и горя не знать. Все само собой делается.
Без программных задержек все равно не обойтись. Модуль SPI реализует только аппаратную загрузку данных в сдвиговый регистр, но времянку записи/чтения самого LCD-модуля SPI никак "сам собой" не сделает.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 6 2009, 16:50
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



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

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

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

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

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


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2009, 16:58
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(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
Go to the top of the page
 
+Quote Post
freon
сообщение Jan 6 2009, 17:37
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 1-10-07
Пользователь №: 30 962



Спасибо всем откликнувшимся!!!!
Я тут нашол схему и проект в ВИНАВР вроде все компилится а результат ноль!!
Прикрепленные файлы
Прикрепленный файл  2wireLCD.rar ( 50.18 килобайт ) Кол-во скачиваний: 44
 
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jan 6 2009, 19:04
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Господа, хочу напомнить, что у LCD-индикаторов, которые выполнены на базе контроллера HD44780, время исполнения большинства команд примерно одинаковое, а вот пара команд потребуют достатосно много времени. В доках приводятся следующие цифры:
Код
          команда                   время [ms]
-------------------------------     ----------
Чтение данных                           43
Запись данных                           43
Чтение флага готовности                  0
Запись адреса                           39
Установка параметров интерфейса         39
Перемещение курсора                     39  
Управление дисплеем                     39
Перемещение в начало экрана           1530
Очистка дисплея                       1530

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

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


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 01:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016