ds3231 и max7219

Здесь все вопросы по языку программирования С
Ответить
Степан
Сообщения: 4
Зарегистрирован: 17 май 2016, 21:16

ds3231 и max7219

Сообщение Степан » 17 май 2016, 21:22

Работа ds3231 описывается с дисплеем, а как бы совместить данный девайс с max7219 и сделать вывод всей информации на семисегментники? Заранее спасибо!

Аватара пользователя
gurvinok
Сообщения: 1539
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: ds3231 и max7219

Сообщение gurvinok » 17 май 2016, 21:36

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

Аватара пользователя
GhostX
Сообщения: 1135
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: ds3231 и max7219

Сообщение GhostX » 23 май 2016, 04:06

Что за видео, где оно лежит?

Аватара пользователя
gurvinok
Сообщения: 1539
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: ds3231 и max7219

Сообщение gurvinok » 23 май 2016, 08:01

Все видео здесь.
Если долго мучиться, может быть получится.

Степан
Сообщения: 4
Зарегистрирован: 17 май 2016, 21:16

Re: ds3231 и max7219

Сообщение Степан » 26 май 2016, 08:33

Функция sprintf как я понял не подойдет для вывода времени через max7219, как же тогда сделать авто заполнение нулями и вывод на семисегментники? В массиве значения прочитанные из ds3231 сохраняются как 1, 2, 3 и т.д., ан е 01, 02, 03? А если и так, то подскажите функцию чтобы взять это значение из массива и разбить ее на две цифры, для того чтобы можно было подставить в функцию вывода max7219. Только начал осваивать С, если что не так, не судите строго :oops:

Аватара пользователя
gurvinok
Сообщения: 1539
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: ds3231 и max7219

Сообщение gurvinok » 26 май 2016, 20:37

Почему не подходит? Функция sprintf(); положит время в массив по каждому символу в ASCII кодировке и завершит нулевым символом. Если форматировать вот таким образом: sprintf(str, "%02i%02i%02i", time[0], time[1], time[2]); то в массиве будет шесть символов времени и седьмой нулевой. Если использовать китайский девайс, тот что я в видео показал, то нужно просто время выводить в каждый разряд по очереди но задом на перед. То есть str[5], str[4] и т.д. Но перед самим выводом в разряд из значение в ячейке массива нужно отнять 0x30 и все.))
Если долго мучиться, может быть получится.

Степан
Сообщения: 4
Зарегистрирован: 17 май 2016, 21:16

Re: ds3231 и max7219

Сообщение Степан » 27 май 2016, 04:16

Спасибо! Понял всё, кроме последнего предложения :) Для чего нужно отнимать это значение? А девайс у меня не китайский, а просто микруха и отдельные семисегментники размером с ладонь :D

Аватара пользователя
gurvinok
Сообщения: 1539
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: ds3231 и max7219

Сообщение gurvinok » 27 май 2016, 09:26

Потому что функция sprintf(); кладет в массив цифры в ASCII кодеровке, а микросхема получает в цифровом виде где 1 это 1. В ASCII 1 это 0х31, 9 то 0х39. Таким образом отняв 0х30 мы получим чистую цифру.
Если долго мучиться, может быть получится.

Степан
Сообщения: 4
Зарегистрирован: 17 май 2016, 21:16

Re: ds3231 и max7219

Сообщение Степан » 27 май 2016, 09:46

:? как всё сложно, спасибо большое, буду пробовать.

Аватара пользователя
gurvinok
Сообщения: 1539
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: ds3231 и max7219

Сообщение gurvinok » 27 май 2016, 10:37

Видео Генератор кода часть 5. Время 15:35. Я подробно разжевал что такое ASCII и как перегонять цифры туду сюда.
Если долго мучиться, может быть получится.

Ответить