Не корректный вывод информации на экран LCD 1602

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 87
Зарегистрирован: Сб фев 13, 2016 10:18:25
Откуда: D.P.R. Мясо комбинат.

Сообщение Акма »

Не корректно выводит информацию на экран LCD 1602
Ребята поясните пожалуйста в чем может быть проблема.
Решил сделать таймер на мега 8, для электро двигателя с выводом информации на экран.
На экран выводится
Верхняя строка
1)напряжение аккумулятора.заряд-разряд.
2)напряжение солнечной батареи. подзарядка акума.
3)ток потребления эл.двигателем.
4)Направление вращения,стрелочки << или >> реверсивное вращение.
Нижняя строка.
1)заданное время работы.
2)время работы с отсчетом времени от нуля до заданного времени.
3)номер режима.
4)скорость вращения.
5)знаки пуск >>>, стоп |||
Писал программу (как мог, я только учусь) писал все блоками сначала одно, потом другое и проверял в работе тоже по одиночке.
По одиночке все работает, как все соединил в одну кучу вот здесь и началось.
Вот сам вопрос:
Выводимая инфа работает через раз, то нормально, то местами лезет друг на друга, вместо должных циферок выводит что попало.
Как должно быть.
Изображение
Если поиграть кнопками стоп, реверс, пуск выскакивают не понятно какие цифры. Начинает жить своей жизнью.
Бывает высвечивает вообще черти что!
Изображение
Перезапуск помогает, бывает цикл отрабатывает нормально, на следующий запуск опять срывает.А бывает с самого начала начинает фальшивить.
Все координаты указаны и проверенны досконально, ни где не пересекаются.
Заметил это явление в протеусе, грешил на него, думал может не справляется. Собрал в железе, проявилось тоже самое.
Ребята может кто подскажет в чем может быть проблема?
Все сырое не доделанное, как по мне нужно решить эту проблему ну а потом продолжать дальше.
Вложения
Радио кот.rar
(44.13 КБ) 347 скачиваний
Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

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

interrupt [EXT_INT0] void ext_int0_isr(void)//
 {

     lcd_gotoxy(14,0);//
     lcd_putsf(">>");
     delay_ms(100);

     .........
     .........
 }


interrupt [EXT_INT1] void ext_int1_isr(void)
   {
     .........
    delay_ms(100);    // Время звучания бип кнопки
     .........

     lcd_gotoxy(0,1);  // Выводим ВРЕМЯ РАБОТЫ В минутАХ
     lcd_putsf("0");
     lcd_gotoxy(7,1);  // РЕЖИМ ИЗ ИПРОМ
     lcd_putsf("0");

     .........
     .........

 }
Дальше даже смотреть не стал :facepalm:
Акма писал(а):для электро двигателя
Очень надеюсь, что эта конструкция будет безопасной для людей :cry:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку

Сообщение Zhuk72 »

Создайте 2 массива по 16 элементов, каждый для своей строки.
Напрямую на экран значение не выводите, изменяйте значение в массиве и выводите целиком строку.

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

P.S. И, как выше заметили, никаких задержек в прерывании быть не должно.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 87
Зарегистрирован: Сб фев 13, 2016 10:18:25
Откуда: D.P.R. Мясо комбинат.

Сообщение Акма »

[uquote="Аlex",url="/forum/viewtopic.php?p=3991486#p3991486"]

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

interrupt [EXT_INT0] void ext_int0_isr(void)//
 {

     lcd_gotoxy(14,0);//
     lcd_putsf(">>");
     delay_ms(100);

     .........
     .........
 }


interrupt [EXT_INT1] void ext_int1_isr(void)
   {
     .........
    delay_ms(100);    // Время звучания бип кнопки
     .........

     lcd_gotoxy(0,1);  // Выводим ВРЕМЯ РАБОТЫ В минутАХ
     lcd_putsf("0");
     lcd_gotoxy(7,1);  // РЕЖИМ ИЗ ИПРОМ
     lcd_putsf("0");

     .........
     .........

 }
Дальше даже смотреть не стал :facepalm:
Акма писал(а):для электро двигателя
Очень надеюсь, что эта конструкция будет безопасной для людей :cry:[/uquote]
Вы видно не внимательно прочли!
Писал программу (как мог, я только учусь)
Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 42
Зарегистрирован: Вс сен 03, 2017 19:43:57

Сообщение technik-1017 »

Вариант который предложил Zhuk72 является универсальным, можно на одни и те же выводы подключить индикатор, кнопки и ещё что-нибудь.
Мои наработки по работе с подобным экраном выложены здесь
https://ru.files.fm/u/x9d293sku#/list/
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 87
Зарегистрирован: Сб фев 13, 2016 10:18:25
Откуда: D.P.R. Мясо комбинат.

Сообщение Акма »

[uquote="technik-1017",url="/forum/viewtopic.php?p=3991594#p3991594"]Вариант который предложил Zhuk72 является универсальным, можно на одни и те же выводы подключить индикатор, кнопки и ещё что-нибудь.
Мои наработки по работе с подобным экраном выложены здесь
https://ru.files.fm/u/x9d293sku#/list/[/uquote]
Спасибо сейчас посмотрю!
Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

[uquote="Акма",url="/forum/viewtopic.php?p=3991527#p3991527"]Вы видно не внимательно прочли!
Писал программу (как мог, я только учусь)[/uquote]Тогда Вам пару простых советов :
1. Почитайте про прерывания. Как они работают, зачем нужны, что они из себя представляют, и т.д...
2. Почитайте про разделяемые ресурсы.
И не просто прочитал по-диагонали и всё. А прочитал, понял и дошло в чём ошибка.
Ну, и в дополнение :
3. Принять к сведению совет Жука про буфер.
4. Не принимать всерьёз пост от Техника. Полезности для Вас в нём - ноль целых и пару сотых.
Встал на лапы
Аватара пользователя
Сообщения: 87
Зарегистрирован: Сб фев 13, 2016 10:18:25
Откуда: D.P.R. Мясо комбинат.

Сообщение Акма »

[uquote="Аlex",url="/forum/viewtopic.php?p=3991770#p3991770"][uquote="Акма",url="/forum/viewtopic.php?p=3991527#p3991527"]Вы видно не внимательно прочли!
Писал программу (как мог, я только учусь)[/uquote]Тогда Вам пару простых советов :
1. Почитайте про прерывания. Как они работают, зачем нужны, что они из себя представляют, и т.д...
2. Почитайте про разделяемые ресурсы.
И не просто прочитал по-диагонали и всё. А прочитал, понял и дошло в чём ошибка.
Ну, и в дополнение :
3. Принять к сведению совет Жука про буфер.
4. Не принимать всерьёз пост от Техника. Полезности для Вас в нём - ноль целых и пару сотых.[/uquote]
Спасибо!!
Я просил совет, то что подсказать некому! А увидел от вас: Дальше даже смотреть не стал :facepalm:
и
Очень надеюсь, что эта конструкция будет безопасной для людей :cry:
Эту конструкцию пытаюсь построить для своих целей, но не в коммерческих.
В общих чертах кое что прояснилось!
Но и былбы благодарен за более глубокие пояснения.
Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Акма писал(а):Но и былбы благодарен за более глубокие пояснения.
Всё очень просто.
Все функции, для работы с дисплеем, которые Вы используете, не являются реентерабельными. А Вы их используете в своей программе, как минимум, в трёх разных потоках. Отсюда и проблемы, которые Вы описали в первом посте.
Я не зря выделил именно эти куски кода в своём ответе. Это была подсказка, а не насмешка над отсутствием опыта :roll:
Ещё раз повторюсь :
1. Почитайте про прерывания. Как они работают, зачем нужны, что они из себя представляют, и т.д...
2. Почитайте про разделяемые ресурсы.
Добавлено after 1 minute 2 seconds:
PS: Не цитируйте полностью сообщения. Смотрится некрасиво :?
Если нажать кнопку "Редактор", то там можно выделять отдельные части сообщений для цитирования.
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Заголовок: Не корректный вывод информации на экран LCD 1602
Акма писал(а):...
Но и былбы благодарен за более глубокие пояснения.
Для "более глубоких пояснений" нужно быть хорошо ознакомленным как со схемой устройства, так и с самой задумкой ("хотелками") относительно интерфейса.
Стыковка ранее отлаженных модулей в новой обобщающей прожке бывает иной раз полностью переделывать прототипы заставляет (это ежли прототип изначально как библиотека не был выполнен).
К сожалению под Си только с адуринкой помочь могу.
:beer:
Друг Кота
Сообщения: 7722
Зарегистрирован: Вс июл 24, 2011 11:38:09

Сообщение 74LS00 »

У абдурины есть ордна проблема, всё наковырено на один delay, если его сдвинуть, то нифига не работает.
Перед тем как изучать абдурину, извольте женится на програмисте или выучить нормальный си, только тогда абдурина станет хоть чемто понятным.
Возможно её придумали програмисты плохо владеющие разводкой плат, но учителя они вообще никакие
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Абсолютно неверное представление об АДУРИНЬЕ.
Штука весьма интересная и мощная, но ессно со своей спецификой и ограничениями для простого/продвинутого пользователя.
(варианты "школярства" при абсолютном копипасте не рассматривается).
Разводка плат там также разная, однако более специализирована для применения последовательного обмена с внешними устройствами, имеющими некоторые "мозги".
8)
Ответить

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