В алгоритме обработки прерывание в первую очередь осуществляется сохранение контекста, т.е. содержимого аккумулятора и регистра STATUS.
Далее производится опрос источников прерывания: прерывание от источника питания, прерывание от аварийного датчика, прерывание от последовательного порта, прерывание от таймера, прерывание оператором. прерывание от других источников. В случае прерывания от одного из источников осуществляется переход на подпрограмму, где производится обработка прерывания. После обработки прерывания восстанавливается контекст и осуществляется выход из подпрограммы обработки прерывания.
Рисунок 22 - Блок-схема общего алгоритма работы микропроцессорной системы
управления
Работа блока чтения информации с цифровых датчиков осуществляется по
следующему алгоритму, приведенному на рисунке 23.
Рисунок
23 - Алгоритм работы блока чтения информации с аналоговых датчиков
После считывания информации с цифровых датчиков, происходит вычисления булевой функции f(X1…X5). Далее система оценивает полученную в предыдущем блоке информацию f(x). Если функция не равна 1, то происходит переход к считыванию и обработке аналоговой информации. В случае равенства 1 происходит выработка сигнала Y = 1, длительностью T1=120 мкс. Затем следует конец обработки цифровой информации.
Для формирования сигналов Y1 используем таймер TMR1. Предделитель выбираем 1:1. На таймер приходит частота 20МГц.
Произведем расчет числа машинных циклов, которые потребуются для формирования импульса длительностью T1=120 мкс.
мц = 4·T,
где Т = 1/Fosc, тогда Тмц = 4/Fosc= 4/(20·106)=0,2 мкc.
Необходимое число машинных циклов:
= tимп/Tмц ;
=600.
Данное число в шестнадцатеричной системе счисления N = 258 h. Так как
таймер 16-ти разрядный, то FFFF-285=FD7A, полученное значение записываем в регистр TMR1.
Работа блока чтения информации с аналоговых датчиков осуществляется по
следующему алгоритму, приведенному на рисунке 24.
Рисунок
24 - Алгоритм работы блока чтения информации с аналоговых датчиков
Вначале
осуществляется первичная инициализация АЦП. После чего происходит считывание
информации с АЦП, которая была получена от аналоговых датчиков, и дальнейшая ее
запись по портам ввода-вывода в регистры микроконтроллера. Происходит
считывание 8-и разрядного кода установки (величина К), который приходит с
пульта управления. Затем происходит вычисление
,
по заданию. Далее происходит сравнение функции N с константой Q, которая
храниться в регистре микроконтроллера. Если N < Q, то осуществляется
выработка двоичного управляющего воздействие Y2. Если же функция N1 > K, то
осуществляется переход к выработке двоичного управляющего воздействие Y3. После
этого идет завершение данного алгоритма.
Для формирования сигналов Y2 и Y3 будем использовать таймер TMR1. Предделитель выбираем 1:1. На таймер приходит частота 20 МГц.
Произведем расчет числа машинных циклов, которые потребуются для
формирования импульса длительностью T2=318 мкс.
Tмц = 4·T,
где Т = 1/Fosc, тогда Тмц = 4/Fosc= 4/(20·106)=0,2 мкc.
Необходимое число машинных циклов:
N = tимп/Tмц ;
N=1590.
Данное число в шестнадцатеричной системе счисления N = 636 h. Так как таймер 16-ти разрядный, то FFFF-636=F9C9, полученное значение записываем в регистр TMR1.
Аналогично рассчитаем константу для Т3:
T3=395 мкс;=1975=7B7 h;B7=F848.
Работа блока обмена данными по последовательному каналу связи
осуществляется по следующему алгоритму, приведенному на рисунке 25.
Рисунок
25 - Алгоритм обмена данными по последовательному каналу связи
Вначале
происходит начальная инициализация последовательного порта USART:
устанавливается скорость передачи порта (115200 бит/с), разрешение прерывания
от USART и т.д. Осуществляется обработка принятой информации. Затем происходит
анализ полученной информации и если был принят символ «D», то передается в
канал значение Y1. Если символ не был принят, то осуществляется выход из
подпрограммы прерывания.
Рисунок
26 - Алгоритм обмена информацией по последовательному каналу связи
В блоке 1 опрашивается тумблерный регистр пульта управления и формируется
код установки К. В блоке 2 сформированный код записывается по заранее заданному
в программе адресу. В блоке 3 проверяется наличие прерывания от аварийного
датчика. В блоке 4 на пульте управления включается аварийная сигнализация. В
блоке 5 обеспечивается выдача на индикацию сигналов двоичных датчиков X1-X5. В
блоке 6 обеспечивается выдача на индикацию цифрового кода N1, поступающего с
АЦП. В блоке 7 микроконтроллер переводится в режим пониженного
энергопотребления. В блоке 8 проверяется наличие прерывания от ПУ. В блоке 9
обеспечивается выдача на индикацию значения Y1.В блоке 10 обеспечивается выдача
на индикацию результат сравнения N>K.В блоке 11 обеспечивается выдача на
индикацию сигналов двоичных датчиков X1-X5. В блоке 12 обеспечивается выдача на
индикацию константы K. В блоке 13 выход из прерывания на начало программы
обработки.
В блоке 1 вырабатывается сигнал Y1 установки внешних устройств в исходное состояние.
В блоке 2 вырабатывается сигнал для отображения аварийной световой индикации на ПУ.
В блоке 3 в последовательный канал связи передается код символа «!»
В блоке 4 микроконтроллер переводится в режим пониженного
энергопотребления.
Рисунок
27 - Алгоритм обработки прерывания от блока питания
Вначале вырабатывается сигнал Y5 установки внешних устройств в исходное
состояние. Сигнал Y5 представляет собой два прямоугольных импульса
длительностью 30 мкс, следующие с интервалом в 30 мкс. Затем в последовательный
канал связи передается код символа «!». После выполнения указанных действий
микроконтроллер переводится в режим пониженного энергопотребления.=30 мкс;
(Прерывание при отказе источника питания)=150=96h;=FF69.
Для расчета электрических параметров микропроцессорной системы управления
составим сводную таблицу основных электрических параметров таких как мощность
напряжения и ток.
Таблица 3 - Токи, потребляемые микросхемами
Потребитель
Количество
Iпотр, мА
∑Iпотр, мА
+ 15 В
AD202
2
50
100
Итого
100
+ 5 В
КР1533ЛН1
1
3,8
3,8
PIC16F877A
1
43,0
43,0
MCP2551
1
75
75
PCA9535
1
160
160
PCF8574
1
100
100
КИПД05А
16
5,0
80,0
КР1533ЛА4
3
2,2
6,6
Итого
189,6
+7.5 В
AD202
2
50
100
Итого
100
Таким образом необходимо построить схему блока питания, который выдает
напряжение + 15 В, +5В и напряжение +7.5 В. Потребляемая от источника + 15 В
мощность составляет 1.5 Вт, от источника + 5 В - 2.34 Вт, а от источника +7.5В
- 0.75 Вт. Таким образом, мощность, потребляемая всем устройством составляет
4.59 Вт.
Блок питания должен обеспечивать электроэнергией микропроцессорную систему управления по двум каналам - каналу +5В, каналу +15В и каналу +7.5В.
Для питания проектируемой микропроцессорной системы управления используем
схему блока питания представленной на рисунке 26. Блок питания обеспечивает
электроэнергией микропроцессорную систему управления по трем каналам - каналу +
5 В, каналу + 15 В и каналу +7.5В. В цепи питания +5 В предусмотрен резервный
источник питания в виде батарейки GB1 типа 6F22.
Рисунок
28 - Схема блока питания
В качестве трансформатора Т1 в данной схеме использован трансформатор
ТПП-224-127/220-50 . Этот трансформатор имеет номинальную мощность 5,5 Вт.
Напряжения между обмотками 11-12, 13-14 составляет 5В, а между обмотками 15-16
- 10 В. Для получения напряжения 15В соединим обмотки 13-14 и 15-16
последовательно. Для выпрямления напряжения в схеме применены диодные мосты VD1 и VD2 типа КЦ407А. Для стабилизации напряжений используются
интегральные стабилизаторы. В качестве стабилизатора напряжения +15В и +7.5В
используется микросхема DA2 типа КР142ЕН6А, а для получения напряжения + 5 В в
данной схеме используется интегральный стабилизатор DA1 типа КР142ЕН5А.
Заключение
В данной курсовой работе разработана микропроцессорная система управления
объектом, включающая микроконтроллер (PIC16F877), аналого-цифровой
преобразователь, схемы сопряжения и логические микросхемы. В систему входит
пульт управления, с помощью которого оператор может управлять работой системы.
Также была составлена программа, обеспечивающая выполнение алгоритма
управления. Были получены навыки в проектировании микропроцессорных управляющих
систем.
Список литературы
1. Сташин, В.В. Проектирование цифровых устройств на однокристальных микроконтроллерах / В.В. Сташин, А.В. Уросов, О.Ф.Мологонцева - М.: Энергоатомиздат, 1990. - 224 с.
. Бродин, В.Б. Системы на микроконтроллерах и БИС программируемой логики / В.Б. Бродин, А.В.Калинин - М.: Издательство ЭКОМ, 2002. - 400 c.
. Яценков, В.С. Микроконтроллеры Microchip. Практическое руководство / В.С. Яценков - М.: Горячая линии - Телеком, 2002. - 296 с.
. Тавернье,
К. PIC-микроконтроллеры. Практика
применения: Пер. с фр. /К. Тавернье - М.: ДМК Пресс., 2004. - 272 с.
Приложение
ЛИСТИНГ УПРАВЛЯЮЩЕЙ ПРОГРАММЫ
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT VALUE
00001 #include <p16f877a.inc>
00001 LIST
00002
00003
00004 ; MPASM PIC16F877A processor include
00005 ; 00006 ; (c) Copyright 1999-2013 Microchip Technology, All rights reserved
00007
00008
00566 LIST
00002 ;
00003 ;ОБЪЯВЛЕНИЕ КОНСТАНТ
00004 ;
00005 DEL_ADC EQU D'100'
00000044 00006 KOD_D EQU 'D'
00007 ;
;ОБЪЯВЛЕНИЕ РЕГИСТРОВ
00009 ;
CBLOCK 0x20
00000020 00011 N1; РЕГИСТР ВЕЛИЧИНЫ АНАЛОГОВОГО СИГНАЛА ОТ ДАТЧИКА N1
00000021 00012 N2; РЕГИСТР ВЕЛИЧИНЫ АНАЛОГОВОГО СИГНАЛА ОТ ДАТЧИКА N2
00000022 00013 N; РЕГИСТР РЕЗУЛЬТАТА ВЫЧИСЛЕНИЯ АНАЛОГОВОЙ ФУНКЦИИ N
00000023 00014 N2_TMP; РЕГИСТР ДЛЯ ХРАНЕНИЯ РЕЗУЛЬТАТА ВЫЧИСЛЕНИЯ N2-K
00000024 00015 Y2
00000025 00016 Y3; РЕГИСТРЫ УПРАВЛЯЮЩИХ СИГНАЛОВ Y2,Y3
00000026 00017 KREG;РЕГИСТР ДЛЯ ХРАНЕНИЯ 8-РАЗРЯДНОГО K
00000027 00018 Q;КОНСТАНТА ХРАНЯЩАЯСЯ ВО ВНУТРЕННЕЙ ПАМЯТИ
00000028 00019 IND1;РЕГИСТР ИНДИКАЦИИ 1
00000029 00020 IND2;РЕГИСТР ИНДИКАЦИИ 2
0000002A 00021 Y1; РЕГИСТР РЕЗУЛЬТАТА ВЫЧИСЛЕНИЯ ЦИФРОВОЙ ФУНКЦИИ Y1
0000002B 00022 W_TEMP;КОПИЯ АККУМУЛЯТОРА
0000002C 00023 STATUS_TEMP;КОПИЯ РЕГИСТРА СОСТОЯНИЯ
0000002D 00024 X1
0000002E 00025 X2
0000002F 00026 X3
00000030 00027 X4; Х1-Х4-ХРАНЯТ ЗНАЧЕНИЯ ЦИФРОВЫХ ДАТЧИКОВ
00000031 00028 X_BUF; ДОПОЛНИТЕЛЬНЫЙ РЕГИСТР ДЛЯ ЦИФРОВЫХ ДАТЧИКОВ
00000032 00029 IBUF; РЕГИСТР ДЛЯ ХРАНЕНИЯ ЗНАЧЕНИЙ X1-X5
00000033 00030 XAND;РЕЗУЛЬТАТ ВЫЧИСЛЕНИЯ X1*X2*X3*X4*X5 НА СЛУЧАЙ ПРЕРЫВАНИЯ
00000034 00031 XIOR;РЕЗУЛЬТАТ ВЫЧИСЛЕНИЯ X1VX2VX3VX4VX5 НА СЛУЧАЙ ПРЕРЫВАНИЯ
00000035 00032 COUNTER_ADC; СЧЁТЧИК ЗАДЕРЖКИ ДЛЯ АЦП
00000036 00033 REG_1
00000037 00034 REG_2
00000038 00035 REG_3; ДОПОЛНИТЕЛЬНЫЕ РЕГИСТРЫ ДЛЯ ФОРМИРОВАНИЯ АВАРИЙНОЙ СИГНАЛИЗИЦИИ
00036 ENDC
00037 ;
;МАКРОКОМАНДЫ
00039 ;
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT VALUE
00040 BANC0 MACRO ; ВЫБОР БАНКА 0
00041 BCF STATUS, RP0
00042 BCF STATUS, RP1
00043 ENDM
00044 BANC1 MACRO ; ВЫБОР БАНКА 1
00045 BSF STATUS, RP0
00046 BCF STATUS, RP1
00047 ENDM
00048 RES_VECT CODE 0x0000; ВЕКТОР СБРОСА
0000 2??? 00049 GOTO START; ПЕРЕХОД НА НАЧАЛО ПРОГРАММЫ
00050 MAIN_PROG CODE
00051 ;
;ОБРАБОТКА ПРЕРЫВАНИЙ
00053 ;
00054 ORG 0x04
00055 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
00AB 00056 MOVWF W_TEMP
0007 0803 00057 MOVF STATUS,W
00AC 00058 MOVWF STATUS_TEMP; СОХРАНЕНИЕ АККУМУЛЯТОРА И РЕГИСТРА СОСТОЯНИЯ
;
;ОПРЕДЕЛЕНИЕ ИСТОЧНИКА ПРЕРЫВАНИЯ
00061 ;
188B 00062 BTFSC INTCON,INTF; ПРЕРЫВАНИЕ ПО ВХОДУ INT
A 2??? 00063 GOTO INTER_INT
B 1A8C 00064 BTFSC PIR1,RCIF; ПРЕРЫВАНИЕ ОТ USART (ПРЕРЫВАНИЯ ОТ ТЕРМИНАЛА ВНЕШНЕЙ ЭВМ)
C 2??? 00065 GOTO INTER_USART
00066 ;
;ОПРЕДЕЛЕНИЕ ПРЕРЫВАНИЙ ПО ВХОДУ INT
00068 ;
000D 00069 INTER_INT
00070 BANC0
D 1283 M BCF STATUS, RP0
000E 1303 M BCF STATUS, RP1
F 1A86 00071 BTFSC PORTB,5; ПРЕРЫВАНИЕ ПО СИГНАЛУ ОТКАЗА ИСТОЧНИКА ПИТАНИЯ
2??? 00072 GOTO INTER_PIT
1809 00073 BTFSC PORTE,0; ПРЕРЫВАНИЕ ПО СИГНАЛУ АВАРИЙНОГО ДАТЧИКА
0012 2??? 00074 GOTO INTER_AVD
1C07 00075 BTFSS PORTC,0; ПРЕРЫВАНИЕ ОТ ПУ
0014 2??? 00076 GOTO INTER_PU
00077 ;
;ПРЕРЫВАНИЕ ОТ ИСТОЧНТИКА ПИТАНИЯ
00079
0015 00080 INTER_PIT
108B 00081 BCF INTCON,INTF; СБРОС ФЛАГА5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 3OBJECT CODE LINE SOURCE TEXT VALUE
00082 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
1606 00083 BSF PORTB,4; 1 НА Y5
018F 00084 CLRF TMR1H; ОЧИСТКА TMR1H
A 018E 00085 CLRF TMR1L; ОЧИСТКА TMR1L
001B 30FF 00086 MOVLW 0xFF; ЗАНЕСТИ В TMR1 30МКС ЗНАЧЕНИЕ Т1
C 008F 00087 MOVWF TMR1H; ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
D 3069 00088 MOVLW 0x69
E 008E 00089 MOVWF TMR1L; ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
F 1410 00090 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
0020 00091 T5_WAIT1
1C0C 00092 BTFSS PIR1, TMR1IF
2??? 00093 GOTO T5_WAIT1
140C 00094 BSF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ TMR1
1206 00095 BCF PORTB,4; 0 НА Y5
30FF 00096 MOVLW 0xFF; ЗАНЕСТИ В TMR1 30МКС ЗНАЧЕНИЕ Т1
0025 008F 00097 MOVWF TMR1H; ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
3069 00098 MOVLW 0x69
008E 00099 MOVWF TMR1L; ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
1410 00100 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
0029 00101 T5_WAIT2
1C0C 00102 BTFSS PIR1, TMR1IF
A 2??? 00103 GOTO T5_WAIT2
B 140C 00104 BSF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ TMR1
C 1606 00105 BSF PORTB,4; 1 НА Y5
D 30FF 00106 MOVLW 0xFF; ЗАНЕСТИ В TMR1 30МКС ЗНАЧЕНИЕ Т1
002E 008F 00107 MOVWF TMR1H; ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
F 3069 00108 MOVLW 0x69
008E 00109 MOVWF TMR1L; ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
1410 00110 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
0032 00111 T5_WAIT3
1C0C 00112 BTFSS PIR1, TMR1IF
2??? 00113 GOTO T5_WAIT3
140C 00114 BSF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ TMR1