Интерфейс светодиодов - это первое, что можно попробовать сделать, приступая к работе с любым микроконтроллером. Итак, здесь, в этом руководстве, мы собираемся соединить светодиод с микроконтроллером 8051 и напишем программу на языке C, которая будет мигать светодиодом. Мы использовали очень популярный микроконтроллер AT89S52 семейства 8051 фирмы ATMEL.
Прежде чем вдаваться в подробности, необходимо вкратце познакомиться с микроконтроллером AT89S52. Это 40-контактный микроконтроллер и имеет 4 порта (P0, P1, P2, P3), каждый порт имеет 8 контактов. С программной точки зрения мы можем рассматривать каждый порт как 8-битный регистр. Каждый вывод, имеющий одну линию ввода / вывода, означает, что каждый вывод может использоваться как для ввода, так и для вывода, то есть для чтения данных с какого-либо устройства, такого как датчик, или для передачи их вывода на какое-либо устройство вывода. Некоторые контакты имеют двойную функцию, которая упоминается в скобках на схеме контактов ниже. Двойной функционально, как для прерывания, счетчиков, таймеров и т. Д.
AT89S52 имеет два типа памяти: первый - это RAM с 256 байтами памяти, а второй - EEPROM (электронно стираемая и программируемая постоянная память) с 8 Кбайт памяти. ОЗУ используется для хранения данных во время выполнения программы, а EEPROM используется для хранения самой Программы. EEPROM - это флеш-память, в которую мы записали программу.
Принципиальная схема и объяснение
Мы используем первый контакт порта 1 для подключения светодиода. Во встроенном программировании на C мы можем получить доступ к PIN 1 порта 1 с помощью P1_0. Мы подключили кварцевый генератор с частотой 11,0592 МГц к контактам 19 и 18, то есть XTAL1 и XTAL2. Кварцевый генератор используется для генерации тактовых импульсов, а тактовый импульс используется для обеспечения среднего значения для расчета времени, которое является обязательным для синхронизации всех событий. Этот тип кристаллов используется практически в каждом современном цифровом оборудовании, например, в компьютерах, часах и т. Д. Наиболее часто используемый кристалл - это кварц. Это схема резонансного генератора, и конденсаторы используются для генерации кристалла, поэтому мы подключили сюда конденсаторы емкостью 22 пФ. Вы можете прочитать о «резонансных цепях», чтобы узнать больше.
Схема для светодиодов сопряжения с 8051 микроконтроллер 89s52 показано на рисунке выше. Контакт 31 (EA) подключен к Vcc, который является активным нижним выводом. Это должно быть связано с Vcc, когда мы не используем внешнюю память. Контакт 30 (ALE) и контакт 29 (PSEN) используются для подключения микроконтроллера к внешней памяти, а контакт 31 указывает микроконтроллеру использовать внешнюю память при подключении к земле. Мы не используем никакой внешней памяти, поэтому мы подключили Pin31 к Vcc.
Контакт 9 (RST) - это PIN-код сброса, используемый для сброса микроконтроллера и повторного запуска программы с начала. Сбрасывает микроконтроллер при подключении к HIGH. Мы использовали стандартную схему сброса, резистор 10 кОм и конденсатор 1 мкФ для подключения вывода RST.
Теперь интересная часть здесь заключается в том, что мы подключаем светодиод в обратном направлении, что означает отрицательную ногу с PIN-кодом микроконтроллера, потому что микроконтроллер не обеспечивает достаточной мощности для свечения светодиода, поэтому здесь светодиод работает на отрицательной логике, например, когда, вывод P1_0 равен 1 тогда светодиод будет отключен, а когда на выходе будет 0, светодиод будет включен. Когда вывод PIN равен 0, он ведет себя как земля и светится светодиод.
Код Пояснение
Заголовок REGX52.h был включен для включения основных определений регистров. Во встроенном C есть много типов переменных и констант, таких как int, char, unsigned int, float и т. Д., Вы можете легко их изучить. Здесь мы используем целое число без знака, диапазон которого находится в диапазоне от 0 до 65535. Мы используем «цикл for» для создания задержки, так что светодиод будет включен в течение некоторого времени (P1_0 = 0, отрицательная логика светодиода) и выключен (P1_0 = 1, отрицательная логика светодиода) на время задержки. Обычно, когда цикл for выполняется 1275 раз, это дает задержку в 1 мс, поэтому мы создали функцию задержки для создания DELAY и вызывали ее из основной программы (main ()). Мы можем передать время ЗАДЕРЖКИ (в мс) при вызове функции «задержки» из основной функции. В программе «Пока (1)» означает, что программа будет выполняться бесконечно.
Я кратко объясняю, как 1275 раз выполнение цикла for дает задержку в 1 мс:
В 8051 для выполнения 1 машинного цикла требуется 12 импульсов кристалла, и мы использовали кристалл 11,0592 МГц.
Таким образом, время, необходимое для 1 машинного цикла: 12 / 11,0592 = 1,085 мкс.
Таким образом, 1275 * 1,085 = 1,3 мс, 1275 раз для цикла «for» дают задержку почти в 1 мс.
Точное время задержки, создаваемое программой «C», очень трудно вычислить при измерении с помощью осциллографа (CRO), поскольку (j = 0; j <1275; j ++) дает задержку около 1 мс.
Таким образом, мы можем понять, просто связав светодиод с микроконтроллером 8051, что с помощью простого кодирования мы можем взаимодействовать и управлять оборудованием через программное обеспечение (программирование) с помощью микроконтроллера. Также мы можем управлять каждым портом и выводом микроконтроллера посредством программирования.