|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Подключаем сдвиговый регистр 74HC595Обратим внимание на некоторые технические характеристики данного регистра сдвига. Граничная частота тактирования не должна превышать 100 МГц, так что с нашими 8 или 16 МГц тактировой частоты контроллера мы вряд ли данную частоту превысим. Напряжение питания микросхемы – от 2 до 6 В. Данная микросхема существует в двух типах корпусов – обычный DIP, а также DHVQFN16, Мы будем использовать первый вариант, поэтому и посмотрим распиновку по данному варианту. У микросхемы 16 ножек. Посмотрим их назначение в таблице
Блоксхема поможет до конца понять назначение ножек Здесь, Q0 - Q7 - это цифровые выходы. MR - это reset. OE - переводит выводы в HiZ режим. Q'7 - это бит переполнения, используется для соединения регистров каскадом. DS - линия передачи данных, SH - линия тактирования, ST - защелка(latch), но мне привычнее такие штуки называть Enter'ом. В рабочем состоянии, OE должен быть соединен с землей, а MR подтянут к питанию. Ведущий микроконтроллер может менять состояние DS при низком уровне линии тактирования - SH. Чип считывает состояние линии DS при растущем фронте на линии тактирования SH. Прием данных сдвиговым регистром происходит при низком уровне защелки - ST. При этом принимаемые данные идут во внутренний (теневой) регистр (на самом деле там одна цепочка триггеров). При выставлении защелки ST в высокий уровень, содержимое теневого регистра записывается в регистр вывода, и выходы Q0 - Q7 принимают состояние в соответствии с его содержимым. Данные посылаются старшим вперед. Временная диаграмма сигналов: Пример программы управления семисегментным индиктором для Ардуино
#define Pin2DS 14 // пин данных Ардуино. Соединяется с 14 выв (DS) регистра первого каскада
// Для последующих каскадов pin9 регистра предыдущего каскада соединяется с 14 выв (DS) регистра
// следующего каскада
#define Pin2ShCp 11 // пин тактов синхронизации. Соединяется с 11 выв (SHCP) регистров всех каскадов
#define Pin2StCp 12 // пин защелки. Соединяется с 12 выв (STCP) регистров всех каскадов
// Q0-Q7 – восемь параллельных выходов общего назначения. Данные выходы нужны для того, чтобы
// мы могли как-то воспользоваться
// 16 - VCC – напряжение питания. +5В
// 8 - GND/Земля – общий провод.
// 9 - Q7' – последовательный выход данных.
// 14 - DS – последовательный вход данных.
// 10 - MR – это master reset. LOW - cборс/обнуление. Подключаем к +5В.
// 11 - SH_CP – в нашем случае это будет chip select.
// 12 - ST_CP – это ножка управления регистром хранения, в нашем случае это будет ножка
// синхронизации, на которую мы будем подавать тактовые импульсы.
// 13 - OE – задействования выхода. При отрицательном значении последовательный выход
// включен, при положительном – выключен. Подключаем к GND.
byte b[6] =
{
// байты, который будут последовательно циклически выводиться в регистре
0b00000000,
0b11111111,
0b11110000,
0b00001111,
0b10101010,
0b01010101,
};
void setup()
{
pinMode(Pin2DS, OUTPUT); // инициализация пинов
pinMode(Pin2ShCp, OUTPUT);
pinMode(Pin2StCp, OUTPUT);
digitalWrite(Pin2StCp, HIGH);
}
void loop()
{
static byte i = 0;
out_595_shift(b[i]); // передача байта на регистр
i = i == 5 ? 0 : i + 1; // подготовка следующего байта
delay(1000); // задержка между установками 1 сек
}
void out_595_shift(byte x)
{
digitalWrite(Pin2StCp, LOW); // "открываем защелку"
shiftOut(Pin2DS, Pin2ShCp, LSBFIRST, x); // "отправляем данные"
digitalWrite(Pin2StCp, HIGH); // "закрываем защелку", выходные ножки регистра установлены
}
Похожие запросы по теме: |
|||||||||||||||||||||||||||||||||||||||||||||||||||
© 2000-2024 - 29/1/22 8:33 | |||||||||||||||||||||||||||||||||||||||||||||||||||
|