Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [114]
Наш опрос
Оцените мой сайт
Всего ответов: 1176
Главная » Статьи » Мои статьи

Софтовые часы на МЕГЕ-8 (очень простые) - версия 4

Читатели нашего сайта уже знакомы с первой версией часов. Она подкупает своей простотой и повторяемостью. 

А вот теперь появилась уже четвёртая версия!

Это реплика с разрешения автора.

Плюшки 4й прошивки:
1. Поддержка общего анода и катода
2. Понижено потребление и тактовая частота меги до 1 мГц
3. Добавлен режим работы от батареи с выключенным индикатором. При нажатии на кнопку время показывается 2 секунды. Потребление в дежурном режиме составляет 10 микроампер.
4. Добавлены новые элементы схемы. Возможность подключить разряды индикации секунд.
5. Устранены все проблемы с точками. Они теперь мигают или горят там где нужно а не везде.

 

Сразу хочу сказать что можно подключить еще два сегмента, отображающих секунды. Часы могут питаться как от батареек так и от сетевого блока питания или USB порта компьютера. При питании от батареек часы отображают время при нажатии кнопки "Минуты" в течении 2х секунд и гаснут. Часы очень энерго эффективны и имеют минимальное потребление. Всего 10 микроампер в спящем режиме. Эти часы можно взять за базу и на их основе делать от малых до огромных часов, задача которых показывать точное время! Точность часов зависит только от кварца. В следующей прошивке планируется корректировка времени. Поскольку часы работают от кварца их точность будет немного зависить от температуры. Дело в том что частота кварца меняется от изменения температуры и ничего тут не поделаешь.  Разработанную схему собрали сотни людей. Так что она проверенна и настроек после сборки не требует.
Давай сразу посмотрим на самую простую схему. Вот она:

На ней всего 6 деталей. Именно ее повторили сотни радиолюбителей благодаря ее простоте. Эта схема имеет недостаток - дело в том что падение напряжения на резисторе разное. К примеру отображение восьмерки заставляет светится 7 светодиодов, а единицы только два. От этого общая яркость светодиодов меняется и единица светится ярче восьмерки. Этот недостаток легко убирается выбрасыванием резистора и питанием контроллера от стабилизированного напряжения 2,7-3,0 В. 
Однако время идет вперед и людям хочется чего-то большего. Именно для этого я разработал новую схему и прошивку в которых можно дополнительно подключить два разряда для отображения секунд. Также прошивка полностью совместима с первым вариантом схемы. Главное чтобы ноги микросхемы, которые находятся "в воздухе" там и оставались и не были никуда "заземлены".
К вашему вниманию новая схема:

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

Алгоритм работы довольно простой, с часами разберется любая хозяйка. Одна кнопка прибавляет часы, вторая минуты. Если подключить батарейку и зажать кнопку минуты а потом часы то дисплей погаснет и узнать время можно будет только лишь нажав кнопку "Минуты". Кнопка "Часы" переведет устройство в обычный режим.
А если зажать кнопку "Часы" а потом "Минуты" то устройство будет показывать время только при внешнем питании, а при исчезновении питания индикатор погаснет и часы будут идти от батарейки. Посмотреть время и выйти из этого режима можно точно так же как и в предыдущем режиме.
 
Я сделал несколько версий 4й прошивки которые отличаются разным поведением точек. Они или горят или мигают. В общем сами посмотрите на видеоролике в конце статьи и выберите то что вам подходит. 
 
Прошивка firmware v4, datasheet на русском, схемы, программа для прошивки в этом архиве

 

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

 

'Автор Авраменко Павел.
$regfile = "m8def.dat" ' мега8
$crystal = 8000000 'частота тактирования камня.
Config Portb = Output , Portd = Output : Portc = &H30 'Конфигурируем порты на входы и выходы. Включаем внутренние подтягивающие резисторы
Dim X As Byte , Cifri(4) As Byte 'задаем всякие переменные и масивы
Config Clock = Soft ' конфигурируем совтовые часы которые будут подсчитывать колебания часового кварца и раз в секунду вызывать прерывания.
Config Timer0 = Timer , Prescale = 8 : On Timer0 Pulse : Enable Timer0 : Enable Interrupts ' конфигурируем таймер 0 чтоб потом на него повесить алгоритм отображения цифр. Назначаем подпрограмму, которая будет запускаться по переполнению 0го таймера
 Do ' основной бесконечный цикл в котором идет опрос кнопок
If Pinc.4 = 0 Then ' Если кнопка нажата то запускаем бесконечный цикл
Do
 Incr _min : _sec = 00 : Timer2=0 ' добавляем к минутам 1. Секунды =0. Все что наклацал таймер 2 тоже обнуляем
 If _min > 59 Then : _min = 00 : Incr _hour : End If : If _hour > 23 Then _hour = 00 : Waitms 100 ' счетчик + задержка
Loop Until Pinc.4 = 1 ' если кнопку отпустили то выходим из бесконечного цикла
End If
If Pinc.5 = 0 Then 'Если кнопка "Часы" нажата то запускаем бесконечный цикл
 Do
 Incr _hour : If _hour > 23 Then _hour = 00 : Waitms 100 ' счетчик
 Loop Until Pinc.5 = 1 ' если кнопку отпустили то выходим из бесконечного цикла
End If
 Loop 'конец основного цикла
Pulse: ' подпрограмма прерываний таймера0
Cifri(1) = _min Mod 10 : Cifri(2) = _min / 10 : Cifri(3) = _hour Mod 10 : Cifri(4) = _hour / 10 ' разбиваем минуты на два отдельных числа, тоже делаем и с часами. Все записываем в масив
Portb = &HFF 'гасим индикатор подав на общие выводы плюс. Для индикатора с общим плюсом нужно заменить &HFF на ноль.
Incr X : If X > 3 Then X = 0 ' переменная определяющая какой индикатор зажечь
Portd = Lookup(cifri(x + 1) , Dta) 'присваиваем индикатору с номером х (из предыдущей строки) символ из строки Dta
Reset Portb.x 'зажигаем индикатор х
Return ' возвращаемся на место откуда прервали программу
 Dta: ' таблица с данными о цифрах зажигает по порядку : 0123456789
 Data &HEF , &H8C , &HB7 , &HBE , &HDC , &H7E , &H7F , &HAC , &HFF , &HFE 'для общего плюса закомментировать
' Data &H10 , &H73 , &H48 , &H41 , &H23 , &H81 , &H80 , &H53 , &H0 , &H1 'для общего плюса раскомментировать

 

 

Happiness Toom

Автор Авраменко Павел.

 

От администрации сайта.

Вот такие индикаторы с общим анодом можно заказать на Алиэкспресс: 

красные - https://goo.gl/yj59qt 
синие - https://goo.gl/plr0pu 
зелёные - https://goo.gl/cIlQdM
белые - https://goo.gl/PbLqgG

 

 

Категория: Мои статьи | Добавил: bascom (03.02.2016) | Автор: Radan
Просмотров: 4437
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Copyright Radan Studio © 2017