Проектирование микроконтроллера на микропроцессоре 8086

Автор: Пользователь скрыл имя, 06 Июня 2013 в 12:54, курсовая работа

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

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

Содержание

Введение 4
1. Функциональное проектирование 6
1.1. Анализ исходных данных 6
1.2. Выбор и обоснование структуры микроконтроллера 7
1.3. Обобщенный алгоритм функционирования 10
2. Структурное проектирование 12
2.1. Разработка алгоритма программного обеспечения 12
2.2. Реализация программного обеспечения на языке ассемблера 14
2.3. Проектирование структуры блоков микроконтроллера 17
2.3.1. Проектирование структуры блока памяти 18
2.3.2. Проектирование структуры блока ввода данных 22
2.3.3. Проектирование структуры блока индикации 25
2.3.4. Программное управление устройствами ввода – вывода 31
2.3.5. Проектирование блока центрального процессора 32
3. Схемотехническое проектирование 38
Заключение 43
Список используемой литературы 44

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

Пояснительная записка.doc

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

Алгоритм повторяется  до выключения питания микроконтроллера.

 

 

  1. СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ

 

 

2.1.   Разработка алгоритма программного обеспечения

 

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

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

Для определения  момента прохождения экстремума в рассмотрение вводится специальный флаг - флаг направления изменения веса. Данный флаг является бинарным. Соответствие между значением флага направления и направлением изменения веса приведено в табл.2.1.

Таблица 2.1

Значение  флага направления

Характер  изменения веса

0

Величина  веса уменьшается

1

Величина  веса увеличивается


 

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

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

В общих чертах алгоритм программного обеспечения  представлен в виде блок-схемы  в приложении 2. Здесь рассмотрим более подробно алгоритм функционирования микроконтроллера.

1) После включения питания,  работа начинается с инициализации  всех блоков микроконтроллера и задания начальных значений всем переменным. Так, здесь задается режим функционирования блока индикации. Для определения начального значения флага направления изменения веса и переменной “предыдущее значение веса” выполняется следующая последовательность шагов: считывается из блока ввода данных информация о величине веса и присваивается переменной “предыдущее значение веса”. Затем, чтобы определить направление изменения веса, нужно знать еще и текущее значение веса, поэтому считываем информацию о величине веса из блока ввода данных снова, и считаем ее текущим значением веса. Для гарантии однозначного определения флага направления, считывание будем производить до тех пор, пока считанная величина не станет больше или меньше предыдущего значения веса. Как только предыдущее и текущее значения веса перестанут быть равными величинами, инициализируется флаг направления согласно таб.2.1, и блок инициализации заканчивается.

2)   По  значениям переменных “Предыдущее значение веса” и “Текущее значение веса” происходит анализ направления изменения величины веса. Если значения переменных “Предыдущее значение веса” и “Текущее значение веса” равны, т.е. вес не изменился, переходим к шагу (6). Если вес увеличился, переходим к шагу (3). Если вес уменьшился, переходим к шагу (4).

3) Анализируем  значение флага направления. Если  флаг направления равен нулю, т.е. вес до сих пор уменьшался, то следовательно, предыдущее  значение веса является пиковым  значением функции изменения  веса и поэтому выводим значение  переменной “Предыдущее значение веса” и символ “U” на индикаторы и изменяем значение флага направления изменения веса на 1 (т.е. теперь вес возрастает). Переходим к шагу (5)

4) Если при этом флаг  направления равен единице, т.е.  вес до сих пор увеличивался, то, следовательно, предыдущее значение веса есть пиковое значение функции изменения веса и поэтому выводим на индикаторы значение переменной “Предыдущее значение веса” и символ “d”, обозначающий уменьшение веса. Так же изменяем значение флага направления изменения веса на 0 (вес уменьшается). Переходим к шагу (5).

5) Значению переменной  “Предыдущее значение веса” присваиваем значение переменной “Текущее значение веса’.

6) Считываем из блока  ввода данных “Текущее значение веса” и переходим на шаг (2).

Завершение работы алгоритма происходит при выключении питания.

 

 

2.2.   Реализация программного обеспечения  на языке ассемблера

 

Программное обеспечение  для микроконтроллера на языке ассемблера можно написать лишь после того, как будут известны структура  блоков микроконтроллера, адреса портов ввода-вывода и объем памяти. В свою очередь, объем памяти выбирается согласно размеру программного обеспечения, адреса портов ввода-вывода станут известны только после проектирования блока ввода-вывода. Поэтому этот пункт тесно переплетен со следующим пунктом, в котором и производится проектирование блоков микроконтроллера.

В проектируемом  микроконтроллере используется раздельное адресное пространство памяти и портов ввода-вывода.

Из-за специфики работы блока индикации отметим, что в качестве его используется программируемая БИС К580ВВ79. Программное управление БИС осуществляется посредством двух портов ввода-вывода, которые она занимает в адресном пространстве портов ввода вывода микропроцессора. Один из портов является командным, т.е. служит для задания режимов работы БИС, другой порт служит для записи кода отображаемого символа в ОЗУ дисплея БИС. В каждой ячейке ОЗУ дисплея хранится код символа для отображения на одном индикаторе АЛС324Б. На рис. 2.1 изображено соответствие битов кода символа отображаемым сегментам индикатора.

 

                                                                                                            а


          h      g      f      e      d       c      b      a                                  f                b

D7

D6

D5

D4

D3

D2

D1

D0


                                                                                                     e                c

                                                                                                                               

                                                                                                             d           h

 

Рис. 2.1. Соответствие разрядов байта кода символа, записываемого  в ОЗУ дисплея, сегментам индикатора

 

 

В соответствии с рис.2.1 составляем таблицу перекодировки символов для отображения на индикаторах (табл. 2.2.).

Таблица 2.2.

Символ

Код символа

Двоичный

Шестнадцатеричный

‘0’

00111111

3F

‘1’

00000110

06

‘2’

01011011

5B

‘3’

01001111

4F

‘4’

01100110

66

‘5’

01101101

6D

‘6’

01111101

7D

‘7’

00000111

07

‘8’

01111111

7F

‘9’

01101111

6F

‘U’

00111110

3E

‘d’

01011110

5E


 

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

При выводе информации на дисплей используем левый вывод (задается записью нуля в командный  порт БИС). Это простейший формат дисплея, в котором каждая позиция дисплея  прямо соответствует адресу ОЗУ  дисплея, т.е. адрес 0 в ОЗУ соответствует самому правому символу, адрес 7 – самому левому. Запись кодов символов в ОЗУ дисплея с нулевой ячейки вызывает заполнение дисплея справа налево. Поэтому, сначала выводим на дисплей дробную часть числа, затем в обратном порядке целую часть, причем младшую цифру целой части выводим с десятичной точкой. В самом конце выводим идентификатор направления изменения веса.

Из-за особенности  аппаратной реализации блоков микроконтроллера (см. п.2.3), адрес порта ввода данных совпадает с адресом порта записи данных в БИС индикации.

По включению  питания или по получении сигнала “сброс”, микропроцессор передает управление на физический адрес FFFF0h. Отсюда следует, что именно по этому адресу должна находится точка входа в программу управления микроконтроллером. Здесь мы размещаем команду безусловного перехода на саму программу. Адрес входа относительно модуля памяти – 1F0h. Поэтому с помощью директивы ORG размещаем по адресу 1F0h команду передачи управления на тело программы.

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

Константа FiguresTable – задает начало таблицы перекодировки символов для вывода на дисплей. Содержит коды символов ‘0’ – ‘9’;

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

Регистр BX – содержит величину смещения таблицы перекодировки FiguresTable;

Регистр CX – используется для организации циклов;

Регистр DX – используется для хранения адресов портов ввода-вывода;

Регистр BP – используется для хранения предыдущего значения веса;

Регистр SI – используется для сохранения текущего значения веса;

Регистр DI – выполняет функцию флага направления изменения веса (см. табл. 2.1);

Программное обеспечение  реализовано в формате COM – файла. Листинг программного обеспечения приведен в приложении 3.

Размещение кода программного обеспечения относительно начала модуля памяти приведено на рис. 2.2.

 

 

 

00000100:   8C C8 8E D8 BB 9D 01 BA 02 00 B0 D3 EE 32 C0 EE

00000110:   BA 00 00 ED 25 0F 7F 8B E8 ED 25 0F 7F 3B C5 74

00000120:   F8 77 04 33 FF EB 03 BF 01 00 8B F0 3B C5 74 15

00000130:   77 08 85 FF 74 0D 33 FF EB 07 85 FF 75 05 BF 01

00000140:   00 EB 08 8B EE BA 00 00 ED EB DF BA 02 00 B0 90

00000150:   EE BA 00 00 32 C0 B9 05 00 EE E2 FD BA 02 00 B0

00000160:   90 EE BA 00 00 8B C5 D7 EE 80 FC 64 75 0B B0 BF

00000170:   EE B0 3F EE B0 06 EE EB 12 32 C0 86 C4 B1 0A F6

00000180:   F1 86 E0 0C 80 D7 EE 8A C4 D7 EE 85 FF 74 05 B0

00000190:   3E EE EB AF B0 5E EE EB AA 00 01 E0 FF 3F 06 5B

000001A0:   4F 66 6D 7D 07 7F 6F 00 00 00 00 00 00 00 00 00

000001B0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

000001C0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

000001D0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

000001E0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

000001F0:   FF 2E 99 01

 

Рис. 2.2.

 

 

 

    1. Проектирование структуры блоков микроконтроллера

 

Как уже отмечалось в разделе 1, по функциональным признакам  микроконтроллер можно разбить  на 4 части: блок центрального процессора, блок памяти, блок ввода и блок индикации. Все блоки взаимосвязаны между собой и выбор структуры одного блока оказывает влияние на проектирование других.

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

 

      1. Проектирование структуры блока памяти

 

Анализируя размер программного обеспечения и специфику его  функционирования, приходим к следующим  выводам:

  1. Для хранения кода программы и констант необходим объем постоянного запоминающего устройства (ПЗУ) не меньший 180 байт.
  2. При функционировании, программа, для хранения переменных данных, обходится только регистрами микропроцессора. Следовательно, необходимость включения в блок памяти ОЗУ отсутствует.

Таким образом, блок памяти микроконтроллера должен включать в себя только ПЗУ.

В качестве микросхемы ПЗУ выбираем микросхему КР556РТ11. Эта  микросхема выполнена на основе транзисторно-транзисторной  логики и представляет собой постоянное запоминающее устройство емкостью 1024 бит для хранения и считывания информации в объеме 256 четырехразрядных слов. БИС по входам и выходам совместима с ТТЛ – схемами и имеет тристабильные выходы. Условное графическое изображение (УГО) БИС КР556РТ11 представлено на рис. 2.3.

Информация о работе Проектирование микроконтроллера на микропроцессоре 8086