Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

246 Часть 111. Практическое программирование микроконтроллеров АVR (саму запятую на индикаторах придется поставить принудительно). Чтобы опять не возиться с «плавающей» арифметикой, следует, как мы и делали в главе 7, заранее умножить делимое на нужный коэффициент, - т. е. мы будем делить на получен­ ный период число 1 0 9 , а не 1 0 6 • В общем-то, это не так уж и страшно ( 1 0 9 займет четыре байта: $ ЗВ9АСАО О - это число нужно делить на трехбайтовый счетчик). При указанных параметрах минимальная измеряемая частота может составить одну тысячную герца. Закончим на этом с использованием таймеров по прямому назначению - т. е. для измерения времени, и остановимся на других их применениях. Управление динамической индикацией Типов индикаторов существует великое множество (по сути компьютерный дис­ плей - тоже индикатор) . Мы пока не станем углубляться в тонкости управления ЖК-индикаторами - обычно такие дисплеи (и семисегментные и матричные гра­ фические) используются совместно со встроенным контроллером, и мы рассмотрим их применение в ассемблерных программах позже (в главах 13 и 16) . Здесь мы остановимся на самой простой разновидности - семисегментных цифровых инди­ каторах. · ЗАМЕТКИ НА ПОЛЯХ Отметим , что прямого аналога такой функциональности в Aгduiпo нет - там попросту маловато выводов для управления хотя бы четырьмя семисегментными индикаторами напрямую, а программа получается сложная и объемная. Никто , конечно, не мешает вам самостоятельно организовать подключение, аналогичное описываемому далее, но вы быстро убедитесь, что это неудобно. Поэтому семисегментный индикатор там обычно используется в единственном числе лишь в качестве учебного примера, а для индикации нескольких цифр применяют либо готовые семисегментные индикаторные модули , которые управляются через последовательные порты, либо дисплеи других типов со встроенным контроллером. Ассемблерные решения для таких случаев пока­ заны в главах 13 и 1 б. LЕD- индикаторы и их подключение Здесь и далее мы будем рассматривать обычные светодиодные (LED) семисегмент­ ные индикаторы (рис . 9.2 и 9 . 3), в которых управление сегментами осуществляется напрямую, каждым по отдельности. Сущесlfвуют разновидности с общим анодом (когда вывод положительного питания общий, а зажигаются сегменты коммутаци­ ей их к «земле» через резистор) и с общим катодом, где все наоборот (общий - отрицательный вывод) . Многоразрядные индикаторы можно собирать из отдель­ ных разрядов (таких, как показаны на рис. 9 . 3), устанавливаемых на плате вплот­ ную друг к другу. Также выпускают индикаторы с несколькими разрядами в сбо­ ре - сдвоенные, строенные и изредка счетверенные, в которых отдельные разряды управляются по питанию независимо. Индикаторы с большим числом разрядов в сборе обычно также содержат встроенные контроллеры, и мы на них здесь оста­ навливаться не станем.

RkJQdWJsaXNoZXIy MTExODQxMg==