Перейти к содержанию

werter

Счет нажатий кнопки на 7 сегментных индикаторах

Рекомендуемые сообщения

У меня есть два одноразрядных 7 сегментных индикатора с общим катодом размером 1,8". Я хочу сделать на этих индикаторах счетчик нажатий кнопки применяя програмирование на PicBasicPro, с помощью МК PIC16F84 или 84A или 628A. Я попытался использовать тему : Счетчик с кнопками из урока 8_1 из ветки Микроконтроллеры, счетчик считает правильно, но все сегменты индикатора мигают.

Индикаторы мигают также в Proteus. Если я использую двухразрядный индикатор, все работает правильно - мигания нет.

Моих знаний недостаточно, чтобы определить причину мигания индикаторов , обращаюсь за помощью к Вам.

Заранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

По хорошему надо использовать аппаратное прерывание по среду напряжения на порту B0. При нажатии кнопки напряжение входе B0 упадёт до нуля вызвав прерывание. В подпрограмме плюсуем переменную и всё. В основном цикле будет крутиться программа динамической индикации.

В этом случае моргать ничего не должно.



Я в понедельник смогу код накидать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

По хорошему надо использовать аппаратное прерывание по среду напряжения на порту B0. При нажатии кнопки напряжение входе B0 упадёт до нуля вызвав прерывание. В подпрограмме плюсуем переменную и всё. В основном цикле будет крутиться программа динамической индикации.

В этом случае моргать ничего не должно.

 

Я в понедельник смогу код накидать.

Да, я подожду, большое спасибо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В архиве проект в PicBasic и Proteus.

Установил 3 кнопки (+, -, обнуление). Индикация по прерыванию. Частота обновления индикатора в районе 60Гц.

Счёт от 0 до 99. Можно изменить как угодно.

Счётчик.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В архиве проект в PicBasic и Proteus.

Установил 3 кнопки (+, -, обнуление). Индикация по прерыванию. Частота обновления индикатора в районе 60Гц.

Счёт от 0 до 99. Можно изменить как угодно.

Большое спасибо за ответ, но все осталось по прежнему, если я использую одноразрядные индикаторы, продолжают мигать. Двухразрядные работают без мигания, но и до этого они работали нормально. Проблема в том, что мигание происходит только с одноразрядными индикаторами. Я проверял в Proteus.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

А в железе не проверяли? Индикаторы что так, что по другому работают по очереди, в моём случае с частотой ~60Гц. Глазами сложно увидеть.

Протеус сам может подтормаживать и будет казаться, что индикаторы моргают.

У меня ничего не мигает. И разницы нет, что 2 одинарных индикатора, что один сдвоенный.

 

Можно ваш код и модель протеуса? С протеуса желательно скриншот.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

А в железе не проверяли? Индикаторы что так, что по другому работают по очереди, в моём случае с частотой ~60Гц. Глазами сложно увидеть.

Протеус сам может подтормаживать и будет казаться, что индикаторы моргают.

У меня ничего не мигает. И разницы нет, что 2 одинарных индикатора, что один сдвоенный.

 

Можно ваш код и модель протеуса? С протеуса желательно скриншот.

Я просто взял файл, который Вы прислали и заменил индикатор на одноразрядный. Код и прошивка остались те же. Proteus 8.6 SP2, скриншот не могу отправить т.к. не понял как это сделать. 

Попробую собрать в железе и о результате сообщу. Большое спасибо за сотрудничество.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Я просто взял файл, который Вы прислали и заменил индикатор на одноразрядный. Код и прошивка остались те же. Proteus 8.6 SP2, скриншот не могу отправить т.к. не понял как это сделать. 

Попробую собрать в железе и о результате сообщу. Большое спасибо за сотрудничество.

Разобрался с картинкой.

Counter.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Дак схема рассчитана на 2 индикатора, а прицеплен один!?

Если надо с одним, то программа резко упростится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Дак схема рассчитана на 2 индикатора, а прицеплен один!?

Если надо с одним, то программа резко упростится.

Нет, надо два,но отдельно. Один я взял для проверки. А, что это мешает работе?

Я собрал на макетной плате с одним индикатором, использовал Вашу прошивку, но не работает вообще, сегменты не светятся.

Может быть надо использовать другую конфигурацию фьюзов? Сейчас конфигурация  3FF1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Индикаторы точно с общим катодом? Контроллер pic16f84a? Для 628 нужно конфигурацию в прошивке менять.

При прошивки нужно указать только осциллятор XT, остальное не так важно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Индикаторы точно с общим катодом? Контроллер pic16f84a? Для 628 нужно конфигурацию в прошивке менять.

При прошивки нужно указать только осциллятор XT, остальное не так важно.

Все так и с индикатором и МК тот и конфигурацию менял, прочитал даташит по конфигурации все понятно, но в протеус мигает и считает, а в железе индикатор не светится. Скажите, а на 628А нужно изменить программу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Индикатор нужно проверить. Для этого батарейкой на 3В или блоком питания на 3В нужно проверить свечение сегментов, какой всё таки общий провод + или -. С общим катодом общий минус, с анодом - плюс. Программа написана под общий катод, и если прицепить индикатор с общим анодом, то светиться он не будет.

Все сегменты индикатора нужно к контроллеру подключать через резисторы 330-470Ом!

для 628 нужно конфигурацию дописать (нужно отключить внутренний компаратор), сам код такой же. В 628 есть внутренний генератор, можно его включить, тогда кварц с парой конденсаторов можно не устанавливать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Индикатор нужно проверить. Для этого батарейкой на 3В или блоком питания на 3В нужно проверить свечение сегментов, какой всё таки общий провод + или -. С общим катодом общий минус, с анодом - плюс. Программа написана под общий катод, и если прицепить индикатор с общим анодом, то светиться он не будет.

Все сегменты индикатора нужно к контроллеру подключать через резисторы 330-470Ом!

для 628 нужно конфигурацию дописать (нужно отключить внутренний компаратор), сам код такой же. В 628 есть внутренний генератор, можно его включить, тогда кварц с парой конденсаторов можно не устанавливать.

Индикатор проверял, точно общий катод. Как в 628А отключить внутренний компаратор и включить внутренний генератор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

1. В зелёной строчке XT_OSC заменить на: INTRC_OSC_NOCLKOUT

2. В этой же строчке поменять pic16f84a на pic16f628a
3. Для отключения компараторов добавить эту строку: CMCON = %00000111

4. В компиляторе выбрать контроллер pic16f628a

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

1. В зелёной строчке XT_OSC заменить на: INTRC_OSC_NOCLKOUT

2. В этой же строчке поменять pic16f84a на pic16f628a

3. Для отключения компараторов добавить эту строку: CMCON = %00000111

4. В компиляторе выбрать контроллер pic16f628a

Может быть пожете мне с программой для компиляции, закончилось 15 дней и программа PBP + Code visio studio перестала компилировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Под моими видео в ютубе есть архивы програм, в том числе и PBP + Code visio studio, у которых нет пробдем с регистрацией.

http://vip-cxema.org/files/pbp_2.60.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Под моими видео в ютубе есть архивы програм, в том числе и PBP + Code visio studio, у которых нет пробдем с регистрацией.

http://vip-cxema.org/files/pbp_2.60.rar

Все сделал, считает вперед и назад, обнуляет, но мигает по очереди. И еще во второй строчке кода написано: define osc 4,это правильно, нулей не должно быть?

Прилагаю схему.

Counter_compressed.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Все сделал, считает вперед и назад, обнуляет, но мигает по очереди. И еще во второй строчке кода написано: define osc 4,это правильно, нулей не должно быть?

Прилагаю схему.

Evgeniy Вы не могли бы прокомментировать мое сообщение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Частота задаётся в мегагерцах, поэтому строчка OSC 4 написана правильно (если кварцевый резонатор установлен на ту же частоту).

Схема нарисована правильно, но можно упростить. Необходимо всего 8 резисторов, незачем их лепить на каждый индикатор.

По очереди мигают где? В симуляторе может неправильно работать!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Частота задаётся в мегагерцах, поэтому строчка OSC 4 написана правильно (если кварцевый резонатор установлен на ту же частоту).

Схема нарисована правильно, но можно упростить. Необходимо всего 8 резисторов, незачем их лепить на каждый индикатор.

По очереди мигают где? В симуляторе может неправильно работать!

По очереди мигают в Proteus.

Собрал на макетной плате, обновил прошивку, но цифры светятся невпопад и на нажатие кнопок не реагируют,хотя при нажатии любой кнопки сегменты изменяют силу свечения. Прошивал МК на PICkit 2 и он показал конфигурацию 2170 или по битам 

- - 1 -   - - - 1   0 1 1 1   0 0 0 0  первый слева 15 бит, первый справа 0 бит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Индикатор точно с общим катодом? Потому как ведёт себя как с общим анодом! Сегменты в принципе не могут яркость менять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Индикатор точно с общим катодом? Потому как ведёт себя как с общим анодом! Сегменты в принципе не могут яркость менять.

Точно. 

Минус подключаю к общему катоду индикатора, а плюс через резистор 240 ом зажигает каждый сегмент: a, b, c, d, e, f, g, точка. 

Извините, долго не отвечал, был в отъезде,

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В прошивку внёс изменения для использования её в pic16f628

на схеме поменял индикаторы на 2 одинарных.

https://www.youtube.com/watch?v=HExDJQdBxUU

На работе нет программы для захвата экрана, поэтому снято телефоном.

Счётчик_628.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В прошивку внёс изменения для использования её в pic16f628

на схеме поменял индикаторы на 2 одинарных.

https://www.youtube.com/watch?v=HExDJQdBxUU

На работе нет программы для захвата экрана, поэтому снято телефоном.

Большое спасибо за Вашу помощь. В PROTEUS все прекрасно работает, попробую собрать на макетной плате. О результате напишу. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти



×
  • Создать...