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

 
 
> LCD через регистр сдвига, Как реализовать?
SergeyM
сообщение Jun 8 2005, 08:28
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 1-05-05
Из: Снежинск
Пользователь №: 4 654



Помогите пожалуйста реализовать работу МК с ЖКИ через регистр сдвига. Что то пробовал и не хотит ничего отображатьsad.gif
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3  
Start new topic
Ответов (30 - 42)
SergeyM
сообщение Jun 10 2005, 11:30
Сообщение #31


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 1-05-05
Из: Снежинск
Пользователь №: 4 654



Цитата(vvs157 @ Jun 9 2005, 23:30)
Попробуйте подключить вход Е индикатора непосредственно к одному из выходов МК (еще одна - 3-я линия) и передергивать Е после  записи всего слова в регистр. Полезно проверить любым вольтметром , что на самом деле есть на выходах вашего регистра
*


Вобщем попробовал, результата не дало. Пробовал по заднему фронту строб Е посылать, т. е. перед записью и после записи полубайта на Data подавал 0 вместо 1, тоже никаого результата.
Go to the top of the page
 
+Quote Post
phantom
сообщение Jun 10 2005, 11:45
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



А что насчет
Цитата
проверить любым вольтметром , что на самом деле есть на выходах вашего регистра
?

Цитата
Пробовал по заднему фронту строб Е посылать, т. е. перед записью и после записи полубайта на Data подавал 0 вместо 1

В смысле? В исходном варианте программы все правильно - запись именно по заднему фронту, т.к. сначала на ДАТА посылается 1, затем 0.
Не смею спрашивать, регистр поменять не пробовали? Или в результате Ваших исследований было установлено, что 74174 может работать как регистр сдвига? В таком случае следует, наверное, поставить в известность производителя о такой полезной недокументированной возможности... smile.gif smile.gif smile.gif


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
vvs157
сообщение Jun 10 2005, 12:04
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(phantom @ Jun 10 2005, 14:45)
А что насчет
Цитата
проверить любым вольтметром , что на самом деле есть на выходах вашего регистра
?



Как раз посмотреть после записи в регист что там на выходе, а вольтетром - это на случай если осциллографа нет smile.gif
А то обсуждает, а может там на выходе всегда что-то не то w00t.gif
Go to the top of the page
 
+Quote Post
SergeyM
сообщение Jun 10 2005, 12:16
Сообщение #34


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 1-05-05
Из: Снежинск
Пользователь №: 4 654



На счет поменять регистр. Нашел я регистры 74194 и 74199, скачал даташит, но чето пока не вкурил как его цеплять. Может подскажите?

Цитата
Как раз посмотреть после записи в регист что там на выходе, а вольтетром - это на случай если осциллографа нет 
А то обсуждает, а может там на выходе всегда что-то не то 


В протеусе видно что сначало что то поморгает на выходах потом все 0
Go to the top of the page
 
+Quote Post
phantom
сообщение Jun 10 2005, 12:57
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Вообще то 74194 - 4х разрядный регистр, а нужно как минимум 6-ти! 74199 - 8ми, что в принципе подходит. Ну а если и по даташиту непонятно, как регистр подключить, то советую почитать курс "Основы цифровой техники" или что-то в этом роде, прежде чем заниматься подобными проектами... а то гляди окажется что вы не понимаете чем отличается регистр сдвига от параллельного регистра...


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
SergeyM
сообщение Jun 10 2005, 15:03
Сообщение #36


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 1-05-05
Из: Снежинск
Пользователь №: 4 654



В общем разобрался я с регистром, при проверке отдельно от схемы все четко единичку передвигает. Но включив в схему, причем добавил третью ногу в работу, чтобы ноль подавала на сброс (74199) а затем обратно единичку. Короче чето непонятки какието, при симуляции все нормально вроде, а включаю эмуляцию неработает
Вот код (показываю только то что изменялось)
Код
LCDNybble(char Nybble, char RS)
{
unsigned int i;
/*PORTA.0 = 0;
for (i=0; i<6; i++)
       {
       PORTA.1 = 1;
       PORTA.1 = 0;
       }  */
PORTA.2 = 0;
PORTA.2 = 1;      
PORTA.0 = 1;
PORTA.1 = 1;
PORTA.1 = 0;

PORTA.0 = RS;
PORTA.1 = 1;
PORTA.1 = 0;
for (i=0; i<4; i++)
       {
       if ((Nybble & 0x08) != 0)
               PORTA.0 = 1;
       else
               PORTA.0 = 0;
       PORTA.1 = 1;
       PORTA.1 = 0;
       Nybble = Nybble << 1;
       }
PORTA.0 = 1;
PORTA.0 = 0;
}

// Port A initialization
State0=0
PORTA=0x00;
DDRA=0x07;

..........

// LCD module initialization
//lcd_init(16);

PORTA.1 = 0;
PORTA.0 = 0;
PORTA.2 = 1;

delay_ms(20);
LCDNybble(0x03,0);
delay_ms(5);
........
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 10 2005, 15:10
Сообщение #37


Гуру
******

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



Цитата(phantom @ Jun 10 2005, 13:54)
Цитата
Да вроде тут выходы соединены со входами, поэтому в принципе это 6 D-триггеров должны раболтать как регистр сдвига

НЕ ВЕРИТЕ НА СЛОВО - ВОТ ВАМ КАРТИНКА ИЗ ДАТАШИТА НА 74174:
[attachment=1511:attachment]
И ЦИТАТА ИЗ ДАТАШИТА:
"The LS174 consists of six edge-triggered D flip-flops with individual D inputs and Q outputs. The Clock (CP) and Master Reset (MR) are common to all flip-flops. Each D input’s state is transferred to the corresponding flipflop’s output following the LOW to HIGH Clock (CP) transition."
*


Либо вы прикалываетесь, либо не понимаете как устроен сдвиговый регистр. cranky.gif
Чтобы из HC174 сделать сдвиговый регистр с последовательным входом и параллельным выходом, нужно каждый из выходов D-триггера соединить со входом следующего D-триггера (Q0-D1, Q1-D2, Q2-D3 и т.д.). Вход первого D0 ни с каким выходом соединять не нужно. Это будет ваш SerialIN. После этого у вас получиться 6-разрядный сдвиговый регистр с последовательным входом и паралельным выходом. Правда такой 8-ми разрядный уже давно придумали. Называется он 74HC164 smile.gif А для того чтобы все это извращение заработало с LCD нужно выполнить требования временной диаграммы цикла записи м/с контроллера LCD аля HD44780. Для этого требуется:
- опережение установки сигналов RS и R/W относительно установки E как минимум 40нс
- удержание данных относительно спада E как минимум 10нс
- удержание сигналов RS и R/W относительно E как миниум 10нс
В Вашем же случае все изменения сигналов будут происходить синхронно и поэтому работать не должно biggrin.gif Посему вариантов у вас немного: либо вы ставите еще один регистр-защелку наподобие этой же 74HC174, либо используете уже готовый сдвиговый регистр с промежуточным паралельным регистром 74HC595. Если первый вариант, то каждый выход первой HC174 соединяете с одноименным входом второй HC174. Сигналы для LCD берете уже с выходов второй HC174. Сигналы RESET также можно объединить, а вот таковые входы объединять нельзя. CLOCK второй HC174 это будет сигнал LD (LoadData). Процедура записи (исходя из вашей схемы подключения LCD) будет такова.
В самом начале неплохо бы сбросить оба регистра сигналом RESET.
1 шаг.
Записывате в первый регистр такую последовательноcть 0-RS-D7-D6-D5-D4, сопровождая данные сигналом CLOCK первой HC174.
Затем формируете сигнал LD (он же CLOCK второй HC174).
2 шаг.
Записывате в первый регистр такую последовательноcть 1-RS-D7-D6-D5-D4, сопровождая данные сигналом CLOCK первой HC174.
Затем формируете сигнал LD (он же CLOCK второй HC174).
3 шаг.
Записывате в первый регистр такую последовательноcть 0-RS-D7-D6-D5-D4, сопровождая данные сигналом CLOCK первой HC174.
Затем формируете сигнал LD (он же CLOCK второй HC174).
Все. Запись одного полубайта в LCD завершена.

Сообщение отредактировал rezident - Jun 10 2005, 16:26
Go to the top of the page
 
+Quote Post
SergeyM
сообщение Jun 10 2005, 16:06
Сообщение #38


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 1-05-05
Из: Снежинск
Пользователь №: 4 654



Цитата
В самом начале неплохо бы сбросить оба регистра сигналом RESET.
1 шаг.
Записывате в первый регистр такую последовательноcть 0-RS-D7-D6-D5-D4, сопровождая данные сигналом CLOCK первой HC174.
Затем формируете сигнал LD (он же CLOCK второй HC174).
2 шаг.
Записывате в первый регистр такую последовательноcть 1-RS-D7-D6-D5-D4, сопровождая данные сигналом CLOCK первой HC174.
Затем формируете сигнал LD (он же CLOCK второй HC174).
1 шаг.
Записывате в первый регистр такую последовательноcть 0-RS-D7-D6-D5-D4, сопровождая данные сигналом CLOCK первой HC174.
Затем формируете сигнал LD (он же CLOCK второй HC174).
Все. Запись одного полубайта в LCD завершена.


дак мы три раза получается записываем одно и тоже значение в D7-D6-D5-D4
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 10 2005, 16:24
Сообщение #39


Гуру
******

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



Цитата(SergeyM @ Jun 10 2005, 22:06)
дак мы три раза получается записываем одно и тоже значение в D7-D6-D5-D4
*

Ничего подобного! Таким образом мы формируем временную диаграмму записи одного полубайта. Если вы обратите внимание, то первый бит в цепочке (который у вас соответствует сигналу E) последовательно принимает состояния 0->1->0. А то, что данные и сигнал RS все это время одинаковы - это требования времянки цикла записи. Скачайте наконец даташит HD44780 и изучите его в части временных диаграмм записи и чтения (стр. 49-53, 58-59).
P.S. у меня опечатка в нумерации шагов. Их там три. Последний следует читать как "3 шаг" smile.gif
P.P.S. исправил.

Сообщение отредактировал rezident - Jun 10 2005, 16:27
Go to the top of the page
 
+Quote Post
phantom
сообщение Jun 13 2005, 08:30
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Сорри, тормоз я! Извините, если кого обидел! Смотрел на схему а верхний текст, где написано как соединены выходы с входами "синтетического" регистра сдвига упустил sad.gif ... Каюсь. Но все же, лучше было бы полную схему привести!


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
SergeyM
сообщение Jun 13 2005, 11:39
Сообщение #41


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 1-05-05
Из: Снежинск
Пользователь №: 4 654



В общем все ОК, я реализовал данный случай. Немного пришлось изменить код.
Да кстати rezident ниче ненадо соединять два 74174, все с одним прекрасно сработало, кстати спасибо за то что направил еще раз прочесть ДатаШит.
Мне всего то пришлось добавить задержку в одну мкс при стробировании Е и стробировать ее через другую ногу, иначе не хотела работать.
Go to the top of the page
 
+Quote Post
pan_oleg
сообщение Feb 4 2008, 09:28
Сообщение #42


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387



SergeyM, ти абсолятно прав, достаточно всего одну 164 логику, строб индикатора на отдельний порт контроллера, и все работает по трех проводах (+ питание) a14.gif
yeah.gif
P.S. не даром притуман строб Е для работы индикатор на одной паралельной шине с другими устройствами
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Feb 4 2008, 16:31
Сообщение #43


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



Ваша проблема уже решена и опубликована!
Смотрите сюда:
http://electronix.ru/forum/index.php?showt...0934&st=30#

Сообщение отредактировал aleksey_g - Feb 4 2008, 16:37
Go to the top of the page
 
+Quote Post

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

 


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


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