roboforum.ru

Технический форум по робототехнике.
Текущее время: 09 апр 2025, 03:43

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: сдвиговые регистры 74сн595
СообщениеДобавлено: 05 ноя 2017, 17:27 
Не в сети

Зарегистрирован: 30 мар 2017, 09:35
Сообщения: 10
собрал для практики светодиодную матрицу 8х8 на регистрах 74сн595, то есть на катодах и анодах по регистру.
но не могу никак разобраться с программированием данной матрицы.
весь интернет пересмотрел но по работе с моим вариантом не нашел примеров...
к примеру скетч
int dataPin = 4; //Пин подключен к DS входу 74HC595
int latchPin = 3; //Пин подключен к ST_CP входу 74HC595
int clockPin = 2; //Пин подключен к SH_CP входу 74HC595

void setup() {
//устанавливаем режим OUTPUT
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);


digitalWrite(latchPin, LOW); // устанавливаем синхронизацию "защелки" на LOW
// начинаем "продавливать" данные по цепочке регистров, начиная с последнего
shiftOut(dataPin, clockPin, LSBFIRST, B00111100); // передаем последовательно на dataPin - в первом регистре значение B01001100
shiftOut(dataPin, clockPin, LSBFIRST, B11000011); // "продавливаем" данные в следующий регистр - в первом регистре B10000111, во втором - B01001100

// и т.д. по количеству регистров
digitalWrite(latchPin, HIGH); //"защелкиваем" регистр, тем самым устанавливая значения на выходах
}

void loop() {
}

в итоге у меня загораются
00000000
11000011
00000000
00000000
00000000
00000000
00000000
11000011

что то не пойму я принцип написания скетча с двумя регистрами.
с двумя когда на светодиодах общий минус понял, а здесь не могу разобраться...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сдвиговые регистры 74сн595
СообщениеДобавлено: 06 ноя 2017, 13:16 
Не в сети
Аватара пользователя

Зарегистрирован: 12 авг 2010, 15:10
Сообщения: 897
Откуда: Астраханская обл.
без схемы как понять? схему давай.

и в принципе, можно же пошагово контролировать после каждого "продавливания". собс-но, ежели что-то не так идет, я бы так делал :)

_________________
Соединяй и здравствуй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сдвиговые регистры 74сн595
СообщениеДобавлено: 07 ноя 2017, 02:35 
Не в сети

Зарегистрирован: 30 мар 2017, 09:35
Сообщения: 10
нашел ошибку в схеме... перепаял все заработало...
для проверки залил из интернета "рабочий" скетч...
он почему то в зеркальном виде отобразился... то есть буква "b" стала "d"
но это будет уже другой вопрос если не разберусь...

сам скетч который загружал...
Код:
const int latchPin = 8;//Pin connected to ST_CP of 74HC595
const int clockPin = 12;//Pin connected to SH_CP of 74HC595
const int dataPin = 11; //Pin connected to DS of 74HC595
int data[] =

{
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
  0xFF,0xC1,0xBE,0xBE,0xBE,0xC1,0xFF,0xFF,/*"0",1*/
  0xFF,0xDF,0xDF,0x80,0xFF,0xFF,0xFF,0xFF,/*"1",2*/
  0xFF,0xDC,0xBC,0xBA,0xB6,0xCE,0xFF,0xFF,/*"2",3*/
  0xFF,0xDD,0xBE,0xB6,0xB6,0xC9,0xFF,0xFF,/*"3",4*/
  0xFB,0xF3,0xEB,0xDB,0x80,0xFB,0xFF,0xFF,/*"4",5*/
  0xFF,0x8D,0xAE,0xAE,0xAE,0xB1,0xFF,0xFF,/*"5",6*/
  0xFF,0xC1,0x96,0xB6,0xB6,0xD9,0xFF,0xFF,/*"6",7*/
  0xFF,0xBF,0xBC,0xB3,0xAF,0x9F,0xFF,0xFF,/*"7",8*/
  0xFF,0xC9,0xB6,0xB6,0xB6,0xC9,0xFF,0xFF,/*"8",9*/
  0xFF,0xCD,0xB6,0xB6,0xB4,0xC1,0xFF,0xFF,/*"9",10*/
  0xFC,0xF3,0xCB,0x9B,0xEB,0xF3,0xFC,0xFF,/*"A",11*/
  0xFF,0x80,0xB6,0xB6,0xB6,0xB6,0xC9,0xFF,/*"B",12*/
  0xFF,0xE3,0xDD,0xBE,0xBE,0xBE,0xBE,0xDD,/*"C",13*/
  0xFF,0x80,0xBE,0xBE,0xBE,0xBE,0xDD,0xE3,/*"D",14*/
  0xFF,0x80,0xB6,0xB6,0xB6,0xB6,0xBE,0xFF,/*"E",15*/
  0xFF,0x80,0xB7,0xB7,0xB7,0xB7,0xBF,0xFF,/*"F",16*/
};
void setup ()
{
  //set pins to output
  pinMode(latchPin,OUTPUT);
  pinMode(clockPin,OUTPUT);
  pinMode(dataPin,OUTPUT);
}
void loop()
{

  for(int n = 0; n < 136; n++)//the numbers in data array
  {
    for(int t = 0;t < 10;t ++)//Show repeated 10 times
    {
      int dat = 0x01;//0000 0001 ,control the cols
      for(int num = n; num < 8+n; num++)
      {
        dat = dat<<1; //left shift 1 bit,turn on the cols one by one
        delay(1); //wait for a microsecond
        shiftOut(dataPin,clockPin,MSBFIRST,~data[num]);//invert the data array ,control rows of dot matrix
        shiftOut(dataPin,clockPin,MSBFIRST,~dat); // invert the dat ,control cols
        //return the latch pin high to signal chip that it
        //no longer needs to listen for information
        digitalWrite(latchPin,HIGH); //pull the latchPin to save the data
        //delay(1); //wait for a microsecond
        digitalWrite(latchPin,LOW); //ground latchPin and hold low for as long as you are transmitting
      }
    }
  }
}


Вложения:
gff.png
gff.png [ 170.31 КиБ | Просмотров: 2309 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сдвиговые регистры 74сн595
СообщениеДобавлено: 07 ноя 2017, 09:49 
Не в сети
Аватара пользователя

Зарегистрирован: 12 авг 2010, 15:10
Сообщения: 897
Откуда: Астраханская обл.
shiftOut у тебя байты зеркально выдает, используй:
shiftOut(dataPin,clockPin,LSBFIRST,~data[num]);
shiftOut(dataPin,clockPin,LSBFIRST,~dat);

_________________
Соединяй и здравствуй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сдвиговые регистры 74сн595
СообщениеДобавлено: 07 ноя 2017, 16:29 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
А с чего оно вообще работать должно? Схема собрана неправильно, надо так включать хотя бы:
Изображение


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO