Оглавление:
- Шаг 1: необходимые вещи
- Шаг 2: логика кода и отображение
- Шаг 3: отображение дисплея с микроконтроллером
- Шаг 4: Почему мультиплексирование?
- Шаг 5: как этого добиться?
- Шаг 6: алгоритм мультиплексирования
Видео: Секундомер с использованием Pic18f4520 в Proteus с 7 сегментами: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Я только начал работать с контроллером pic, один мой друг попросил меня собрать из него секундомер. Так что у меня нет образа оборудования, которым можно поделиться, я написал код и смоделировал его в программе Proteus.
здесь я поделился схемой того же самого.
определены три переменных миллисекунды, секунды, минуты
здесь мы использовали прерывание по таймеру на 10 мс, на каждые 1000 миллисекунд переменная секунд будет увеличиваться, каждые 60 секунд переменная минут будет увеличиваться.
Шаг 1: необходимые вещи
1 контроллер pic18f4520
2 семисегментных дисплея
3 транзистора bc547
4 переключателя для запуска / остановки / сброса
5 резисторов 330Е, 10К, 1К
6 загрузите mikroC для pic
7 скачать Proteus
Шаг 2: логика кода и отображение
Что такое семисегментный дисплей? Семисегментный дисплей (SSD) - один из самых распространенных, дешевых и простых в использовании дисплеев. Это похоже на выше.
здесь мы должны использовать 7-сегментный дисплей с общим катодом - в SSD с общим катодом клемма –ve всех светодиодов обычно подключается к контакту «COM». Сегмент может загореться, когда соответствующему сегменту светодиода присвоена «1», а земля подключена к общему проводу. Внутреннее устройство показано на рисунке 2.
Шаг 3: отображение дисплея с микроконтроллером
В своей схеме я использовал транзистор NPN BC547.
Для простого использования BJT в качестве переключателя переходы эмиттер-коллектор замыкаются при наличии входного сигнала на клемме базы, в противном случае он остается отключенным. Вход должен быть подан через подходящий резистор.
Шаг 4: Почему мультиплексирование?
Часто нам нужно использовать два, три или более SSD, и это тоже с использованием только одного MCU, но одна проблема, с которой мы сталкиваемся, - это отсутствие контактов ввода-вывода в MCU, так как один SSD занимает 8 контактов, и, следовательно, три SSD. взял бы 24 пина. На рис.18 у нас всего 48 контактов ввода / вывода. Итак, какое решение?
Одна из возможностей состоит в том, что мы используем более крупный MCU с большим количеством контактов ввода / вывода. Но тогда мы по-прежнему ограничены максимум 3 твердотельными накопителями, которые можно использовать. Еще одно гораздо лучшее и рекомендуемое решение этой проблемы - мультиплексирование семи сегментных дисплеев.
В Википедии говорится: «В телекоммуникационных и компьютерных сетях мультиплексирование (также известное как мультиплексирование) - это метод, с помощью которого несколько сигналов аналоговых сообщений или потоков цифровых данных объединяются в один сигнал на общей среде. Цель состоит в том, чтобы поделиться дорогостоящим ресурсом. «Под мультиплексированием семисегментного дисплея мы подразумеваем то, что мы будем использовать только 7 выходных портов для отображения на всех твердотельных накопителях.
Шаг 5: как этого добиться?
Здесь мы будем использовать «Постоянство видения». Теперь вы должны иметь через этот термин уже раньше. Да, это тот же метод, который используется в кинематографии (отображение изображений так быстро, что наш мозг не может различить задержку между двумя последовательными изображениями). Точно так же, когда мы объединяем более одного SSD, мы отображаем только один SSD за раз и переключаемся между ними так быстро, что наш мозг не может их различить.
Допустим, каждый дисплей активен только 5 миллисекунд за раз, то есть он загорается 1 / 0,0045 раза в секунду, что примерно равно 222 раз в секунду. Наши глаза не могут почувствовать изменения так быстро, и поэтому мы видим, что все дисплеи работают одновременно. Что на самом деле происходит в аппаратном обеспечении, так это то, что микроконтроллер выдает «1» на вывод (помните, предоставление «1» на базу BJT закорачивает коллектор и эмиттерный переход?), Который подключен к базе транзистора. соответствующих дисплеев, удерживает порт в состоянии «ВКЛ» в течение 5 миллисекунд, а затем снова выключает его. Эта процедура выполняется в бесконечном цикле, так что мы видим дисплей непрерывно.
Шаг 6: алгоритм мультиплексирования
Определите два порта в коде, один для порта данных сегмента и порта управления сегментом.
Хитрость здесь в том, что вы отображаете данные по всем 7 сегментам. и активируйте один контрольный пин, на котором вы должны отображать эти данные. изменить данные и штифт управления переключением передач.
здесь, в этом руководстве, мы использовали 6-значное мультиплексирование, просто просмотрите прикрепленный файл c, и вы очистите его.
Рекомендуемые:
Прототип проекта светофора на базе Atmega16 с использованием 7-сегментного дисплея (моделирование Proteus): 5 шагов
Прототип проекта светофора на основе Atmega16 с использованием 7-сегментного дисплея (моделирование Proteus): В этом проекте мы собираемся создать проект светофора на основе Atmega16. Здесь мы взяли один 7 сегментный и 3 светодиода для обозначения сигналов светофора
Секундомер Arduino с использованием ЖК-дисплея I2C: 5 шагов
Секундомер Arduino с использованием ЖК-дисплея I2C: в этом проекте я научу вас использовать ЖК-дисплей и Arduino в качестве интерактивного секундомера. Когда ваш проект будет завершен с использованием предоставленного кода, он должен выглядеть, как на фотографии выше.Перейдите к следующему шагу, чтобы узнать, с чего начать
Мониторинг ускорения с использованием Raspberry Pi и AIS328DQTR с использованием Python: 6 шагов
Мониторинг ускорения с помощью Raspberry Pi и AIS328DQTR с использованием Python: Ускорение конечно, я думаю, в соответствии с некоторыми законами физики. - Терри Райли Гепард использует удивительное ускорение и быстрое изменение скорости при преследовании. Самое быстрое существо, выброшенное на берег, время от времени использует свой максимальный темп, чтобы поймать добычу
Базовый секундомер с использованием VHDL и Basys3 Board: 9 шагов
Базовый секундомер с использованием VHDL и платы Basys3: добро пожаловать в руководство о том, как создать секундомер с использованием базовой платы VHDL и Basys 3. Мы рады поделиться с вами нашим проектом! Это был последний проект курса CPE 133 (Цифровой дизайн) в Калифорнийском Поли, SLO осенью 2016 года. Проект, который мы создали
КЛАВИАТУРА С 7 СЕГМЕНТАМИ ИСПОЛЬЗОВАНИЕМ МИКРОКОНТРОЛЛЕРА CLOUDX: 4 шага
КЛАВИАТУРА С 7 СЕГМЕНТАМИ ИСПОЛЬЗОВАНИЯ МИКРОКОНТРОЛЛЕРА CLOUDX: В этом проекте мы будем принимать числовой ввод с матричной клавиатуры, а затем отображать его на модуле с семью сегментами. Поскольку 8 светодиодов помечены буквами от A до G и DP (для десятичной точки), если вы хотите отобразить цифру 6, вы примените