
Эскизный проект
Эскизный проект – этап составления спецификаций отдельных блоков, разработка подробной функционально-блочной схемы устройства [5,6].
Первым исполняемым блоком, в связи с разработкой на языке С, будет main, который должен вызвать процедуру инициализации устройства и блок основного меню.
Блок инициализации выполняет функции инициализации LCD, USART – универсальный синхронно-асинхронный приёмо-передатчик, CCP – модуля широтно-импульсной модуляции, таймера и кнопок управления, после чего возвращает управление в main.
Блок основного меню выполняется сразу после блока инициализации и выполняется в бесконечном цикле, что позволяет неоднократно переходить от одного реализованного устройства к другому. Блок основного меню позволяет перейти к блокам реализации вольтметра (рис 3.1), звуко-излучателя (рис 3.2), термометра (рис 3.3) и часов (рис 3.4). Каждый из блоков реализации по команде оператора возвращает управление блоку основного меню.
Рисунок 3.1 – Вывод на LCD блока основного меню, точка входа в блок реализации вольтметра
Рисунок 3.2 – Вывод на LCD блока основного меню, точка входа в блок реализации звуко-излучателя
Рисунок 3.3 – Вывод на LCD блока основного меню, точка входа в блок реализации термометра
Рисунок 3.4 – Вывод на LCD блока основного меню, точка входа в блок реализации часов
Блок реализации вольтметра осуществляет взаимодействие USART , универсального синхронно-асинхронный приёмо-передатчика, и термодатчика TC74. Выводит считанную с термодатчика информацию на LCD(рис 3.5).
Рисунок 3.5 – Вывод на LCD блока реализации вольтметра
Блок реализации звуко-излучателя позволяет излучать звуки с различной частотой и длительностью импульсов при помощи широтно-импульсного модулятора. Текущие значения, длительности импульсов и частоты их возникновения, которые пользователь может менять непосредственно во время выполнения данного блока, выводятся на LCD (рис. 3.6).
Рисунок 3.6 – Вывод на LCD блока реализации звуко-излучателя
Блок реализации термометра осуществляет взаимодействия модуля SSP, синхронного последовательного порта, и термодатчика TC 74. Текущее значение температуры полученное в результате работы блока выводится на LCD (рис. 3.7).
Рисунок 3.7 – Вывод на LCD блока реализации термометра
Блок реализации часов отображает текущее время на LCD (рис. 3.7) и позволяет вызвать блок установки текущего времени. В момент вызова блока часов из основного меню текущее время устанавливается в ноль. При возвращении из блока установки часов блок реализации часов продолжает увеличивать время, которое выставили.
Рисунок 3.8 – Вывод на LCD блока реализации часов
Блок установки часов позволяет установить текущее значение минут (рис. 3.9), часов (рис. 3.10) и вернуться в блок реализации часов (рис. 3.11).
Рисунок 3.9 – Вывод на LCD блока установки часов, установка текущего значения минут
Рисунок 3.10 – Вывод на LCD блока установки часов, установка текущего значения часов
Рисунок 3.11 – Вывод на LCD блока установки часов, предложение оператору вернуться в блок реализации часов
Рассмотрим схему взаимодействия отдельных блоков устройства (рис. 3.12).
Рисунок 3.12 – Структурная схема микроконтроллера PIC18F4520
Описание основных модулей микроконтроллера
Интерфейс I2C
I2C – это двухпроводной последовательный интерфейс, разработанный компанией Philips. К данной шине могут быть подключены устройства с различными скоростями доступа, если скорость передачи данных будет удовлетворять требованиям самого низкоскоростного устройства.
Протокол передачи данных по шине I2C разработан таким образом, чтобы гарантировать надежный качественный прием/передачу данных. При передаче данных одно устройство является «Ведущим», которое инициирует передачу данных и формирует сигналы синхронизации. Другое устройство «Ведомое», которое может начать передачу данных только по команде ведущего шины.
Модуль MSSP аппаратно поддерживает режим ведущего/ведомого I2C, адрес общего вызова и скорость обмена данными до 1 Мбит/с. Каждое устройство на шине I2C имеет уникальный адрес. Когда ведущий инициирует передачу данных, то сначала передается адрес устройства, к которому выполняется обращение. Остальные устройства проверяют адрес, переданный ведущим.
В состав байта адреса входит бит направления передачи данных (выполняется чтение из ведомого или запись) [10].
Аналого-цифровой преобразователь
Модуль аналого-цифрового преобразования (АЦП) имеет до восьми входных сигналов. Входной аналоговый сигнал через коммутатор каналов заряжает внутренний конденсатор АЦП Сhold.
Модуль АЦП преобразует напряжение, удерживаемое на конденсаторе Сhold, в соответствующий 8-разрядный цифровой код методом последовательного приближения. Источник опорного напряжения может быть программно выбран с вывода VDD или VREF. Допускается работа АЦП в SLEEP режиме микроконтроллера, при этом в качестве источника должен быть выбран RC генератор.
Для управления АЦП используется 3 регистра:
регистр результата ADRES;
регистр управления ADCON0;
регистр управления ADCON1;
регистр управления ADCON2.
регистр ADCON0 используются для настройки работы модуля АЦП, а с помощью регистра ADCON1 устанавливается, какие входы микроконтроллера будут использоваться модулем АЦП и в каком режиме (аналоговый вход или цифровой порт ввода/вывода) [10].
LCD - экран
Модуль LCD формирует все необходимые сигналы синхронизации для управления статическими ЖКИ с поддержкой до 32 сегмента, 4 общих выводов и управление пикселями ЖКИ.
Для управления модулем LCD используется три регистра (LCDCON, LCDSE и LCDPS), с помощью которых можно настроить параметры рабочего модуля, и до 16 регистров данных, в которых сохраняется массив данных пикселей.
Источником тактового сигнала для модуля LCD в режиме SLEEP или при низкой тактовой частоте микроконтроллера является внутренний RC генератор с номинальной частотой 14кГц [10].
Порты ввода/вывода
Все пины микроконтроллера сгруппированы. Эти группы пинов и называются портами ввода/вывода. В микроконтроллерах PIC принято, что порты перечисляются с помощью букв латинского алфавита. Например: PORTA, PORTB…, PORTE. В порт может быть сгруппировано различное количество пинов. Их количество в портах зависит от типа микроконтроллера. Также, большая часть пинов микроконтроллеров имеет альтернативные функции (стандартным считается, что пин используется либо, как дискретный вход, либо, как дискретный выход). Порты микроконтроллеров серии PIC18 управляются с использованием 3-х регистров: PORTx, TRISx, LATx. Где x – буква порта ввода/вывода. Регистр PORTx используется обычно для чтения входных дискретных сигналов. Чтобы записать бит в порт, сначала микроконтроллер читает весь порт, потом в прочитанном значении модифицирует бит, а потом обратно, весь порт записывает. Данный механизм может сыграть «плохую шутку». Если у Вас на каком - либо из битов порта висит большая токопотребляющая нагрузка, то есть вероятность прочитать ноль по этому биту, хотя Вы записали ранее на выход бита единицу. Тем самым после модификации, обратно может записаться в тот бит ноль. А в программе Вы будете считать, что на выходе у Вас единица. Чтобы избежать этого, добавлен регистр LATx. Запись в него не вызывает чтение физических уровней порта. Т.е. чтобы изменить значения на выводах порта, необходимо использовать регистр LATx. Регистр TRISx задает направление пинов порта. Если бит этого регистра установлен в единицу, то данный пин будет сконфигурирован, как вход. Если ноль – как выход.
3.1.5 Адресуемый универсальный синхронно-асинхронный приёмопередатчик (USART)
USART – это один из модулей последовательного порта ввода/вывода, который может работать в полнодуплексном режиме для связи с микросхемами ЦАП, АЦП, последовательными EEPROM и т.д.
USART может работать в одном из трёх режимов:
– Асинхронный, полный дуплекс;
– Ведомый синхронный, полудуплекс;
– Ведущий синхронный, полудуплекс.
Для работы модуля USART предусмотрено два регистра:
– TXSTA – регистр управления и статуса передатчика USART;
– RCSTA – регистр управления и статуса приёмник USART.
Регистр SPBRG влияет на скорость обмена в бодах.