помогите разобраться с регистром сдвиговым(74HC595)
- Реклама
-
culibin 100
- Встал на лапы
- Сообщения: 88
- Зарегистрирован: Ср апр 29, 2009 10:35:56
- Откуда: кр. лиман украина
помогите разобрать с 74нс595
доброго времени суток уважаемые коты зашел в тупик не зватает на моем девайсе портов и решил я применить 74нс595 мне она подходит ,но к сожалению никогда не работал с ее управлением
подсобите обьяснением или пните куда надо. сам погулял в гугле и ничего суразного не попалось
мне бы понять что куда подать и как потом поданное получить
спасибо за любую помощ
подсобите обьяснением или пните куда надо. сам погулял в гугле и ничего суразного не попалось
мне бы понять что куда подать и как потом поданное получить
спасибо за любую помощ
-
spongebob
- Грызет канифоль
- Сообщения: 289
- Зарегистрирован: Пт мар 20, 2009 12:25:47
- Откуда: Ivanovo
- Контактная информация:
Re: помогите разобрать с 74нс595
1) в даташите всё популярно расписано
2) здесь на форуме я уже описывал как с ней работать (http://forum.radiokot.ru/viewtopic.php? ... 2&start=20 - последнее сообщение)
2) здесь на форуме я уже описывал как с ней работать (http://forum.radiokot.ru/viewtopic.php? ... 2&start=20 - последнее сообщение)
-
Twilo
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Вт авг 25, 2009 22:24:39
- Откуда: Черкассы
- Контактная информация:
Re: помогите разобрать с 74нс595
вот пример записи трех чисел в три последовательено соединенных 74hc595:
data1, data2, data3 - наши 3 числа
data1, data2, data3 - наши 3 числа
Код: Выделить всё
...
#define DATA PORTD.2 //тут подставить
#define SHIFT PORTD.0 // свои
#define STORAGE PORTD.1 // значения
...
for(i=0; i<8 ; i++)
{ if (data3 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data3>>=1;
SHIFT=1;
SHIFT=0;
}
for(i=0; i<8 ; i++)
{ if (data2 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data2>>=1;
SHIFT=1;
SHIFT=0;
}
for(i=0; i<8 ; i++)
{ if (data1 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data1>>=1;
SHIFT=1;
SHIFT=0;
}
STORAGE=1;
STORAGE=0;
-
culibin 100
- Встал на лапы
- Сообщения: 88
- Зарегистрирован: Ср апр 29, 2009 10:35:56
- Откуда: кр. лиман украина
Re: помогите разобрать с 74нс595
спасибо чето проясняется но я в си болван если можно на асме изложить
воть хоть этот кусочек или поснить что за условия плиз
( for(i=0; i<8 ; i++)
{ if (data3 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data3>>=1; )
воть хоть этот кусочек или поснить что за условия плиз
( for(i=0; i<8 ; i++)
{ if (data3 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data3>>=1; )
- Реклама
-
Twilo
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Вт авг 25, 2009 22:24:39
- Откуда: Черкассы
- Контактная информация:
Re: помогите разобрать с 74нс595
for(i=0; i<8 ; i++) - цикл от 0 до 7 потому что восемь ног у регистра, т.е. за каждый проход сдвигаем число на 1 и так восемь раз, таким образом после выполнения цикла в регистре будет нужное число.
if (data3 & BIT(0) - содержит значение младшего бита числа data3, т.е. 0 или 1, и если 1 то условие выполняется, если 0 то нет.
if (data3 & BIT(0) - содержит значение младшего бита числа data3, т.е. 0 или 1, и если 1 то условие выполняется, если 0 то нет.
Последний раз редактировалось Twilo Сб апр 10, 2010 17:13:28, всего редактировалось 1 раз.
Re: помогите разобрать с 74нс595
тематические ответы только в форуме, в приват не пишите
-
culibin 100
- Встал на лапы
- Сообщения: 88
- Зарегистрирован: Ср апр 29, 2009 10:35:56
- Откуда: кр. лиман украина
Re: помогите разобрать с 74нс595
все равно никак не доеду пример для понимания допустим что
порт б подключен к шине данных лсд дисплея HD44780
работаем по 8ми битам и подаем команду с кодом 10101010
ldi temp , $AA ; загружаем в рон с именем темп число 10101010
out portb , temp ; выгружаемиз регистра темп в порт б весь байт $АА
это простая выгрузка числа из регистра в порт
дрыганье ногами дисплея r/w ... r/s .. e опустим
как теперь это сделать если поставить нс595 на этот порт дабы освободить несколько ног
предположим что
shift подключен к пину 0 порта б * нога 11
data подключен к пину 1 порта б *нога 14
storage подключен к пину 2 порта б * нога 12 * это ноги нс-ки
все как тут http://kalobyte.com/wp-content/uploads/ ... gister.gif
как сформировать последовательность дрыганий ногами чтобы в этом регистре был мой байт информации
и как нужно сделать если мне надо только установить один бит например 3-й а все оставить
порт б подключен к шине данных лсд дисплея HD44780
работаем по 8ми битам и подаем команду с кодом 10101010
ldi temp , $AA ; загружаем в рон с именем темп число 10101010
out portb , temp ; выгружаемиз регистра темп в порт б весь байт $АА
это простая выгрузка числа из регистра в порт
дрыганье ногами дисплея r/w ... r/s .. e опустим
как теперь это сделать если поставить нс595 на этот порт дабы освободить несколько ног
предположим что
shift подключен к пину 0 порта б * нога 11
data подключен к пину 1 порта б *нога 14
storage подключен к пину 2 порта б * нога 12 * это ноги нс-ки
все как тут http://kalobyte.com/wp-content/uploads/ ... gister.gif
как сформировать последовательность дрыганий ногами чтобы в этом регистре был мой байт информации
и как нужно сделать если мне надо только установить один бит например 3-й а все оставить
-
Twilo
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Вт авг 25, 2009 22:24:39
- Откуда: Черкассы
- Контактная информация:
Re: помогите разобрать с 74нс595
все что вы запишите в регистр сдвига (595 точно а, 4094 не знаю не работал) появится там только после того как передернуть ногой "STORAGE"
Записать новое число с установленным битоми как нужно сделать если мне надо только установить один бит например 3-й а все оставить
я же Вам отправил код, проще некуда, на асм перевести совсем не трудно. главное знать что записывать в регистры сдвигакак сформировать последовательность дрыганий ногами чтобы в этом регистре был мой байт информации
-
culibin 100
- Встал на лапы
- Сообщения: 88
- Зарегистрирован: Ср апр 29, 2009 10:35:56
- Откуда: кр. лиман украина
Re: помогите разобрать с 74нс595
извените за назойливость не трудно для вас а для меня не совсем писать начал не давно и всего не знаю уж пробачте
я так понял что надо подать постоянный меандр на shift
далее ставим на ноге data либо ноль либо единицу (смотря что нужно записать)
и дрыгаем "STORAGE"и этот ноль либо единица оказывается в нулевом бите регистра
а если надо эту цыфру установить в бите 7 дрыгаем "STORAGE" 8 раз
пример : надо в регистре установить число 10101010
ставим data 1
дрыгаем SHIFT=1;
SHIFT=0;
ставим data 0
дрыгаем SHIFT=1;
SHIFT=0;
............... и так еще 6 раз
в итоге получаем в регистре 10101010
так или нет ?
я так понял что надо подать постоянный меандр на shift
далее ставим на ноге data либо ноль либо единицу (смотря что нужно записать)
и дрыгаем "STORAGE"и этот ноль либо единица оказывается в нулевом бите регистра
а если надо эту цыфру установить в бите 7 дрыгаем "STORAGE" 8 раз
пример : надо в регистре установить число 10101010
ставим data 1
дрыгаем SHIFT=1;
SHIFT=0;
ставим data 0
дрыгаем SHIFT=1;
SHIFT=0;
............... и так еще 6 раз
в итоге получаем в регистре 10101010
так или нет ?
- Настя
- Мявтор!
- Сообщения: 878
- Зарегистрирован: Чт авг 07, 2008 09:12:38
- Откуда: не скажу
- Контактная информация:
Re: помогите разобрать с 74нс595
Микроконтроллер последовательно записывает байты в сдвиговый регистр: на линии DS устанавливает очередной бит необходимого логического уровня (0 или 1), затем задним фронтом сигнала (переход из 1 в 0) на линии CH_CP задвигает этот бит в регистр и, наконец, задним фронтом на линии ST_CP инициирует появление на выходах регистра записанных последних восьми бит.
натуральная блондинка
Re: помогите разобрать с 74нс595
Возьмите таблицу истинности из даташита и просимулируйте Мс в Протеусе или Мультисиме и всё вам станет понятно.
-
culibin 100
- Встал на лапы
- Сообщения: 88
- Зарегистрирован: Ср апр 29, 2009 10:35:56
- Откуда: кр. лиман украина
Re: помогите разобрать с 74нс595
пишу в vm lab на асме протос не юзаю но вроде чето потихоньку доходит я так понял на линии ST_CP при записи битов должна быть постоянно единица и лиш после записи всего байта сбрасываем ST_CP в ноль и получаем появление наших разрядов на выходе регистра ?
так ли уважаемая настя
так ли уважаемая настя
-
Twilo
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Вт авг 25, 2009 22:24:39
- Откуда: Черкассы
- Контактная информация:
Re: помогите разобрать с 74нс595
не так. STORAGE дрыгаем когда "передернули" необходимое количество раз "SHIFT'ом" (обычно 8 для одного регистра). Если в момент дергания "SHIFT'ом" на DATA "1" то записывается 1 и наоборот. только потом дрыгаем "STORAGE" и на выходе регистра то что мы записалия так понял что надо подать постоянный меандр на shift
далее ставим на ноге data либо ноль либо единицу (смотря что нужно записать)
и дрыгаем "STORAGE"и этот ноль либо единица оказывается в нулевом бите регистра
внимательно посмотрите код, который я привел. неужели на асме было бы понятнее? там STORAGE всамом конце дергается после записи в три последовательно соединенных регистра. Собственно DATA-DS, SHIFT-SH_CP, STORAGE-ST_CP и /OE. MR на + питанияя так понял на линии ST_CP при записи битов должна быть постоянно единица и лиш после записи всего байта сбрасываем ST_CP в ноль и получаем появление наших разрядов на выходе регистра ?
-
culibin 100
- Встал на лапы
- Сообщения: 88
- Зарегистрирован: Ср апр 29, 2009 10:35:56
- Откуда: кр. лиман украина
Re: помогите разобрать с 74нс595
разобрался всем спасибо все работает гуд
Управление сдвиговым регистром 74HC595
Нужно управлять регистром 74HC595, сделал два варианта:
1. Соединил вместе выводы STCP и OE - в таком режиме сначала идет запись регистр даных (переход с "0" в "1") , выход регистра находиться в "Z-состоянии" (время t) и потом вкл. выход регистра (переходом с "1" в "0")
2. Вывод OE подключен к GND, выход регистра в таком режиме всегда подключен.
Выход регистра подключен к LCD (от китайского мультиметра DT830)
Какой вариант лучше использовать?

1. Соединил вместе выводы STCP и OE - в таком режиме сначала идет запись регистр даных (переход с "0" в "1") , выход регистра находиться в "Z-состоянии" (время t) и потом вкл. выход регистра (переходом с "1" в "0")
2. Вывод OE подключен к GND, выход регистра в таком режиме всегда подключен.
Выход регистра подключен к LCD (от китайского мультиметра DT830)
Какой вариант лучше использовать?

Re: Управление сдвиговым регистром 74HC595
второй
только индикатор у тебя будет работать, если на нем будет 60гц переменки
а это прога будет большая и сложная
вход ое лучше использовать как шим для регулировки яркости светодиодов
только индикатор у тебя будет работать, если на нем будет 60гц переменки
а это прога будет большая и сложная
вход ое лучше использовать как шим для регулировки яркости светодиодов
тематические ответы только в форуме, в приват не пишите
Re: Управление сдвиговым регистром 74HC595
Не мог никак определится с выбором реализации. Видел подключение как в первом варианте (управление 4-ным. 7-ным индикатором).kalobyte писал(а):второй
только индикатор у тебя будет работать, если на нем будет 60гц переменки
а это прога будет большая и сложная
вход ое лучше использовать как шим для регулировки яркости светодиодов
Прога уже написана, не сильно сложная:
Настраиваю таймер на 100гц, в обработчике инвертирую общий вывод дисплея, и даные которые загружаю в регист. Так выглядит обработчик прерывания таймера :
Код: Выделить всё
ISR(TIMER1_COMPA_vect)
{
Port_Data^=1<<com; // инверсия общего вывода дисплея
disp1 = ~disp1; // инверсия даных которие отображаються
disp2 = ~disp2;
disp3 = ~disp3;
send_74hc595(disp1);
send_74hc595(disp2);
send_74hc595(disp3);
Port_Data|=1<<strob; // запись данных в регистр (вывод на дисплей)
asm("nop");
Port_Data&=~(1<<strob);
}


