Разрабатываю устройство с выводом информации на LED-матрицу. Стандартное типовое решение на МК STM8S105C6T6 + 74HC595.
И вот, после прогоночных тестов на простых картинках и строках, я столкнулся с проблемой, как же забивать эти массивы данных самым простым способом? Ведь каждый пиксел это или 1 или 0, а даже в самой маленькой матрице 8х8 – этих пикселов аж целых 64.
Можно, конечно, вручную, воспользовавшись блокнотом набить что-то типа этого:
Но потом массив 0 и 1 надо перевести в десятичные или шестнадцатеричные значения, соответствующие строкам или столбцам, например, при помощи инженерного калькулятора. Но это долго и неинтересно. Можно написать простенький редактор на C#, но у меня на работе надо устанавливать и настраивать среду. Зато под рукой есть Excel! Он же прекрасно справляется с такого рода задачами. Итак, приступим.
Для начала договоримся, что светящийся пиксел – это «1», не светящийся – «0». Чтобы Excel показывал нам в табличке «лампочки» вместо скучных цифр, воспользуемся условным форматированием. Пусть вс§, что равно и больше 1 — будет зелёным кружком, а всё что меньше — не закрашенным белым.
Получаем в левой части ячеек кружок, который соответствует состоянию ячейки. В правой видим содержимое ячейки.
Но зачем нам видеть «0» и «1»? Скроем их, для этого надо уменьшить ширину ячеек так, чтобы остались видны только «лампочки». У меня это получилось при ширине столбца = «2». Теперь самое интересное. Как превратить восемь нулей и едениц в один байт в Excel? Для этого возьмем школьную формулу перевода двоичного числа в десятичное.
Для тех, кто не помнит:
10110110 = (1·2^7)+(0·2^6)+(1·2^5)+(1·2^4)+(0·2^3)+(1·2^2)+(1·2^1)+(0·2^0) = 128+32+16+4+2 = 182
В ячейке под лампочками получается такая же формула:
=J14*2^7+J13*2^6+J12*2^5+J11*2^4+J10*2^3+J9*2^2+J8*2^1+J7*2^0
Ну и напоследок, мы же хотим получить код массива, чтобы сразу вставить в программу и проверить. Для этого объединяем содержимое ячеек через запятую при помощи конструкции &", "&. В итоге получится формула:
=«unsigned char to_display[]={»&B16&", "&C16&", "&D16&", "&E16&", "&F16&", "&G16&", "&H16&", "&I16&", "&J16&", "&K16&", "&L16&", "&M16&", "&N16&", "&O16&", "&P16&", "&Q16&", "&R16&", "&S16&", "&T16&", "&U16&", "&V16&", "&W16&", "&X16&", "&Y16&", "&Z16&", "&AA16&", "&AB16&", "&AC16&", "&AD16&", "&AE16&", "&AF16&", "&AG16&", "&AH16&", "&AI16&", "&AJ16&", "&AK16&", "&AL16&", "&AM16&", "&AN16&", "&AO16&", "&AP16&", "&AQ16&", "&AR16&", "&AS16&", "&AT16&", "&AU16&", "&AV16&", "&AW16&", "&AX16&", "&AY16&", "&AZ16&", "&BA16&", "&BB16&", "&BC16&", "&BD16&", "&BE16&", "&BF16&", "&BG16&"};"
В итоге, набив массив значениями «1» и «0», мы сразу видим результат:
А сгенерированный код можно сразу вставлять в программу и смотреть результат:
Автор: IronHead