|
После рождения ребенка появилась необходимость в простых электронных часах, которые светят в темноте для отслеживания ночного режима питания, сна и т.д. Просмотрев схемы в Интернете и сопоставив их с наличием у меня радиодеталей, пришел к выводу, что выбранные мной часы легко собрать из деталей находящихся у меня, и они являются самыми простыми в изготовлении (сделать их может даже начинающий радиолюбитель).
Состоят данные часы из микроконтроллера Atmega8, светодиодного индикатора (PL-F5610) с общим катодом (минусом), часового кварца 32768 Hz и резистора. Да, можно удивиться, но больше нам ничего не понадобится.
Резистором можно подобрать яркость свечения индикатора – при 180 Om часы будут очень ярки и днем и ночью, а при 220 Om – будут видны только ночью. Я остановился на 200 Om.
Микроконтроллер Atmega8 можно прошить программатором PonyProg. Прошивку в формате *.hex можно скачать ЗДЕСЬ. Фьюзы при прошивке микроконтроллера Atmega8 необходимо выставить: СКОРТ, ВООТSZ1, ВООТSZ0, SUT1, SUT0, СКSEL3, СКSEL1, СКSEL0. При выставлении бита СКОРТ к часовому кварцу подключаются два внутренних конденсатора микроконтроллера.
Питание данных часов от 5v источника, можно сеть, можно батареи.
Принципиальную схему простых часов на микроконтроллере Atmega8 привожу ниже.
Если у Вас индикатор с двумя точками (светодиодами) между парами цифр, то их можно подключить к четвертой лапе микроконтроллера. Вместо кнопок был использован датчик от дисковода, отвечающий за наличие дискеты и возможность записи на нее. По сути это и есть две кнопки в одном корпусе.
Работа микроконтроллера Atmega8 очень проста и заключается в обработке двух счетчиков. Первый считает количество колебаний кварца и выводит минуты, а второй – количество минут и выводит часы.
Корпус для таких маленьких простых электронных часов можно выбрать любой. Я разметил их в коробке от ювелирных украшений. По-моему получилось достаточно компактно и эстетично.
Автор данной схемы и программного кода некий «Paha». За что ему спасибо!
Меня заинтересовал сей проект-есть желание собрать часы,но у меня правило- сначала проверить в Протеусе.Когда собрал,то обнаружил -да действительно проект работает ,за исключением нюанса-после нуля идет 7 а не 1(лишний А сегмент)и вместе с 4 рисует тоже (лишний А сегмент)сверху.Может что-то не так делаю?
все гениальное просто
Может!)) Если интересно, паяйте. На практике такой проблемы нет.
Администратор сайта
Очень хотелось бы собрать сей девайс, но вот только индикаторы с общим анодом..ни у кого нет случаем прошивки или ссылки? беглый поиск с гуглом не помог(
Вот листинг программы под индикаторы с общим плюсом:
$regfile = «m8def.dat» ‘ Работаем с ATmega8
$crystal = 8000000 ‘Работаем на частоте 8 мГц
Config Portb = Output ‘
Config Portd = Output ‘Назначаем порты на вход и выход
Config Portc = Input ‘
Set Portc.5 ‘Поддтягиваем вход Portc.5 и Portc.4 резисторами к Vcc
Set Portc.4
Dim X As Byte , Y As Byte , Cifri(4) As Byte , Cifra As Byte , Tochka As Byte ‘рабочие переменные
Config Clock = Soft ‘Включаем софтовые часы
_sec = 0 : _min = 0 : _hour = 0 ‘Вводим время с которого будет производиться отчёт времени
Config Timer0 = Timer , Prescale = 8 ‘Включаем таймер0, применяем делитель на 8
Config Timer1 = Counter , Edge = Falling , Prescale = 1 ‘Включаем таймер1, назначаем его работу по спаду от кварца 32768 Гц, делитель на 1
On Timer0 Pulse ‘При срабатывании таймера0, переходим на вклатку Pulse
Enable Interrupts ‘Разрешаем все прерывания
Enable Timer0 ‘Разрешаем прерывания таймера0
Config Debounce = 20 ‘Ставим задержку при нажатии на кнопки в 20 м.Сек.
Do ‘Основной цикл
Debounce Pinc.4 , 0 , Minuti , Sub ‘
Debounce Pinc.5 , 0 , Chasi , Sub ‘Проверяем на нажатие кнопок, если кнопка нажата переходим на соответствуюшую вкладку
If _hour = 24 Then _hour = 00 ‘
If _min = 60 Then _min = 00 ‘Проверяем переменные с временем, при переполнении обнуляем их
Tochka = _sec Mod 2 ‘
Loop ‘Конец основного цикла
Pulse:
Incr X ‘Увеличиваем переменную Х на еденицу (была 0, стала 1)
Cifri(1) = _hour / 10 ‘Разбиваем двузначное число часов на два однозначных (21 / 10 = 2)
Cifri(2) = Cifri(1) * 10 ‘2 * 10 = 20 сохраняем результат в переменную Cifri(2)
Cifri(2) = _hour — Cifri(2) ’21 – 20 = 1 сохраняем вновь полученный результат, в итоге переменная Cifri(2) равняется 1
Cifri(3) = _min / 10 ‘Проделываем тоже самое с минутами (56 / 10 = 5)
Cifri(4) = Cifri(3) * 10 ‘5 * 10 = 50
Cifri(4) = _min — Cifri(4) ’56 – 50 = 6
‘Portd = &H00
Portd = &HFF ‘Гасим индикатор
If X = 1 Then ‘Проверяем значение Х, если оно рано 1, выполняем дествие ниже
‘Portb = &H77
Portb = &H8
Cifra = Cifri(1)
End If ‘Конец проверки
If X = 2 Then ‘Опять проверяем Х
‘Portb = &H7B
Portb = &H4 ‘
Cifra = Cifri(2) ‘
End If ‘
If X = 3 Then
‘Portb = &H7D
Portb = &H2
Cifra = Cifri(3)
End If
If X = 4 Then
‘Portb = &H7E
Portb = &H1
Cifra = Cifri(4)
End If
If X > 4 Then X = 0 ‘Последняя проверка, если Х больше 4, обнуляем его
‘Select Case Cifra
‘Case 0 : Y = &HEF
‘Case 1 : Y = &H8C
‘Case 2 : Y = &HB7
‘Case 3 : Y = &HBE
‘Case 4 : Y = &HDC
‘Case 5 : Y = &H7E
‘Case 6 : Y = &H7F
‘Case 7 : Y = &HAC
‘Case 8 : Y = &HFF
‘Case 9 : Y = &HFE
‘End Select
Select Case Cifra ‘Начинаем выбор переменной Cifra
Case 0 : Y = &H10 ‘Если Cifra = 0, Y равен &H10 (Dec 16 ; Bin 00010000)
Case 1 : Y = &H73 ‘
Case 2 : Y = &H48 ‘
Case 3 : Y = &H41 ‘
Case 4 : Y = &H23 ‘
Case 5 : Y = &H81 ‘
Case 6 : Y = &H80 ‘
Case 7 : Y = &H53 ‘
Case 8 : Y = &H00 ‘
Case 9 : Y = &H1 ‘
End Select ‘Конец выбора
Portd = Y ‘Приравниваем значение переменной Y к Portb
‘If Portb.2 = 0 And Tochka = 0 Then Set Portd.2 Else Reset Portd.2
If Portb.2 = 1 And Tochka = 0 Then Reset Portd.2 Else Set Portd.2 ‘Прверяем условие, если совпало — зажигаем точку, если нет — гасим
Return ‘ Возврашаемся
Minuti: ‘При нажатии кнопки «минуты» обнуляем секунды и увеличиваем переменную _min на 1
Incr _min
_sec = 00
If _min = 60 Then _min = 00
Return ‘Возврашаемся
Chasi: ‘Тоже, что с минутами
Incr _hour
_sec = 00
If _hour > 23 Then _hour = 00
Return
Компилировать необходимо в Bascom AVR. Удачи!
Администратор сайта
admin, большое спасибо)
при компиляции выдает слишком много ошибок. я имею для индикатора с ОА. поисал в инетернете, сделал какую то сборную солянку и прошил, но как то не правильно работает..нет ли у кого уже скомпилированного файла для ОА?
Попробуйте код перенабрать руками, так как там может латиница с кириллицей быть смешана.
Администратор сайта
Страницы: 1 2 3 4 5