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

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

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

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

Содержание

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

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

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

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

       Сформируем  константы для загрузки в управляющие  регистры:

       Init_PE EQU b’00000100’ (биты 1,0 – вывод)

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

       Диаграммы сигналов CS, CLK, а также форматы слова конфигурации  для MC14489BP и слов данных приведены на рисунке 3. Слово конфигурации длиной один байт определяет:

       - режим потребляемой мощности (C0);

       - режимы декодирования разрядов (С1 – С7). Иницилизация MC14489 выполняется подпрограммой «подпрограмма инициализации MC14489» 
 

       

 

                              Рисунок 3 – Диаграммы сигналов 

       В соответствии с электрической схемой МПУ кнопки «Установка/снятие защиты» подключена к линиии 1 порта PORTB . Обозначим соответствующий разряд порта RB1. Активному (нажатому) состоянию кнопки соответствует низкий потенциал на линии порта PORTB. Пассивному (отжатому) состоянию кнопки соответствует высокий потенциал, который обеспечивается встроенными подтягивающими резисторами. Включаются подтягивающие резисторы установкой разряда –RBPU=0 в регистре OPTION_REG. Для настройки модуля PORTB  воспользуемся таблицей 2. Настройка линий определяется содержимым управляющего регистра TRISB. 

       Таблица 2 – Регистры и биты, связанные  с работой PORTB

      Адрес Имя Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
      06h, 106h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
      86h, 186h TRISB Регистр направления данных PORTB
      81h, 181h OPTION_REG -RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
 

       Сформируем  константы для загрузки в управляющие  регистры:

       Init_OPT EQU b’01000000’ (включение подтягивающего резистора);

       Init_PB EQU b’11110111’ (бит 3 вывод); 

       В качестве индикации включения /отключения защиты и сигнализации о срабатывании защиты будем использовать светодиоды, которые в

соответствии  с электрической схемой МПУ, подключены к 0 – 1 линиям порта PORTD. Для настройки модуля PORTD  воспользуемся таблицей 4. Настройка линий определяется содержимым управляющего регистра TRISD. 

       Таблица 4 – Регистры и биты, связанные с работой PORTD

      Адрес Имя Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
      08h PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0
      88h TRISD Регистр направления данных PORTD
      89h TRISE IBF OBF IBOV PSPMODE - Рег. напр. данных PORTE
 

       Сформируем  константу для загрузки в управляющий регистр:

       INIT_PD  EQU b’00000000’ (все линии порта на вывод).

       Кроме трех портов в проекте используется встроенный модуль 10-разрядного АЦП. Для работы с модулем АЦП в микроконтроллере используется 4 регистра:

       - регистр результата ADRESH (старший  байт);

       - регистр результата ADRESL (младший  байт);

       - регистр управления ADCON0;

       - регистр управления ADCON1.

       Для настройки модуля АЦП  воспользуемся таблицей 5 . Настройка работы определяется содержимым управляющих регистров ADCON0 и ADCON1. 

       Таблица 5 – Регистры и биты, связанные с работой модуля АЦП

       

         

       Сформируем  константы для загрузки в управляющие  регистры:

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

         Init_ACP  EQU b' 01000001' (Fosc/8, канал AN0, включить модуль АЦП);

         Init_AD1  EQU b' 00000100' (результат A/D преобразования влево, канал AN0 и AN1 аналоговые). 

       4 Разработка программы 

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

       а) ввод данных с модуля АЦП;

       б) формирование выходных сигналов;

       в) нажатие кнопки S1 в произвольные моменты времени.

       Для всех основных событий подходит программная  реализация.

Представим  принятые решения в виде схемы  представленной на рисунке 4.

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

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

       Перейдем  к формированию исходного текста программы. Текст программы должен начинаться с директивы установки адреса сброса 0x000. Чтобы использовать средства внутрисхемной отладки, следующей командой должна быть nop. Так как тексты всех подпрограмм принято размещать до ссылок на них в основной программе, то следующей должна быть команда перехода на начало программы. Здесь первой командой должна быть команда запрета прерываний на время инициализации. Необходимо выполнить инициализацию всех используемых встроенных модулей МК, контроллера MC14489 и ячеек памяти. Для вывода информации используем подпрограмму, которую назовем Display.

          Так как МПУ должен однократно реагировать на нажатие кнопоки, то переход на начало цикла возможен только после отпускания кнопки. Поэтому опрос кнопки должен выполняться дважды: сначала анализ на нажатое состояние, а затем анализ на отжатое состояние.

       Ниже  приводится текст основы программы, полученной с учетом принятых решений. 

       ORG               0x000                ;вектор сброса

       nop

       goto                Begin                 ;переход на начало программы

       Все используемые подпрограммы

       Операторы инициализации модулей МК

       Операторы инициализации MC14489

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

       Основной цикл

         END 

       Полный  текст программы приведен в приложении А. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

       

 

       Рисунок 4 – Алгоритм программы 
 

       Информация,  выводимая в контроллер индикаторов, должна быть представлена в последовательном коде. Информационное слово, изображенное на рисунке 5, состоит из 24 разрядов, из них младшие 20 разрядов (D0 – D19) содержат пять тетрад кода отображаемых символов, разряды D20 – D22 управляют сегментами h (точка), разряд D23 – управляет яркостью свечения сегментов. Так как используются только четыре индикатора, то разряды D16-D19 можно задавать произвольно. 

       

 

       Рисунок 5 – Информационное слово 

       Для вывода на индикаторы необходимо показания значений подъема стрелы H упаковать в два байта (в BCD), для их хранения используем ячейки:

       - R0 – управление децимальными точками;

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

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

       Так как данные должны передаваться в  последовательном коде, необходим буфер данных Indval, используемый как сдвигающий регистр, и счетчик разрядов Cntind. Тогда вывод одного байта можно свести к загрузке буфера Indval, инициализации счетчика Cntind и последовательности сдвигов буфера влево, пока Cntind ≠ 0. После сдвига выводимый разряд байта будет находиться в разряде STATUS<C>. При этом каждый сдвиг должен сопровождаться формированием фронта синхроимпульса Clk. При условии, что байт находится в аккумуляторе w, алгоритм вывода можно представить в виде подпрограммы Send8:

    Send8       bcf              Clk

                           movwf        Indval

                           movlw         8

                           movwf       Cntind

    SendLoop     bcf              Data_in

                           rlf               Indval,f

                           btfsc           STATUS,C

                          bsf               Data_in 

                       nop

                           bsf              Clk

                           nop

                           bcf              Clk

                           decfsz        CntInd,f

                           goto            SendLoop

                           return 

       Процесс вывода информации можно представить, как последовательный вывод трех восьмиразрядных слов при выборе контроллера MC14489 (CS=0): 

      Display      bcf              Cs

                   movlw        30h            

                   call              Send8             

                   movf           R1,w            

                   call              Send8

                   movf           R2,w                         

                   call              Send8             

                  bsf               Cs

                   return 

       Все механические кнопки имеют одно негативное свойство, известное как “дребезг контактов”, которое обусловлено  колебаниями упругих контактов  при их замыкании и размыкании. Длительность колебаний составляет всего несколько миллисекунд. При этом вместо “чистого” прямоугольного импульса получается искаженный импульс или пачка импульсов. Идеальный и реальный сигналы, формируемые при нажатии и отпускании кнопки, представлены на рисунке 6. 

                       

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