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

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

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

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

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

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

Сообщение А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:
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

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

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

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

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

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

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

[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]
Вы видно не внимательно прочли!
Писал программу (как мог, я только учусь)
Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы
Реклама
Эиком - электронные компоненты и радиодетали
technik-1017
Открыл глаза
Сообщения: 42
Зарегистрирован: Вс сен 03, 2017 19:43:57
Контактная информация:

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

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

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

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

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

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

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

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

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

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

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

[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:
Эту конструкцию пытаюсь построить для своих целей, но не в коммерческих.
В общих чертах кое что прояснилось!
Но и былбы благодарен за более глубокие пояснения.
Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

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

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

Сообщение BOB51 »

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

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

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

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

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

Сообщение BOB51 »

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

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