Система охранной сигнализации промышленного объекта на базе разнотипных датчиков
Автор работы: Пользователь скрыл имя, 08 Сентября 2011 в 14:35, курсовая работа
Описание работы
В последнее время в нашей стране, да и, пожалуй, во всём мире стала наиболее актуальна проблема безопасности объекта, а также проблема информационной безопасности. Системы электронных охранных сигнализаций являются одним из главных препятствий на пути несанкционированного проникновения на объект.
Содержание работы
Введение 3
1 Система охранной сигнализации на промышленном объекте: структура и спецификация 8
1.1 Алгоритм работы данной системы охранной сигнализации 12
1.2 Индикатор, мультиплексор, датчики: понятия, виды и характеристики 15
1.3 Микроконтроллер: его виды и характеристики 40
2 Монтаж системы сигнализации на охраняемом объекте для наилучшего функционирования 76
2.1 Планирование разводки кабеля и установка разнотипных датчиков 76
3 Разработка программного обеспечения для микроконтроллера 84
3.1 Выбор инструментальных средств (среда Ассемблер) 84
3.2 Подпрограмма для микроконтроллера 94
4 Результаты функционирование системы охранной сигнализации промышленного объекта 95
4.1 Пакет программного обеспечения для функционирования микроконтроллера 95
4.2 Экономическое обоснование 100
Заключение 103
Список используемых источников 104
Файлы: 1 файл
Пояснительная записка Сидоренко.doc
— 1.32 Мб (Скачать файл)
15 А. Д. Шишкин. Методическое
пособие для выполнения дипломного и курсового
проектирования. СПб,-2008. изд. РГГМУ.
Приложение А
Система команд микроконтроллера семейства 8051.
| Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
| Пересылка в аккумулятор из регистра (n=0÷7) | MOV A, Rn | 11101rrr | 1 | 1 | 1 | (A) ¬ (Rn) |
| Пересылка в аккумулятор прямоадресуемого байта | MOV A, ad | 11100101 | 3 | 2 | 1 | (A) ¬ (ad) |
| Пересылка в аккумулятор байта из РПД (i=0,1) | MOV A, @Ri | 1110011i | 1 | 1 | 1 | (A) ¬ ((Ri)) |
| Загрузка в аккумулятор константы | MOV A, #d | 01110100 | 2 | 2 | 1 | (A) ¬ #d |
| Пересылка в регистр из аккумулятора | MOV Rn, A | 11111rrr | 1 | 1 | 1 | (Rn) ¬ (A) |
| Пересылка в регистр прямоадресуемого байта | MOV Rn, ad | 10101rrr | 3 | 2 | 2 | (Rn) ¬ (ad) |
| Загрузка в регистр константы | MOV Rn, #d | 01111rrr | 2 | 2 | 1 | (Rn) ¬ #d |
| Пересылка по прямому адресу аккумулятора | MOV ad, A | 11110101 | 3 | 2 | 1 | (ad) ¬ (A) |
| Пересылка по прямому адресу регистра | MOV ad, Rn | 10001rrr | 3 | 2 | 2 | (ad) ¬ (Rn) |
| Пересылка прямоадресуемого байта по прямому адресу | MOV add, ads | 10000101 | 9 | 3 | 2 | (add) ¬ (ads) |
| Пересылка байта из РПД по прямому адресу | MOV ad, @Ri | 1000011i | 3 | 2 | 2 | (ad) ¬ ((Ri)) |
| Пересылка по прямому адресу константы | MOV ad, #d | 01110101 | 7 | 3 | 2 | (ad) ¬ #d |
| Пересылка в РПД из аккумулятора | MOV @Ri, A | 1111011i | 1 | 1 | 1 | ((Ri)) ¬ (A) |
| Пересылка в РПД прямоадресуемого байта | MOV @Ri, ad | 0110011i | 3 | 2 | 2 | ((Ri)) ¬ (ad) |
| Пересылка в РПД константы | MOV @Ri, #d | 0111011i | 2 | 2 | 1 | ((Ri)) ¬ #d |
| Загрузка указателя данных | MOV DPTR, #d16 | 10010000 | 13 | 3 | 2 | (DPTR) ¬ #d16 |
| Пересылка в аккумулятор байта из ПП | MOVC A, @A+DPTR | 10010011 | 1 | 1 | 2 | ¬ ((A) +(DPTR)) |
| Пересылка в аккумулятор байта из ПП | MOVC A, @A+PC | 10000011 | 1 | 1 | 2 | (PC) ¬ (PC)+1,
(A) ¬ ((A)+(PC)) |
| Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
| Пересылка в аккумулятор байта из ВПД | MOVX A, @Ri | 1110001i | 1 | 1 | 2 | (A) ¬ ((Ri)) |
| Пересылка в аккумулятор байта из расширенной ВПД | MOVX A,@DPTR | 11100000 | 1 | 1 | 2 | (A) ¬ ((DPTR)) |
| Пересылка в ВПД из аккумулятора | MOVX @Ri, A | 1111001i | 1 | 1 | 2 | ((Ri)) ¬ (A) |
| Пересылка в расширенную ВПД из аккумулятора | MOVX @DPTR,A | 11110000 | 1 | 1 | 2 | ((DPTR)) ¬ (A) |
| Загрузка в стек | PUSH ad | 11000000 | 3 | 2 | 2 | (SP) ¬ (SP) + 1, ((SP)) ¬ (ad) |
| Извлечение из стека | POP ad | 11010000 | 3 | 2 | 2 | (ad) ¬ (SP),
(SP) ¬ (SP) - 1 |
| Обмен аккумулятора с регистром | XCH A, Rn | 11001rrr | 1 | 1 | 1 | (A) ↔ (Rn) |
| Обмен аккумулятора с прямоадресуемым байтом | XCH A, ad | 11000101 | 3 | 2 | 1 | (A) ↔ (ad) |
| Обмен аккумулятора с байтом из РПД | XCH A, @Ri | 1100011i | 1 | 1 | 1 | (A) ↔ ((Ri)) |
| Обмен младших тетрад аккумулятора и байта РПД | XCHD A, @Ri | 1101011i | 1 | 1 | 1 | (A0…3) ↔((Ri)0…3) |
| Сложение аккумулятора с регистром (n=0÷7) | ADD A, Rn | 00l01rrr | 1 | 1 | 1 | (A) ¬ (A) + (Rn) |
| Сложение аккумулятора с прямоадресуемым байтом | ADD A, ad | 00100101 | 3 | 2 | 1 | (A) ¬ (A) + (ad) |
| Сложение аккумулятора с байтом из РПД (i = 0,1) | ADD A, @Ri | 0010011i | 1 | 1 | 1 | (A) ¬ (A) + ((Ri)) |
| Сложение аккумулятора с константой | ADD A, #d | 00100100 | 2 | 2 | 1 | (A) ¬ (A) + #d |
| Сложение аккумулятора с регистром и переносом | ADDC A, Rn | 00111rrr | 1 | 1 | 1 | (A) ¬ (A) + (Rn) + (C) |
| Сложение аккумулятора с прямоадресуемым байтом и переносом | ADDC A, ad | 00110101 | 3 | 2 | 1 | (A) ¬ (A) + (ad) + (C) |
| Сложение аккумулятора с байтом из РПД и переносом | ADDC A, @Ri | 0011011i | 1 | 1 | 1 | (A) ¬ (A) + ((Ri)) + (C) |
| Сложение аккумулятора с константой и переносом | ADDC A, #d | 00110100 | 2 | 2 | 1 | (A) ¬ (A) + # d + (C) |
| Десятичная коррекция аккумулятора | DA A | 11010100 | 1 | 1 | 1 | Если (А0…3)>9 или ((AC)=1),то(А0…3)¬ (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) ¬ (А4…7) + 6 |
| Вычитание из аккумулятора регистра и заёма | SUBB A, Rn | 10011rrr | 1 | 1 | 1 | (A) ¬ (A) - (C) - (Rn) |
| Вычитание из аккумулятора прямоадресуемого байта и заема | SUBB A, ad | 10010101 | 3 | 2 | 1 | (A) ¬ (A) - (C) - ((ad)) |
| Вычитание из аккумулятора байта РПД и заема | SUBB А, @Ri | 1001011i | 1 | 1 | 1 | (A) ¬ (A) - (C) - ((Ri)) |
| Вычитание из аккумулятора константы и заема | SUBB А, d | 10010100 | 2 | 2 | 1 | (A) ¬ (A) - (C) - #d |
| Инкремент аккумулятора | INC А | 00000100 | 1 | 1 | 1 | (A) ¬ (A) + 1 |
| Инкремент регистра | INC Rn | 00001rrr | 1 | 1 | 1 | (Rn) ¬ (Rn) + 1 |
| Инкремент прямоадресуемого байта | INC ad | 00000101 | 3 | 2 | 1 | (ad) ¬ (ad) + 1 |
| Инкремент байта в РПД | INC @Ri | 0000011i | 1 | 1 | 1 | ((Ri)) ¬ ((Ri)) + 1 |
| Инкремент указателя данных | INC DPTR | 10100011 | 1 | 1 | 2 | (DPTR ) ¬ (DPTR) + 1 |
| Декремент аккумулятора | DEC A | 00010100 | 1 | 1 | 1 | (A) ¬ (A) – 1 |
| Декремент регистра | DEC Rn | 00011rrr | 1 | 1 | 1 | (Rn) ¬ (Rn) – 1 |
| Декремент прямоадресуемого байта | DEC ad | 00010101 | 3 | 2 | 1 | (ad) ¬ (ad) – 1 |
| Декремент байта в РПД | DEC @Ri | 0001011i | 1 | 1 | 1 | ((Ri)) ¬ ((Ri)) - 1 |
| Умножение аккумулятора на регистр В | MUL AB | 10100100 | 1 | 1 | 4 | (B)(A) ¬ (A)*(В) |
| Деление аккумулятора на регистр В | DIV AB | 10000100 | 1 | 1 | 4 | (B).(A) ¬ (A)/(В) |
| Логическое И аккумулятора и регистра | ANL A, Rn | 01011rrr | 1 | 1 | 1 | (A) ¬ (A) AND (Rn) |
| Логическое И аккумулятора и прямоадресуемого байта | ANL A, ad | 01010101 | 3 | 2 | 1 | (A) ¬ (A) AND (ad) |
| Логическое И аккумулятора и байта из РПД | ANL A, @Ri | 0101011i | 1 | 1 | 1 | (A) ¬ (A) AND ((Ri)) |
| Логическое И аккумулятора и константы | ANL A, #d | 01010100 | 2 | 2 | 1 | (A) ¬ (A) AND #d |
| Логическое И прямоадресуемого байта и аккумулятора | ANL ad, A | 01010010 | 3 | 2 | 1 | (ad) ¬ (ad) AND (A) |
| Логическое И прямоадресуемого байта и константы | ANL ad, #d | 01010011 | 7 | 3 | 2 | (ad) ¬ (ad) AND #d |
| Логическое ИЛИ аккумулятора и регистра | ORL A, Rn | 01001rrr | 1 | 1 | 1 | (A) ¬ (A) OR (Rn) |
| Логическое ИЛИ аккумулятора и прямоадресуемого байта | ORL A, ad | 01000101 | 3 | 2 | 1 | (A) ¬ (A) OR (ad) |
| Логическое ИЛИ аккумулятора и байта из РПД | ORL A, @Ri | 0100011i | 1 | 1 | 1 | (A) ¬ (A) OR ((Ri)) |
| Логическое ИЛИ аккумулятора и константы | ORL A, #d | 01000100 | 2 | 2 | 1 | (A) ¬ (A) OR #d |
| Логическое ИЛИ прямоадресуемого байта и аккумулятора | ORL ad, A | 01000010 | 3 | 2 | 1 | (ad) ¬ (ad) OR (A) |
| Логическое ИЛИ прямоадресуемого байта и константы | ORL ad, #d | 01000011 | 7 | 3 | 2 | (ad) ¬ (ad) OR #d |
| Исключающее ИЛИ аккумулятора и регистра | XRL A, Rn | 01101rrr | 1 | 1 | 1 | (A) ¬ (A) XOR (Rn) |
| Исключающее ИЛИ аккумулятора и прямоадресуемого байта | XRL A, ad | 01100101 | 3 | 2 | 1 | (A) ¬ (A) XOR (ad) |
| Исключающее ИЛИ аккумулятора и байта из РПД | XRL A, @Ri | 0110011i | 1 | 1 | 1 | (A) ¬ (A) XOR ((Ri)) |
| Исключающее ИЛИ аккумулятора и константы | XRL A, #d | 01100100 | 2 | 2 | 1 | (A) ¬ (A) XOR #d |
| Исключающее ИЛИ прямоадресуемого байта и аккумулятора | XRL ad, A | 01100010 | 3 | 2 | 1 | (ad) ¬ (ad) XOR (A) |
| Исключающее ИЛИ прямоадресуемого байта и константы | XRL ad, #d | 01100011 | 7 | 3 | 2 | (ad) ¬ (ad) XOR #d |
| Сброс аккумулятора | CLR A | 11100100 | 1 | 1 | 1 | (A) ¬ 0 |
| Инверсия аккумулятора | CPL A | 11110100 | 1 | 1 | 1 | (A) ¬ NOT(A) |
| Сдвиг аккумулятора влево циклический | RL A | 00100011 | 1 | 1 | 1 | (An+1) ¬ (An), n=0÷6, (A0) ¬ (A7) |
| Сдвиг аккумулятора влево через перенос | RLC A | 00110011 | 1 | 1 | 1 | (An+1) ¬
(An), n=0÷6
(A0) ¬ (C), (C) ¬(A7) |
| Сдвиг аккумулятора вправо циклический | RR A | 00000011 | 1 | 1 | 1 | (An) ¬ (An+1), n=0÷6, (A7) ¬ (A0) |
| Сдвиг аккумулятора вправо через перенос | RRC A | 00010011 | 1 | 1 | 1 | (An) ¬
(An+1), n=0÷6
(A7) ¬ (C), (C) ¬(A0) |
| Обмен местами тетрад в аккумуляторе | SWAP A | 11000100 | 1 | 1 | 1 | (A0…3) ↔ (A4…7) |
| Сброс переноса | CLR С | 11000011 | 1 | 1 | 1 | (C) ¬ 0 |
| Сброс бита | CLR bit | 11000010 | 4 | 2 | 1 | (b) ¬ 0 |
| Установка переноса | SETB С | 11010011 | 1 | 1 | 1 | (C) ¬ 1 |
| Установка бита | SETB bit | 11010010 | 4 | 2 | 1 | (b) ¬ 1 |
| Инверсия переноса | CPL С | 10110011 | 1 | 1 | 1 | (C) ¬ NOT(C) |
| Инверсия бита | CPL bit | 10110010 | 4 | 2 | 1 | (b) ¬ NOT(b) |
| Логическое И бита и переноса | ANL С, bit | 10000010 | 4 | 2 | 2 | (C) ¬ (C) AND (b) |
| Логическое И инверсии бита и переноса | ANL С, /bit | 10110000 | 4 | 2 | 2 | (C) ¬ (C) AND (NOT(b)) |
| Логическое ИЛИ бита и переноса | ORL С, bit | 01110010 | 4 | 2 | 2 | (C) ¬ (C) OR (b) |
| Логическое ИЛИ инверсии бита и переноса | ORL С, /bit | 10100000 | 4 | 2 | 2 | (C) ¬ (C) OR (NOT(b)) |
| Пересылка бита в перенос | MOV С, bit | 10100010 | 4 | 2 | 1 | (C) ¬ (b) |
| Пересылка переноса в бит | MOV bit, С | 10010010 | 4 | 2 | 2 | (b) ¬ (C) |
| Длинный переход в полном объеме ПП | LJMP ad16 | 00000010 | 12 | 3 | 2 | (PC) ¬ ad16 |
| Абсолютный переход внутри страницы в 2 Кб | AJMP ad11 | a10a9a800001 | 6 | 2 | 2 | (PC) ¬ (PC) + 2, (PC0-10) ¬ ad11 |
| Короткий
относительный переход внутри страницы в 256 байт |
SJMP rel | 10000000 | 5 | 2 | 2 | (PC) ¬ (PC) + 2, (PC) ¬ (PC) +rel |
| Косвенный относительный переход | JMP @A+DPTR | 01110011 | 1 | 1 | 2 | (PC) ¬ (A) + (DPTR) |
| Переход, если аккумулятор равен нулю | JZ rel | 01100000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (A)=0, то (PC)¬(PC)+rel |
| Переход, если аккумулятор не равен нулю | JNZ rel | 01110000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (A)≠0, то (PC)¬(PC)+rel |
| Переход, если перенос равен единице | JC rel | 01000000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (С)=1, то (PC)¬(PC)+rel |
| Переход, если перенос равен нулю | JNC rel | 01010000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (С)=0, то (PC)¬(PC)+rel |
| Переход, если бит равен единице | JB bit, rel | 00100000 | 11 | 3 | 2 | (PC)¬(PC)+3, если (b)=l, то (PC)¬(PC)+rel |
| Переход, если бит равен нулю | JNB bit, rel | 00110000 | 11 | 3 | 2 | (PC)¬(PC)+3, если (b)=0, то (PC)¬(PC)+rel |
| Переход, если бит установлен, с последующим сбросом бита | JBC bit, rel | 00010000 | 11 | 3 | 2 | (PC) ¬
(PC) + 3, если (b)=1, то (b) ¬ 0 и (PC)¬ (PC) + rel |
| Декремент регистра и переход, если не нуль | DJNZ Rn, rel | 11011rrr | 5 | 2 | 2 | (PC) ¬
(PC) + 2, (Rn) ¬
(Rn) - 1,
если (Rn) ≠ 0, то (PC) ¬ (PC) + rel |
| Декремент прямоадресуемого байта и переход, если не нуль | DJNZ ad, rel | 11010101 | 8 | 3 | 2 | (PC) ¬
(PC) + 2, (ad) ¬
(ad) - 1, если (ad) ≠ 0, то (PC) ¬ (PC) + rel |
| Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно | CJNE A, ad, rel | 10110101 | 8 | 3 | 2 | (PC) ¬ (PC) + 3,если (A) ≠ (ad), то (PC) ¬ (PC) + rel,если (A) < (ad), то (C) ¬ 1, иначе (C) ¬ 0 |
| Сравнение
аккумулятора с константой и переход, если не равно |
CJNE A, #d, rel | 10110100 | 10 | 3 | 2 | (PC) ¬ (PC) + 3,если (A) ≠ #d, то (PC) ¬ (PC) + rel,если (A) < #d, то (C) ¬ 1, иначе (С) ¬ 0 |
| Сравнение регистра с константой и переход, если не равно | CJNE Rn, #d, rel | 10111rrr | 10 | 3 | 2 | (PC) ¬ (PC) + 3,если (Rn) ≠ #d, то (PC) ¬ (PC) + rel,если (Rn) < #d, то (C) ¬ 1, иначе (С) ¬ 0 |
| Сравнение байта в РПД с константой и переход, если не равно | CJNE @Ri,#d,rel | 1011011i | 10 | 3 | 2 | (PC) ¬ (PC) + 3,если ((Ri)) ≠ #d, то (PC) ¬ (PC) + rel,если ((Ri)) < #d, то (C) ¬ 1, иначе (C) ¬ 0 |
| Длинный вызов подпрограммы | LCALL adl6 | 00010010 | 12 | 3 | 2 | (PC) ¬
(PC) + 3, (SP) ¬
(SP) +1,
((SP)) ¬ (PC0…7), (SP) ¬ (SP) + 1, ((SP)) ¬ (PC8…15), (PC) ¬ ad16 |
| Абсолютный вызов подпрограммы в пределах страницы в 2 Кб | ACALL ad11 | a10a9a810001 | 6 | 2 | 2 | (PC) ¬
(PC) + 2, (SP) ¬
(SP) + 1,
((SP)) ¬ (PC0…7), (SP) ¬ (SP) + 1, ((SP)) ¬ (PC8…15), (PC0-10) ¬ ad11 |
| Возврат из подпрограммы | RET | 00100010 | 1 | 1 | 2 | (PC8…15) ¬
((SP)), (SP) ¬
(SP) - 1,
(PC0…7) ¬ ((SP)), (SP) ¬ (SP) – 1 |
| Возврат
из подпрограммы обработки прерывания |
RETI | 00110010 | 1 | 1 | 2 | (PC8…15) ¬
((SP)), (SP) ¬
(SP) - 1,
(PC0…7) ¬ ((SP)), (SP) ¬ (SP) – 1 |
| Пустая операция | NOP | 00000000 | 1 | 1 | 1 | (PC) ¬ (PC) + 1 |
Приложение Б
Подпрограмма основного опроса датчиков, передача сигнала на последовательный порт (модем) адреса датчика при его ;срабатывании.
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
продолжаем опрос
Подпрограмма инициализации
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 ;пересылка контрольного бита