Автор работы: Пользователь скрыл имя, 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
15 А. Д. Шишкин. Методическое
пособие для выполнения дипломного и курсового
проектирования. СПб,-2008. изд. РГГМУ.
Приложение А
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Пересылка в аккумулятор из регистра (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 ;пересылка контрольного бита
Информация о работе Система охранной сигнализации промышленного объекта на базе разнотипных датчиков