Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Прорезались зубы
Аватара пользователя
Сообщения: 200
Зарегистрирован: Пт ноя 16, 2012 20:17:41
Откуда: Беларусь

Сообщение Сирожа »

Ехать в Москву к ММК1 мне не кажется таким уж идеальным. Проще на вайлдберисе с озоном купить. Даже не несмотря на их конскую цену окажется дешевле. :) А если серьёзно, то на наших барахолках нашлось только пару предложений. И то выпаянные. Наверное придётся из чипидипа под заказ попробовать.
Да и мои индикаторы доставшиеся бесплатно, бесполезной горкой лежать будут.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 200
Зарегистрирован: Пт ноя 16, 2012 20:17:41
Откуда: Беларусь

Сообщение Сирожа »

Может я конечно чего-то не понимаю, но мне кажется что 600р. за один индикатор это многовато.

Изображение
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

Здравствуйте всем! Кто-нибудь сможет скомпилировать прошивку из кода во вложении, с измененными пинами на индикатор и датчик?
В таком порядке: Пин STM было-стало: 10-17, 1-15, 2-1, 13-18, 11-19, 18-14, 15-10, 14-6, 12-20, 17-16, 16-13, 20-3.
Код взят отсюда: https://sourceforge.net/p/stm8samples/c ... ermometer/
Вложения
3_digit_voltmeter_as_thermometer.7z
Код
(60.24 КБ) 132 скачивания
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 373
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

[uquote="alexvas2004",url="/forum/viewtopic.php?p=4639951#p4639951"]Здравствуйте всем! Кто-нибудь сможет скомпилировать прошивку[/uquote]

проект не собирается.
Спойлер$ make
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c interrupts.c
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c led.c
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c main.c
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c onewire.c
onewire.h:133: warning 283: function declarator with no prototype
onewire.h:135: warning 283: function declarator with no prototype
onewire.h:136: warning 283: function declarator with no prototype
onewire.h:138: warning 283: function declarator with no prototype
onewire.h:139: warning 283: function declarator with no prototype
onewire.h:143: warning 283: function declarator with no prototype
onewire.h:145: warning 283: function declarator with no prototype
onewire.h:147: warning 283: function declarator with no prototype
interrupts.h:32: warning 283: function declarator with no prototype
interrupts.h:35: warning 283: function declarator with no prototype
interrupts.h:38: warning 283: function declarator with no prototype
interrupts.h:41: warning 283: function declarator with no prototype
interrupts.h:44: warning 283: function declarator with no prototype
interrupts.h:47: warning 283: function declarator with no prototype
interrupts.h:50: warning 283: function declarator with no prototype
interrupts.h:53: warning 283: function declarator with no prototype
interrupts.h:69: warning 283: function declarator with no prototype
interrupts.h:72: warning 283: function declarator with no prototype
interrupts.h:75: warning 283: function declarator with no prototype
interrupts.h:86: warning 283: function declarator with no prototype
interrupts.h:89: warning 283: function declarator with no prototype
interrupts.h:104: warning 283: function declarator with no prototype
interrupts.h:107: warning 283: function declarator with no prototype
interrupts.h:111: warning 283: function declarator with no prototype
interrupts.h:134: warning 283: function declarator with no prototype
interrupts.h:142: warning 283: function declarator with no prototype
interrupts.h:146: warning 283: function declarator with no prototype
led.h:29: warning 283: function declarator with no prototype
led.h:29: warning 283: function declarator with no prototype
led.h:31: warning 283: function declarator with no prototype
led.h:31: warning 283: function declarator with no prototype
interrupts.h:32: warning 283: function declarator with no prototype
interrupts.h:35: warning 283: function declarator with no prototype
interrupts.h:38: warning 283: function declarator with no prototype
interrupts.h:41: warning 283: function declarator with no prototype
interrupts.h:44: warning 283: function declarator with no prototype
interrupts.h:47: warning 283: function declarator with no prototype
interrupts.h:50: warning 283: function declarator with no prototype
main.c:67: warning 283: function declarator with no prototype
interrupts.h:53: warning 283: function declarator with no prototype
main.c:68: warning 283: function declarator with no prototype
interrupts.h:69: warning 283: function declarator with no prototype
interrupts.h:72: warning 283: function declarator with no prototype
interrupts.h:75: warning 283: function declarator with no prototype
interrupts.h:86: warning 283: function declarator with no prototype
interrupts.h:89: warning 283: function declarator with no prototype
led.c:82: warning 283: function declarator with no prototype
interrupts.h:104: warning 283: function declarator with no prototype
interrupts.h:107: warning 283: function declarator with no prototype
interrupts.h:111: warning 283: function declarator with no prototype
interrupts.h:134: warning 283: function declarator with no prototype
interrupts.h:142: warning 283: function declarator with no prototype
interrupts.h:146: warning 283: function declarator with no prototype
onewire.h:133: warning 283: function declarator with no prototype
onewire.h:135: warning 283: function declarator with no prototype
onewire.h:136: warning 283: function declarator with no prototype
onewire.h:133: warning 283: function declarator with no prototype
onewire.h:138: warning 283: function declarator with no prototype
onewire.h:135: warning 283: function declarator with no prototype
onewire.h:139: warning 283: function declarator with no prototype
onewire.h:136: warning 283: function declarator with no prototype
onewire.h:143: warning 283: function declarator with no prototype
onewire.h:138: warning 283: function declarator with no prototype
onewire.h:145: warning 283: function declarator with no prototype
onewire.h:139: warning 283: function declarator with no prototype
onewire.h:147: warning 283: function declarator with no prototype
interrupts.c:27: warning 283: function declarator with no prototype
onewire.h:143: warning 283: function declarator with no prototype
onewire.h:145: warning 283: function declarator with no prototype
onewire.h:147: warning 283: function declarator with no prototype
onewire.c:42: warning 283: function declarator with no prototype
onewire.c:89: warning 283: function declarator with no prototype
interrupts.c:30: warning 283: function declarator with no prototype
onewire.c:106: warning 158: overflow in implicit constant conversion
interrupts.c:33: warning 283: function declarator with no prototype
main.c:77: warning 283: function declarator with no prototype
interrupts.c:36: warning 283: function declarator with no prototype
interrupts.c:39: warning 283: function declarator with no prototype
interrupts.c:42: warning 283: function declarator with no prototype
interrupts.c:45: warning 283: function declarator with no prototype
interrupts.c:48: warning 283: function declarator with no prototype
interrupts.c:64: warning 283: function declarator with no prototype
onewire.c:117: warning 283: function declarator with no prototype
interrupts.c:67: warning 283: function declarator with no prototype
onewire.c:123: error 20: Undefined identifier 'TIM_EGR_UG'
onewire.c:143: error 20: Undefined identifier 'TIM_EGR_UG'

onewire.c:151: warning 283: function declarator with no prototype
onewire.c:157: error 20: Undefined identifier 'TIM_EGR_UG'
onewire.c:180: warning 283: function declarator with no prototype
led.c:102: warning 283: function declarator with no prototype
onewire.c:229: warning 283: function declarator with no prototype
onewire.c:257: warning 283: function declarator with no prototype
onewire.c:267: warning 283: function declarator with no prototype
onewire.c:276: warning 283: function declarator with no prototype
onewire.c:301: warning 283: function declarator with no prototype
onewire.c:319: warning 283: function declarator with no prototype
make: *** [Makefile:28: onewire.rel] Ошибка 1
make: *** Ожидание завершения заданий…
interrupts.c:75: warning 283: function declarator with no prototype
interrupts.c:86: warning 283: function declarator with no prototype
interrupts.c:90: warning 283: function declarator with no prototype
main.c:86: warning 283: function declarator with no prototype
interrupts.c:133: warning 283: function declarator with no prototype
interrupts.c:136: warning 283: function declarator with no prototype
interrupts.c:140: warning 283: function declarator with no prototype
interrupts.c:163: warning 283: function declarator with no prototype
interrupts.c:172: warning 283: function declarator with no prototype
interrupts.c:176: warning 283: function declarator with no prototype
main.c:102: warning 283: function declarator with no prototype
main.c:113: warning 283: function declarator with no prototype
main.c:122: warning 283: function declarator with no prototype
main.c:134: warning 283: function declarator with no prototype
main.c:137: warning 94: comparison is always true due to limited range of data type
main.c:139: warning 126: unreachable code
main.c:140: warning 126: unreachable code
main.c:141: warning 126: unreachable code
main.c:142: warning 126: unreachable code
main.c:143: warning 126: unreachable code
main.c:145: warning 126: unreachable code
main.c:147: warning 126: unreachable code
main.c:150: warning 283: function declarator with no prototype
main.c:174: warning 158: overflow in implicit constant conversion
led.c:205: warning 94: comparison is always true due to limited range of data type
led.c:246: warning 94: comparison is always true due to limited range of data type
led.c:247: warning 94: comparison is always true due to limited range of data type
sdcc 4.3.0
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

Номера портов сопоставил. Впишу их посередине: 10-PA3-17, 1-PD4-15, 2-PD5-1, 13-PC3-18, 11-PB5-19, 18-PD1-14, 15-PC5-10,14-PC4-6, 12-PB4-20, 17-PC7-16, 16-PC6-13, 20-PD3-3.
Теперь во всех файлах, или только определенном, искать упоминание наименования портов и менять (типа как в arduino ide)?
Пробовал установить по примеру из двух частей (https://cxem.net/mc/mc500.php)программы. В итоге примеры оттуда компилируются, а main.c из данного кода получается с ошибками. Два дня мучился безрезультатно.

"JackSmith"

Еще на той странице нашел файл stm8l.h с другим размером . Может в нем дело?
Попробуйте, если возможно.
Вложения
stm8l.7z
(2.81 КБ) 158 скачиваний
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

[uquote="Martian",url="/forum/viewtopic.php?p=4640029#p4640029"]если наименования портов совпали, то ничего менять не требуется.[/uquote]
Требуется. Неправильно написал. Понятней будет так: Было-надо: PA3-PC7, PD4-PC5, PD5-PD4, PC3-PD1, PB5-PD2, PD1-PC4, PC5-PA3, PC4-PA2, PB4-PD3, PC7-PC6, PC6-PC3, PD3-PD6.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 373
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

на той странице нашел файл stm8l.h с другим размером
они одинаковые.
В onewire.c вставил

Код: Выделить всё

#define TIM_EGR_UG (1 << 0)
который был в stm8s.h
собрал c помощью sdcc 4.2

Код: Выделить всё

$ make
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c interrupts.c
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c led.c
led.c:205: warning 94: comparison is always true due to limited range of data type
led.c:246: warning 94: comparison is always true due to limited range of data type
led.c:247: warning 94: comparison is always true due to limited range of data type
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c main.c
main.c:137: warning 94: comparison is always true due to limited range of data type
main.c:139: warning 126: unreachable code
main.c:140: warning 126: unreachable code
main.c:141: warning 126: unreachable code
main.c:142: warning 126: unreachable code
main.c:143: warning 126: unreachable code
main.c:145: warning 126: unreachable code
main.c:147: warning 126: unreachable code
main.c:174: warning 158: overflow in implicit constant conversion
sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c onewire.c
onewire.c:106: warning 158: overflow in implicit constant conversion
sdcc -mstm8 --out-fmt-ihx -lstm8 interrupts.rel led.rel main.rel onewire.rel -o testproj.ihx

$ stm8-size ./testproj.ihx
   text    data     bss     dec     hex filename
      0    3114       0    3114     c2a ./testproj.ihx
все-равно код грязный.
OKF
Это не хвост, это антенна
Сообщения: 1452
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="Сирожа",url="/forum/viewtopic.php?p=4637168#p4637168"]Может я конечно чего-то не понимаю, но мне кажется что 600р. за один индикатор это многовато.[/uquote]
Жлоб ты Сирожа. Потрудись сам, что бы оценить затраты.
Я имею ввиду декодировку для исправления общий анод - общий катод.
Последний раз редактировалось OKF Чт окт 24, 2024 12:24:33, всего редактировалось 1 раз.
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

Интересно как у автора то работало?
https://eddy-em.livejournal.com/80558.html
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 373
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

[uquote="OKF",url="/forum/viewtopic.php?p=4640038#p4640038"]Я имею ввиду декодировку для исправления общий анод - общий катод.[/uquote]
да декодирование, это что. я посмотрел код, bres и bset можно поменять местами, но там в ODR регистр перекидывается значение из аккумулятора. и его надо инвертировать. т.е. вставлять лишнюю инструкцию. это значит что все метки полетят.
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов?
Спрашивал. Ответил "А я с STM8 уже много лет не связываюсь".
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 373
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

[uquote="alexvas2004",url="/forum/viewtopic.php?p=4640053#p4640053"]А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов?[/uquote]
прошивка для вольтметра с али на stm8. вольтметров на этих чипах китайцы уже сто лет не продают, где вы их нашли?
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

[uquote="JackSmith",url="/forum/viewtopic.php?p=4640059#p4640059"][uquote="alexvas2004",url="/forum/viewtopic.php?p=4640053#p4640053"]А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов?[/uquote]
прошивка для вольтметра с али на stm8. вольтметров на этих чипах китайцы уже сто лет не продают, где вы их нашли?[/uquote]
Это не вольтметр, а термометр на NTC. Был со сгоревшей STM. Заказывал на али пару штук микросхем несколько лет назад.
Позавчера попались на глаза. Заменил, прошил при помощи ардуино иде блинк. Заработало. А дальше оказалась засада(.
Попробую еще с помощью FLProg (человек создавал для W1209) сделать прошивку.
Кстати для интереса прошил без изменений прошивку автора кода. Индикатор подмигивает некоторыми символами. Видимо программа работает.
Так что если ничего не получится, выпаяю индикатор и на проводках с коммутирую как надо.
Прорезались зубы
Аватара пользователя
Сообщения: 200
Зарегистрирован: Пт ноя 16, 2012 20:17:41
Откуда: Беларусь

Сообщение Сирожа »

[uquote="OKF",url="/forum/viewtopic.php?p=4640038#p4640038"]Жлоб ты Сирожа. Потрудись сам, что бы оценить затраты.[/uquote]
Я конечно извиняюсь за уровень наглости моей просьбы. Но мне чтобы потрудится самому, нужно освоить программирование с ноля. А это не быстро. Поэтому слабо представляю этот процесс. Мне и вправду казалось, что людям не по наслышке знакомым с программированием не так сложно это сделать. Возможно есть какие-то специальные инструменты для этого. Только откуда мне это знать.
Я ж никого не принуждаю. Есть желание и возможность помочь, помогли. Нет, так нет. Я всё прекрасно понимаю, что не все хотят тратить своё время на безвозмездной основе.
Мудрый кот
Сообщения: 1838
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="alexvas2004",url="/forum/viewtopic.php?p=4640035#p4640035"][uquote="Martian",url="/forum/viewtopic.php?p=4640029#p4640029"]если наименования портов совпали, то ничего менять не требуется.[/uquote]
Требуется. Неправильно написал. Понятней будет так: Было-надо: PA3-PC7, PD4-PC5, PD5-PD4, PC3-PD1, PB5-PD2, PD1-PC4, PC5-PA3, PC4-PA2, PB4-PD3, PC7-PC6, PC6-PC3, PD3-PD6.[/uquote]В led.c редактировать (для перназначения ног) нужно только этот маленький участок:

Код: Выделить всё

/************* arrays for ports *************/
// PA, mask: 0x02, PA1
static U8 PA_bits[18] = {0,2,2,2,0,0,0,2,0,0,0,0,0,2,0,0,2,0};
#define PA_BLANK 0x02
// PB, mask: 0x30, PB4:0x10=16, PB5:0x20=32
#define PB_BLANK 0x30
static U8 PB_bits[18] = {0,32,0,0,32,16,16,0,0,0,0,48,16,32,16,16,48,48};
// PC, mask: 0xF8, PC3:0x08=8, PC4:0x10=16, PC5:0x20=32, PC6:0x40=64, PC7:0x80=128
#define PC_BLANK 0xF8
static U8 PC_bits[18] = {40,232,48,160,224,160,32,232,32,160,96,32,56,32,48,112,240,96};

/**
 * Setup for writing a letter
 * @param ltr - letter (0..17 for 0..F, - or h | 0x80 for DP, any other value for 'space')
 */
void write_letter(U8 ltr){
  U8 L = ltr & 0x7f;
  PD_ODR = 0; // turn off digits 1..3
  if(L < 18){ // letter
    PA_ODR = PA_bits[L];
    PB_ODR = PB_bits[L];
    PC_ODR = PC_bits[L];
  }else{ // space
    PA_ODR = PA_BLANK;
    PB_ODR = PB_BLANK;
    PC_ODR = PC_BLANK;
  }
  if(ltr & 0x80){ // DP
    PC_ODR ^= 0x20;
  }
}

/**
 * Turn on anode power for digit N (0..3: PA3, PD6, PD4, PD1 -- A0x08, D0x40, D0x10, D0x02)
 * @param N - number of digit (0..3), if other - no action (display off)
 * @return
 */
void light_up_digit(U8 N){
  switch(N){
    case 0:
      PA_ODR |= 0x08;
    break;
    case 1:
      PD_ODR |= 0x40;
    break;
    case 2:
      PD_ODR |= 0x10;
    break;
    case 3:
      PD_ODR |= 0x02;
    break;
  }
}
Другое дело, что данные порты/пины где-то ещё могут использоваться. Как минимум - они где-то настраиваются изначально. Это тоже нужно искать.

PS: Стиль исходника конечно говнокодерский: Порты/пины прибиты гвоздями в коде. :facepalm:
В нормально написанном исходнике они должны быть вынесены в дефайны. И тогда назначение ног меняется только в одном месте, а не по всему коду лазить-править.
Впрочем - качественно писать исходники - это же не кричать "винда - мастдай, линух - рулёз". Здесь голова нужна....
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

[uquote="jcxz",url="/forum/viewtopic.php?p=4640649#p4640649"]В led.c редактировать (для перназначения ног) нужно только этот маленький участок:[/uquote]
Спасибо, но ваш пример кода из другого проекта (под названием led) и немного другой. Или при применении 3х значного индикатора они все взаимозаменяемые (led.c)из разных проектов?
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

[uquote="Martian",url="/forum/viewtopic.php?p=4640785#p4640785"]Дак ктож знает? я тоже этот файл смотрел, по Вашей же ссылке...[/uquote]
По ссылке там несколько проектов. А во вложении был один, который нужен. Вот он отдельно:
Вложения
led.c
(7.55 КБ) 801 скачивание
Открыл глаза
Аватара пользователя
Сообщения: 48
Зарегистрирован: Пн фев 15, 2010 05:28:51

Сообщение alexvas2004 »

[uquote="Martian",url="/forum/viewtopic.php?p=4640838#p4640838"]Там в самом начале нарисована цифра сегментная и таблица ей соответствующая. Так вот в Вашем случае надо не просто изменить некоторые биты в этой таблице, а внести новые ряды, так как Вы часть новых портов внесли. А часть наоборот, вынесли, и это тоже надо учитывать.[/uquote]
В таблице поменял. Ниже, где упоминаются номера портов в явном виде, тоже. Но что то никаких изменений не получил.
И ещё просьба: не могли бы Вы скомпилировать hex или ihx из исходных файлов, выложенных мной ранее? Чтобы сравнить с файлом автора, находящимся с теми файлами.
А то как то странно: при прошивке с помощью stvp файла ihx автора в устройстве подмигивают одни символы, а при компиляции и прошивке с помощью Microsoft VS Code исходников из той же папки, горят другие символы.
И ещё вопрос: в Microsoft VS Code во вкладке "выходные данные" сообщение "Не удалось разрешить конфигурацию с compilerPath: "C:/Users/Comp/.platformio/packages/toolchain-sdcc/bin/sdcc.exe"" является ошибкой или это норма?
Прорезались зубы
Аватара пользователя
Сообщения: 200
Зарегистрирован: Пт ноя 16, 2012 20:17:41
Откуда: Беларусь

Сообщение Сирожа »

Это опять я. :)
Можете помочь код для ардуино уно скомпилировать в .хекс для загрузки в атмегу 328.
Спойлер

Код: Выделить всё

/*
 Demo Code for HDSP 2111 using SN74LS595N
 Matt Joyce < matt@nycresistor.com >
 Mark Tabry
 */
 
//Pin connected to latch pin (ST_CP) of 74HC595
const int latchPin = 8;
//Pin connected to clock pin (SH_CP) of 74HC595
const int clockPin = 12;
////Pin connected to Data in (DS) of 74HC595
const int dataPin = 11;
const int ce = 5;
const int wr = 6;
const int a2 = 4;
const int a1 = 3;
const int a0 = 2;
const int rst = 10;
const int a3 = 9;
int incomingByte = 0;
 
void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
  pinMode(a0, OUTPUT);
  pinMode(a1, OUTPUT);
  pinMode(a2, OUTPUT);
  pinMode(a3, OUTPUT);
  pinMode(rst, OUTPUT);
  pinMode(ce, OUTPUT);
  pinMode(wr, OUTPUT);
  digitalWrite(ce, HIGH);
  digitalWrite(wr, HIGH);
 
  resetDisplay();
}
 
void resetDisplay() {
  digitalWrite(rst, LOW);
  delayMicroseconds(1);
  digitalWrite(rst,HIGH);
  delayMicroseconds(150);
  digitalWrite(a3, HIGH);
}  
 
void writeDisplay(char *input) {
//  Serial.println(input);
  for (int i=0; i<8; i++) {    
    digitalWrite(a0, (1&i)!=0?HIGH:LOW);
    digitalWrite(a1, (2&i)!=0?HIGH:LOW);
    digitalWrite(a2, (4&i)!=0?HIGH:LOW);
       
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, input[i] );
    digitalWrite(latchPin, HIGH);
    delay(1);    
    digitalWrite(ce, LOW);
    delay(1);
    digitalWrite(wr, LOW);
    delay(1);
    digitalWrite(wr, HIGH);
    delay(1);
    digitalWrite(ce, HIGH);
    delay(1);
  }
}
 
void scrollDisplay(char *words) {
  char buffer[9];
  int i = 0;
  while(words[i] != 0){
    boolean blank = false;
    for (int j = 0; j<8; j++) {
      if ( !blank && words[i+j] == 0 ) {
        blank = true;
      }
     
      if ( blank ) {
        buffer[j] = ' ';
      }
      else {
        buffer[j] = words[i+j];
      }
    }
    buffer[8]=0;
    writeDisplay(buffer);
    delay(200);
    i++;
 }
 
}
 
void loop() {
    char intro[] = "        Test ";
    scrollDisplay(intro);
    delay(2000);
}
Прорезались зубы
Аватара пользователя
Сообщения: 200
Зарегистрирован: Пт ноя 16, 2012 20:17:41
Откуда: Беларусь

Сообщение Сирожа »

Извиняюсь. Не доглядел. Как раз таки на название раздела и посмотрел. А как эта тема называется забыл.
Ответить

Вернуться в «Разные вопросы по МК»