werter 1 Report post Posted October 13, 2018 У меня есть два одноразрядных 7 сегментных индикатора с общим катодом размером 1,8". Я хочу сделать на этих индикаторах счетчик нажатий кнопки применяя програмирование на PicBasicPro, с помощью МК PIC16F84 или 84A или 628A. Я попытался использовать тему : Счетчик с кнопками из урока 8_1 из ветки Микроконтроллеры, счетчик считает правильно, но все сегменты индикатора мигают. Индикаторы мигают также в Proteus. Если я использую двухразрядный индикатор, все работает правильно - мигания нет. Моих знаний недостаточно, чтобы определить причину мигания индикаторов , обращаюсь за помощью к Вам. Заранее благодарен. Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 13, 2018 По хорошему надо использовать аппаратное прерывание по среду напряжения на порту B0. При нажатии кнопки напряжение входе B0 упадёт до нуля вызвав прерывание. В подпрограмме плюсуем переменную и всё. В основном цикле будет крутиться программа динамической индикации. В этом случае моргать ничего не должно. Я в понедельник смогу код накидать. Share this post Link to post Share on other sites
werter 1 Report post Posted October 13, 2018 По хорошему надо использовать аппаратное прерывание по среду напряжения на порту B0. При нажатии кнопки напряжение входе B0 упадёт до нуля вызвав прерывание. В подпрограмме плюсуем переменную и всё. В основном цикле будет крутиться программа динамической индикации. В этом случае моргать ничего не должно. Я в понедельник смогу код накидать. Да, я подожду, большое спасибо. Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 15, 2018 В архиве проект в PicBasic и Proteus. Установил 3 кнопки (+, -, обнуление). Индикация по прерыванию. Частота обновления индикатора в районе 60Гц. Счёт от 0 до 99. Можно изменить как угодно. Счётчик.rar Share this post Link to post Share on other sites
werter 1 Report post Posted October 15, 2018 В архиве проект в PicBasic и Proteus. Установил 3 кнопки (+, -, обнуление). Индикация по прерыванию. Частота обновления индикатора в районе 60Гц. Счёт от 0 до 99. Можно изменить как угодно. Большое спасибо за ответ, но все осталось по прежнему, если я использую одноразрядные индикаторы, продолжают мигать. Двухразрядные работают без мигания, но и до этого они работали нормально. Проблема в том, что мигание происходит только с одноразрядными индикаторами. Я проверял в Proteus. Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 15, 2018 А в железе не проверяли? Индикаторы что так, что по другому работают по очереди, в моём случае с частотой ~60Гц. Глазами сложно увидеть. Протеус сам может подтормаживать и будет казаться, что индикаторы моргают. У меня ничего не мигает. И разницы нет, что 2 одинарных индикатора, что один сдвоенный. Можно ваш код и модель протеуса? С протеуса желательно скриншот. Share this post Link to post Share on other sites
werter 1 Report post Posted October 15, 2018 А в железе не проверяли? Индикаторы что так, что по другому работают по очереди, в моём случае с частотой ~60Гц. Глазами сложно увидеть. Протеус сам может подтормаживать и будет казаться, что индикаторы моргают. У меня ничего не мигает. И разницы нет, что 2 одинарных индикатора, что один сдвоенный. Можно ваш код и модель протеуса? С протеуса желательно скриншот. Я просто взял файл, который Вы прислали и заменил индикатор на одноразрядный. Код и прошивка остались те же. Proteus 8.6 SP2, скриншот не могу отправить т.к. не понял как это сделать. Попробую собрать в железе и о результате сообщу. Большое спасибо за сотрудничество. Share this post Link to post Share on other sites
werter 1 Report post Posted October 15, 2018 Я просто взял файл, который Вы прислали и заменил индикатор на одноразрядный. Код и прошивка остались те же. Proteus 8.6 SP2, скриншот не могу отправить т.к. не понял как это сделать. Попробую собрать в железе и о результате сообщу. Большое спасибо за сотрудничество. Разобрался с картинкой. Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 16, 2018 Дак схема рассчитана на 2 индикатора, а прицеплен один!? Если надо с одним, то программа резко упростится. Share this post Link to post Share on other sites
werter 1 Report post Posted October 16, 2018 Дак схема рассчитана на 2 индикатора, а прицеплен один!? Если надо с одним, то программа резко упростится. Нет, надо два,но отдельно. Один я взял для проверки. А, что это мешает работе? Я собрал на макетной плате с одним индикатором, использовал Вашу прошивку, но не работает вообще, сегменты не светятся. Может быть надо использовать другую конфигурацию фьюзов? Сейчас конфигурация 3FF1. Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 17, 2018 Индикаторы точно с общим катодом? Контроллер pic16f84a? Для 628 нужно конфигурацию в прошивке менять. При прошивки нужно указать только осциллятор XT, остальное не так важно. Share this post Link to post Share on other sites
werter 1 Report post Posted October 17, 2018 Индикаторы точно с общим катодом? Контроллер pic16f84a? Для 628 нужно конфигурацию в прошивке менять. При прошивки нужно указать только осциллятор XT, остальное не так важно. Все так и с индикатором и МК тот и конфигурацию менял, прочитал даташит по конфигурации все понятно, но в протеус мигает и считает, а в железе индикатор не светится. Скажите, а на 628А нужно изменить программу? Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 17, 2018 Индикатор нужно проверить. Для этого батарейкой на 3В или блоком питания на 3В нужно проверить свечение сегментов, какой всё таки общий провод + или -. С общим катодом общий минус, с анодом - плюс. Программа написана под общий катод, и если прицепить индикатор с общим анодом, то светиться он не будет. Все сегменты индикатора нужно к контроллеру подключать через резисторы 330-470Ом! для 628 нужно конфигурацию дописать (нужно отключить внутренний компаратор), сам код такой же. В 628 есть внутренний генератор, можно его включить, тогда кварц с парой конденсаторов можно не устанавливать. Share this post Link to post Share on other sites
werter 1 Report post Posted October 17, 2018 Индикатор нужно проверить. Для этого батарейкой на 3В или блоком питания на 3В нужно проверить свечение сегментов, какой всё таки общий провод + или -. С общим катодом общий минус, с анодом - плюс. Программа написана под общий катод, и если прицепить индикатор с общим анодом, то светиться он не будет. Все сегменты индикатора нужно к контроллеру подключать через резисторы 330-470Ом! для 628 нужно конфигурацию дописать (нужно отключить внутренний компаратор), сам код такой же. В 628 есть внутренний генератор, можно его включить, тогда кварц с парой конденсаторов можно не устанавливать. Индикатор проверял, точно общий катод. Как в 628А отключить внутренний компаратор и включить внутренний генератор? Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 17, 2018 1. В зелёной строчке XT_OSC заменить на: INTRC_OSC_NOCLKOUT 2. В этой же строчке поменять pic16f84a на pic16f628a3. Для отключения компараторов добавить эту строку: CMCON = %00000111 4. В компиляторе выбрать контроллер pic16f628a Share this post Link to post Share on other sites
werter 1 Report post Posted October 18, 2018 1. В зелёной строчке XT_OSC заменить на: INTRC_OSC_NOCLKOUT 2. В этой же строчке поменять pic16f84a на pic16f628a 3. Для отключения компараторов добавить эту строку: CMCON = %00000111 4. В компиляторе выбрать контроллер pic16f628a Может быть пожете мне с программой для компиляции, закончилось 15 дней и программа PBP + Code visio studio перестала компилировать. Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 18, 2018 Под моими видео в ютубе есть архивы програм, в том числе и PBP + Code visio studio, у которых нет пробдем с регистрацией. http://vip-cxema.org/files/pbp_2.60.rar Share this post Link to post Share on other sites
werter 1 Report post Posted October 22, 2018 Под моими видео в ютубе есть архивы програм, в том числе и PBP + Code visio studio, у которых нет пробдем с регистрацией. http://vip-cxema.org/files/pbp_2.60.rar Все сделал, считает вперед и назад, обнуляет, но мигает по очереди. И еще во второй строчке кода написано: define osc 4,это правильно, нулей не должно быть? Прилагаю схему. Share this post Link to post Share on other sites
werter 1 Report post Posted October 25, 2018 Все сделал, считает вперед и назад, обнуляет, но мигает по очереди. И еще во второй строчке кода написано: define osc 4,это правильно, нулей не должно быть? Прилагаю схему. Evgeniy Вы не могли бы прокомментировать мое сообщение? Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 25, 2018 Частота задаётся в мегагерцах, поэтому строчка OSC 4 написана правильно (если кварцевый резонатор установлен на ту же частоту). Схема нарисована правильно, но можно упростить. Необходимо всего 8 резисторов, незачем их лепить на каждый индикатор. По очереди мигают где? В симуляторе может неправильно работать! Share this post Link to post Share on other sites
werter 1 Report post Posted October 26, 2018 Частота задаётся в мегагерцах, поэтому строчка OSC 4 написана правильно (если кварцевый резонатор установлен на ту же частоту). Схема нарисована правильно, но можно упростить. Необходимо всего 8 резисторов, незачем их лепить на каждый индикатор. По очереди мигают где? В симуляторе может неправильно работать! По очереди мигают в Proteus. Собрал на макетной плате, обновил прошивку, но цифры светятся невпопад и на нажатие кнопок не реагируют,хотя при нажатии любой кнопки сегменты изменяют силу свечения. Прошивал МК на PICkit 2 и он показал конфигурацию 2170 или по битам - - 1 - - - - 1 0 1 1 1 0 0 0 0 первый слева 15 бит, первый справа 0 бит. Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted October 29, 2018 Индикатор точно с общим катодом? Потому как ведёт себя как с общим анодом! Сегменты в принципе не могут яркость менять. Share this post Link to post Share on other sites
werter 1 Report post Posted November 3, 2018 Индикатор точно с общим катодом? Потому как ведёт себя как с общим анодом! Сегменты в принципе не могут яркость менять. Точно. Минус подключаю к общему катоду индикатора, а плюс через резистор 240 ом зажигает каждый сегмент: a, b, c, d, e, f, g, точка. Извините, долго не отвечал, был в отъезде, Share this post Link to post Share on other sites
Evgeniy 280 Report post Posted November 5, 2018 В прошивку внёс изменения для использования её в pic16f628 на схеме поменял индикаторы на 2 одинарных. https://www.youtube.com/watch?v=HExDJQdBxUU На работе нет программы для захвата экрана, поэтому снято телефоном. Счётчик_628.rar Share this post Link to post Share on other sites
werter 1 Report post Posted November 5, 2018 В прошивку внёс изменения для использования её в pic16f628 на схеме поменял индикаторы на 2 одинарных. https://www.youtube.com/watch?v=HExDJQdBxUU На работе нет программы для захвата экрана, поэтому снято телефоном. Большое спасибо за Вашу помощь. В PROTEUS все прекрасно работает, попробую собрать на макетной плате. О результате напишу. Share this post Link to post Share on other sites