Урок 23
Часть 10
Собираем часы на DS1307 и LED индикаторе
В прошлой части нашего занятия мы научили кнопку реагировать на короткие нажатия и отличать их от длинных и уже также научили её переводить часы и минуты.
Что ж, продожим дальше наполнять наши кейсы содержимым.
Копируем код из старого проекта MyButtonClockLCD.c для редактирования числа даты в соответствующий кейс и убираем из него то, что связано с редактированием «назад».
Остается вот это
case MODEDATEEDIT: // дата
I2C_SendByte(4);//Переходим на 0x04 — байт числа даты
if (month==2) //февраль
{
if(year%4==0) //високосный год
{
if(date<29) I2C_SendByte(RTC_ConvertFromBinDec(date+1));
else I2C_SendByte(RTC_ConvertFromBinDec(1));
}
else
{
if(date<28) I2C_SendByte(RTC_ConvertFromBinDec(date+1));
else I2C_SendByte(RTC_ConvertFromBinDec(1));
}
}
else if ((month==4)|(month==6)|(month==9)|(month==11))
{
if(date<30) I2C_SendByte(RTC_ConvertFromBinDec(date+1));
else I2C_SendByte(RTC_ConvertFromBinDec(1));
}
else
{
if(date<31) I2C_SendByte(RTC_ConvertFromBinDec(date+1));
else I2C_SendByte(RTC_ConvertFromBinDec(1));
}
break;
Теперь таким же образом копируем код для редактирования месяца в соответствующий кейс и также убираем «назад»
Остается это
case MODEMONTHEDIT: // месяц
I2C_SendByte(5);//Переходим на 0x05 — байт месяца
if(month<12) I2C_SendByte(RTC_ConvertFromBinDec(month+1));
else I2C_SendByte(RTC_ConvertFromBinDec(1));
break;
Соберём код, прошьём контроллер и проверим, сможем ли мы перевоить показатели даты
Всё нормально у нас переводится, продолжаем дальше.
То же самое и с годом
case MODEYEAREDIT: // год
I2C_SendByte(6);//Переходим на 0x06 — байт года
if(year<99) I2C_SendByte(RTC_ConvertFromBinDec(year+1));
else I2C_SendByte(RTC_ConvertFromBinDec(1));
break;
День недели
case MODEDAYEDIT: // день недели
I2C_SendByte(3);//Переходим на 0x03 — байт дня недели
if(day<7) I2C_SendByte(RTC_ConvertFromBinDec(day+1));
else I2C_SendByte(RTC_ConvertFromBinDec(1));
break;
Соберём код, прошьём контроллер и проверим результат
Всё отлично переводится.
А в следующей части нашего занятия мы попробуем начать реализацию будильника, так что часть обещает быть интересной.
Предыдущая часть Программирование МК AVR Следующая часть
Программатор, модуль RTC DS1307 с микросхемой памяти и индикатор можно приобрести здесь:
Программатор (продавец надёжный) USBASP USBISP 2.0
Модуль RTC DS1307 с микросхемой памяти
Семисегментный чертырехразрядный индикатор красный с общим анодом 10 шт
Смотреть ВИДЕОУРОК (нажмите на картинку)
Добавить комментарий