Курсовая работа: Система съема данных с оптопар
Рисунок 9 – MAX3362
2.5 Схема стабилизатора напряжения
Источник питания микроконтроллера построен на литиевой 3V батарее. Для формирования напряжения питания ядра процессора (1.8V) применим параметрический стабилизатор на стабилитроне. На рисунке 9 приведена схема питания.
Рисунок 9 – Схема питания микроконтроллера.
3. Проектирование программного обеспечения микропроцессора
3.1 Проектирование модуля инициализации микроконтроллера
Для инициализации данного устройства необходимо выделить память для глобальных переменных, и провести инициализацию портов, таймеров и USART, RTC.
3.2 Проектирование процедур обработки прерываний
Данное устройство не требует написания программы с обработкой прерываний. Это связанно с линейностью выполнения алгоритма опроса датчиков и обмена данными по RS485.
3.3 Проектирование процедур обработки информации
Оптопара имеет прямоугольные сигналы на выходе. И для измерения каких либо величин необходимо измерение длительности активного и неактивного состояния датчика. И в зависимости от состояния каждой из 10 оптопар формировать соответствующую посылку.
3.4 Проектирование процедур вывода информации
C помощью встроенных RTC формируем временны метки к измеренным данным.
Вывод информации осуществляется с помощью дифференциального интерфейса обмена данными RS 485. Протокол – RS232. Встроенный аппаратный модуль LPC2000.
3.5 Проектирование процедуры Main()
Процедура Main это главная процедура программы с которой начинается выполнение. В данной процедуре необходимо вызвать процедуру инициализации, а затем необходимо перейти в бесконечный цикл опроса датчиков, формирование посылки, передача данных. На рисунке 10 приведен общий алгоритм работы устройства.
Рисунок 10 – Общий алгоритм работы устройства
4 Листинг программы
#include <limits.h>
#include "LPC210x.h"
#include "global.h"
#include "uart.h"
//! enable and initialize the uart
void uart0Init(uint16_t baud, uint8_t mode, uint8_t fifomode)
{
// set port pins for UART0
PINSEL0 = (PINSEL0 & ~U0_PINMASK) | U0_PINSEL;