8-900-374-94-44
[email protected]
Slide Image
Меню

Avr 74hc595: AVR Урок 25. SPI. Подключаем сдвиговый регистр 74HC595 |

Содержание

Микроконтроллеры AVR: 74HC595 (сдвиговый регистр)

Сдвиговый регистр 74HC595 используется в основном для расширения количества выводов микроконтроллера. К примеру нам необходимо к микроконтроллеру ATtiny13 подключить 8 светодиодов. Сделать это попросту было бы не возможно, т.к. микроконтроллер имеет всего 8 ножек, две из которых отведены под питание и одна под сброс. Но если в Вашем арсенале есть сдвиговый регистр, то задача очень сильно упрощается. управлять регистром можно всего по трем ножкам. А что если потребуется подключить 16, 24 или еще больше светодиодов? Все просто, сдвиговый регистр 74HC595 имеет возможность наращивать разрядность при помощи аналогичных микросхем. При этом количество задействованных ножек микроконтроллера останется неизменным.
Рисунок 1 - Схема 74HC595
На рисунке 1 изображена схема сдвигового регистра.
  • DS - вход данных
  • Q7S - выход для каскадного подключения регистров
  • Q0-Q7 - рабочие выходы
  • SHCP - вход тактовых импульсов
  • MR - вход для сброса регистра
  • STCP - вход помещения данных в регистр хранения
  • OE - вход, переводящий рабочие выходы из высокоомного в рабочее состояние

При поступлении тактового импульса на вход SHCP со входа DS считывается первый бит и записывается в младший разряд. Со следующим тактовым импульсом бит из младшего разряда сдвигается на один разряд, а на его места записывается бит, поступивший на вход DS. Так повторяется все время, а при переполнении сдвигового регистра, ранее поступившие биты последовательно появляются на выходе Q7S. Очистка регистра производится подачей низкого уровня на вход MR

Чтобы принятые данные появились на рабочих выходах, их сначала необходимо записать в регистр хранения. Делается это подачей импульса высокого уровня на вход STCP. Данные в регистре хранения изменяются лишь при подаче следующего импульса записи. 

Для перевода рабочих выходов в высокоомное состояние, на вход OE необходимо подать высокий уровень.

Основные характеристики:

  • напряжение питания 2-6 В
  • рабочая частота 2-100 МГц (зависит от напряжения питания и от производителя)
  • максимальный выходной ток 35 мА на выход (75 мА на весь регистр)

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

Больше чипов 74xx: сдвиговые регистры и декодеры

Благодаря заметке Два способа мультиплексирования светодиодов на примере микроконтроллеров AVR мы с вами знаем, что можно управлять сотней светодиодов, используя всего лишь 11 пинов микроконтроллера. Но что делать, если нужно управлять двумястами или, скажем, тысячью светодиодами? Оказывается, что изученные способы мультиплексирования могут быть улучшены, да так, что используя всего лишь три пина микроконтроллера можно управлять абсолютно любым количеством светодиодов! И в этом нам помогут следующие микросхемы.

Примечание: Если вы пропустили предыдущий пост, посвященный микросхемам 74xx, вот он — Интегральные схемы: чипы стандартной логики 74xx. Впрочем, тот пост был посвящен логическим вентилям, и для понимания представленного далее материала читать его не требуется.

SIPO сдвиговый регистр 74HC595

Сдвиговые регистры — это микросхемы, позволяющие, очень грубо говоря, добавить пинов вашему микроконтроллеру. Для добавления пинов на запись, используются SIPO сдвиговые регистры. SIPO означает «последовательный вход, параллельный выход». Если же нужно больше пинов на чтение, используются сдвиговые регистры PISO, «параллельный вход, последовательный выход». В данном разделе мы познакомимся с типичным SIPO сдвиговым регистром, 74HC595.

Какой пин 74HC595 для чего предназначен, можно узнать из даташита [PDF]:

Если коротко, то:

  • VCC, GND — это питание.
  • OE — разрешение вывода. Чтобы вывод был всегда разрешен, можно подключить этот пин напрямую к минусу.
  • SRCLR — сброс. Если не используется, то нужно подключить напрямую к плюсу.
  • SER, SRCLK — используются для передачи данных. При подаче высокого напряжения на SRCLK происходит считывание одного бита данных с пина SER.
  • RCLK — при подаче сюда высокого напряжения происходит одновременный вывод принятых данных на параллельные выходы.
  • Qa-Qh — параллельные выходы. Сюда происходит вывод последних восьми полученных бит при подаче высокого напряжения на SRCLK.
  • Qh’ — при получении очередного бита информации и смещении значений по параллельным выходам бит Qh на самом деле не отбрасывается, а поступает на этот пин. Подключив его к пину SER другого сдвигового регистра, а также соединив выходы RCLK и SRCLK обоих сдвиговых регистров, можно получить 16-разрядный сдвиговый регистр. Второй сдвиговый регистр в свою очередь можно соединить с третьим и так далее, получив сколь угодно разрядный регистр сдвига.

Надеюсь, идея ясна — мы последовательно передаем на сдвиговый регистр восемь бит информации по одному биту. Затем сдвиговый регистр параллельно выводит полученные биты на восемь пинов. Отсюда и «последовательный вход, параллельный выход».

Пример кода:

const uint8_t hc595_data  = 6; /* SER */
const uint8_t hc595_latch = 7; /* RCLK */
const uint8_t hc595_clock = 8; /* SRCLK */

/* ... */

void setup()
{
  pinMode(hc595_data, OUTPUT);
  pinMode(hc595_latch, OUTPUT);
  pinMode(hc595_clock, OUTPUT);

  /* ... */
}

/* ... */

void loop()
{
  /* ... */
  digitalWrite(hc595_latch, LOW);
  shiftOut(hc595_data, hc595_clock, MSBFIRST, hc595_out);
  digitalWrite(hc595_latch, HIGH);
  /* ... */
  delay(100);

}

Нам даже не нужно писать никаких циклов. В Arduino уже предусмотрена готовая процедура shiftOut, которая делает все за нас.

В итоге три пина микроконтроллера эффективно превратились в восемь пинов. Если соединить несколько сдвиговых регистров, как это было описано выше, то можно вместо восьми пинов получить сколько угодно. При этом в микроконтроллере все так же будет задействовано только три пина.

Существует похожий чип 74HC164, который имеет 14 пинов вместо 16-и. В нем отсутствует пин переноса (аналог Qh’). Даташит 74HC164 доступен здесь [PDF].

PISO сдвиговый регистр 74HC165

Типичным представителем PISO сдвиговых регистров является 74HC165.

Картинка из даташита [PDF]:

Назначение пинов:

  • VCC, GND — питание.
  • A-H — входы сдвигового регистра.
  • SH — когда на этом пине низкое напряжение, происходит считывание данных с пинов A-H.
  • CLK INH — что-то делает только при высоком напряжении на SH. Низкое напряжение означает разрешить использование часов (пин CLK). На практике можно подключить напрямую к земле.
  • CLK — когда на SH высокое напряжение и на CLK INH низкое, при подаче на CLK низкого напряжения происходит сдвиг данных.
  • Qh — выход сдвигового регистра. Одноименный выход с чертой — это инвертированный выход.
  • SER — при очередном сдвиге освободившийся бит принимает значение, поданное на этот пин. Пин может быть задействован при одновременном использовании нескольких сдвиговых регистров. Или можно просто подключить к земле.

Пример кода, считывающего состояние восьми кнопок, используя всего лишь три пина:

const uint8_t hc165_data = A5; /* QH */
const uint8_t hc165_latch = A4; /* SH */
const uint8_t hc165_clock = A3; /* CLK */

/* ... */

void setup()
{
  /* ... */

  pinMode(hc165_data, INPUT);
  pinMode(hc165_clock, OUTPUT);
  pinMode(hc165_latch, OUTPUT);
}

uint8_t shiftIn165(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
{
  uint8_t value = 0;
  uint8_t i;

  for (i = 0; i < 8; ++i)
  {
    digitalWrite(clockPin, LOW);
    if (bitOrder == LSBFIRST)
      value |= digitalRead(dataPin) << i;
    else
      value |= digitalRead(dataPin) << (7 - i);
    digitalWrite(clockPin, HIGH);
  }

  return value;
}

void loop()
{
  digitalWrite(hc165_latch, LOW);
  delayMicroseconds(5);
  digitalWrite(hc165_latch, HIGH);
  delayMicroseconds(5);

  hc595_out = shiftIn165(hc165_data, hc165_clock, MSBFIRST);

  /* ... */

  delay(100);
}

Встроенная процедура shiftIn для работы с 74HC165, к сожалению, не годится, так в ней используется обратный порядок подачи сигналов LOW и HIGH на clockPin. Поэтому в приведенном коде используется собственная реализация с правильным порядком.

Декодер / демультиплексор 74HC138

В данном контексте было бы большим упущением не рассказать про демультиплексоры, так как они могут быть использованы для управления светодиодными матрицами, так же, как и сдвиговые регистры. Грубо говоря, демультиплексоры занимаются тем, что декодируют числа из бинарного представления в унарное. Типичным представителем демультиплексоров является 74HC138.

Вот иллюстрация из его даташита [PDF]:

Назначение пинов:

  • VCC, GND — питание.
  • A, B, C — три бита входа.
  • Y0-Y7 — выход. Если на вход подан ноль в бинарном представлении, на Y0 будет подано
    низкое
    напряжение, а на все остальные выходы высокое. Если подана единица в бинарном представлении, на Y1 будет низкое напряжение, а на всех остальных выходах высокое, и так далее.
  • G1, G2A, G2B — разрешение вывода. Чтобы на выходах Y0-Y7 было что-то осмысленное, на G1 должно быть подано высокое напряжение, а на G2A и G2B — низкое. Иначе на всех выходах Y0-Y7 будет высокое напряжение независимо от входов A, B и C. Пины G2A и G2B можно просто подключить к земле.

Пример кода:

const uint8_t hc138_a = 5;
const uint8_t hc138_b = 4;
const uint8_t hc138_c = 3;
const uint8_t hc138_enable = 9;

/* ... */

uint8_t hc138_out = 0;

void setup()
{
  /* ... */

  pinMode(hc138_a, OUTPUT);
  pinMode(hc138_b, OUTPUT);
  pinMode(hc138_c, OUTPUT);
  pinMode(hc138_enable, OUTPUT);

  /* ... */
}

/* ... */

void loop()
{
  /* ... */

  digitalWrite(hc138_enable, LOW);
  digitalWrite(hc138_a, hc138_out & (1 << 0));
  digitalWrite(hc138_b, hc138_out & (1 << 1));
  digitalWrite(hc138_c, hc138_out & (1 << 2));
  digitalWrite(hc138_enable, HIGH);

  hc138_out = (hc138_out + 1) & B00000111;

  delay(100);
}

74HC138 может быть использован в бегущей строке. При использовании матричной схемы мультиплексирования светодиодов с его помощью можно выбирать строку светодиодной матрицы.

Существует также чип 74HC154. Он аналогичен по функциональности, но более громоздок и является четырехбитным. Его даташит можно полистать здесь [PDF].

Как несложно догадаться, если есть демультиплексоры, значит бывают и мультиплексоры. Они в каком-то смысле аналогичны PISO сдвиговым регистрам, так как позволяют увеличить количество читающих пинов микроконтроллера. В качестве примеров можно привести чипы 74HC151 и 74HC153. Их даташиты доступны, соответственно, здесь [PDF] и здесь [PDF].

Fun fact! При помощи мультиплексора можно реализовать произвольную логическую функцию, подключив его входы напрямую к питанию или земле в соответствии с таблицей истинности и используя управляющие сигналы, как входные данные.

Полная версия кода

Вы, конечно же, поняли, что приведенные выше отрывки кода являются частью одной программы. Вот ее полный исходный код:

#include <Arduino.h>

const uint8_t hc595_data  = 6; /* SER */
const uint8_t hc595_latch = 7; /* RCLK */
const uint8_t hc595_clock = 8; /* SRCLK */

const uint8_t hc138_a = 5;
const uint8_t hc138_b = 4;
const uint8_t hc138_c = 3;
const uint8_t hc138_enable = 9;

const uint8_t hc165_data = A5; /* QH */
const uint8_t hc165_latch = A4; /* SH */
const uint8_t hc165_clock = A3; /* CLK */

uint8_t hc595_out = 0;
uint8_t hc138_out = 0;

void setup()
{
  pinMode(hc595_data, OUTPUT);
  pinMode(hc595_latch, OUTPUT);
  pinMode(hc595_clock, OUTPUT);

  pinMode(hc138_a, OUTPUT);
  pinMode(hc138_b, OUTPUT);
  pinMode(hc138_c, OUTPUT);
  pinMode(hc138_enable, OUTPUT);

  pinMode(hc165_data, INPUT);
  pinMode(hc165_clock, OUTPUT);
  pinMode(hc165_latch, OUTPUT);
}

uint8_t shiftIn165(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
{
  uint8_t value = 0;
  uint8_t i;

  for (i = 0; i < 8; ++i)
  {
    digitalWrite(clockPin, LOW);
    if (bitOrder == LSBFIRST)
      value |= digitalRead(dataPin) << i;
    else

      value |= digitalRead(dataPin) << (7 - i);
    digitalWrite(clockPin, HIGH);
  }

  return value;
}

void loop()
{
  digitalWrite(hc165_latch, LOW);
  delayMicroseconds(5);
  digitalWrite(hc165_latch, HIGH);
  delayMicroseconds(5);

  hc595_out = shiftIn165(hc165_data, hc165_clock, MSBFIRST);

  digitalWrite(hc595_latch, LOW);
  shiftOut(hc595_data, hc595_clock, MSBFIRST, hc595_out);
  digitalWrite(hc595_latch, HIGH);

  digitalWrite(hc138_enable, LOW);
  digitalWrite(hc138_a, hc138_out & (1 << 0));
  digitalWrite(hc138_b, hc138_out & (1 << 1));
  digitalWrite(hc138_c, hc138_out & (1 << 2));
  digitalWrite(hc138_enable, HIGH);
  hc138_out = (hc138_out + 1) & B00000111;

  delay(100);
}

Фотография соответствующего прототипа на макетной плате:

Используемые чипы слева направо — микроконтроллер ATmega328P, SIPO сдвиговый регистр 74HC595, демультиплексор 74HC138, PISO сдвиговый регистр 74HC165. Состояние восьми кнопок считывается через 74HC165. Светодиоды слева, соответствующие нажатым кнопкам, не горят, а отпущенным — горят. Состояние этих светодиодов контролируется через 74HC595. На фото я зажал три правые кнопки карандашом и потому три соответствующих им светодиода не горят. Еще восемь светодиодов справа контролируются демультиплексором 74HC138. Их состояние зависит только от времени, по очереди гаснет один светодиод.

Примечание: Вас могут заинтересовать статьи Как собрать Arduino прямо на макетной плате и Собираем USB-программатор для AVR из ATmega328P и FT232.

Заключение

Еще из интересных чипов стоит упомянуть шинный формирователь 74HC244. Это штука, которая может как бы отрезать одну часть цепи от другой. Если добавить в цепь 74HC04 (логическое НЕ), то при помощи 74HC244 можно будет использовать одни и те же пины для работы с SIPO и PISO сдвиговыми регистрами, плюс один пин для переключения между ними. Итого, если микроконтроллер имеет четыре пина, он может работать с любым количеством кнопок и светодиодов. У самого маленького известного мне микроконтроллера ATtiny13 целых пять свободных пинов, что позволяет обойтись и без 74HC04. Подробности о 74HC244 ищите в даташите [PDF], там все очень просто.

Также заслуживает внимания чип 74HC4051. Эта штука позволяет соединить аналоговый канал с любым из 8 других аналогвых каналов, или разъединить их все. Мне нравится думать о 74HC4051, как о переключателе, управляемом программного. Подробности — в даташите [PDF].

В контексте увеличения числа пинов микроконтроллера стоит также упомянуть чипы MCP23017 / MCP23S17 [PDF] и специализированные чипы для управления светодиодными матрицами вроде MAX7221 [PDF]. Интересны они тем, что предлагая функциональность, аналогичную функциональности сдвиговых регистров и декодеров, могут занимать меньше места на плате. Если же вы хотите увеличить числ ШИМ-пинов, обратите внимание на микросхему TLC5940 (видеообзор, библиотека). Однако обсуждение данных микросхем уже сильно выходит за рамки данного поста. Вы без труда сможете изучить их самостоятельно в качестве домашнего задания.

Итак, теперь вы знаете все необходимое, чтобы делать при помощи светодиодов потрясающие вещи, вроде таких или даже таких. Полную версию исходников к посту вы найдете в этом репозитории на GitHub. Как обычно, буду весьма рад вашим вопросам и дополнениям.

Дополнение: Вас также могут заинтересовать посты Знакомство с компараторами на примере чипа LM339 и Изучаем работу операционного усилителя на примере NE5532.

Метки: Электроника.

Подлинный модуль переключения передач DFRobot для Arduino, 5 В 74HC595 с интерфейсом IDC6, совместимый с 51 PIC AVR и другим микроконтроллером|module for arduino|module 5vmodule 74hc595

DFRobot 100% подлинный модуль Shiftout для Arduino, 5 В 74HC595 с интерфейсом IDC6 совместим с 51 AVR PIC и другим микроконтроллером

 

Введение

  • Иногда или в другом случае на вашей плате может отсутствовать контакт для Arduino и необходимо расширить его с помощью регистров сдвигов. С этим модулем переключения, который основан на 74HC595. Техническое описание относится к «74HC595 "Допустимое отклонение в случае 8-разрядный серийный, простая в использовании, серийный или параллельный-out регистр сдвига с Выход защелки; 3-state". Другими словами, вы можете использовать его для управления 8 выходами одновременно, занимая только несколько контактов на вашем микроконтроллере. Вы можете связать несколько регистров вместе, чтобы увеличить ваш выход еще больше. Он также может быть применен к 51, AVR, PIC и другим микроконтроллерам.
  • Идеально подходит для работы вместе с интерфейсный щит для Arduino.

 

Фото

 

 

Приложений

  • Совместим с arduino / 51 / AVR / PIC и другим микроконтроллером

 

Параметры

  • Напряжение: 5V
  • Вход Интерфейс: IDC6
  • Выходной интерфейс: IDC6
  • Модуль Размеры: 41 × 22 мм (1,6 x 0.9in)
  • Соединение деталей
    • Вход:
      • D3 подключение для Arduino Digital 3
      • D8 подключение для Arduino Digital 8
      • D9 подключение для Arduino Digital 9
      • VCC подключение для Arduino 5V
      • GND подключение для Arduino GND
    • Выход:
      • D3 подключается к входу модуля D3
      • D8 подключение к входу модуля D8
      • D9 подключается к входу модуля D9
      • VCC подключается к модулям VCC
      • GND подключается к модулю GND

 

 

Документы

  • Wiki Doc: https://dfrobot.com/wiki/index.php?title=Shiftout_Module_ (Артикул: DFR0072)
  • Ardulno Учебное пособие: http://ardulno.cc/en/Tutorial/ShiftOut
  • Схема: http://ardulno.cc/en/Tutorial/ShiftOut

 

Отгрузочная ведомость

 

  • Мы принимаем Alipay, West Union, TT. Все основные кредитные карты принимаются через безопасный платежный процессор ESCROW.
  • Мы обработаем большинство заказов в течение 48 часов после подтверждения оплаты и предлагаем номер отслеживания с каждой сделкой (aliexpress можете заполнить номер отслеживания через 24 часа).
  • Поддержка доставку по всему миру. (За исключением некоторых стран и армейской почтовой службы/почтовых отделений флота).
  • DHL/Fedex Отслеживание не может быть изменено после прибытия товара в Гонконг (например. Мы отправляем товар в пятницу и заполняем номер отслеживания, но номер отслеживания может быть изменен в понедельник, если посылка прибудет в Гонконг).
  • Время доставки устанавливается перевозчиком без учета выходных и праздничных дней. Сроки доставки могут меняться, особенно во время курортного сезона.
  • Если вы не получили ваш груз в течение разумных дней с момента оплаты, пожалуйста, сначала свяжитесь с нами (пожалуйста, не ставьте негативные отзывы, прежде чем связаться с нами!). Мы отследим отправку и свяжемся с вами как можно скорее. Наша цель – удовлетворение людей которые уже успели купить товар!
  • Если общая сумма заказов составляет менее 2 долларов США, мы можем отправить только Почта Китая обычными маленькими пакетами плюс!

 

  • Мы поддерживаем высокие стандарты качества и стремимся к 100% удовлетворенности людей которые уже успели купить товар! Отзывы очень важны, мы просим Вас немедленно связаться с нами, прежде чем дать нам нейтральные или негативные отзывы, чтобы мы могли удовлетворительно решить ваши проблемы.
  • Невозможно решить проблемы, если мы о них не знаем!

 

  • Для российских покупателей, пожалуйста, укажите полное имя в соответствии с правилами.
  • Для покупателя из Российской Федерации, Аргентины, Украины товар может быть отправлен Почта Китая помощью зарегистрированной авиапочты, почты Сингапура, EMS, если вы выберете DHL/Fedex в качестве сложного процесса таможенной декларации.
  • Для покупателя из Бразилии, пожалуйста, предложите налог нет, вы хотите отправить через DHL/Fedex, или товар будет отправлен через EMS, хотя вы выбираете DHL.

 

Схема подключения 74hc595

Схема подключения 74hc595 Ардуино: всё о сдвиговом регистре | класс робототехники.

Сдвиговый регистр 74hc595 и arduino — записки программиста.

Учебный курс avr. Работа с spi модулем. Управление.

Микроконтроллеры avr: 74hc595 (сдвиговый регистр) через.

Подключение семисегментных индикаторов по трём проводам.
Подключение lcd hd44780 к avr attiny85 через сдвиговой.

Урок 3 подключаем 2 сдвиговых регистра к arduino. Пишем.

Сдвиговый регистр 74hc595 и семисегментный индикатор.

Сдвиговый регистр 74hc595 и семисегментный индикатор.
Сдвиговый регистр 74hc595.

Множим выходы с помощью сдвигового регистра 74hc595.
Как подключить сдвиговый регистр 74hc595 к arduino.

74hc595 arduino: сдвиговый регистр, основы использования.

Знакомство с микросхемой регистра сдвига 74hc595.
Урок 2 — подключаем сдвиговый регистр 74нс595 к arduino.
Arduino: сдвиговый регистр 74нс595 или размножаем/экономим.
Эксперимент 14. Счётчик нажатий [амперка / вики]. Avr урок 25. Spi. Подключаем сдвиговый регистр 74hc595.

Знакомство с микросхемой регистра сдвига 74hc595.

Множим выходы с помощью 74hc595. Сдвиговый регистр.Железное небо скачать центр Lp скачать lost on you Скачать джейлбрейк 9.3.2 Шансон скачать альбомом Скачать запись советы парты

Подключение семисегментного индикатора к ATTINY13 - Изучаем AVR - Каталог статей - Микроконтроллеры

Иногда возникает необходимость увеличить количество выходов микроконтроллера. Такая ситуация может возникнуть например при работе с микроконтроллерами серии tiny, например у attiny13 всего 8 ножек и в качестве выходов работают 5(6 если RESET с помощью фьюзов сделать входом/выходом ), и подключить к нему семисигментый индикатор не получится. Так вот используя одну дополнительную микросхему можно решить эту проблему и эта микросхема 74HC595. 


74HC595 - это восьмиразрядный сдвиговый регистр с последовательным вводом и параллельным выводом информации. 

Назначение выводов: 

1-7, 15 - выходы 

10 - сброс регистра 

11 - вход для тактовых импульсов 

12 - вход «защёлкивающий» данные 

13 - вход, переводящий выходы рабочее состояние 

14 - вход данных 

Теперь коротенько, как это работает: 

наши данные подаются на вход DS одновременно с тактовыми импульсами на вход SH_CP, с каждым новым импульсом мы записываем в регистр 1 бит, сдвигая все записанные ранее. Передав 8 бит регистру, выставляем логическую 1 на вход ST_CP, и содержимое регистра выводится на выходы Qa-Qh. Все очень просто. Ну а теперь перейдем к практике: 


подключение семисигментного индикатора к attiny13 cс помощью HC595

На схеме: 

семисигментный индикатор, который подключен к выходам сдвигового регистра. Входы DS, SH_CP, ST_CP подключены к PB0-2. Получается что используя сдвиговый регистр, для подключения семисигментного индикатора нужно уже не 8 а всего 3 выхода микроконтроллера, что очень удобно. 

Ниже приведен код программы, которая выводит на семисигментный индикатор цифру 5: 

 

 #include ‹tiny13.h› 

 #include ‹delay.h› 

 #define CE PORTB.2 

 #define CL PORTB.1 

 #define DI PORTB.0 

 #define RS PORTB.3 

 #define pause delay_ms(10) 

 char data[8]={0,1,1,0,1,1,0,1}; 

 int i; 

 void main(void) 

 { 

 #pragma optsize- 

 CLKPR=0x80; 

 CLKPR=0x00; 

 #ifdef _OPTIMIZE_SIZE_ 

 #pragma optsize+ 

 #endif 

 PORTB=0x00; 

 DDRB=0xFF; 

 TCCR0A=0x00; 

 TCCR0B=0x00; 

 TCNT0=0x00; 

 OCR0A=0x00; 

 OCR0B=0x00; 

 GIMSK=0x00; 

 MCUCR=0x00; 

 TIMSK0=0x00; 

 ACSR=0x80; 

 ADCSRB=0x00; 

 

 while (1) 

 { 

 

 i=0; 

 while(i<8){ 

 DI=data[i]; 

 CL = 1; 

 RS=1; 

 pause; 

 DI=0; 

 CL = 0; 

 RS=0; 

 pause; 

 i++; 

 }; 

 CE=1; 

 

 }; 

 } 

 

Адам Мейер | Ардуино + 74hc595

Хорошо, допустим, у вас есть эта безумно крутая идея, в которой вам нужно контролировать тонну светодиодов (я знаю, я знаю ... светодиоды). Вы просмотрели статью о мультиплексоре, и это было здорово, но эта идея настолько крутая, что вам нужно индивидуальное управление каждым светодиодом, и включать их по одному просто не годится. Что ж, мы здесь, чтобы помочь, а теперь пришло время познакомить вас со сдвиговым регистром. Не просто сдвиговый регистр, а супер дешевый, невероятно крутой 8-битный сдвиговый регистр 74HC595!

Что делает сдвиговый регистр?

Обычно сдвиговый регистр, в конце концов, позволит вам расширить цифровые выходы вашего микроконтроллера.Каждый из этих 74HC595 может работать как еще 8 цифровых выходов, и вы можете подключить их последовательно. Таким образом, вы можете подключить 8 из них рядом друг с другом и контролировать 64 выхода.

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

Вы можете представить сдвиговый регистр в виде ряда стульев. В данном конкретном случае с 74HC595 у нас есть ряд из 8 стульев. Каждый стул либо пуст (0), либо на нем кто-то сидит (1).

Так вот, каждые 10 секунд кто-нибудь звонит в колокольчик, и каждый должен встать и передвинуть один стул вправо. Если кто-то сидел в этом крайнем правом кресле, ну, они просто уходят. На этом крайнем левом стуле вы можете либо попросить кого-нибудь сесть на него, либо просто оставьте его пустым.

Теперь вернем эту идею к 74HC595: этот регистр сдвига состоит из 8 выходных контактов, которые являются либо высокими (1), либо низкими (0). Когда вы поднимаете штырь SRCLK (Serial Clock) высоко (аналогично звонку в звонок), каждый штифт перемещается на один вправо.Последний вывод выпадает, и состояние нового вывода определяется выводом SER (последовательный), и вы можете установить для него значение 1 (HIGH) или 0 (LOW).

Как это позволяет мне снова управлять светодиодами? Допустим, у вас есть 8 светодиодов, подключенных к выходам регистров сдвига, и мы хотим включить 1-й, 3-й и 8-й светодиод. Итак ... что мы можем сделать, так это очистить регистр, чтобы все светодиоды погасли. Затем мы вставляем одну высоту, перемещаем ее вправо на 4 точки, добавляем одну высоту, перемещаем ее на 1, затем добавляем еще одну высоту. Посмотрите на изображение справа, оно будет более понятным.

Самое замечательное в том, что у сдвигового регистра есть этот вывод, который называется RCLK или синхронизация регистра. Вы можете удерживать этот контакт в НИЗКОМ состоянии, пока вы все настроите, и ничего на контактах дисплея не изменится. Затем, когда вы закончите и все будет так, как вы хотите, вы потянете RCLK HIGH, и 74HC595 отобразит новые настройки. Таким образом, хотя мы меняем значения в регистре за 8 шагов, похоже, что это был всего один шаг.

Подключение

Начнем с простого.На самом деле для этой работы вам нужно всего 3 соединения, помимо питания. Но как только питание и светодиоды все подключены, это начинает выглядеть пугающе. Но это не так, так что оставайтесь с нами. - Вы можете увидеть спецификацию 74HC595 здесь.

  • Vcc
    До 6 В (напряжение должно быть таким же, как у вашего микроконтроллера) - обычно 3,3 / 5 В
  • QA to QH
    Выходы регистра сдвига.
  • SER :
    (Последовательный) Вход для следующего смещенного пина.
  • SRCLK
    (последовательные часы) Когда на этом выводе высокий уровень, он сдвигает регистр.
  • RCLK
    (синхронизация регистров) Требуется установить высокий уровень для установки на выходе новых значений сдвигового регистра. Его необходимо установить в высокий уровень сразу после того, как SRCLK снова перейдет в низкий уровень.
  • SRCLR
    (Serial Clear) Очистит весь сдвиговый регистр, если вытащить НИЗКИЙ уровень, для включения необходимо установить высокий уровень.
  • OE
    (Output Enable) Этот вывод включает выход, когда он привязан к GND, и отключается, когда HIGH.

Как мы заставляем это работать

Каждый раз, когда сигнал на выводе SERCLK становится высоким, все значения сдвигаются вправо, и новое значение сдвигается (независимо от того, какой SER установлен на). После того, как вы переместили новое значение, чтобы увидеть внесенные изменения, вы также должны установить контакт RCLK в HIGH, чтобы обновить выходные контакты новыми данными. Мы хотели, чтобы ваш компьютер работал как можно быстрее, поэтому мы собрали код для микроконтроллеров Arduino и AVR: примеры кода см. Ниже.

Пример Arduino позволяет индивидуально управлять контактами регистра. Однако пример AVR в настоящее время не использует двоичную последовательность и должен быть загружен. Если вы заинтересованы в том, чтобы помочь перекодировать код Arduino в AVR (или любой другой язык), чтобы он поддерживал индивидуальное управление контактами, сообщите нам об этом.

 setRegisterPin (2, ВЫСОКИЙ);
setRegisterPin (3, ВЫСОКИЙ);
setRegisterPin (4, НИЗКИЙ);
setRegisterPin (5, ВЫСОКИЙ);
setRegisterPin (7, ВЫСОКИЙ);

// После того, как вы установили желаемые изменения в
// регистрируем контакты, вам нужно будет вызвать writeRegisters
// перед отображением.Только делай это в конце,
// а не после каждого вызова setRegisterPin, потому что это
// функции требуется некоторое время, чтобы записать значения.
// writeRegisters занимает около 1 мс на 10 из
// регистры сдвига, которые вы связали (80 контактов)
writeRegisters (); 

Регистр каскадного сдвига - также известный как объединение их в цепочку

Как я сказал выше, вы можете соединить 20 из них вместе, если вам нужно. В регистры сдвига встроена довольно умная опция, которая позволяет объединять их в цепочку или каскадно.Вы знаете, как последний регистр просто сбрасывает свое значение при смещении? Вывод Qh (вывод 9) - это то место, где 74HC595 сбрасывает это значение. Поэтому мы просто берем его и используем как вход SER во втором (или следующем) регистре сдвига, и бац! они связаны вместе. Вам также нужно будет затем соединить контакты SERCLK и RCLK вместе, но тогда вы будете золотыми. Посмотрите схемы сбоку и ниже, чтобы увидеть, как это связано.

Код

Код Arduino для индивидуального управления каждым выводом - Поддержка более 40 регистров сдвига
 интервал SER_Pin = 8; // вывод 14 на 75HC595
интервал RCLK_Pin = 9; // вывод 12 на 75HC595
интервал SRCLK_Pin = 10; // вывод 11 на 75HC595

// Сколько регистров сдвига - меняем это
#define number_of_74hc595s 1

// не трогать
#define numOfRegisterPins number_of_74hc595s * 8

логические регистры [numOfRegisterPins];

void setup () {
  pinMode (SER_Pin, ВЫХОД);
  pinMode (RCLK_Pin, ВЫХОД);
  pinMode (SRCLK_Pin, ВЫХОД);


  // сбрасываем все выводы регистра
  clearRegisters ();
  writeRegisters ();
}


// устанавливаем все выводы регистра в LOW
void clearRegisters () {
  for (int i = numOfRegisterPins - 1; i> = 0; i -) {
     регистры [i] = LOW;
  }
}


// Устанавливаем и отображаем регистры
// Вызов только ПОСЛЕ того, как все значения будут установлены так, как вы хотите (в противном случае медленно)
void writeRegisters () {

  digitalWrite (RCLK_Pin, LOW);

  for (int i = numOfRegisterPins - 1; i> = 0; i -) {
    digitalWrite (SRCLK_Pin, LOW);

    int val = регистры [я];

    digitalWrite (SER_Pin, val);
    digitalWrite (SRCLK_Pin, HIGH);

  }
  digitalWrite (RCLK_Pin, HIGH);

}

// установить отдельный вывод HIGH или LOW
void setRegisterPin (int index, int value) {
  регистры [индекс] = значение;
}


void loop () {

  setRegisterPin (2, ВЫСОКИЙ);
  setRegisterPin (3, ВЫСОКИЙ);
  setRegisterPin (4, НИЗКИЙ);
  setRegisterPin (5, ВЫСОКИЙ);
  setRegisterPin (7, ВЫСОКИЙ);


  writeRegisters (); // ДОЛЖЕН БЫТЬ ВЫЗВАН ДЛЯ ОТОБРАЖЕНИЯ ИЗМЕНЕНИЙ
  // Вызывается только один раз после того, как значения установлены так, как вам нужно.} 

Этот пример кода просто включает светодиоды по определенной схеме и сохраняет ее здесь. (Этот код поддерживает только до 4 регистров сдвига. Поскольку он принимает двоичное число, он ограничен 32 символами.)

Вот код для AVR

 #include 
#include 


#define number_of_74hc595s 1 // Сколько регистров сдвига связано цепочкой?


int main () {
DDRB = 0xFF;
PORTB = 0x00;
счетчик символов = 0;

в то время как (1) {
счетчик ++; // Счетчик, используемый для отображения числа в двоичном формате через регистр сдвига
сдвиг (PB1, PB2, PB3, счетчик); // PB1 = SERCLK PB2 = RCLK PB3 = SER
_delay_ms (500);
сдвиг (PB1, PB2, PB3, 0x00); // Отключить все контакты
_delay_ms (500);
}
возврат 0;
}


void shift (int SRCLK_Pin, int RCLK_Pin, int SER_Pin, беззнаковые длинные данные) {
ПОРТБ & = ~ (1 RCLK_Pin); // Устанавливаем вывод регистрового сигнала в низкий уровень

for (int i = 0; i (8 * number_of_74hc595s); i ++) {// Теперь мы входим в цикл для сдвига 8+ бит

ПОРТБ & = ~ (1 SRCLK_Pin); // Устанавливаем вывод последовательного тактового сигнала на низкий уровень

ПОРТБ | = (((данные & (0x01i)) >> i) SER_Pin); // Просматриваем каждый бит данных и выводим его

PORTB | = (1 SRCLK_Pin); // Устанавливаем высокий вывод последовательного тактового сигнала

ПОРТБ & = ~ (((данные & (0x01i)) >> i) SER_Pin); // Снова устанавливаем низкий уровень данных
}

PORTB | = (1 RCLK_Pin); // Установите высокий уровень на выводе регистра-такта, чтобы обновить вывод сдвигового регистра
} 

Заключение

Если вам нужен простой способ расширения выходных контактов, сдвиговые регистры определенно являются хорошим выбором.Они дешевы, быстры, и если вы потратите время на то, чтобы поиграть с ними, они тоже довольно простые.

74hc595 / 1-Bit-AVR-Synthesizer: Прошивка и схема синтезатора импульсных волн на базе ATmega48.

GitHub - 74hc595 / 1-Bit-AVR-Synthesizer: Прошивка и схема синтезатора пульсовой волны на базе ATmega48.

Прошивка и схема синтезатора импульсных волн на базе ATmega48.

Файлы

Постоянная ссылка Не удалось загрузить последнюю информацию о фиксации.

Тип

Имя

Последнее сообщение фиксации

Время фиксации

 1-битный синтезатор AVR
Мэтт Сарнофф (msarnoff.org/1bitsynth)
Октябрь 2009 г. - октябрь 2010 г.
========================================

Это интересный маленький синтезатор / генератор шума, который делает Atari-подобным
звуки.Все звуки генерируются непосредственно микроконтроллером ATmega48,
и имеют только 1 бит амплитуды; другими словами, пульсовые волны и ничего больше.

Для получения дополнительной информации, фотографий и видео см.
http://www.msarnoff.org/1bitsynth
или же
http://www.youtube.com/user/74hc595


Компиляция
---------
Makefile для avr-gcc включен. Просто введите "сделать шестнадцатеричный" и подключите свой
Подключите ISP к ATmega48 и введите «сделать предохранитель» и «сделать вспышку».


Взлом
-------
Код в исходном состоянии составляет около 3 КБ, оставляя место для дополнений.Кроме того, все должно работать нормально на ATmega168 или ATmega328P, если вы
нужно больше места.

Таблица нот MIDI специально рассчитана для тактовой частоты 12 МГц.
Если вы замените кристалл, вам придется пересчитать эту таблицу.

Схема поддерживает 9 аналоговых входов, но используются только 7. Не стесняйтесь делать
все, что вам нравится с двумя другими (пока сигнал находится между 0 и
5 вольт).

Вы могли заметить, что файл "tiasnd.c" вообще не используется.
Этот файл содержит реализацию реальных сигналов, используемых
Микросхема TIA в Atari 2600.(в основном, 9-битный линейный регистр сдвига, подключенный
интересными способами.) Я решил не использовать его, так как хотел, чтобы этот синтезатор
издавать собственные звуки, а не имитировать звуки какой-либо другой микросхемы, но это
не должно быть слишком сложно подключить его обратно, если хотите. Алгоритмы
адаптированы из исходного кода эмулятора Stella.
(http://stella.sourceforge.net)

 

Около

Прошивка и схема синтезатора импульсных волн на базе ATmega48.

Ресурсы

Лицензия

Вы не можете выполнить это действие в настоящее время. Вы вошли в систему с другой вкладкой или окном. Перезагрузите, чтобы обновить сеанс. Вы вышли из системы на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.

msarnoff.org - 1-битный синтезатор AVR

Октябрь 2009

(г.к.а. «Настисинт», «Сарнов-I»)

Это странный на вид синтезатор / нойзбокс, который я сделал за пару дней. Это чрезвычайно простая схема; ATmega48 напрямую генерирует стереозвук без ЦАП или каких-либо внешних схем. Однако, поскольку выводы AVR являются цифровыми (5 В или 0 В), результирующие звуковые сигналы имеют разрешение только 1 бит по амплитуде. Другими словами, это пульсовые волны и ничего больше.

Это тот же метод, который используется микросхемой TIA в Atari 2600.Таким образом, синтезатор издает очень ностальгические звуки в стиле Atari. Его набор функций довольно минимален:

  • Восемь однобитовых сигналов
  • Генератор низкой частоты с восемью формами волны; модулирует высоту тона
  • 1-битный «генератор огибающей»; по сути, другая форма волны, объединенная побитовым И с формой звуковой волны
  • MIDI-вход, поэтому на нем можно играть с MIDI-клавиатуры или аналогичным образом управляемым

элементы управления

Элементы управления состоят из восьми ручек.В более старой версии было шесть ручек и два кнопочных переключателя BCD. Вот что они контролируют:

Шаг
Технически, период звукового генератора. Объяснять особо нечего.
LFO скорость
Управляет частотой низкочастотного генератора. Генератор низких частот изменяет высоту звука, поэтому эта ручка регулирует частоту вибрато.
Глубина LFO
Управляет амплитудой низкочастотного генератора; то есть интенсивность вибрато.В крайнем левом положении высота звука не меняется. Когда полностью вправо, изменение высоты звука значительно.
Скорость конверта
Управляет скоростью 1-битной огибающей. Когда до упора влево, звук постоянно включен.
Ширина конверта
Управляет рабочим циклом формы сигнала огибающей; то есть процент периода огибающей, когда звук не отключен. Поворот ручки влево уменьшает рабочий цикл, что приводит к коротким стаккато.
Фильтр нижних частот
Хорошо, значит, это не полностью цифровой . Эта ручка управляет простым пассивным фильтром нижних частот первого порядка. Может использоваться для резкости или приглушения звука.
Форма звуковой волны
Выбирает одну из восьми однобитовых сигналов. От 0 до 6 - это 16-битные шаблоны; 7 - белый шум, генерируемый 16-битным регистром сдвига с линейной обратной связью.
Форма волны LFO
Выбирает одну из восьми форм волны LFO, позволяя издавать звуки «лазер», «сирена» или «компьютер»:
  1. Треугольник
  2. Пила вверх
  3. Зубчатая пила вниз
  4. Квадрат
  5. Полуквадратный
  6. Полупила вверх
  7. Полупила вниз
  8. Случайные участки
В версии 2 я заменил два нажимных переключателя на обычные потенциометры.Переключатели BCD и поворотные переключатели действительно дороги. Горшки хороши и дешевы, но у них нет таких удовлетворительных щелчков. Чтобы компенсировать отсутствие тактильной обратной связи, светодиодный индикатор питания мигает каждый раз, когда вы выбираете новую форму сигнала.

миди

Синтезатор можно подключить к MIDI-клавиатуре, ПК или другому устройству и играть напрямую. Поддержка MIDI является базовой; интерпретируются только сообщения включения и выключения нот, и они монофонические.

возможность взлома

На ATmega48 много неиспользуемых контактов, так что не стесняйтесь добавлять больше кнопок, переключателей, светодиодов, чего угодно.Также есть два неиспользуемых аналоговых канала, которые вы можете подключить к дополнительным потенциометрам, фотоэлементам, всему, что выводит сигнал 0-5 В.

Прошивка написана на C (с использованием avr-gcc и avr-libc) и весит менее 3k. Чтобы загрузить новую прошивку, вам понадобится программист ISP. (Если кто-то захочет сделать плату совместимой с Arduino, это, вероятно, будет не так уж сложно.)

код

Код находится на GitHub и выпущен под лицензией msarnoff.org. Не стесняйтесь разветвлять его и добавлять новые вещи!

Кроме того, я добавил файл под названием tiasnd.c, который содержит реализацию реальных сигналов от чипа Atari 2600 TIA. Я взял алгоритмы из исходного кода Эмулятор Stella.

TIA использует 9-битный регистр сдвига с линейной обратной связью, подключенный интересным образом. По умолчанию этот код не используется (я бы предпочел, чтобы эта вещь сама по себе звучит вместо того, чтобы имитировать другое устройство), но подключить его не составит труда.

фото

Фотогалерея находится на Flickr.

схема


(нажмите, чтобы увеличить)

Скачать схему gEDA: https: // github.com / 74hc595 / 1-Bit-AVR-Synthesizer / raw / master / circuit / synth.sch
Могут потребоваться пользовательские символы из моего каталога символов.

Arduino / ATmega / ATTiny85 или 74HC595? - Вопрос

3 года, 10 месяцев назад.

Arduino / ATmega / ATTiny85 или 74HC595?

Ищу какие-то мысли, может быть, какие-то расчеты по пропускной способности рассматриваемого мной варианта.

По сути, я хочу передать поток данных - небольшие кадры - в основном с довольно широким регистром сдвига. Кадр будет выглядеть так, передаваемый один бит за другим: 4 байта: слово синхронизации 4 байта: ID 1 байт: батарея 1 байт: последовательность # (1-255) 1 байт: CRC8-1 (синхронизация + идентификатор + батарея + последовательность) 1 байт: CRC8-2 (ID + батарея + последовательность)

Выдача 12-байтового кадра в манчестерском коде.

Вот таблица дат 74HC595: http://www.componentschip.com/details/Texas-Instruments/74HC595D.html

Это будет просто передано по конвейеру таким образом, чтобы вы могли заполнить 12-байтовый буфер на приемнике, и когда ваши первые 4 байта совпадают с определенным значением, вы знаете, что у вас есть полный кадр в буфере, и вы можете его обработать. b0-32 может быть чем-то вроде AACC3355.

Это сложно из-за того, что нужно выполнять CRC8 для данных по мере их поступления. Если бы мы использовали регистры сдвига, я полагаю, было бы достаточно легко не только подключить старший бит (назовем его b95) к антенне, но также подключить все выходы к тому, что управляет вычислением CRC8.

С другой стороны, написать код для этого, вместо того, чтобы иметь совершенную схему с 12 74HC595, подключенными друг к другу, или каким-либо другим подобным компонентом, который поддерживает очень широкий регистр сдвига, может быть намного проще с использованием AVR. Однако меня беспокоит, сможет ли такое устройство, как ATTiny85, не отставать на стороне передачи (на стороне приема это не проблема, я могу разгрузить обработку.

Выполняя RF таким образом, основная другая проблема, о которой мне нужно просто позаботиться, - это обеспечить синхронизацию передатчика с приемником - что я могу сделать через активное поле - это же поле можно использовать для активации передатчика, превращая его в транспондер.Позже, если я смогу запустить прототип этой антенны, я буду искать деньги, чтобы кто-нибудь изобрел быструю и очень маленькую прототипную антенну направления.

Так или иначе, после размышлений по этому поводу. Будет ли микросхема AVR достаточно быстрой, чтобы справиться с этим?

Последовательная связь

и SPI - Arxterra

Рис. 10. SPCR

Разрешение прерывания SPI

Этот бит вызывает выполнение прерывания SPI, если установлен бит SPIF в регистре SPSR и если установлен бит разрешения глобального прерывания в SREG.В нашем примере дизайна мы будем опрашивать бит SPIF. Следовательно, мы оставим бит SPIE в состоянии по умолчанию (SPIE = 0).

Включение SPI

Когда бит SPE равен единице, SPI включен. Этот бит должен быть установлен, чтобы разрешить любые операции SPI.

Заказ данных

Когда бит DORD равен единице (DORD = 1), первым передается младший бит слова данных, в противном случае первым передается старший бит слова данных. Для Arduino Proto-shield мы хотим сначала передать бит старшего разряда (MSB).Следовательно, мы оставим бит DORD в состоянии по умолчанию (DORD = 0).

MSTR: выбор ведущего / ведомого

Этот бит выбирает режим Master SPI, если установлен в единицу, и режим Slave SPI, если он сброшен. В нашем примере проектирования ATmega32U4 является ведущим, а «8-битный регистр сдвига с выходными защелками» 74HC595 - ведомым. Следовательно, нам нужно установить бит DORD в логическую 1 (MSTR = 1). Примечание: Я рассказываю вам только часть истории. Если вы хотите настроить ATmega328 для работы в качестве ведомого или ведущего / ведомого устройства, см. Техническое описание.

Полярность тактового сигнала и фаза тактового сигнала

Биты тактовой полярности (CPOL) и тактовой фазы (CPHA) определяют, как последовательные данные передаются между ведущим и ведомым. Эти форматы передачи данных SPI определены на рисунке 10.

Рисунок 11. Режимы работы SPI

Биты выбора тактовой частоты SPI SPI2X, SPR1, SPR0

Эти три бита управляют скоростью SCK Мастера. В нашем примере проектирования ATmega32U4 является мастером.Эти биты не влияют на ведомое устройство. Соотношение между SCK и тактовой частотой генератора f osc показано в следующей таблице. В нашем примере разработки мы разделим системные часы на 16.

Рисунок 12. SPI Prescaler

Более 100 проектов на ATtiny13 | Лукаш Подкалицки

ATtiny13 - мой любимый крошечный uC. Поэтому я решил спроектировать и собрать более 100 проектов на основе этого чипа. Почему мне нравится ATtiny13?

  • Расширенная архитектура RISC (до 1MIPS / 1 МГц, простой в освоении Ассемблер - всего 120 инструкций)
  • совместим по выводам с серией ATtiny * 5, поэтому, если 1 Кбайт флэш-памяти и / или 64 байта ОЗУ оказываются слишком ограниченными, их легко заменить до 8 Кбайт без изменения макета.
  • диапазон рабочего напряжения (1.От 8 В до 5,5 В) и промышленный диапазон температур (от -40 ° C до + 85 ° C)
  • базовые периферийные функции, такие как таймер, 4-канальный АЦП, сторожевой таймер или аналоговый компаратор
  • Компилятор AVR-GCC и многие другие бесплатные инструменты разработчика с открытым исходным кодом
  • очень-очень низкая цена за такую ​​вычислительную мощность!

Вот руководство по ATtiny13, плата для разработки ATtiny13, небольшие руководства о том, как скомпилировать и записать код в ATtiny13 (ANSI C) и как установить ассемблер AVR (AVRA) в Linux.

Проектов

[001] ATtiny13 - мигает с функцией задержки.
[002] ATtiny13 - мигает светодиод с функцией задержки (программная ШИМ)
[003] ATtiny13 - случайно мигает светодиод с ГПСЧ на основе LFSR
[004] ATtiny13 - мигает с таймером OVF ( Overflow)
[005] ATtiny13 - мигает со сторожевым таймером
[006] ATtiny13 - мигает с таймером COMPA
[007] ATtiny13 - тон-генератор
[008] ATtiny13 - программный UART (регистратор отладки)
[009] ATtiny13 - псевдослучайный номеров (облегченная библиотека)
[010] ATtiny13 - управление светодиодной RGB-подсветкой (необычные световые эффекты)
[011] ATtiny13 - ИК-пульт для управления светодиодами (протокол NEC)
[012] ATtiny13 - ИК-пульт для управления светодиодной RGB-подсветкой (протокол NEC)
[013] ATtiny13 - ИК-приемник / протоанализатор NEC
[014] ATtiny13 - Лучшая температура в помещении на DS18B20
[015] ATtiny13 - двухтональный сигнал тревоги
[016] ATtiny13 - цифровой вольтметр постоянного тока с MAX7219
[017] ATtiny13 - цифровой Амперметр постоянного тока с MAX7219
[018] ATtiny13 - танцевальные огни с FFT
[019] ATtiny13 - простой таймер на TM1637
[020] ATtiny13 - драйвер ШИМ светодиода питания
[021] ATtiny13 - простой текстовый интерфейс командной строки (интерфейс командной строки) через UART
[022] ATtiny13 - код Морзе (мигающий свет)
[023 ] ATtiny13 - индикатор уровня заряда батареи
[024] ATtiny13 - простой логический датчик
[026] ATtiny13 - дискотека с использованием FFT
[028] ATtiny13 - бегущие цифры на TM1637
[029] ATtiny13 - регистратор температуры с использованием LM35 и программного обеспечения UART
[ 030] ATtiny13 - считывание температуры и влажности из DHT11
[031] ATtiny13 - аппаратный ШИМ
[032] ATtiny13 - отображение точек и цифр на 7-сегментном светодиодном ламповом дисплее
[033] ATtiny13 - Светодиодная лента WS2812 - мигающий
[034] ATtiny13 - радуга на одиночном светодиоде WS2812
[035] ATtiny13 - радуга на нескольких светодиодах WS2812
[036] ATtiny13 - круговой нарезчик светодиодов WS2812
[037] ATtiny13 - PI (импульсная индукция) металлоискатель
[040] ATtiny13 - случайное мерцание пикселей на матричном светодиодном дисплее 8 × 8
[043] ATtiny13 - мигание с функцией задержки (версия на ассемблере)
[044] ATtiny13 - мигание с таймером OVF (версия на ассемблере)
[045] ATtiny13 - мигание с таймером COMPA (версия на ассемблере)
[047] ATtiny13 - управление шаговым двигателем 28BYJ-48
[ 048] ATtiny13 - случайное мигание светодиода с ГПСЧ на основе BBS
[050] ATtiny13 - переключатель хлопка хлопка
[052] ATtiny13 - 8-битный моно усилитель класса D

План реализации ~ 50%.Некоторые проекты находятся в стадии реализации, а некоторые готовы к публикации. Я буду обновлять эту страницу!

Список задач

У вас есть идея для следующего проекта на ATtiny13? Отправьте тему проекта в комментарии или напишите мне! ([email protected])

  • Одиночный светодиодный кристалл (шарлиплексирование)
  • двойная светодиодная игральная кость (шарлиплексирование)
  • тройной светодиодный кристалл (шарлиплексирование)
  • Робот-следящий за линией
  • Робот для обхода препятствий
  • Детектор ЭМП
  • усовершенствованный 4-канальный переключатель тарелки
  • Пульт ДУ Canon (разъем 2.5 мм)
  • Пульт ДУ Canon (Инфракрасный RC6)
  • простой пульт дистанционного управления и 4-канальный приемник (инфракрасный порт: RC5 или NEC)
  • электронные игральные кости с использованием светодиодов WS2811
  • Счетчик импульсов
  • - счетчик импульсов TTL, 7-сегментный светодиодный модуль и кнопка сброса
  • Генератор импульсов
  • - простой генератор импульсов TTL
  • Матричная клавиатура
  • - однопроводная, АЦП
  • Ведомое устройство OneWire
  • контроллер умной настольной лампы
  • светильники дискотеки (модернизированная версия)
  • ПИ Металлоискатель
  • Выключатель хлопок-хлопок.

Общественные проекты

Учебники

Библиотеки

  1. attiny13-software-uart-library - Программная библиотека UART ATtiny13.
  2. attiny-random-library - 16-битная библиотека PRNG (генератор псевдослучайных чисел) ATtiny13 / 25/45/85, основанная на алгоритме Галуа LFSR.
  3. attiny-max7219-led-tube-display-library - 7-сегментный светодиодный ламповый дисплей для ATtiny13 / 25/45/85 (MAX7219 / MAX7221).
  4. attiny-max7219-matrix-8-led-display-library - Библиотека для драйвера матричного светодиодного дисплея ATtiny13 / 25/45/85 8 × 8 (MAX7219 / MAX7221).
  5. attiny-74hc595-library - Библиотека регистров сдвига ATtiny13 / 25/45/85 74hc595.
  6. attiny-tm1638-library - это библиотека tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85 и другие) для модулей светодиодных контроллеров на базе микросхемы TM1638.
  7. attiny-tm1637-library - TinyAVR - ATtiny13, ATtiny25, ATtiny45, ATtiny85 - библиотека для 7-сегментных дисплейных модулей на базе TM1637.
  8. attiny-ds18b20-library - это библиотека tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85 и др.) Для датчика температуры DS18B20.
  9. attiny-onewire-library - это библиотека tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85 и т. Д.) Для доступа к устройствам с использованием протокола OneWire (1-Wire).

LCD_IO 1 - - Основная документация Great Cow

Использование режима подключения 1:

Этот подход использует одну линию связи, которая поддерживает объединенные данные и тактовый сигнал между микроконтроллером и ЖК-дисплеем.Этот подход используется, когда ЖК-дисплей подключен через сдвиговый регистр 74HC595, как подробно описано здесь. Этот способ подключения также называется 1-проводным подключением.

Этот подход к решению учитывает оригинальные работы, представленные в журнале Elektor Magazine.

Соответствующие константы:

Специальные константы используются для управления настройками подпрограмм жидкокристаллического дисплея, включенных в Great Cow BASIC.К установить эти константы, основная программа должна указать конкретные константы для поддержки режима соединения с помощью #define.

При использовании режима подключения 1 должны быть установлены только две константы - все остальные являются необязательными или могут быть проигнорированы.

Как подключить и управлять светодиодной подсветкой ЖК-дисплея: см. Подсветка ЖК-дисплея.

Имя константы Органы управления Значение по умолчанию

LCD_IO

Режим ввода-вывода.

1

LCD_CD

Вывод синхронизации / данных, используемый в 1-битном режиме.

Обязательный

ЖК-дисплей.h поддерживает в 1-проводном режиме управление контактом 4 74HC595 для фонового светодиода.

Для получения примера кода загрузите One Wire LCD Example.

См. Другие примеры кодов в 0,1- и 2-проводных решениях ЖКД.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *