Массивы в программировании микроконтроллеров AVR


Значение массивов в современном мире программирования трудно переоценить – они применяются везде, где требуется обрабатывать какие-нибудь объемы данных.

Что такое массив

В данной статье мы рассмотрим основы использования массивов в языке С для микроконтроллеров AVR и рассмотрим их практическое применение в программе для изменения цифр на семисегментном индикаторе.

Что такое массивы

Массив – это набор элементов, расположенных в единой последовательности и имеющих один общий тип данных.

Массивы в языке С объявляются следующим образом. Вначале необходимо указать тип данных, потом имя массива (произвольное, латинскими буквами), а затем квадратные скобки, в которых указывается число элементов массива. Например:

int ab [5];

В этом примере int указывает на тип данных массива, в данном случае целочисленный. Допустимо использование любых типов, которые поддерживает язык С: char, double, long и т.д.

ab – имя массива, может быть практически любым, но не может начинаться с черточки, тире, содержать некоторые знаки и т.д. – справедливы правила для имен переменных в С.

[ ] – квадратные скобки, как раз и являются тем элементом, которые определяют массив в языке программирования С.

Число в квадратных скобках [5] обозначает количество элементов массива.

Если необходимо элементы массива определить сразу при его объявлении, то это можно сделать следующим образом:

int ab [5] = {7, 12, 17, 22, 3};

Нумерация элементов массива в языке С всегда начинается с нуля!!! Не путать, к примеру, с языком Pascal, в котором элементы массива можно нумеровать начиная с любого числа, но чаще всего в Pascal'е их нумеруют начиная с 1.

То есть в представленном примере с массивом ab его элементы будут иметь следующие номера:

ab [0] – "7";
ab [1] – "12";
ab [2] – "17";
ab [3] – "22";
ab [4] – "3";

Элементы массива в языке С для микроконтроллеров AVR могут содержать не только десятичные числа, но и двоичные и шестнадцатеричные.

Пример использования массивов в программе для семисегментного индикатора

Определим массив с двоичными числами, которые будут соответствовать цифрам семисегментного индикатора с общим катодом.

int go [10] = {
0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00000111, //7
0b01111111, //8
0b01101111 //9
};

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

int go2 [10] = {0х3f, 0x6, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x7, 0x7f, 0x6f};

Если мы будем использовать семисегментный индикатор с общим анодом, то тогда в представленных массивах двоичные числа нужно инвертировать - вместо нулей записать единицы, а вместо единиц нули.

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

Оператор for

Оператор for в языке программирования С состоит из трех частей, которые разделяет точка с запятой. В первой части задается начальное значение переменной цикла - эта операция выполняется всего один раз.

Во второй части записывается условие остановки цикла - его проверка осуществляется каждый раз когда заканчивается тело цикла и производится возврат к его началу.

В третьей части записывается правило изменения переменной цикла - обычно это инкремент или декремент на единицу, но можно задать и любой другой шаг.

Теперь с использованием данного цикла мы можем визуально значительно упростить нашу программу и сделать ее более гибкой. Также дополним программу обратным отсчетом цифр. Ее алгоритм работы будет следующим: с задержкой в 1 секунду (1000 мс) выполняется увеличение значение числа на 1, а при достижении "9" начинается обратный отсчет до 0. Текст этой программы представлен на следующем рисунке: 



Комментарии

Массивы в программировании микроконтроллеров AVR — 4 комментария

  1. Подскажите, еще будут выходить какие то обучающие статьи по AVR? Или дальше нужно смотреть статьи с готовыми устройствами и использовать информацию оттуда?

    • Да я просто не знаю уже какие еще обучающие статьи по AVR добавить на сайт. Вроде бы уже все на сайте есть. Смотрите статьи с готовыми устройствами, многие из них на нашем сайте достаточно подробно объяснены и по ним много чему можно научиться. Там есть и про использование АЦП и ШИМ в микроконтроллерах AVR, и подключение к ним различных датчиков и устройств. Посмотрите карту статей по AVR на нашем сайте, я думаю вы найдете там много интересных для себя статей

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *