Устройство координатной защиты
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение
высшего
профессионального образования
ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Электроэнергетический факультет
Кафедра промышленной электроники и
информационно-измерительной
техники
КУРСОВОЙ ПРОЕКТ
по дисциплине
«Отладочные средства микропроцессорных систем»
Устройство координатной защиты
Пояснительная
записка
ГОУ ОГУ
210106.4111.10 ПЗ
Оренбург
2011
Министерство образования и науки Российской Федерации
ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Электроэнергетический факультет
Кафедра промышленной электроники и
информационно-измерительной техники
Задание
на курсовой проект
Устройство
координатной защиты
Исходные данные: Ввод угла подъема стрелы – α
Длинна стрелы L –8 м
Вычисление H = L ∙ Sin α – подъема стрелы;
Сравнение H < Hmax;
Вывод значений H на семисегментный четырехразрядный индикатор;
Элементная база – PIC16F877.
Разработать: 1) Схему электрическую
Да
Ру
Ис
ст
Срок защиты проекта " " декабря 2010г.
Пояснительная записка содержит страницы, рисунков, таблиц и 3 приложения.
В
данном курсовом проекте рассматривается
задача разработки устройства координатной
защиты. Программа была написана и отлажена
с помощью программы MPLAB IDE.
Содержание
1 Функциональная
спецификация и системные
2 Системно –
алгоритмическое
3 Разработка аппаратных средств…………………………………………………..
4 Разработка
программы………………………………………………………
5 Трансляция и автономная отладка программы…………………………………
6 Комплексная
отладка программы…………………………………
Список использованных источников……………………………………………...
Приложения А – Исходный текст программы……………………………………
Приложение Б
– Загрузочный код программы………
Приложение В
– Схема электрическая принципиальная………………………...
1 Функциональная спецификация и системные требования
Устройство координатной защиты предназначено для контроля подъема стрелы. Будем считать, что в соответствии с требованиями задания устройство будет отображать текущее значение подъём стрелы на четырехразрядном семисегментном индикаторе. В случае превышения допустимого значения защита должна блокировать работу системы. Устройство позволяет изменять значения угла подъема стрелы α с помощью датчика угла.
При включении устройство будет принимать значения угла подъема и, производить расчет значений H – подъема стрелы, отображать значения H на индикаторе, осуществлять независимую установку и снятие защиты Hmax с помощью кнопоки, выполнять сравнение H < Hmax и сигнализировать о нарушении данного условия с помощью светодиода.
Таким образом основные функции МПУ:
а) прием и обработка сигнала с датчика угла;
б) отображение H на четырехразрядном цифровом индикаторе;
в) осуществлять установку/снятие защиты;
г) вывод сигналов управления при срабатывании защиты.
Взаимодействие МПУ с индикатором и органами управления представлено на рисунке 1.
Рисунок 1
2
Системно – алгоритмическое
проектирование
Как и разработка любого электронного устройства, разработка МПУ начинается с разработки структурной или функциональной схемы. Устройство координатной защиты обязательно должно содержать устройство вычисления подъёма стрелы H, а также устройства сравнения подъёма стрелы Н с его допустимыми значениями и позволять задавать значения угла подъема стрелы α.
Для установки-снятия защит будем использовать кнопку ‘’Установка-снятие защиты’’.
Следующий блок – устройство индикации. Выберем в качестве устройства отображения заданного угла подъёма светодиодные семисегментные индикаторы.
Для управления семисегментными индикаторами
принято решение использовать специализированный
контроллер MC14489BP. Контроллер MC14489BP принимает
от МК в последовательном двоичном коде
символы, выполняет преобразование в семисегментный
код и управляет работой индикаторов.
Таким образом, блок индикации будет состоять
из контроллера MC14489BP и собственно индикаторов.
Структурная схема устройства координатной
защиты приведена на рисунке 2.
Рисунок
2 – Структурная схема устройства
координатной защиты
В соответствии с принятыми решениями МК должен выполнять большинство основных функций МПУ, включая:
1) приём значения α с датчика угла;
2) расчет значений подъема стрелы (H = L ∙ Sin α);
3) установку ограничений Hmax;
4) сравнение H < Hmax ;
5) отображение значений H на индикаторе;
Теперь
необходимо решить, какие функции
будут выполняться аппаратно
периферийными модулями МК, а какие
функции будут выполняться
3
Разработка аппаратных
средств
Тип микроконтроллера задан . Поэтому задача разработки аппаратных средств сводится к разработке принципиальной электрической схемы МПУ и настройке встроенных периферийных модулей МК. Разработка принципиальной схемы МПУ сводится к дублированию схемы учебно-отладочного стенда с возможным удалением из нее неиспользуемых элементов и связей.
Выберем элементы и узлы необходимые для данной задачи. Кроме МК и элементов цепей питания потребуются:
- кнопка S1 – «Установка/снятие защиты»;
- элементы, обеспечивающие работу цифровых индикаторов;
- встроенный модуль АЦП;
Полученная принципиальная схема МПУ приведена в приложении В.
Данные от МК к контроллеру MC14489BP должны передаваться через синхронный последовательный интерфейс, включающий три линии:
- Data_in – данные;
- Clk - синхроимпульсы;
- CS – выборка кристалла.
В
соответствии со схемой МПУ сигналы
Data_in и Clk должны формироваться на линиях
1 и 0 порта PORTE, сигнал CS на линии 3 порта
PORTB. Поэтому эти линии портов необходимо
настроить на вывод. Для настройки модуля
PORTE воспользуемся таблицей 1. Настройка
линий на ввод-вывод определяется содержимым
управляющего регистра TRISE. Так как линии
порта PORTE могут использоваться, как аналоговые
входы, то следует также выполнить их настройку
для работы в режиме цифровых линий. Настройка
выполняется разрядами PCFG3-PCFG0 регистра
ADCON1.
Таблица 1 – Регистры и биты, связанные с работой PORTE
| Адрес | Имя | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
| 09h | PORTE | - | - | - | - | - | RE2 | RE1 | RE0 |
| 89h | TRISE | IBF | OBF | IBOV | PSPMODE | - | Рег. напр.
данных
PORTE | ||
| 9Fh | ADCON1 | ADFM | - | - | - | PCFG3 | PCFG2 | PCFG1 | PCFG0 |
Сформируем константы для загрузки в управляющие регистры:
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.