Какие изменения нужно внести в исходный код?

Я написал код для дисплея DL1416, это 4-разрядный 16-сегментный дисплей. Мне нужно протестировать дисплей pd2816 с помощью Arduino. pd2816 представляет собой 8-разрядный 18-сегментный дисплей. Может ли кто-нибудь помочь мне с тем, какие изменения можно внести в мой фактический код, чтобы я мог прокручивать цифры в 8 цифре вместо 4 и проверять все сегменты в PD 2816.... Техническое описание DL1416

техническое описание pd2816 доступно здесь


person Axel Blaze    schedule 17.02.2021    source источник
comment
Что вы пробовали?   -  person user253751    schedule 17.02.2021
comment
Я удалил тег C, так как это C++, поэтому знание языка, с которым вы имеете дело, является хорошим первым шагом. Я предлагаю вам опубликовать собственную попытку улучшить ленивое впечатление, которое вы оставляете, если просто опубликуете два листа данных и спросите, что делать.   -  person Piglet    schedule 17.02.2021
comment
Приведенный выше код предназначен для четырехзначного дисплея, т. Е. Он зацикливает числа ascii, указанные в длине, и затем отображает их на сегментированных дисплеях. Но другой дисплей - 8-значный и 18-сегментный, first_char(); следующий_символ(); - это параметры, в которых я написал код для отображения первого символа и зацикливания других символов в последовательных разрядах. Так что я сомневаюсь, что для 8-значной логики продолжать дальше.   -  person Axel Blaze    schedule 17.02.2021
comment
да вы уже упоминали об этом. но что именно вы ожидаете здесь? что мы прочитаем ваши 1125 строк кода и скажем вам, что делать? тебе не кажется, что сначала нужно проявить собственные усилия? это не служба кодирования. Кроме того, я бы предпочел поработать над этим кодом, прежде чем вы адаптируете его к другому дисплею. вы слышали о массивах и циклах? у вас есть › 600 цифровых записей. вы, вероятно, можете сократить свой код до 100-200 строк. вам удалось сделать один дисплей, что мешает вам сделать это для другого?   -  person Piglet    schedule 17.02.2021
comment
Проблема, с которой я столкнулся, заключается в том, что это 8 цифр, и как прокрутить числа во все 8 сегментов..? а также   -  person Axel Blaze    schedule 17.02.2021
comment
так почему бы вам не спросить об этом? вы просто спрашиваете, что нужно изменить в ваших 1125 строках кода. отредактируйте свой пост и объясните, с чем именно вы боретесь   -  person Piglet    schedule 17.02.2021
comment
Хорошо, босс, пожалуйста, приспособьтесь к этому новичку ....: P   -  person Axel Blaze    schedule 17.02.2021


Ответы (1)


Хотя я не уверен, что помешало вам прочитать таблицу данных, на которую вы ссылаетесь в своем вопросе, я отвечу на это

Проблема, с которой я сталкиваюсь, заключается в том, что это 8 цифр и как прокручивать числа во все 8 сегментов.

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

введите здесь описание изображения

Поэтому, если вы хотите записать пятую цифру, вы вводите цифру через D0-D7 и устанавливаете управляющие входы в соответствии с этой таблицей. 5 — 0b101, поэтому A0 — ВЫСОКИЙ, A1 — НИЗКИЙ, A2 — ВЫСОКИЙ

Вы также можете подумать о том, как вы устанавливаете эти значения без явных вызовов 600 digitalWrite.

Используйте функцию, которая устанавливает выходы и сохраняет комбинации как числа. 7 бит представляют число. Так почему бы не использовать этот факт?

Поскольку контакты 0-7 находятся на одном порту, вы даже можете использовать манипулирование портами.

Вместо

  digitalWrite(0, HIGH);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);

Вы могли бы просто написать

PORTD = 0b00110001;
person Piglet    schedule 17.02.2021