Форум РадиоКот https://radiokot.ru/forum/ |
|
Сдвиговый регистр 74HC595 https://radiokot.ru/forum/viewtopic.php?f=61&t=150371 |
Страница 1 из 1 |
Автор: | ATMEL86 [ Вт ноя 28, 2017 23:33:12 ] |
Заголовок сообщения: | Сдвиговый регистр 74HC595 |
Привет всем! ![]() проблема такая: допустим есть 8 переменных, которые динамически меняют состояние 0/1 мне нужно через сдвиговый регистр включать/выключать 8 светодиодов. Код: void sdvig_reg(void) { for (count=0;count<8;count++) { if (z & 0b10000000) data=1 ; else data=0; shift=1; delay_us(5); shift=0; z=z<<1; //z<<=1; } latch=1; delay_us(5); latch=0; // data=0 ; } void main(void) { while(1){ sdvig_reg(); if( led_0==1){ z=0b00000001; } } } ![]() я так понял, что нужно led_0 - led_7 записывать в переменную к примеру:" z = 0b10001011;" скажите как правильно записать ? ![]() |
Автор: | Аlex [ Ср ноя 29, 2017 00:17:03 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Заюзайте структуру и union. Будут и led'ы и выдвигаемый байт "в одном флаконе". |
Автор: | 7seg [ Ср ноя 29, 2017 04:47:15 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Создайте структуру к примеру : Код: struct UnionBits { unsigned DO0: 1; unsigned DO1: 1; unsigned DO2: 1; unsigned DO3: 1; unsigned DO4: 1; unsigned DO5: 1; unsigned DO6: 1; unsigned DO7: 1; }; union Byte { uint8_t ByteRegister; struct UnionBits Register; }; union Byte OneOUT; И пишите состояние в эту структуру к примеру чере SPI. Код: uint8_t SPI_UpdataByte(uint8_t data) { uint8_t report; SPDR = data; while(!(SPSR & (1<<SPIF))); report = SPDR; return report; } void SpiOutRegister() { SPI_PORT &= ~(1<<SPI_SS); OneIN.ByteRegister=SPI_UpdataByte(EightOUT.ByteRegister); SPI_PORT |= (1<<SPI_SS); } Вот ссылка с моей реализацией реализацией. viewtopic.php?f=57&t=149947 |
Автор: | ATMEL86 [ Ср ноя 29, 2017 11:39:10 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Спасибо но spi уже занят у меня есть 3 свободных порта, по этому и решил применить программный spi. |
Автор: | Бубоник [ Пт дек 01, 2017 09:38:09 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Вам нужно 8 раз отправить 1. Соответственно загорится 8 светодиодов. Добавлено after 24 minutes 59 seconds: И еще кое что. Если у вас переменная latch управляет STCP регистром то вам его нужно в начале цикла выставить в 0, а потом в конце цикла выставить 1. |
Автор: | jcxz [ Ср дек 06, 2017 13:06:00 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Спасибо но spi уже занят у меня есть 3 свободных порта, по этому и решил применить программный spi. Что значит "занят"? SPI - это вообще-то шина и, соответственно, позволяет вешать на неё несколько независимых слэйвов, каждый со своим CS. Занят может быть только конкретный CS. |
Автор: | BlYur [ Сб дек 16, 2017 16:51:10 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Народ, неужели 74hc595 не требует совсем никакой обвязки? Ни на одной схеме в инете я её не увидел. Проскакивала инфа, что надо вешать кондеры по питанию. Так ли это? Какого номинала они должны быть, как думаете? 0,1мкФ, как на контроллере, достаточно будет? Или не ставить вовсе, если схема будет питаться от батареек и управлять светодиодами? |
Автор: | pyzhman [ Сб дек 16, 2017 18:24:46 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Я за народ. Ставить на каждую микросхему по 0,1 мкФ. ...Ни на одной схеме в инете я её не увидел... И не увидите. Бо рисуют (а в большинстве своём копипастят) и выкладывают эти схемы такие же, как вы. |
Автор: | jcxz [ Вс дек 17, 2017 14:51:59 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Народ, неужели 74hc595 не требует совсем никакой обвязки? Или не ставить вовсе, если схема будет питаться от батареек и управлять светодиодами? Какая разница - от батареек или нет? Читайте учебники что такое "блокировочные конденсаторы" и зачем они нужны. |
Автор: | BOB51 [ Пн май 28, 2018 09:38:27 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Ну и садомазохизм... Для 595-го надо от 3х до 4х линий управления, а для полевика ВСЕГО одна - в чем смысл такого изврата? ![]() |
Автор: | vk696 [ Пн май 28, 2018 09:53:20 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
было сделано для 1533ир24, но не суть. записываем значение переменной temp в регистр сдвига. чуть изменив код можно писать инверсное значение переменной. #include <xc.h> #define strb_c0 RD6 #define strb_c1 RD7 #define clk_c RD0 #define data_c RD1 #define clk_c1 RD2 #define data_c1 RD3 // makros unsigned char var,bitno,mask; #define bitset(var,bitno) ((var)|=1<<(bitno)) #define bitclr(var,bitno) ((var)&=~(1<<(bitno))) #define testbit(var,bitno) ((var>>bitno)&0x01) // chek 1 #define testbit_0(var,bitno) (!((var>>bitno))&0x01) // chek 0 #define bits_on (var, mask) var |= mask // #define bits_off (var, mask) var &= ~ 0 ^ mask /////////////////////////////////////////////////////////////////////////////// void load_reg_clock (unsigned char temp){ /////////////////////////////////////////////new_load_reg signed char j; for (j=0x07; j>=0x00; j--) { if (testbit(temp,j)) data_c=0; else ( data_c=1); clk_c=1; clk_c=0; } /////////////////////////////////////////////new_load_reg } |
Автор: | Chip115 [ Пт июн 01, 2018 12:55:01 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Ну и садомазохизм... Для 595-го надо от 3х до 4х линий управления, а для полевика ВСЕГО одна - в чем смысл такого изврата? ![]() В том что полевиков 7, я просто один разместил рядом, что бы скрин сделать. И да, поражает особенность отечественных форумов. Я спрашивал не про адекватность такого "изврата", а про гипотетическую возможность так управлять: возможно ли и с какими граблями или же нет. Да. Смысл такой. В регистр записываем нужное значение, выставив единицы на нужных линиях, а нога enable шимится от аппаратного ШИМ. Думаю прокатит. Прототип платы уже заказан ) |
Автор: | BOB51 [ Сб июн 02, 2018 11:53:19 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Это вход разрешения, а не логика. Если критичны параметры наростания/спада(и пиковых токов зарядки емкости затвора) импульса лучше добавить обычную логику между выходом регистра и полевиком. ![]() |
Автор: | korob [ Сб июн 02, 2018 12:16:52 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Chip115 писал(а): В общем, записываю бит в нужную позицию, а на вывод OE подаю ШИМ. По идее, этот же ШИМ появляется на выводе, в который я раньше записал лог.1 . Частота не более 100 кГц. Такой вариант использования микросхемы адекватен или же идея шляпа? Имейте ввиду, что при лог.1 на управляющем входе ОЕ выходы переходят в Z-состояние (повисают в воздухе), а не переключаются в лог.0. ![]() ![]() ![]() |
Автор: | Chip115 [ Пн июн 04, 2018 03:40:19 ] |
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 |
Спасибо за ответы! Прижал затвор резистором. Придется подбирать резюк или же, действительно, ставить разрядную цепочку |
Автор: | korob [ Пн июн 04, 2018 08:28:05 ] | ||
Заголовок сообщения: | Re: Сдвиговый регистр 74HC595 | ||
Chip115 писал(а): Прижал затвор резистором. Придется подбирать резюк... Это не дело. ![]() В противном случае нужен драйвер/буфер. ![]()
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |