Устройство координатной защиты

Автор: Пользователь скрыл имя, 21 Декабря 2011 в 20:05, курсовая работа

Описание работы

Таким образом основные функции МПУ:
а) прием и обработка сигнала с датчика угла;
б) отображение H на четырехразрядном цифровом индикаторе;
в) осуществлять установку/снятие защиты;
г) вывод сигналов управления при срабатывании защиты.
Взаимодействие МПУ с индикатором и органами управления представлено на рисунке 1.

Содержание

1 Функциональная спецификация и системные требования……………………...
2 Системно – алгоритмическое проектирование…………………………………..
3 Разработка аппаратных средств…………………………………………………..
4 Разработка программы…………………………………………………………...
5 Трансляция и автономная отладка программы…………………………………
6 Комплексная отладка программы………………………………………………
Список использованных источников……………………………………………...
Приложения А – Исходный текст програм

Работа содержит 1 файл

устройство координатной защиты.docx

— 211.84 Кб (Скачать)

                                 Рисунок 6 - Идеальный и реальный сигналы 

       Известны  аппаратные средства подавления «дребезга контактов» (с помощью RS-триггеров, одновибраторов или интегрирующих RC цепочек, устанавливаемых перед триггерами Шмитта). В устройствах на базе МК обычно используют программные способы подавления «дребезга контактов». Простейший из них основан на ограничении минимальных интервалов времени между последовательными операциями чтения порта ввода. Для надежного считывания состояний кнопки величина этих интервалов не должна быть меньше 15 – 30 мс.

       Реализовать подпрограмму задержки можно с использованием таймера TMR0 или программно. Выберем второй вариант, и в этом случае временную задержку обычно формируют с помощью программного счетчика, например, вычитающего:

    D15ms      movlw         .30                      

                movwf         Temp2                     

    _15ms      call               D500us         

                decfsz         Temp2,1          

                goto              _15ms                     

               return

    D500us   movlw          .151

               movwf         Temp1

    _500us    decfsz          Temp1,1

              goto              _500us

               return 

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

       Инициализация:

               clrf        PORTD

               movlw       Init_ACP

               movwf       ADCON0            ;Fosc/8,канал AN0,разрешить A/D

               BANKSEL     OPTION_REG

               movlw INIT_PA  movwf TRISA^80h         ;все линии - ввод

               movlw       Init_OPT         

               movwf       OPTION_REG^80h    ;включить подтягивающие резисторы

               movlw       Init_AD1         

               movwf       ADCON1^80h        ;включены линии PORTE, результат АЦП влево

               movlw       Init_PB

                      movwf       TRISB^80h         ;бит 3 - вывод

                      movlw       Init_PD

               movwf       TRISD^80h         ;все линии на вывод

               movlw       Init_PE

               movwf       TRISE^80h         ;линии 1-0 – вывод

               BANKSEL     PORTD

               call        Control_MC14489   ;инициализация MC14489 

       Инициализация микрокантролера:

           bcf                Cs

           movlw          b'00000001'

           call                Send8

           bsf                 Cs

           return 

       Инициализация ячеек памяти:

               Clrf     Hmax_L

               clrf     Hmax_H

               movlw    0x40

               movwf    Hmax_L

               movlw    0x1F

               movwf    Hmax_H

               clrf     ugol_L

               clrf     ugol_H

               clrf     H_Lbyte

               clrf     H_Hbyte

               clrf     L

               clrf     alpha       

               clrf     flag    
 

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

              CBLOCK 0x20

             temp

             count

               Cnt             ;задержка для АЦП

              R0              ;точки 7сегм.

              R1              ;разряды 3-2 7сегм.

              R2              ;разряды 1-0 7сегм.

               L_byte

             H_byte

             Indval  ;слово в MC14489       

             Cntind  ;счетчик разрядов MC14489

            Temp1;задержка 1 

             Temp2;задержка 2 

               L               ;значение длины стрелы

               alpha           ;угол  подъема стрелы

               Hmax_L          ;максимально значение параметра Н мл. байт

               Hmax_H          ; максимально значение параметра Н ст. байт

               ugol_L          ;синус  угла мл. байт

               ugol_H          ;синус  угла ст. байт

               flag            ;флаг состояний

               H_Lbyte         ;рассчетное  значение Н мл. байт

               H_Hbyte         ;рассчетное  значение Н ст. байт

               ENDC 

    Константы:

    INIT_PA      EQU   b'00111111' ;все линии ввод

    Init_OPT     EQU   b'01000000';включить подтягивающие резисторы

    Init_PB      EQU   b'11110111' ;биты 3 - вывод   

    Init_PE      EQU   b'00000100' ;биты 1,0 - вывод 

    Init_AD1    EQU b'00000100' ;включены линии PORTE, результат АЦП влево

    Init_ACP        EQU   b'01000001'   ;Fosc/8,канал AN0,разрешить A/D

    Init_PD         EQU   b'00000000'   ;все линии  на вывод 

    Битовые переменные:

    #define RB1 PORTB,1;кнопка "Установка/снятие защиты

    #define Data_in PORTE,1;сигналы MC14489 

    #define Clk     PORTE,0      

    #define Cs PORTB,3  #define Led0 PORTD,0     ;защита установлена/снята

               #define Led1 PORTD,1     ;превышение значения Hmax 

Вычисление  параметра H будет производить подпрограмма raschetH. Она основана на последовательном сложении 8 раз младших байтов ugol_L с учётом флага С и старших байтов ugol_H.

       raschetH

               movf    ugol_L,w

               movwf   H_Lbyte

               movf    ugol_H,w

               movwf   H_Hbyte 

               movlw   .7

               movwf   L

       umn

               movf    ugol_L,w  

               addwf   H_Lbyte,f (младший с младшим сложили)

               btfss   STATUS,C (если переполнено идём на старший с добавлением 1)

               goto    sl_st_bt

               incf    H_Hbyte (переполнение учли в старших)

       sl_st_bt      

               movf    ugol_H,w

               addwf   H_Hbyte,f (старшие со старшими)

               decfsz  L (декремент, пропускаем если 0)

               goto    umn

               return                       
 

       5 Трансляция и автономная отладка программы

       Отладка программ микропроцессорной системы  проводится, как правило, на тех же ЭВМ, на которых велась разработка программ, и на том же языке программирования, на котором написаны отлаживаемые программы, и может быть начата на ЭВМ даже при отсутствии аппаратуры МПС. При  этом в системном программном  обеспечении ЭВМ должны находиться программы (интерпретаторы или эмуляторы), моделирующие функции отсутствующих  аппаратных средств. Так, разработка и  автономная отладка программных  средств может вестись на больших  ЭВМ, мини-ЭВМ, микро-ЭВМ, система команд которых не совпадает с системой команд используемого микропроцессора. Кроме того, при отладке программ может отсутствовать внешняя  среда микропроцессорной системы, ее также необходимо моделировать.

       Проверка  корректности программ, то есть проверка соответствия их внешним спецификациям, осуществляется тестированием. Программы  проверяются на функционирование с  различными исходными данными. Результаты функционирования программ сравниваются с эталонными значениями.

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

       В нашем случае, как для разработки программы, так и для автономной ее отладки использовался специализированный пакет программ MPLAB IDE фирмы Microchip.

     Программу целесообразно отлаживать в режиме анимации (быстрый пошаговый режим). Для имитации нажатия кнопок RB1, будем использовать асинхронные стимулы (Debugger> Stimulus>New Workbook >Asynch). Результат аналого-цифрового преобразования будем задавать в окне Wotch в регистр АЦП ADRESH. Для этого поставим точку останова на окончании преобразования АЦП.

       В окне Watch будем наблюдать за изменением регистра  PORTD, R1,R2, H_Lbyte, H_Hbyte. При нажатии на кнопку RB1 будет устанавливаться flag и содержимое Hmax_L и H_max_H будет изменять на текущее значение H_Hbyte и H_Lbyte соответственно. При повторном нажатии на кнопку RB1 flag будет сбрасываться и ячейки H_Hbyte, H_Lbyte будет записываться значение 1000, 0000 соответственно. Полная проверка работы основного цикла программы потребует много времени. Ускорить этот процесс можно путем установки нужных значений угла. Возможные значения этих величин приведены в таблице 6. 
 
 
 
 

       Таблица 6 – Результаты автономной отладки

      alpha H_Hbyte H_Lbyte R1 R2
      0 0 0 0 0
      1 0 1 0 1
      2 0 10 0 2
       
      60 110 1001 6 9
      90 1000 0 8 0

Информация о работе Устройство координатной защиты