Принцип действия системы сбора информации с датчиков

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    102,17 Кб
  • Опубликовано:
    2012-12-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Принцип действия системы сбора информации с датчиков














Принцип действия системы сбора информации с датчиков

Содержание

Техническое задание

1.Объект автоматизации

.1 Параметры устройства

.2 Описание и анализ функций, выполняемых МПС устройства

.3 Микропроцессорная система на основе ОМК Intel 80C51

. Принцип действия устройства

.1 Функциональная схема

.2 Принципиальная схема

.3 Описание элементов схемы

. Программное обеспечение МПС

.1 Алгоритм работы программы

.2 Листинг программы

Заключение

Литература

Приложение

Техническое задание

Необходимо спроектировать схему на основе микроконтроллера для сбора информации с 128 датчиков. Информация поступает в виде логических уровней 0В-0 или 5В-1. Датчики поочерёдно опрашиваются, и сравнивается их текущее состояние с предыдущим, в случае изменения состояния информация (дата, время и состояние) сохраняется во Flash-памяти, подключённой к микроконтроллеру. Устройство должно иметь часы реального времени. Начальную установку времени производить при помощи ЭВМ, подключая устройство через интерфейс RS232.Далее устройство само ведет счет времени, и даты в не полном формате( число, месяц).

Также необходимо написать программу для контроллера, которая будет обрабатывать поступающие данные, накапливать их во Flash-памяти и принимать от ЭВМ значение точного времени и текущей даты.

В дальнейшем по команде компьютера данные об изменении состояния накопленные во флеш-памяти передаются по последовательному порту в компьютер.

микроконтроллер датчик информация

1.Объект автоматизации

В качестве объекта автоматизации была выбрана система, состоящая из 128 датчиков, и регистратора. Каждый датчик может иметь два состояния, единицу и ноль. Каждый датчик должен быть пронумерован, и регистратор должен при изменении состояния датчика записывать во Flash - память время и код события. Регистратор также должен иметь часы реального времени, с дискретностью не более 1 секунды, связь с ПК. Flash - память может быть как внешней, так и встроена в регистратор.

1.1 Параметры устройства


Число датчиков - 128;

Часы реального времени - 1 год;

Дискретность часов - 1 секунда;

Связь с ЭВМ - СОМ-порт, интерфейс RS232;

Скорость обмена информацией с ЭВМ - 2400 Бод.

Ёмкость Flash - памяти - 32кБ;

.2 Описание и анализ функций, выполняемых МПС устройства

Микропроцессорная система устройства позволяет производить сбор информации от 128 датчиков, регистрировать изменение состояния каждого из них, и записывать его во Flash, а также производить приём точного времени от ЭВМ по интерфейсу RS232.

 

.3 Обоснование выбора микропроцессора


Основанием для выбора данного микроконтроллера послужили его высокие характеристики и возможности, а также возможность написания программы на языке высокого уровня ПЛМ. Контроллер имеет следующие технические характеристики:

-          наличие достаточного количества портов ввода-вывода;

-       наличие достаточного количества таймеров-счётчиков;

-       наличие УАПП;

-       возможность подключения внешней памяти данных;

-       полученное задание.

В пользу выбора МК51 послужила возможность аппаратного подключения внешней памяти данных, в отличие от контроллеров семейства PIC Micro.

2. Принцип действия устройства

 

.1 Функциональная схема

 

Функциональная схема устройства приведена на рис.1.



Микроконтроллер сканирует датчики, и фиксирует изменение состояния датчиков во Flash - памяти, при переполнении Flash - памяти микроконтроллер сигнализирует об этом светодиодным индикатором и начинает производить запись в другую микросхему памяти. На таймере/счётчике микроконтроллера реализованы часы реального времени, установка точного значения времени производится при помощи ЭВМ, через интерфейс RS232.

2.2 Описание Принципиальная схема


Принципиальная схема приведена на чертеже КП03.2101.303.00.Э3

Микроконтроллер DD2 устанавливает на порту Р0 данные, соответствующие номеру опрашиваемого датчика, и принимает полученный от него сигнал по линии Р3.5 порта Р3. Четырьмя младшими битами адреса выбирается один из 16 датчиков, подключённых к мультиплексорам DD1 - DD8, а тремя старшими выбирается один из 8 мультиплексоров, подключённых к мультиплексору DD9. В случае изменения состояния датчика он производит запись данных в микросхемы Flash DD13 и DD14. Операции записи/чтения происходят следующим образом: сначала микроконтроллер устанавливает адрес на портах Р0 и Р2, затем сигналом ALE защелкивает младший байт адреса в регистре DD12 и активизирует одну из линий, OE или WE, в зависимости от того, что необходимо, произвести, чтение или запись, и производит обмен данными через порт Р0.

Резисторы R3 и R4 необходимы для ограничения тока, протекающего через светодиоды VD2 и VD3.

Конденсаторы С1, С2 и кварцевый резонатор ZQ1 необходимы для работы тактового генератора микроконтроллера.

Резистор R2 служит для подачи лог.1 на вход DEMA, этим обеспечивается использование резидентной памяти программ микроконтроллера DD11.

Конденсатор С3 и резистор R1 представляют собой схему формирования сигнала сброса при включении питания, диод VD1 предназначен для разряда конденсатора С3 при исчезновении напряжения питания.

2.3 Описание элементов схемы


Микросхема DD10 - преобразователь уровня ТТЛ - СОМ-порт, необходима для согласования электрических уровней микроконтроллера и COM-порта компьютера. Уровень логического нуля и единицы у микроконтроллера равны 0 и +5В, а у COM-порта компьютера +12В и -12В соответственно. Микросхема питается напряжением +5В, а напряжения ±12В она генерирует с помощью встроенных преобразователей напряжения

Микросхема DD11 - Intel 80C51 - однокристальный 8-ми разрядный микроконтроллер, он имеет следующие аппаратные особенности:

·      внутреннее ОЗУ объемом 128 байт;

·        четыре двунаправленных побитно настраиваемых восьмиразрядных порта ввода-вывода;

·        два 16-разрядных таймера-счетчика;

·        встроенный тактовый генератор;

·        адресация 64 КБайт памяти программ и 64 Кбайт памяти данных;

·        две линии запросов на прерывание от внешних устройств;

·        интерфейс для последовательного обмена информацией с другими микроконтроллерами или персональными компьютерами.

Регистр-защелка DD12 - служит для фиксации младшего байта адреса при операциях записи/чтения внешней памяти. При высоком уровне на входе информация проходит на выход микросхемы, а при подаче низкого уровня она «защёлкивается» на выходах микросхемы.

Микросхемы DD1-DD9 - мультиплексор-селектор 16→1 со стробированием.

Микросхема Flash - памяти AT29C257.

·        производитель - Atmel Corporation

·        ёмкость - 32кБ х 8

·        Время доступа при чтении - 70нс

·        напряжение программирования - 5В

·        автоматическое стирание перед записью

·        цикл записи - 10мс

·        ток потребления: 50мА - активное состояние

300μА - режим х.х.

·        КМОП и ТТЛ совместимый выход

·        напряжение питания - 5В

·        Эмуляция микросхемы ОЗУ

·        Низкая потребляемая мощность

3. Программное обеспечение МПС

 

3.1 Алгоритм работы программы


Общий алгоритм работы программы приведен на рис.2.

При включении контроллера происходит его инициализация, в которой задаётся частота переполнения таймера Т/С0, определятся скорость передачи информации через УАПП, устанавливаются приоритеты прерываний. После этого контроллер по очереди начинает опрашивать датчики. При обнаружении изменения состояния датчика контроллер записывает во Flash номер датчика, код события и время, когда это событие произошло.

Микроконтроллер имеет часы реального времени, реализованные на Т/С0, алгоритм работы подпрограммы часов реального времени представлен на рис. 3.

Для связи с ЭВМ используется УАПП, алгоритм работы УАПП представлен на рис.4.

Рисунок 2. Алгоритм работы главной программы.

Рисунок 3. Алгоритм работы часов реального времени

(прерывания от таймера 0).

Рисунок 4. Алгоритм работы подпрограммы обработки

прерывания от УАПП.

 











Рис4.

Листинг программы

start: do;

include(reg51.dcl)

byte (65526) auxiliry,

(adr1, adr2) word,/* адрес считываемой ячейки, адрес записываемой ячейки*/

P bit (128),

(temp, delay, t, sec, min, hour, day, month, num_dat, f1,f2) byte,(13) byte, ms(16) byte, /* m-массив для месяцев года, ms-массив с предыдущими состояниями датчиков*/

ms11 word constant(1272),byte, /*команды от компьютера*/ byte, /* считываемый вход*/

adr word;

/*-------------------------------------------------------*/

: procedure;=20;=0;=0;=0;=0;=0;=1;(1)=31;/*январь*/(2)=28;/*февраль*/(3)=31;/*март*/(4)=30;/*апрель*/(5)=31;/*май*/(6)=30;/*июнь*/(7)=31;/*июль*/(8)=31;/*август*/(9)=30;/*сентябрь*/(10)=31;/*октябрь*/(11)=30;/*ноябрь*/(12)=31;/*декабрь*/=0ffh;/*настройка портов на вход*/

P1=0ffh;/* настройка портов на вход*/

P2=0ffh;/* настройка портов на вход*/

P3=0ffh; /* настройка портов на вход*/

/*XTAL=12MHz кварцевый резонатор*/ =21h; /*Счётчики Т/С0 - 1 реж и Т/С1 во 2-м режиме*/=60h; /*UART во втором режиме*/=0AFh; /*Переполнение счётчика 0*/=03Ch; /* через 50мс при 12МГц*/=0F3h; /*счётчик1 - генератор частоты*/=0F3h; /*обмена скорости с ЭВМ, 2400 Бод*/=09Ah; /*Разрешение прерываний         1001 1010 разрешение прерывания от УАПП*/=2; /*Приоритеты прерываний: Т/С0=1, Т/С2=0, SBUF=0*/

End ;

/*----------------------------------------------------------*/:procedure interrupt1;;

/*часы реального времени*/=0AFh; /*Переполнение счётчика 0 через 50мс при 12МГц*/=03Ch; /*загрузили 15535 в таймер, переполнение ч/з 50000*/((t=t+1)=20) /* 1 секунда после 20 срабатываний*/

then;

         t=0;(f1=1) then P3.3=not(P3.3); /*бит порта*/

         if (f2=1) then P3.4= notP3.4;

         sec=sec+1; then

         if (sec)=60 /*подсчёт секунд*/

         do;

         sec=0;

         min=min+1; then

         if (min)=60 /*подсчёт минут*/

         do;

                   min=0;= hour+1; then

         if (hour)=24 /*подсчёт часов*/

         do;

         hour=0;temp=m(month)+1;

         day= day+1; then

         if (day)=temp) /*подсчёт дней*/

         do;

         day=1;

                   month= month+1; then

         if (month)=13 /*подсчёт месяцев*/

                   month=1; do;

          end;

          end;

         end;           

         end;

         end;timer0;

/*---------------------------------------------------------*/Scan_Dat(uchar ndat) /* процедура сканирования датчика */

nbyte,nbit,p,s; init;while 1;=ndat/8; /*вычисляем номер байта*/=(ndat mod8); /*вычисляем номер бита*/1=ndat; /*выбираем датчик № ndat*/

s=P3; /*считываем порт Р3*/

s=80h and SHL(ms(nbyte),(8-nbit)); /*1000 0000 массив состояния каждого датчика*/

p=(80h and(SHL(p,2))); /*0001 0000 << 3 = 1000 0000*/=0;

end;

if (p(ndat)=1)and(s=0) then /* смотрим было ли изменение состояния*/

do;

yes=1; /*было изменение состояния*/

p(ndat)=0;;(p(ndat)=0)and(s=1) then ; =1;(ndat)=1;;       s;;

         Serial: procedure interrupt 4//подпрограмма прерывания от УАПП; /*0xAA=0b10101010*/(SBUF=0AAh) then /*если принятое число равно 0xAA - установка времени*/

end;

/***-----------------------------------------------------***/sob;=0;init;

TCON=0F0h; /*Разрешение работы счётчиков 0 и 1*/

do while (I);;

/*Блок чтения*/ while (not(RI)); /*RI=1 когда передача от ЭВМ к УАПП закончена*/

         sec=SBUF;

         end;

         RI=0;

         do while (not(RI)); /*RI=1 когда передача от ЭВМ к УАПП закончена*/

         min=SBUF;

          end;

          RI=0;

         do while(not(RI)); /*RI=1 когда передача от ЭВМ к УАПП закончена*/

          hour=SBUF;

          end;

          RI=0;

         do while(not(RI)); /*RI=1 когда передача от ЭВМ к УАПП закончена*/

         day=SBUF;

         end;

         RI=0;

         do while(not(RI)); /*RI=1 когда передача от ЭВМ к УАПП закончена*/

         month=SBUF;

         RI=0;

         end;SBUF=0DDh then /* цикл передачи данных*/

         do;

         if fl_per=1 then ;

         i=0;

         do while i<=adr+6;

         sbuf=DZY(i);

         i=i+1;

         call time(50);

         end;

         end;

         end;;

/* формат хранения:*/

/* 0000 0000 - номер датчика*/

/* хх00 0000 - секунды*/

/* хх00 0000 - минуты*/

/* ххх0 0000 - часы*/

/* 0хх0 0000 - событие 1-0/день*/

/*хххх 0000 - /*зянятость ячейки/месяц*/

/*опрос датчика*/=Scan_Dat(num_dat); /*событие от датчика 1000 0000 или 0000 0000*/(yes) then do; /*если у датчика изменение состояния*/

do;    /*то производим его запись*/       DZY(adr)=num_dat; /*запись номера датчика*/

         ms11=ms11-1;

         while (ms11); /*пауза 11 мс*/

         DZY(adr+1)=sec; /*запись секунд*/

         ms11=ms11-1;

         while (ms11); /*пауза 11 мс*/

         DZY(adr+2)=min; /*запись минут*/

         ms11=ms11-1;

         while (ms11); /*пауза 11 мс*/

         DZY(adr+3)=hour; /*запись часов*/

         ms11=ms11-1;

         while (ms11); /*пауза 11 мс*/

         DZY (adr+4)=day and sob; /*запись дней*/

         ms11=ms11-1;

         while (ms11); /*пауза 11 мс*/

         DZY(adr+5)=month; /*запись месяца*/

         ms11=ms11-1;

         while (ms11); /*пауза 11 мс*/

         adr=adr+6; /* увеличение адреса для записи в память, следующая запись через 6 ячеек*/

         end;=0; f2=0;(adr>07FFFh) then f1=1; /* Flash переполнена, включ. моргание светодиода 1*/f2=1; /*включ. моргание светодиода 2*/_dat=num_dat+1; /*увеличение номера датчика*/

end;

end; /*while(1)*/

/*-----------------------------------------------------*/

Заключение


При выполнении данной курсовой работы был изучен однокристальный микроконтроллер Intel 80C51, Flash - память производства корпорации Atmel, приобретены навыки программирования однокристальных контроллеров. При написании и отладке программного обеспечения был изучен симулятор микроконтроллеров семейства MCS’51 Keil uVision 2.

Приложение

Похожие работы на - Принцип действия системы сбора информации с датчиков

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!