Страница 1 из 1
LCD128*64 spi на ST7567. Есть вопросы.
Добавлено: Вс дек 13, 2020 00:33:30
Alek_von_German
Доброго здравия всем откликнувшимся. Купил неглядя дешовый дисплей на контроллере ST7567, почему-то мне подумалось, что под него есть цельная куча библиотек и примеров использования. Но, оказалось нет. С горем пополам отыскал образец но он для 7565, я так понял-они идентичные. Код был изначально под STM. Портировать под atmega48 не составило труда.
Так вот, если писать что-то типа prints("hello world" ); на дисплее всё хорошо выводится, но вот если пытаться выводить значения переменных
gotoXy(2,1);
prints(znak/100+0 );
gotoXy(2,8);
prints(znak/10+0 );
gotoXy(2,17);
prints(znak%10+0 );
gotoXy(2,28);
prints(znak+0);
_delay_ms(1000); //
znak++; //
- то ничего не показывает. Подскажите, это я что-то делаю на так (что скорее всего), либо библиотеку нужно переделывать полностью? Ниже прикрепил архив с проэктом. Можт подскажете...
Re: LCD128*64 spi на ST7567. Есть вопросы.
Добавлено: Вс дек 13, 2020 01:30:36
VALNER
По тому что вы не правильно их выводите.
Alek_von_German писал(а):
gotoXy(2,1);
prints(znak/100+0 );
gotoXy(2,8);
prints(znak/10+0 );
gotoXy(2,17);
prints(znak%10+0 );
gotoXy(2,28);
prints(znak+0);
здесь две ошибки (если не три).
Во первых.
не + 0 а + '0'.
Во вторых. Как пример возьмем znak = 234.
Код: Выделить всё
prints(znak/100+0 ); -> prints(234/100) = 2 (OK)
prints(znak/10+0 ); -> prints(234/10) = 23 (FAIL)
prints(znak%10+0 ); -> prints(234%10) = 4(OK)
prints(znak+0); -> prints(234) = 324(ЗАЧЕМ?)
Правильно (ну или не правильно, но работать должно)
Код: Выделить всё
prints('0'+ (znak / 100);
prints('0'+ (znak % 100)/ 10);
prints('0'+ znak % 10);
Re: LCD128*64 spi на ST7567. Есть вопросы.
Добавлено: Вс дек 13, 2020 01:33:51
Alek_von_German
VALNER, ну '0', я тоже брал в одинарные кавычки. А в чем разница если '0' будет перед переменной или за ней?
Re: LCD128*64 spi на ST7567. Есть вопросы.
Добавлено: Вс дек 13, 2020 01:46:39
VALNER
[uquote="Alek_von_German",url="/forum/viewtopic.php?p=3940842#p3940842"]
VALNER, поясните пожалуйста prints(0x0f+ (znak / 100);, зачем 0х0f?[/uquote]
Ошибся. Вернее не заметил после копипаста. То как раз тот сдвиг +'0'.
В ответе я исправил.
Добавлено after 7 minutes 43 seconds:
[uquote="Alek_von_German",url="/forum/viewtopic.php?p=3940842#p3940842"]
VALNER, ну '0', я тоже брал в одинарные кавычки. А в чем разница если '0' будет перед переменной или за ней?[/uquote]
Да ни в чем.
И еще, судя по хедеру из приложенного массива.
Требует указатель на строку. При этом вы ему скармливаете просто char.
Как он при этом не ругается при компиляции?
На сколько я понимаю для отправления именно символа нужно использовать
следующую функцию.
Re: LCD128*64 spi на ST7567. Есть вопросы.
Добавлено: Вс дек 13, 2020 01:50:53
Alek_von_German
VALNER, хм. Замечание интересное. Нужно ещё раз пересмотреть библиотеки... И да, он варнинги выплевывал...
Re: LCD128*64 spi на ST7567. Есть вопросы.
Добавлено: Вс дек 13, 2020 14:51:28
Alek_von_German
VALNER, Вы совершенно правы, нужно было использовать функцию printc(...);