Курсовой проект по учебной дисциплине «Микропроцессорные средства» на тему «Система охранной сигнализации стационарного промышленного объекта»

Вид материалаКурсовой проект
5.1.1 Оптимизирующий кросс-компилятор C51
5.1.2 Макроассемблер A51
5.1.3 Компоновщик L51
5.1.4 Отладчик/симулятор WinSim51
Mov c,acc.1 mov address_bit1,c mov c,acc.2
Рисунок 16. Блок-схема работы программы.
Mov tmod,#00100000b
Подпрограмма передачи данных и контрольного бита данных через последовательных порт
Mov c,acc.1 mov address_bit1,c mov c,acc.2
Mov tmod,#00100000b
Подобный материал:
1   2   3   4   5

5.1.1 Оптимизирующий кросс-компилятор C51


Язык C - универсальный язык программирования, который обеспечивает эффективность кода, элементы структурного программирования и имеет богатый набор операторов. Универсальность, отсутствие ограничений реализации делают язык C удобным и эффективным средством программирования для широкого разнообразия задач. Множество прикладных программ может быть написано легче и эффективнее на языке C, чем на других более специализированных языках[12].

C51 - полная реализация стандарта ANSI (Американского национального института стандартов), насколько это возможно для архитектуры Intel 8051[12]. C51 генерирует код для всего семейства микроконтроллеров Intel 8051. Транслятор сочетает гибкость программирования на языке C с эффективностью кода и быстродействием ассемблера.

Использование языка высокого уровня C имеет следующие преимущества над программированием на ассемблере:

не требуется глубокого знания системы команд процессора, элементарное знание архитектуры Intel 8051 желательно, но не необходимо[12];

распределение регистров и способы адресации управляются полностью транслятором;

обеспечивается лучшая читаемость программы, т.к. используются ключевые слова и функции, которые более свойственны человеческой мысли;

сокращается время разработки и отладки программ в сравнении с программированием на ассемблере;

наличие библиотечных файлов со стандартными подпрограмми, которые могут быть включены в прикладную программу;

существующие программы могут многократно использоваться в новых программах, используя модульные методы программирования.

5.1.2 Макроассемблер A51


Ассемблер A51 совместим с ASM51 Intel для всего семейства микроконтроллеров Intel 8051. Ассемблер транслирует символическую мнемонику в перемещаемый объектный код, имеющий высокое быстродействие и малый размер. Макросредства ускоряют разработку и экономят время, поскольку общие последовательности могут быть разработаны только один раз. Ассемблер поддерживает символический доступ ко всем элементам микроконтроллера и перестраивает конфигурацию для каждой разновидности Intel 8051.

A51 транслирует исходный файл ассемблера в перемещаемый объектный модуль. При отладке или при включенной опции “Include debugging information” этот объектный файл будет содержать полную символическую информацию для отладчика/имитатора или внутрисхемного эмулятора[12].

5.1.3 Компоновщик L51


Компоновщик объединяет один или несколько объектных модулей в одну исполняемую программу. Компоновщик размещает внешние и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel[12].

Компоновщик автоматически выбирает соответствующие библиотеки поддержки и связывает только требуемые модули из библиотек. Установки по умолчанию для L51 выбраны так, чтобы они подходили для большинства прикладных программ, но можно определить и заказные установки[12].

5.1.4 Отладчик/симулятор WinSim51


Отладчик/симулятор используется с транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Отладчик/симулятор позволяет моделировать большинство особенностей Intel 8051 без наличия аппаратных средств. Можно использовать его для проверки и отладки прикладной программы прежде, чем будут изготовлены аппаратные средства[12]. При этом моделируется широкое разнообразие периферийных устройств, включая последовательный порт, внешний ввод - вывод и таймеры.


5.2 Разработка алгоритма работы системы и программного обеспечения

5.2.1 Алгоритм работы

Постановка на сигнализацию осуществляется человеком, последним покидающим данный объект, путем нажатия кнопки «Запуск» находящемся на пульте управления системы. Сразу после запуска системы идет первый опрос датчиков. Если обнаруживается срабатывание датчика, то опрос прекращается; на ЖКИ выводится код сработавшего датчика. Это необходимо для защиты системы от ложных срабатываний. После чего должны приняться меры к устранению причин срабатывания датчиков. Далее осуществляется повторный пуск системы. Если же после первого опроса датчиков не произошло никакого срабатывания, то делается временная задержка в 1 минуту, для возможности покинуть человеком помещение, и система охранной сигнализации переходит в основной режим работы «охрана».

В режиме «охраны» ведется непрерывный опрос датчиков, и как только обнаруживается срабатывание, то передается сигнал на пульт центрального управления ВОХР с указанием кода сработавшего датчика. После передачи сигнала опрос продолжается, для того чтобы пресечь разные места проникновения.

Снятия объекта с сигнализации производиться путем прохода человека внутрь объекта (при этом происходит срабатывание сигнализации), отключение системы охраны от питания и звонком на пульт ВОХР с сообщением кода объекта и факта его снятия с сигнализации.

На Рис. 14 приведена схема алгоритма работы данной системы


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


Подпрограмма основного опроса датчиков, передача сигнала на последовательный порт (модем) адреса датчика при его срабатывании.


Функция OPROS. В ней в P1.0..P1.3 записывается адресующий код мультиплексора – код проверяемого датчика

ADDRESS_BIT0 EQU P1.0 ;адрес бита порта P1.0

ADDRESS_BIT1 EQU P1.1 ;адрес бита порта P1.1

ADDRESS_BIT2 EQU P1.2 ;адрес бита порта P1.2

ADDRESS_BIT3 EQU P1.3 ;адрес бита порта P1.3

TEMP EQU R1 ;адрес регистра R1

P0.0, P0.1 – биты выходного сигнала мультиплексоров №1 и №2 соответственно

BIT_Q_MUX1 EQU P0.0 ;адрес бита порта P0.0

BIT_Q_MUX2 EQU P0.1 ;адрес бита порта P0.1


CLR A ;сброс аккумулятора

CLR P1.4 ;разрешение работы ;мультиплексора №1

CLR P1.5 ;разрешение работы ;мультиплексора №2

CALL INIT ;вызов подпрограммы ;инициализации последовательного ;порта

START_OPROS:

MOV C,ACC.0 ;запись адреса проверяемого ;датчика

MOV ADDRESS_BIT0,С

;в порты P1.0..P1.3 через бит ;переноса

MOV C,ACC.1


MOV ADDRESS_BIT1,C

MOV C,ACC.2


MOV ADDRESS_BIT2,C

MOV C,ACC.3

MOV ADDRESS_BIT3,C

JNB BIT_Q_MUX1,NOT_ERR

если не сработал датчик подсоединенный к 1-му мультиплексору, то проверить датчик по такому же адресу 2-го мультиплексора

CLR TEMP ;очищаем регистр, для временного ;хранения адреса датчика





Рисунок 16. Блок-схема работы программы.


MOV TEMP,A ;заносим адрес сработавшего ;датчика

ORL A,#00010000B

;4-й бит аккумулятора ;обозначает 1-й мультиплексор

CALL SP_OUT ;вызов подпрограммы передачи ;данных о сработавшем датчике ;через последовательный порт

MOV A,TEMP ;восстанавливаем значение адреса ;датчика

NOT_ERR:

JNB BIT_Q_MUX2,END_OPROS

;если не сработал датчик ;подсоединенный ко 2-му ;мультиплексору, то продолжить ;сканирование

CLR TEMP ;очищаем регистр, для временного ;хранения адреса датчика

MOV TEMP,A ;заносим адрес сработавшего ;датчика

ORL A,#00100000B

;5-й бит аккумулятора обозначает ;2-й мультиплексор

CALL SP_OUT ;вызов подпрограммы передачи ;данных о сработавшем датчике ;через последовательный порт

MOV A,TEMP ;восстанавливаем значение адреса ;датчика

END_OPROS:

CJNE A,#00001111B,NOT_EXIT

;если была опрошена последняя ;пара датчиков, то

RET ;возвращение из подпрограммы ;опроса датчиков

NOT_EXIT:

INC A ;увеличение аккумулятора на 1, для ;опроса следующей пары датчиков

JMP START_OPROS

;продолжаем опрос

Подпрограмма инициализации последовательного порта в режиме 3 со скоростью передачи данных 2400 бод.



INIT: MOV SCON,#00100010B

MOV TMOD,#00100000B


;настройка Т/С1

MOV PCON,#0 ;сброс бита SMOD

MOV TH1,#<.NOT.13+1

;K=f/(12*32*0.0024)= 13, где ;f=12МГц есть частота ;синхронизации микроконтроллера

SET TR1 ;включить Т/С1

RET ;вернуться из подпрограммы

Подпрограмма передачи данных и контрольного бита данных через последовательных порт

SP_OUT: MOV C,P ;пересылка контрольного бита

MOV TB8,C ;из флага паритета SCON.3

M1: JNT T1,M1 ;синхронизация передачи

CLR T1 ;сброс бита SCON.1

MOV SBUF,A ;передача контрольного бита и ;содержимого аккумулятора через ;последовательный порт

RET

Заключение


В данной работе была осуществлена разработка интеллектуальной системы охранной сигнализации стационарного промышленного объекта.

В ходе выполнения работы был проведён анализ задачи, на основе которого были сформулированы требования к конечной системе. На основе требований была построена структурная схема.

На основании структурной схемы были подобраны соответствующие устройства для реализации функций, возложенных на элементы системы. Исходя из экономических и эксплуатационных соображений, для данного устройства был выбран микроконтроллер AT89S51 фирмы Atmel.

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

Далее, с использованием выбранных устройств была построена функциональная схема. Разработка завершилась составлением блок-схемы алгоритма и написанием исходного кода программы для микроконтроллера.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  1. Граф Р., Шиитс В. Энциклопедия электронных схем. - М.: ДМК, 2001 - 385с.;
  2. Угрюмов Е. Цифровая схемотехника. – СПБ.: БХВ-Петербург, 2002. – 528с.;
  3. Степаненко И.П. Основы микроэлектроники: учеб. пособие для вузов.-2-е изд. перераб. и доп. - М.: Лаборатория базовых знаний, 2000 – 488 с.;
  4. Андреев Д.В. Программирование микроконтроллеров MCS-51.: Учеб. Пособие – Ульяновск: УлГТУ, 2000 – 88с.
  5. Хоровиц П., Хилл У. Искусство схемотехники. М.: Мир,1983. Т. 2. 590 с.
  6. Вуд А. Микропроцессоры в вопросах и ответах / Пер. с англ. М.: Энергоатомиздат, 1985. 185 с.
  7. Водовозов В. М., Осипов В. О., Пожидаев А. К. Практическое введение в информационные системы / ГЭТУ. СПб, 1995.
  8. Описание микроконтроллера AT89S51 на сайте компании Atmel: .com/dyn/resources/prod_documents/doc2487.pdf
  9. Описание микроконтроллера AT89S51: ссылка скрыта
  10. Журнал Chip News, обзорная статья М.Ахметова «8-разрядные микроконтроллеры», часть 1, краткий обзор RISC семейств - Microchip PICmicro, Atmel AVR, Scenix SX и Xemics CoolRISC: ссылка скрыта
  11. Журнал Chip News, обзорная статья М.Ахметова «8-разрядные микроконтроллеры», часть 2, обзор CISC семейств - ST6, ST7, ST9 от STM, Motorola 68HC05, 68HC08, 68HC11, National COP8, Fairchild ACE, Zilog Z8, Z8Plus, Texas Instruments TMS370: ссылка скрыта
  12. Сайт компании Franclin ProView:
    ссылка скрыта
  13. Сайт книги "Охранные системы", автор Лаврус В.С. oks.ru/bookbox_93613.phpl



Приложение А

;Подпрограмма основного опроса датчиков, передача сигнала на последовательный порт (модем) адреса датчика при его срабатывании.


OPROS:

;в P1.0..P1.3 записывается адресующий код мультиплексора – код

;проверяемого датчика

ADDRESS_BIT0 EQU P1.0 ;адрес бита порта P1.0

ADDRESS_BIT1 EQU P1.1 ;адрес бита порта P1.1

ADDRESS_BIT2 EQU P1.2 ;адрес бита порта P1.2

ADDRESS_BIT3 EQU P1.3 ;адрес бита порта P1.3

TEMP EQU R1 ;адрес регистра R1

;P0.0, P0.1 – биты выходного сигнала мультиплексоров №1 и №2 ;соответственно

BIT_Q_MUX1 EQU P0.0 ;адрес бита порта P0.0

BIT_Q_MUX2 EQU P0.1 ;адрес бита порта P0.1


CLR A ;сброс аккумулятора

CLR P1.4 ;разрешение работы ;мультиплексора №1

CLR P1.5 ;разрешение работы ;мультиплексора №2

CALL INIT ;вызов подпрограммы ;инициализации последовательного ;порта

START_OPROS:

MOV C,ACC.0 ;запись адреса проверяемого ;датчика

MOV ADDRESS_BIT0,С

;в порты P1.0..P1.3 через бит ;переноса

MOV C,ACC.1


MOV ADDRESS_BIT1,C

MOV C,ACC.2


MOV ADDRESS_BIT2,C

MOV C,ACC.3

MOV ADDRESS_BIT3,C

JNB BIT_Q_MUX1,NOT_ERR

;если не сработал датчик

;подсоединенный к 1-му

;мультиплексору, то проверить

;датчик по такому же адресу 2-го

;мультиплексора

CLR TEMP ;очищаем регистр, для временного ;хранения адреса датчика

MOV TEMP,A ;заносим адрес сработавшего ;датчика

ORL A,#00010000B

;4-й бит аккумулятора ;обозначает 1-й мультиплексор

CALL SP_OUT ;вызов подпрограммы передачи ;данных о сработавшем датчике ;через последовательный порт

MOV A,TEMP ;восстанавливаем значение адреса ;датчика

NOT_ERR:

JNB BIT_Q_MUX2,END_OPROS

;если не сработал датчик ;подсоединенный ко 2-му ;мультиплексору, то продолжить ;сканирование

CLR TEMP ;очищаем регистр, для временного ;хранения адреса датчика

MOV TEMP,A ;заносим адрес сработавшего ;датчика

ORL A,#00100000B

;5-й бит аккумулятора обозначает ;2-й мультиплексор

CALL SP_OUT ;вызов подпрограммы передачи ;данных о сработавшем датчике ;через последовательный порт

MOV A,TEMP ;восстанавливаем значение адреса ;датчика

END_OPROS:

CJNE A,#00001111B,NOT_EXIT

;если была опрошена последняя ;пара датчиков, то

RET ;возвращение из подпрограммы ;опроса датчиков

NOT_EXIT:

INC A ;увеличение аккумулятора на 1, для ;опроса следующей пары датчиков

JMP START_OPROS

;продолжаем опрос


; Подпрограмма инициализации последовательного порта в режиме 3 со скоростью передачи данных 2400 бод.
INIT: MOV SCON,#00100010B

MOV TMOD,#00100000B


;настройка Т/С1

MOV PCON,#0 ;сброс бита SMOD

MOV TH1,#<.NOT.13+1

;K=f/(12*32*0.0024)= 13, где ;f=12МГц есть частота ;синхронизации микроконтроллера

SET TR1 ;включить Т/С1

RET ;вернуться из подпрограммы


;Подпрограмма передачи данных и контрольного бита данных через ;последовательных порт

SP_OUT: MOV C,P ;пересылка контрольного бита

MOV TB8,C ;из флага паритета SCON.3

M1: JNT T1,M1 ;синхронизация передачи

CLR T1 ;сброс бита SCON.1

MOV SBUF,A ;передача контрольного бита и ;содержимого аккумулятора через ;последовательный порт

RET