Автор: Пользователь скрыл имя, 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
Алгоритм повторяется до выключения питания микроконтроллера.
2.1. Разработка алгоритма программного обеспечения
Просматривая предыдущий раздел, в особенности п.1.3., нетрудно определить, что алгоритм обработки входной информации достаточно прост: необходимо всего лишь отловить экстремум функции изменения веса и вывести его на индикаторы с обозначением текущего направления изменения веса.
Для определения экстремума нам необходимо постоянно хранить два значения веса: предыдущее и текущее. Их хранение необходимо для проведения анализа изменения величины веса. К тому же, факт прохождения экстремума выявляется только после считывания значения веса следующего за экстремальным, поэтому в блок индикации посылается именно предыдущее значение величины веса, а не текущее.
Для определения момента прохождения экстремума в рассмотрение вводится специальный флаг - флаг направления изменения веса. Данный флаг является бинарным. Соответствие между значением флага направления и направлением изменения веса приведено в табл.2.1.
Значение флага направления |
Характер изменения веса |
0 |
Величина веса уменьшается |
1 |
Величина веса увеличивается |
Начальная инициализация флага направления происходит на начальной стадии работы программного обеспечения путем двукратного считывания данных из блока ввода. При первом считывании так же инициализируется значение переменной “предыдущее значение веса”.
При считывании каждого следующего значения веса из блока ввода, анализируется изменение величины веса и по состоянию флага направления делается вывод о том, был ли достигнут локальный экстремум функции веса или нет.
В общих чертах алгоритм программного обеспечения представлен в виде блок-схемы в приложении 2. Здесь рассмотрим более подробно алгоритм функционирования микроконтроллера.
1) После включения питания,
работа начинается с
2) По
значениям переменных “
3) Анализируем
значение флага направления.
4) Если при этом флаг
направления равен единице, т.
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 |
Рис. 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, по функциональным признакам микроконтроллер можно разбить на 4 части: блок центрального процессора, блок памяти, блок ввода и блок индикации. Все блоки взаимосвязаны между собой и выбор структуры одного блока оказывает влияние на проектирование других.
По моему мнению, проектирование следует начать с проектирования блока памяти, т.к. при создании именно этого блока решается, какую разрядность шины адреса нам следует выбрать.
Анализируя размер программного обеспечения и специфику его функционирования, приходим к следующим выводам:
Таким образом, блок памяти микроконтроллера должен включать в себя только ПЗУ.
В качестве микросхемы ПЗУ выбираем микросхему КР556РТ11. Эта микросхема выполнена на основе транзисторно-транзисторной логики и представляет собой постоянное запоминающее устройство емкостью 1024 бит для хранения и считывания информации в объеме 256 четырехразрядных слов. БИС по входам и выходам совместима с ТТЛ – схемами и имеет тристабильные выходы. Условное графическое изображение (УГО) БИС КР556РТ11 представлено на рис. 2.3.
Информация о работе Проектирование микроконтроллера на микропроцессоре 8086