Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Простые цифровые часы на PIC16F628A и DS1307 и 7-сегментным светодиодным дисплеем

в Бытовая электроника, Микроконтроллеры 0 3,056 Просмотров

В этом новом проекте снова используется микроконтроллер PIC16F628A . Цель проекта – создать простые цифровые часы с 7-сегментным светодиодным дисплеем. У часов нет дополнительных функций, таких как будильник, отображение секунд и даты. Однако их можно добавить в код программы.

Портативный паяльник TS80P

TS80P- это обновленная версия паяльника TS80 Smart, работающий от USB…

Подробнее

В качестве микросхемы часов реального времени (RTC) выбрана микросхема DS1307. В качестве 7-сегментного светодиодного дисплея использован Kingbright CC56-21SRWA.

Микроконтроллер работает от внутреннего генератора на частоте 4 МГц, что позволяет сэкономить 2 дополнительных контакта. Вывод сброса (MCLR) используется в качестве входа для одной из кнопок.

Все сегменты светодиодного индикатора (анод) подключены к порту PORTB, а катоды подключены к порту PORTA.

Микросхема RTC также подключена к порту PORTA.

Схема предельно проста, и для быстрого тестирования была собрана на макетной плате.

Паяльный фен YIHUA 8858

Обновленная версия, мощность: 600 Вт, расход воздуха: 240 л/час…

Подробнее

Все заработало, как и ожидалось. Частота мультиплексирования (обновления цифр) составляет около 53 Гц, видимого мерцания не наблюдается. Из-за мультиплексирования цифры получились более тусклые, и для компенсации этого ток через сегменты должен быть немного выше.

Было протестировано с разными значениями сопротивления токоограничивающих резисторов R1-R7. С сопротивлением ниже 220 Ом микроконтроллер начинает плохо себя вести — некоторые цифры начинают мерцать. Если сопротивление 220 Ом и выше все вроде работает нормально.

Две точки посередине подключены к выводу SQW DS1307. Этот вывод настроен как выходной сигнал прямоугольной формы с частотой 1 Гц. Данный выход с открытым стоком, поэтому для работы он должен иметь подтягивающий резистор.

Часы имеют две кнопки для настройки времени — одна для часов и одна для минут. У микроконтроллера остался один неиспользованный контакт — RB7, который можно использовать для дополнительных функций. Например, можно подключить зуммер и добавить в программное обеспечение функцию будильника.

Программное обеспечение написано и скомпилировано с помощью программы MikroC Pro и использует встроенную программную библиотеку I2C для связи с микросхемой RTC.

Если кто-то желает использовать программное обеспечение MPLAB для компиляции кода, он должен написать свою собственную функцию для I2C с нуля.

Для программирования микроконтроллера можно использовать этот программатор.

Скачать файлы проекта (302,1 KiB, скачано: 410)

Источник

Тестер транзисторов / ESR-метр / генератор

Многофункциональный прибор для проверки транзисторов, диодов, тиристоров…

Подробнее

PIC16f628часы 2021-01-10

С тегами: PIC16f628 часы

ЧАСЫ С ТЕРМОМЕТРОМ НА PIC16F628A

Оцените материал

  • 1
  • 2
  • 3
  • 4
  • 5

(6 голосов)

Часы построены на микроконтроллере PIC16F628A, в качестве датчика используется DS18B20, транзисторы BC212 управляют общими анодами семисегментного индикатора, также в состав схемы входят несколько пассивных элементов.

Устройство настраивается с помощью 4-х кнопок. Одна увеличивает, другая уменьшает значение, третья кнопка используется для входа в меню, а также переключает элементы меню. При выходе из меню настройки сохраняются в EEPROM контроллера. Если часы зависают по какой-то причине кнопкой сброса они могут быть перезапущены. Часы будут продолжать работать с последними сохраненными значениями. Микроконтроллер тактируется от внешнего кварца частотой 4МГц для более точного отсчета времени. PIC16F628 управляет дисплеем в режиме мультиплексирования. Индикаторы находятся под контролем одного типа транзистора – BC212.

Как известно точность хода частов зависит от многих факторов – кварцевого резонатора, конденсаторов, температуры самого микроконтроллера, а также от качества электронных компонентов. В этой схеме, точность часов может быть установлена с помощью программного обеспечения. Нам просто нужно измерить отклонение в секундах за час или более часа, расчитать значения используя формулу для расчета поправочного коэффициента и ввести эти значения в память контроллера при помощи меню.

Если правильно рассчитать поправочный коэффициент, то ход часов будет точным.

 

Настройка часов, описание меню:

– ho: Установка часов 0-23 
– nn: Установка минут 0-59 
– dn: Установка месяца
– dd: Установка числа месяца
– dY: Установка года
– dt: Установка формата индикации месяца. Если 1 – буквами(JA FE ||A AP ||Y JU JL AU SE oc no dE), 2 – цифрами(01 02 03 04 05 06 07 08 09 10 11 12). 
– tt: Задержка индикации времени. Значение переменной 2-99с 
– td: Задержка индикации даты. Значение переменной 2-99с. В случае если равно нулю дата не показывается! 
– tE: Задержка индикации температуры. Значение переменной 2-99с. В случае если равно нулю температура не показывается! 
– Sh: Калибровка шестнадцатеричного значения (см. ниже) 
– Sl: Калибровка шестнадцатеричного значения (см. ниже)

Примеры установки калибровок Sh/Sl:

Отставание на 30 секунд в 24 часа: 30/86400 = 0,000347 

1000000 – (1000000 * 0,000347) = 999653 (в десятичной системе) = F40E5 (шестнадцатеричной)

В результате шестнадцатеричное значение 40E5 раскладываем на Sh=40, SL=E5

Отставание на 2 секунды в 1 час: 2/3600 = 0,000555 
1000000 – (1000000 * 0,000555) = 999445 (в десятичной системе) = F4015 (HEX)

Sh=40, SL=15

Спешат на 15 секунд за 60 дней: 15/5184000 = 0,000002 
1000000 + (1000000 * 0,000555) = 1000002 (в десятичной системе) = F4242 (HEX)

Sh=42, SL=42

Скачать прошивку и печатную плату 

Последнее от Антон

  • Обзор нового варианта печатных плат SDR malamute
  • Печатные платы V3 для SDR “Malamute”
  • Raspberry Pi – компьютер с ARM архитектурой
  • Отладочные платы Arduino Uno
  • Трансивер “Маламут” NEW

Другие материалы в этой категории: « Часы на одном индикаторе Регулятор мощности двух нагрузок »

Добавить комментарий

Наверх

говорящих часов PIC16F628A | Hackaday.

io

Посмотреть галерею

Команда (1)

  • проектор
Присоединяйтесь к команде этого проекта завершенный проект аппаратное обеспечение Олед pic16f628a dfplayer

Связанные списки

Часы, часы и еще раз часы

Если у него есть хронометр, он принадлежит к этому списку!

Этот проект был создано 25. 08.2021 и последнее обновление год назад.

pic управляет OLED с помощью программного обеспечения I2C (bit banging). База времени устанавливается путем деления кварца 32768 Гц с использованием CCP1 и TMR1. OLED-модуль 0,96″, I2C, драйвер SSD1306, 128×64.
При нажатии кнопки РАЗГОВОР запрашивается воспроизведение соответствующих дорожек часов и минут. Треки можно поменять на любой язык, wav или mp3, также можно записать свой голос.

SD-карта в плеере должна быть отформатирована в FAT32. Плеер читает треки в порядке их записи (а не по названиям), например трек 53msg.mp3 читает dfplayer. Файлы дорожек необходимо копировать на SD-карту по одной дорожке и в том порядке, в котором они находятся в папке компьютера. На карте не должно быть других файлов или папок. Если вы хотите изменить какой-либо из треков, вам нужно сначала переформатировать SD, а затем скопировать новые файлы.
Спецификация для DFPlayer: http://www. picaxe.com/docs/spe033.pdf

  • 1 × pic16f628a Микрочип
  • 3 × кнопка НЕТ
  • 3 × резистор 470 Ом
  • 1 × OLED-модуль 0,96″, SSD1306, 128×64, I2C
  • 1 × DFPlayer https://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=p2060353.m570.l1313.TR2.TRC0.A0.H0.Xdfplayer.TRS0&_nkw=dfplayer&_sacat=0

Посмотреть все 7 компонентов

  • 1

    Принципиальная схема

  • 2

    SD-карта

    SD-карта в плеере должна быть отформатирована в FAT32. Плеер читает треки в порядке их записи (а не по названиям), например трек 53msg.mp3 читает dfplayer. Файлы дорожек необходимо копировать на SD-карту по одной дорожке и в том порядке, в котором они находятся в папке компьютера. На карте не должно быть других файлов или папок. Если вы хотите изменить какой-либо из треков, вам нужно сначала переформатировать SD, а затем скопировать новые файлы.

Посмотреть все инструкции

Нравится этот проект?

Делиться

таймер 0 и PIC16F628A

Джона Уайлдера

Встроенный таймер на PIC некоторых сбивает с толку. Но не волнуйтесь… это, вероятно, одно из самых простых встроенных периферийных устройств для использования с PIC. В этой статье мы будем использовать PIC16F628A в качестве примера того, почему это так.

Таймер 0 (TMR0) — это один из трех таймеров, доступных на 16F628A, который работает постоянно — его невозможно отключить. По сути, это 8-битный регистр в SFR, и источник тактового сигнала управляет его значением. Источником тактового сигнала для TMR0 может быть либо внешний стробирующий сигнал, подаваемый на контакт RA4/T0CKI (T0CKI = тактовый вход таймера 0), либо внутренний тактовый сигнал командного цикла. При работе с внешним стробоскопом это может быть счетчик, который «подсчитывает» строб-импульсы внешнего источника стробоскопа. При работе с часами командного цикла он работает как таймер. По этой причине иногда можно услышать, как инженеры называют TMR0 «таймером/счетчиком».

Значение, находящееся в регистре TMR0, начинается с 0x00, а затем увеличивается на единицу при каждом переходе источника тактового сигнала с низкого уровня на высокий. Вы также можете настроить его для увеличения при переходе от высокого к низкому или от низкого к высокому с помощью внешнего источника синхронизации. По сути, это просто регистр, который подсчитывает импульсы от одного из двух возможных источников тактовых импульсов до 0xFF (десятичное число 255). В этом примере мы будем использовать часы инструкций, работающие как таймер.

Тактовый генератор инструкций работает на частоте 1/4 частоты Fosc. Это означает, что если Fosc = 4 МГц, наши часы инструкций работают на частоте 1 МГц, или одна инструкция в микросекунду. В этом сценарии — при условии, что мы не назначаем предварительный делитель TM — значение TMR0 увеличивается на каждый импульс тактового сигнала инструкции. При тактовой частоте инструкции 1 МГц это увеличивает значение в регистре TMR0 один раз в микросекунду (1/μ).

Поскольку размер регистра TMR0 составляет всего 8 бит, максимальное значение, до которого может быть увеличено значение TMR0, равно 0xFF или десятичному числу 255. В этот момент оно будет сброшено до нуля при следующем тактовом импульсе. Как только это происходит, в регистре INTCON устанавливается флаг прерывания Таймера 0 (T0IF). Этот флаг должен быть сброшен в программном обеспечении.

Поскольку TMR0 в настоящее время работает с одним приращением на мк, это означает, что обновление происходит, и флаг T0IF устанавливается один раз каждые 256 мк (0x00–0xFF или 0–255 для 256 приращений). Если мы хотим знать, когда прошел период 256 мк, мы можем очистить TMR0, очистить флаг T0IF, затем опросить флаг прерывания T0IF, пока T0IF не станет высоким (произошло опрокидывание), и продолжить нашу программу.

Конечно, таймер был бы бесполезен без какого-либо способа замедлить его до различных скоростей приращения. Это работа «прескейлера». Предварительный делитель позволяет нам предварительно масштабировать таймер таким образом, чтобы вместо того, чтобы увеличивать его при каждом тактовом импульсе, мы могли увеличивать его каждые два тактовых импульса, каждые четыре, каждые восемь и т. д. вплоть до каждых 256 тактовых импульсов. Если бы мы установили предварительный делитель на 1:256 с тактовой частотой команд 1 МГц, таймер увеличивался бы один раз каждые 256 микрон. Поскольку наш регистр TMR0 может считать до 256, он будет подсчитывать, сколько раз период 256 мк проходит до 256 раз. Это означает, что T0IF будет устанавливаться каждые 65,5 мс (миллисекунды… 256 мкс x 256 = 65,5 мс).

Четыре регистра TMR0
С TMR0 связаны четыре регистра: TMR0, OPTION_REG, INTCON и TRISA. Давайте рассмотрим это подробно.

TMRo
Регистр TMR0 содержит значение, которое увеличивается источником синхронизации. Любая запись в этот регистр (например, clrf TMR0, movwf TMR0, bsf TMR0, X) также очистит предварительный делитель обратно до предварительного масштабирования 1:2. Это означает, что вам придется сбрасывать предварительный делитель обратно в исходное положение каждый раз, когда вы записываете в регистр TMR0, если вы установили его где-либо, кроме 1:2.

OPTION_REG
____
| РБПУ |ИНТЕДГ| Т0КС | Т0СЭ | СРП | PS2 | ПС1 | ПС0 |

Регистр OPTION содержит управляющие биты для следующего:

  • Источник синхронизации таймера 0 (T0CS)
  • Бит выбора фронта источника таймера 0 (TOSE)
  • Бит назначения предварительного делителя (PSA)
  • Биты выбора скорости предварительного делителя (PS2-PS0)

T0CS — выбирает источник синхронизации для TMR0. По умолчанию 1/T0CKI. Очистка этого бита выберет тактовый сигнал инструкции в качестве источника тактового сигнала TMR0.

T0SE — выбирает, будет ли TMR0 увеличиваться по нарастающему или по заднему фронту T0CKI. По умолчанию 1/приращение по заднему фронту. Применяется только тогда, когда T0CKI является источником синхронизации.

PSA — устанавливает, назначен ли прескалер TMR0 или сторожевому таймеру. По умолчанию 1/пределитель назначен WDT. При назначении WDT TMR0 работает с предмасштабированием 1:1 (увеличивается при каждом импульсе источника тактового сигнала).

PS2-PS0 – Устанавливает скорость предварительного делителя в диапазоне от 1:2 до 1:256 в значениях, кратных битам. По умолчанию 111/1:256 (1:128, если назначен WDT).


Настройка TMR0 с тактовой частотой инструкций в качестве источника тактовой частоты и предварительным делителем 1:4 Бит флага прерывания TMR0 (T0IF). Если прерывание TMR0 разрешено (T0IE = 1…отключено по умолчанию), программный счетчик перейдет к коду обработчика прерывания при переполнении TMR0, когда будет установлен T0IF (T0IF должен быть сброшен в программном обеспечении перед выходом из прерывания). Однако, поскольку T0IF продолжает нормально работать независимо от того, включено или отключено прерывание TMR0, оно всегда доступно для опроса, если вы не хотите, чтобы TMR0 вызывал прерывание.


Настройка прерывания TMR0

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

 

TRISA
Регистр TRISA содержит бит направления порта для RA4/T0CKI. Чтобы настроить RA4 в качестве входа источника тактового сигнала TMR0, необходимо установить бит 4 TRISA, чтобы настроить его в качестве входа.


Полная настройка TMR0 с прерыванием, тактовым сигналом инструкций в качестве источника тактового сигнала и предварительным делителем 1:4

 

опросите флаг прерывания TMR0, чтобы узнать, когда произойдет переполнение:

 

Использование TMR0 в качестве счетчика
Вы также можете настроить TMR0 в качестве счетчика импульсов. Для этого вы настраиваете T0CKI в качестве источника тактового сигнала, устанавливая бит T0CS в OPTION_REG. Бит T0SE в OPTION_REG определяет, увеличивается ли значение регистра TMR0 по заднему фронту источника импульсов (1) или по нарастающему фронту источника импульсов (0).

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

И это все, что нужно знать о TMR0. Простой не так ли?


Об авторе
Джон Уайлдер — внештатный инженер-электронщик и энтузиаст электроники с более чем 20-летним стажем. Он провел четыре года в ВМС США в качестве техника по авиационной электронике. Джон также играет на гитаре с 13 лет и начал интегрировать электронику и музыку с 15 лет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *