Как составить алгоритм работы устройства

Министерство общего и профессионального образования РФ

Владимирский государственный университет

Кафедра КТ РЭС

Разработка устройства управления струйным принтером

Курсовая работа по дисциплине

«Микропроцессоры»

Выполнил: ст. гр. РЭ-197

Принял:

Владимир 2000

СОДЕРЖАНИЕ:

лист

Введение…………………………………………………………………….02

1.  Анализ технического задания……………………………………………03

2.  Выбор датчиков и исполнительных
устройств.………………………..05

2.1. Выбор датчиков…………………………………………………………05

2.2. Выбор исполнительных устройств…………………………………….07

3.  Разработка алгоритма работы цифрового устройства
управления……09

4.  Разработка программы для микроконтроллера………………………..11

5.  Разработка схемы электрической
принципиальной……………………14

Заключение………………………………………………………………….15

Список литературы…………………………………………………………16

Приложение 1. Алгоритм работы
устройства управления

Приложение 2. Алгоритм программы для
микроконтроллера

Приложение 3. Текст программы на
ассемблере для микроконтроллера

ВВЕДЕНИЕ

В управлении
многих бытовых и других устройств все чаще применяются цифровые управляющие
устройства.

Для создания новой
системы сначала определяются функции, которые она должна выполнять и факторы
(сигналы), которые будут на нее воздействовать. Это все может быть описано с
помощью алгоритма работы  данного устройства.

Устройство
управления можно реализовать двумя способами:

—  аппаратно
– по алгоритму работы устройства управления синтезируется граф переходов
управляющего автомата, составляется таблица переходов и по ней синтезируется
система логических уравнений; затем эти уравнения приводятся к технологическому
базису и устройство реализуется с помощью набора микросхем, либо
разрабатывается новая микросхема, которая будет выполнять только заданные функции;

—  программно
– алгоритм работы устройства закладывается в микропроцессор.

Нужно
отметить, что быстрее будет работать алгоритм, реализованный аппаратно, но
такие устройства получаются дорогими, и при модернизации устройства микросхему
придется разрабатывать заново. При использовании микропроцессоров имеется
возможность изменять алгоритм работы устройства, без серьезного изменения схемы
электрической принципиальной, и (или) внешних устройств.

В
данной курсовой работе проводится разработка устройства управления струйным
принтером. Алгоритм управления реализуется программно. В качестве
микропроцессора используется микроконтроллер PIC16C84.

Основные
характеристики данного микроконтроллера приведены в [1].

1. АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ

Разрабатываемое устройство
управления предназначено для струйных принтеров типа LexMark. Для упрощения будем считать, что в принтере
используется только черный картридж.

Проектируемое устройство
управления должно реализовывать следующие функции:

—  постраничная печать документов
формата А4;

—  замена старого картриджа на новый.

И контролировать следующие параметры:

—  наличие картриджа;

—  местоположение картриджа;

—  наличие бумаги в лотке;

—  наличие бумаги у печатающей головки;

—   конец листа.

Функциональная схема устройства приведена на рис.1.

Рис.1.
Функциональная схема устройства управления

Для реализации данного
устройства управления на микроконтроллере необходимо разработать алгоритм
работы устройства управления, по нему нужно составить алгоритм (и программу на
ассемблере) для микроконтроллера. Затем эта программа должна быть с помощью
программатора введена в pic-процессор.
Для отладки и проверки работоспособности программы можно использовать эмулятор pic-процессора.

Так же в ходе выполнения
курсовой работы нужно подобрать датчики и исполнительные устройства,
используемые в устройстве управления, и сопрячь их с микроконтроллером.

В результате выполнения
курсовой работы нужно составить схему электрическую принципиальную устройства
управления струйным принтером и алгоритм (программу) работы микроконтроллера.

2. ВЫБОР ДАТЧИКОВ И ИСПОЛНИТЕЛЬНЫХ
УСТРОЙСТВ

2.1. Выбор датчиков

Разрабатываемое
устройство управления должно контролировать наличие бумаги, наличие картриджа и
воспринимать сигналы оператора.

Для реализации датчика
наличия картриджа (поз. 4 рис. 5) используется микропереключатель типа МП12,
его электрические параметры приведены в табл.1.

Таблица 1. Электрические параметры переключателей

Тип

I (А)

U (B)

P (BA)

Род тока

Число циклов коммутации

Траб °С

МП12

10-6-0,5

0,5-36

18

пост.

104

-100 — +125

КМД1-I

10-4 — 4

0,5-30

70

пост.

104

-60 — +100

Габаритные
и установочные размеры микропереключателя, а так же схема включения  приведена
на рис. 2. При установке картриджа в держатель (поз. 7 рис. 5) контакт
микропереключателя замыкается и подается сигнал логической единицы.

Рис. 2. Габаритные размеры и схема включения МП12

Так же микропереключатель
МП12 используется для реализации датчика местоположения картриджа (поз. 1 рис. 5).
Когда картридж находится в крайнем левом положении, контакт микропереключателя
замкнут, подается сигнал высокого уровня.

Датчик наличия бумаги в
лотке (поз. 3 рис. 5), и датчик наличия бумаги у печатающей головки (поз. 2
рис. 5) представляют собой оптическую пару, электрическая схема датчика
приведена на рис. 3. Когда есть бумага в лотке (поз. 8 рис.5) или у печатающей
головки, то датчиком вырабатывается сигнал высокого уровня.

  1. Разработка устройства.

2.1. Спецификация устройства на уровне
«черного ящика

Согласно заданию устройство должно
быть предназначено для выполнения
следующих операций:

  • вычитание;

  • сравнение;

  • исключающее «ИЛИ».

Разрядность операндов и результата
должна быть – 8 бит.

Исходя из этого видно, что входы(А,В) и
выход (результат операции С) должны
иметь 8 разрядов.

2.2 Представление «черного ящика»
устройства в виде операционной и
управляющей частей.

Упрощенно разрабатываемое устройство
можно представить так, как изображено
на рис. 4.


7

7

2.3. Разработка структуры операционной
части устройства

Пусть операнды размещаются в регистрах
А и В, как показано на рисунке 5. Выделим
три блока для каждой команды. После
каждого выполнения команды значение
операнда А изменяется, а значение
операнда В остается неизменным. Результат
выполнения трех команд (изменения
операнда А) записывается в регистр С.

2.4. Составление алгоритма работы
устройства

Алгоритм приведен на рисунке 7. Однако,
ясно, что алгоритм еще не доведен до
уровня микроопераций. Действительно,
список микроопераций нам известен, и
тогда, например, выполнение трех команд
нужно заменить такой последовательностью
микроопераций:

  1. в условии спрашиваем: «выполнить
    операцию вычитания?», если да, то
    выполняем;

  2. если нет, то дальше спрашиваем: «выполнить
    операцию сравнения?», если да то
    выполняем;

  3. если нет, то выполняем операцию
    исключающего «ИЛИ».

2.5. Составление схемы алгоритма работы устройства и его микропрограммы

Схема алгоритма на уровне микроопераций
изображена на рис. 8.

Отметим операторные блоки символами
Yi, а логические
блоки символами Xi.

Операторных блоков получилось 19,
логических – 12.

Таким образом, для операционной части
(ОЧ) устройства потребуется 19 сигналов
управления из управляющей части
устройства, а для управляющей части
(УЧ) устройства – 12 осведомительных
сигналов из операционной части







2.6. Составление спецификации устройства

Опишем в табл. 1 все линии и сигналы,
полученные в процессе разработки
устройства. Пусть активным для каждого
сигнала является его высокий (единичный)
уровень.

Табл. 1

Сигнал

Тип

(In/Out)

Назначение сигнала

Y1

I для ОЧ

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

Y2, Y4, Y6,
Y9, Y11, Y13

I для ОЧ

Сигнал управления из управляющей
части на выполнение микрооперации
чтения оператора из регистра

Y3, Y5, Y7, Y10, Y12, Y14

I для ОЧ

Сигнал управления из управляющей
части на выполнение микрооперации
передачи операнда по шинам

Y8, Y15

I для ОЧ

Сигнал управления из управляющей
части на выполнение микрооперации
передачи операнда на АЛУ

Y16

I для ОЧ

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

Y17

I для ОЧ

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

Y18

I для ОЧ

Сигнал управления из управляющей
части на выполнение микрооперации
команды исключающего «ИЛИ»

Y19

I для ОЧ

Сигнал управления из управляющей
части на выполнение микрооперации
записи результата в регистр

X1, X6

O для ОЧ

Осведомительный сигнал из ОЧ в УЧ,
активен, если операнд A
(B) находится в регистре

X2, X7

O для ОЧ

Осведомительный сигнал из ОЧ в УЧ,
активен, если операнд A
(B) находится в регистре
AX

X4, X9

O для ОЧ

Осведомительный сигнал из ОЧ в УЧ,
активен, если операнд A
(B) находится в регистре
BX

X3, X8

O для ОЧ

Осведомительный сигнал из ОЧ в УЧ,
активен, если адрес операнда A
(B) находится в регистре
AX

X5, X10

O для ОЧ

Осведомительный сигнал из ОЧ в УЧ,
активен, если адрес операнда A
(B) находится в регистре
BX

X11

O для ОЧ

Осведомительный сигнал из ОЧ в УЧ,
активен, если выполняется команда
вычитания

X12

O для ОЧ

Осведомительный сигнал из ОЧ в УЧ,
активен, если выполняется команда
сравнения

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Разработка алгоритма работы микропроцессорного устройства

Содержание

Введение

1.   Анализ
поставленной задачи

.     Разработка
структурной схемы устройства и разработка алгоритма работы устройства

.     Разработка
функциональной схемы устройства. Проектирование аппаратных средств

.     Проектирование
программного обеспечения

Заключение

Список
литературы


Введение

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

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

Кроме того, с применением микроконтроллеров появляются
практически безграничные возможности по добавлению новых потребительских
функций и возможностей к уже существующим устройствам. Достаточно просто
поменять программу[1].- самая обширная производственная линии среди других
флэш-микроконтроллеров корпорации Atmel. Atmel представила первый 8-разрядный
флэш-микроконтроллер в 1993 году и с тех пор непрерывно совершенствует
технологию. Прогресс данной технологии наблюдался в снижении удельного
энергопотребления (мА/МГц), расширения диапазона питающих напряжений (до 1.8 В)
для продления ресурса батарейных систем, увеличении быстродействия до 16 млн.
операций в секунду, встройкой реально-временных эмуляторов и отладчиков,
реализации функции самопрограммирования, совершенствовании и расширении
количества периферийных модулей, встройке специализированных устройств
(радиочастотный передатчик, USB-контроллер, драйвер ЖКИ, программируемая
логика, контроллер DVD, устройства защиты данных) и др.

Успех AVR-микроконтроллеров объясняется возможностью простого
выполнения проекта с достижением необходимого результата в кратчайшие сроки,
чему способствует доступность большого числа инструментальных средств
проектирования, поставляемых, как непосредственно корпорацией Atmel, так и
сторонними производителями. Ведущие сторонние производители выпускают полный
спектр компиляторов, программаторов, ассемблеров, отладчиков, разъемов и
адаптеров. Отличительной чертой инструментальных средств от Atmel является их
невысокая стоимость.

Другой особенностью AVR-микроконтроллеров, которая
способствовала их популяризации, это использование RISC-архитектуры, которая
характеризуются мощным набором инструкций, большинство которых выполняются за
один машинный цикл. Это означает, что при равной частоте тактового генератора
они обеспечивают производительность в 12 (6) раз больше производительности
предшествующих микроконтроллеров на основе CISC-архитектуры (например, MCS51).
С другой стороны, в рамках одного приложения с заданным быстродействием,
AVR-микроконтроллер может тактироваться в 12 (6) раз меньшей тактовой частотой,
обеспечивая равное быстродействие, но при этом потребляя гораздо меньшую мощность.
Таким образом, AVR-микроконтроллеры представляют более широкие возможности по
оптимизации производительности/энергопотребления, что особенно важно при
разработке приложений с батарейным питанием. Микроконтроллеры обеспечивает
производительность до 16 млн. оп. в секунду и поддерживают флэш-память программ
различной емкости: 1… 256 кбайт. AVR-архитектура оптимизирована под язык
высокого уровня Си, а большинство представителей семейства megaAVR содержат
8-канальный 10-разрядный АЦП, а также совместимый с IEEE 1149.1 интерфейс JTAG
или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры megaAVR
с флэш-памятью емкостью 16 кбайт и более могут программироваться через
интерфейс JTAG[4].

1.   Анализ поставленной задачи

В данной курсовой работе решается задача по проектированию
микропроцессорного устройства, которое преобразует интерфейс RS-232(COM — порт)
в IEEE 1284(LPT — порт). Скорость передачи данных определяется интерфейсом
RS-232, т.е. должна лежать в пределах от 110 до 115200 бит/с. Для решения
данной задачи выбрана скорость равная 19200 бит/с, исходя из следующих причин:

—    при скорости близкой к 110 бит/с, устройство
работало бы относительно медленно;

—       при скорости близкой к максимальной
скорости COM — порта(115200 бит/с) возрастает вероятность передачи данных с
большим числом ошибок, что, в свою очередь, затрудняет прием и обработку
переданных данных.

Учитывая, что уровни сигналов в COM — порте колеблются в
диапазоне от -15 до +15 Вольт(рис.1), то, для подключения COM — порта к микроконтроллеру,
который работает с уровнями +5 Вольт, необходимо использовать преобразователь
уровней. Для этих целей используется микросхема MAX232. Питание для этой
микросхемы подводится от внешнего источника питания (+5В).

микропроцессорный преобразование интерфейс

Рисунок 1. — Уровни COM-порта

Преобразование последовательного интерфейса в параллельный
интерфейс будет осуществляться на микроконтроллере ATMega8. — 8-разрядный КМОП
микроконтроллер, основанный на архитектуре Atmel AVR. Контроллер выполняет
большинство инструкций за 1 такт, поэтому вычислительная мощность контроллера
равна 1MIPS на 1 МГц. Микроконтроллер имеет RISC-архитектуру, но формат команды
двухоперандный, за один такт может быть обращение только к двум регистрам.
Контроллер содержит 32 регистра, которые могут равноправно использоваться в
арифметических операциях.

Основные аппаратные характеристики микроконтроллера:

—    8 Кбт флеш-памяти команд;

—       512 байт электрически программируемой
памяти;

—       1 Кбайт статической памяти;

—       23 линии ввода/вывода общего назначения;

—       32 РОНа;

—       три многоцелевых таймер-счётчика с режимом
сравнения;

—       поддержка внутренних и внешних прерываний;

—       универсальный асинхронный адаптер;

—       байт-ориентированный двухпроводной последовательный
интерфейс;

—       6/8 канальный АЦП с точностью 8 и 10
двоичных разрядов;

—       сторожевой таймер;

—       последовательный порт SPI;

—       расширенные режимы управления
энергопотреблением.

Из микроконтроллера выходные данные передаются на LPT — порт.

Перед проектированием данного устройства, был произведен
поиск на наличие аналогичных устройств. В итоге было найдено несколько
устройств. Некоторые из них приведены далее.

Существуют зарубежные аналоги проектируемого устройство, вот
например: RS-232 to IEEE 1284 Converter (Model 2030).

Конвертер Patton 2030 RS-232/423 — IEEE-1284(рис.2)
обеспечивает двунаправленное преобразование данных между асинхронными
устройствами RS-232/423 и принтерами или другими параллельными устройствами с
интерфейсом IEEE-1284. Конвертер способен работать с любым оборудованием уровня
1 и поддерживает режимы Compatible и Nibble (в соответствии со стандартом
IEEE-1284). Высокая скорость преобразования делает модель 2030 эффективным
решением для использования с высокоскоростными лазерными принтерами для
графической печати.

Отличительные особенности данного устройства:

—    Асинхронная связь со скоростью до 115.2 Кбит/с;

—       Поддержка 2 режимов IEEE-1284 — compatible
и nibble (переключатель);

—       ESD-защита до 10 кВ на последовательном
порту;

—       Не требуется источник питания (питание —
от любого из интерфейсов);

—       Индикаторы питания и данных;

—       Непосредственное подключение к порту;

—       Компактный корпус.

Рисунок 2. — Внешний вид устройства Patton 2030

Стоимость данного конвертера составляет порядка (40 …45) $
США.

Конвертер RS-232 в Centronics(IEEE 1284)(рис.3) Российского
производства.

Данное изделие предназначено в первую очередь для организации
печати из карманных компьютеров, оснащенных операционной системой Windows CE
2.0 (например, CASSIOPEIA), непосредственно на любой тип принтера, имеющего
вход Centronics (IEEE-1284).

Рисунок 3. — Внешний вид конвертера RS-232 в Centronics(IEEE
1284)

Проблема состоит в том, что карманный компьютер имеет только
COM-порт, соответствующий стандарту RS-232, и инфракрасный порт, в то время как
подавляющее большинство принтеров имеет только параллельный порт,
соответствующий стандарту CENTRONICS. Конвертер осуществляет преобразование из последовательного
формата данных, получаемых из карманного компьютера (RS-232) в формат данных,
которые может принять принтер (CENTRONICS).

Технические характеристики конвертер RS-232 в Centronics(IEEE
1284):

—    Микроконтроллер:                                      ATMEL
AT90S2313;

—       Ток, потребляемый из последовательного
порта, не более:       5 мА;

—       Входной интерфейс:                       RS-232;

—       Выходной интерфейс                     CENTRONICS
(IEEE-1284);

—       Управление потоком данных RS-232     Xon/Xoff
(Software);

—       Старт. бит RS-232:                                  1;

—       Стоп. бит RS-232:                                    1;

—       Длина байта RS-232:                      8;

—       Скорость приема данных из компьютера,
установленная в конвертере по умолчанию:                                              57600
бит/с.

Стоимость данного конвертера составляет порядка (20 …30) $
США.

2.   Разработка структурной схемы устройства и
разработка алгоритма работы устройства

Структурная схема проектируемого устройства изображена на
рис.4. Данная схема представлена в виде трех блоков:

)     COM — порт, предназначен для соединения проектируемого
устройства с COM — портом другого устройства;

2)      Микроконтроллер, предназначен для преобразования
интерфейсов RS-232 в IEEE 1284;

)        LPT — порт, предназначен для соединения
проектируемого устройства с другим устройством, через разъем LPT — порта DB-25.

Для удобства анализа и оценки работы проектируемого
устройства был разработан алгоритм работы данного устройства, который
представлен в виде блок-схем(рис.5 и рис.6).

Рисунок 5. — Блок-схема алгоритма работы проектируемого
устройства

Рисунок 6. — Блок-схема вызываемой функции get_char()

3.   Разработка функциональной схемы устройства.
Проектирование аппаратных средств

Функциональная схема преобразователя интерфейсов RS-232 в
IEEE 1284 представлена на рисунке 7.

Рисунок 7. — Функциональная схема устройства

Передатчик(COM-порт) представлен в виде разъема(рис.8),
который непосредственно подключается к COM-порту ведущего устройства.

Рисунок 8. — Внешний вид COM-порта

Преобразователь уровней выполнен на микросхеме MAX232(рис. 9)

Рисунок 9. — Преобразователь уровней последовательного
интерфейса MAX232

Микроконтроллер представлен микросхемой ATMega8 (рис.10).
Основные особенности:

—    Полный дуплекс;

—       Асинхронные и синхронные операции;

—       Делитель частоты высокого разрешения;

—       Частота синхронизации от задатчика или от
приёмника;

—       Поддержка символов от 5 до 9 бит, 1 и 2
стоп-бит;

—       Проверка ошибок передачи;

—       генерация 3-х прерываний.

—       Форматы фреймов данных совместимы со
стандартом RS-232.

—       Скорости передачи данных составляют от 1.2
кБит/с до 115.2 кБит/с, но может достигать в режиме удвоения 230.4 кБит/с.

—       Двухпроводной последовательный интерфейс —
I2C.

—       Стандартный промышленный интерфейс;

—       Режимы задатчика и приёмника;

—       Режимы операций — приёмник и передатчик;

—       7-разрядное пространство адресов шины;

—       Поддержка мультизадатчиков шины;

—       Скорость пердачи данных до 400 кГц;

—       Полностью программируемый адрес на шине.

Рисунок 10. — Микроконтроллер ATMega8

Приемник(LPT-порт) представлен в виде разъема (рис. 11),
который непосредственно подключается к LPT-порту ведомого устройства.

Рисунок 11. — Внешний вид LPT-порта(DB-25)

Адаптер параллельного интерфейса представляет собой набор
регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются
относительно базового адреса порта, стандартными значениями которого являются
386h, 378h и 278h. Порт имеет внешнюю 8-битную шину данных, 5-битную шину
сигналов состояния и 4-битную шину управляющих сигналов.

4.   Проектирование программного обеспечения

Код программы для микроконтроллера ATMega8 представлен в виде
листинга (с комментариями), который описан ниже.

Листинг программы:

/*****************************************************program
was produced by theV1.25.9 Professional

type: ATmega8type: Applicationfrequency: 8,000000 MHzmodel:
SmallSRAM size: 0Stack size: 256

*****************************************************/

#include <mega8.h> /*Подключаемые библиотеки*/

#include <delay.h>

#define RXB8 1 /*Вводимые константы*/

#define TXB8 0

#define UPE 2

#define OVR 3

#define FE 4

#define UDRE 5

#define RXC 7

#define FRAMING_ERROR (1<<FE)

#define PARITY_ERROR (1<<UPE)

#define DATA_OVERRUN (1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

// USART Receiver buffer

#define RX_BUFFER_SIZE 64 /*Константа, определяющая размен
буфера приемника УСАПП*/rx_buffer[RX_BUFFER_SIZE]; /*Глобальная переменная*/

#if RX_BUFFER_SIZE<256 /*Выбирается тип переменных в
зависимости от размера буфера*/char rx_wr_index,rx_rd_index,rx_counter;

#elseint rx_wr_index,rx_rd_index,rx_counter;

#endif

// This flag is set on USART Receiver buffer overflow
rx_buffer_overflow;

// USART Receiver interrupt service routine [USART_RXC] void
usart_rx_isr(void) /*Приема данных на УСАПП*/

{status,data;=UCSRA;=UDR;((status & (FRAMING_ERROR |
PARITY_ERROR | DATA_OVERRUN))==0)

{_buffer[rx_wr_index]=data;(++rx_wr_index == RX_BUFFER_SIZE)
rx_wr_index=0;(++rx_counter == RX_BUFFER_SIZE)

{_counter=0;_buffer_overflow=1;

};

};

}get_char(void) /*Функция считывания данных*/

#asm(«cli») /*Объявляется общее запрещеие
глобальных прерываний, по выходе из которой бит_i регистра SREG обнуляется*/

-rx_counter;

#asm(«sei») /*Объявляется общее разрешение
прерываний*/data;

}

// Standard Input/Output functions

#include <stdio.h> input_byte;main(void)

{

/*Производится инициализация портов*/

// Input/Output Ports initialization

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out
Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0
State1=0 State0=0 =0x00; /*Регистр данных порта Б*/=0xFF; /*Регтстр направления
данных порта Б*/

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In

// State6=T State5=T State4=T State3=T State2=T State1=T
State0=T =0x00;=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out
Func1=Out Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=0
State1=0 State0=T =0x00;=0x06;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped=0x00;=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: OffA=0x00; /*Регистр А
управления таймера/счетчика Т1*/B=0x00;H=0x00; /*Счетный регистр
таймера/счетчика Т1, старший байт*/L=0x00; /*Счетный регистр таймера/счетчика
Т1, младший байт*/H=0x00; /*Регистр захвата таймера/счетчика Т1, старший
байт*/L=0x00; /*Регистр захвата таймера/счетчика Т1, младший байт*/AH=0x00;
/*Регистр А совпадения таймера/счетчика Т1, старший байт*/AL=0x00; /*Регистр А
совпадения таймера/счетчика Т1, младший байт*/BH=0x00;BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected=0x00; /*Регистр состояния
асинхроного режима*/=0x00; /*Регистр управления таймера/счетчика
Т2*/=0x00;=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off=0x00; /*Регистр управления микроконтроллера*/

// Timer(s)/Counter(s) Interrupt(s) initialization=0x00;
/*Регистр маски прерывания от таймера счетчика*/

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: Off

// USART Mode: Asynchronous

// USART Baud Rate: 19200=0x00; /*Регистр А управления и
состояния УСАПП*/=0x90;=0x86;=0x00; /*Регистр скорости передачи УСАПП, старший
бит*/=0x19;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1:
Off=0x80; /*Регистр управления и состояния аналогового компаратора*/=0x00;
/*Регистр специальных функций*/

// Global enable interrupts.2=0; /*Присвоили биту 2 регистра
порта D значение «0», т.е. выключение встроенного счетчика Т0*/

#asm(«sei»); /*Объявляется общее разрешение
прерываний*/ (1) /*Бесконечный цикл*/

{_byte = get_char(); /*Вызов функции, которая считывает
последовательность из 9 битов*/= input_byte; /*Передача данных на выход, через
порт Б*/.2=1; /*Включение встроенного счетчика*/_us(120); /*Вводится задержка
для вывода данных*/.2=0; /*Выключение встроенного счетчика*/

};

Заключение

В ходе выполнения данной курсовой работы было разработано
микропроцессорное устройство преобразования интерфейсов из RS-232 в IEEE 1284.
Так же были рассмотрены аналоги проектируемого устройства.

В процессе выполнения закреплены знания по основам работы
микроконтроллеров как в теории так и на практике.

Разработанное устройство может применяться для преобразования
интерфейсов при передачи данных из устройства поддерживающего RS-232 и
соответственно имеющее разъем COM-порта, в устройство, поддерживающего IEEE
1284 и содержащего разъем LPT-порта.

Симуляция спроектированного устройства осуществлялась с
помощью программного обеспечения Proteus 7.2 SP6 Proffesional.

Список литературы

1.     Ю.А.
Шпак «Программирование на языке С для AVR и PIC микроконтроллеров». — К.:
«МК-Пресс», 2006 — 400 с.

2.     www.avr123.nm.ru

3.      www.gaw.ru/html.cgi/txt/ic/Atmel/micros/avr/atmega8.htm

.        Евстифеев
А.В. «Микроконтроллеры AVR семейства MEGA. Руководство пользователя». — М.:
Издательский дом «Додэка-XXI», 2007 — 592с.

.        Белов
А.В. «Создаем устройство на микроконтроллерах». — Спбю.: Наука и техника, 2007
— 304с.

.        Гребнев
В.В. «Микроконтроллеры семейства AVR фирмы Atmel». — М.: ИП РадиоСофт, 2002 —
176с.

Функциональное проектирование программируемого логического контроллера

Страница 3 из 4

5.         Алгоритм работы устройства

При проектировании системы необходимо отчетливо представлять алгоритм её работы. Алгоритм работы разрабатываемого контроллера представлен на рисунке 2.

Рис. 2. Алгоритм работы устройства

6.         Структурная схема контроллера

Проектирование любой системы начинается с разработки структурной схемы. Она включает в себя набор элементарных звеньев объекта и связей между ними. Структурная схема разрабатываемого ПЛК представлена на рисунке 3.

Рис. 3. Структурная схема ПЛК

Разрабатываемое устройство состоит из 7 блоков.

МК:

Основной блок. Содержит в себе микропроцессор, ПЗУ в виде флеш-памяти и ОЗУ, АЦП и ЦАП. Исполняет заданную пользователем программу и осуществляет управление интерфейсом RS-232, принимает сигналы с портов ввода, формирует воздействия для передачи сигналов через порты вывода. АЦП преобразует входные аналоговые сигналы в цифровые для передачи на процессор. ЦАП преобразует цифровые сигналы процессора в аналоговые для передачи на контакты аналоговых выходов.

Сухие контакты:

Это контакты, не имеющие гальванической связи с цепями электропитания и «землёй», то есть контакт гальванически развязан от управляющего сигнала. Требует питания 24В, 2А.

Контакты аналогового сигнала:

Контакт передаёт уровень сигнала с помощью тока 4-20 мА. Отсутствие тока (0 мА) означает отсутствие подключения к контакту. Для передачи сигнала на процессор требуется АЦП. Для передачи сигнала с процессора на контакты требуется ЦАП.

Блок питания:

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

Интерфейс RS-232:

Порт RS-232 необходим для связи с ПК. С его помощью осуществляется программирование ПЛК и снятие данных с его памяти.

Есть вопрос? Задайте его Вашему персональному менеджеру. Служба поддержки призвана помочь пользователям в решении любых проблем, связанных с вопросами публикации своих работ и другими аспектами работы издательства «Проблемы науки».

Разработка алгоритма работы устройства

Основной алгоритм работы программы

Рисунок 5.1 — Основной алгоритм работы программы

Пояснения:

Вначале происходит конфигурация контроллера, потом опрашивается клавиатура и (если была нажата одна из клавиш, что в начале работы маловероятно) контроллер перейдет на один из режимов, если клавиша нажата не была, вызовется 1 режим. Подпрограмма Режим 1 формирует 1 период сигнала с требуемыми параметрами (сюда входит пачка импульсов и время между пачками), здесь же после каждого периода вызывается подпрограмма опроса клавиатуры. То есть контроллер зациклен на функциях формирования пачки импульсов, паузы между пачками и опросом клавиатуры.

Ниже приведен алгоритм подпрограммы Режим 1.

Алгоритм работы подпрограммы Режим 1

Рисунок 5.2 — Алгоритм работы подпрограммы Режим 1

Продолжение алгоритма работы подпрограммы Режим 1

Рисунок 5.3 — Продолжение алгоритма работы подпрограммы Режим 1

Составление программы

;*******************************************************************************

;DEVICE AT90S2313

;*******************************************************************************

;Порт В ЦАП

;РB.0 — ЦАП

;PB.1 — ЦАП

;PB.2 — ЦАП

;РB.3 — ЦАП

;PB.4 — ЦАП

;PB.5 — ЦАП

;РB.6 — ЦАП

;PB.7 — ЦАП

;PD.0 — светодиод

;PD.1 — светодиод

;РD.2 — светодиод

;PD.3 — кнопка

;PD.4 — кнопка

;PD.5 — кнопка

;PD.6 —

;

;**** Includes ****

.INCLUDE «C:VMLABinclude2313def.inc»

; Подключение файла конфигурации устройства

;**** Глобальные Регистровые переменные ****

.def data =r25; -> РАБОЧИЙ

.def nol =r26; -> РАБОЧИЙ

.def temp1 =r27; -> РАБОЧИЙ

.def waitH =r28; -> РАБОЧИЙ

.def schetchik =r29; -> РАБОЧИЙ

.def N =r30; -> текущее напряжение на выходе ЦАП

.def cikle =r31

;*******************************************************************************

; Начальные установки

;*******************************************************************************

.cseg

.org 0 ; начать коипилирование с адреса 00

rjmp label1 ; переход на метку label1

reti

reti

reti

reti

reti

reti

reti

reti

reti

reti

reti

reti ; выход из подпрограммы прерывания

label1: ldi temp1,$C8; загрузка конечного адреса стека

out SPL,temp1;вывод в порт значение конечного адреса стека

SEI; разрешить все прерывания

ldi temp1,0b11111111;весь порт на вывод

out DDRB,temp1

ldi temp1,0b11000111; выводы на которые подключены кнопки конфигурируються как входы

out DDRD,temp1

ldi temp1,0b00111000;включаю подтягивающие реисторы на кнопках

out PORTD,temp1

ldi temp1,0b10000010

out TIMSK,temp1 ; РЕГИСТР МАСКИ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА/СЧЕТЧИКА — TIMSK(резрешение прерывания от счетчика 1)

ldi nol,0

main: rcall opros

rcall regim1

rjmp main

;*********************************************************************

opros:

sbis PIND,PIND3

jmp regim1

sbis PIND,PIND4

jmp regim2

sbis PIND,PIND5

jmp regim3

ret

;*********************************************************************

regim1:cbi PORTD,PD0

sbi PORTD,PD1

sbi PORTD,PD2

reg1:ldi data,0b00000001

ldi cikle,20

l1:ldi N,3

l2:out PORTB,data

rcall wait_impuls1

out PORTB,nol

rcall wait_nol1

dec N

cpi N,0

brne l2

inc data

ldi N,4

l3:out PORTB,data

rcall wait_impuls1

out PORTB,nol

rcall wait_nol1

dec N

cpi N,0

brne l3

inc data

dec cikle

cpi cikle,0

brne l1

ldi cikle,215

l4:ldi N,4

l5:out PORTB,data

rcall wait_impuls1

out PORTB,nol

rcall wait_nol1

dec N

cpi N,0

brne l5

inc data

dec cikle

cpi cikle,0

brne l4

rcall wait_long1

rcall opros

rjmp reg1

;*********************************************************************

regim2: cbi PORTD,PD1

sbi PORTD,PD0

sbi PORTD,PD2

reg2:ldi data,0b00000001

ldi cikle,20

l6:ldi N,3

l7:out PORTB,data

rcall wait_impuls2

out PORTB,nol

rcall wait_nol2

dec N

cpi N,0

brne l7

inc data

ldi N,4

l8:out PORTB,data

rcall wait_impuls2

out PORTB,nol

rcall wait_nol2

dec N

cpi N,0

brne l8

inc data

dec cikle

cpi cikle,0

brne l6

ldi cikle,215

l9:ldi N,4

l10:out PORTB,data

rcall wait_impuls2

out PORTB,nol

rcall wait_nol2

dec N

cpi N,0

brne l10

inc data

dec cikle

cpi cikle,0

brne l9

rcall wait_long1

rcall opros

rjmp reg2

;*********************************************************************

regim3: cbi PORTD,PD2

sbi PORTD,PD0

sbi PORTD,PD1

reg3:ldi data,0b00000001

ldi cikle,20

l11:ldi N,3

l12:out PORTB,data

rcall wait_impuls3

out PORTB,nol

rcall wait_nol3

dec N

cpi N,0

brne l12

inc data

ldi N,4

l13:out PORTB,data

rcall wait_impuls3

out PORTB,nol

rcall wait_nol3

dec N

cpi N,0

brne l13

inc data

dec cikle

cpi cikle,0

brne l11

ldi cikle,215

l14:ldi N,4

l15:out PORTB,data

rcall wait_impuls3

out PORTB,nol

rcall wait_nol3

dec N

cpi N,0

brne l15

inc data

dec cikle

cpi cikle,0

brne l14

rcall wait_long1

rcall opros

rjmp reg3

;*********************************************************************

wait_impuls1:

ldi temp1,0b00000001

out TCCR1B,temp1 ; установка предварительного деления тактовой частоты счетчика на 1024

ldi waitH,$FF

out TCNT1H,waitH ; запись старшего байта в порт таймера длительности пачки

ldi waitH,$C4

out TCNT1L,waitH ; запись малого байта в порт таймера длительности пачки

ldi temp1,0b00100000

out MCUCR,temp1 ; разрешение режима пониженого энергопотребления

SLEEP

ldi temp1,0b00000000

out TCCR1B,temp1 ; останов

ret

wait_nol1:

ldi temp1,0b00000001

out TCCR1B,temp1 ; установка предварительного деления тактовой частоты счетчика на 1024

ldi waitH,$FD

out TCNT1H,waitH ; запись старшего байта в порт таймера длительности пачки

ldi waitH,$48

out TCNT1L,waitH ; запись малого байта в порт таймера длительности пачки

ldi temp1,0b00100000

out MCUCR,temp1 ; разрешение режима пониженого энергопотребления

SLEEP

ldi temp1,0b00000000

out TCCR1B,temp1 ; останов

ret

wait_impuls2:

ldi temp1,0b00000001

out TCCR1B,temp1 ; установка предварительного деления тактовой частоты счетчика на 1024

ldi waitH,$FF

out TCNT1H,waitH ; запись старшего байта в порт таймера длительности пачки

ldi waitH,$5F

out TCNT1L,waitH ; запись малого байта в порт таймера длительности пачки

ldi temp1,0b00100000

out MCUCR,temp1 ; разрешение режима пониженого энергопотребления

SLEEP

ldi temp1,0b00000000

out TCCR1B,temp1 ; останов

ret

wait_nol2:

ldi temp1,0b00000001

out TCCR1B,temp1 ; установка предварительного деления тактовой частоты счетчика на 1024

ldi waitH,$FD

out TCNT1H,waitH ; запись старшего байта в порт таймера длительности пачки

ldi waitH,$7F

out TCNT1L,waitH ; запись малого байта в порт таймера длительности пачки

ldi temp1,0b00100000

out MCUCR,temp1 ; разрешение режима пониженого энергопотребления

SLEEP

ldi temp1,0b00000000

out TCCR1B,temp1 ; останов

ret

wait_impuls3:

ldi temp1,0b00000001

out TCCR1B,temp1 ; установка предварительного деления тактовой частоты счетчика на 1024

ldi waitH,$FF

out TCNT1H,waitH ; запись старшего байта в порт таймера длительности пачки

ldi waitH,$0F

out TCNT1L,waitH ; запись малого байта в порт таймера длительности пачки

ldi temp1,0b00100000

out MCUCR,temp1 ; разрешение режима пониженого энергопотребления

SLEEP

ldi temp1,0b00000000

out TCCR1B,temp1 ; останов

ret

wait_nol3:

ldi temp1,0b00000001

out TCCR1B,temp1 ; установка предварительного деления тактовой частоты счетчика на 1024

ldi waitH,$FE

out TCNT1H,waitH ; запись старшего байта в порт таймера длительности пачки

ldi waitH,$47

out TCNT1L,waitH ; запись малого байта в порт таймера длительности пачки

ldi temp1,0b00100000

out MCUCR,temp1 ; разрешение режима пониженого энергопотребления

SLEEP

ldi temp1,0b00000000

out TCCR1B,temp1 ; останов

ret

wait_long1:

ldi temp1,0b00000101

out TCCR1B,temp1 ; установка предварительного деления тактовой частоты счетчика на 1024

ldi waitH,$E4

out TCNT1H,waitH ; запись старшего байта в порт таймера длительности пачки

ldi waitH,$88

out TCNT1L,waitH ; запись малого байта в порт таймера длительности пачки

ldi temp1,0b00100000

out MCUCR,temp1 ; разрешение режима пониженого энергопотребления

SLEEP

ldi temp1,0b00000000

out TCCR1B,temp1 ; останов

ret

.EXIT

Понравилась статья? Поделить с друзьями:
  • Как правильно составить схему водопровода
  • Как найти девушку в вайтране
  • Не работает доводчик двери в подъезде как исправить
  • Wow как найти группу
  • Как найти деталь по фотографии