Проектирование микроконтроллерной системы управления
Выбор схемы включения микроконтроллера, схемы ввода сигналов от датчиков, подключения элементов индикации и управления, сопряжения с последовательным интерфейсом. Схема подключения светодиодов индикации и семисегментных светодиодных индикаторов.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.11.2013 |
Размер файла | 752,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П.О.СУХОГО
Факультет автоматизированных и информационных систем
Кафедра «Промышленная электроника»
РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
по дисциплине «Микропроцессорная техника»
на тему: «Проектирование микроконтроллерной системы управления»
Исполнитель: студент гр. ПМ-41
Тарелко Я.В.
Руководитель: доцент
Виноградов Э.М.
Гомель 2013
ВВЕДЕНИЕ
В последние годы в микроэлектронике получило развитие направление, связанное с выпуском однокристальных микроконтроллеров, которые предназначены для «интеллектуализации» оборудования различного назначения. ОЭВМ представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя все составные части микроЭВМ: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах различного назначения обеспечивает достижение исключительно высоких показателей эффективности при низкой стоимости. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно однокристальные ЭВМ.
На сегодняшний день имеется несколько десятков различных типов микропроцессорных наборов и однокристальных микроЭВМ, отличающихся разрядностью, системой команд, быстродействием, потребляемой мощностью, номиналами питания и т. д.
В данной работе ставится задача спроектировать микроконтроллерную систему на базе микроконтроллера AT89C52 управляющую промышленным объектом.
МКС контроля и управления объектом является по сути роботизированным комплексом. Принцип действия МКС заключается в последовательном приеме значений входных сигналов от объекта, вычисления значения выходных управляющих сигналов по программе, соответствующей алгоритму управления объектом, и выдаче вычисленных значений выходных сигналов на объект. Микроконтроллер непосредственно связан с управляемым объектом через устройство ввода-вывода, при этом между МКС и объектом управления нет промежуточных устройств, выполняющих какие-либо функции (за исключением силовых элементов). Работа МКС осуществляется в соответствии с программой, хранимой в ПЗУ. Периферийная часть системы представляет собой систему ввода - вывода цифровой и аналоговой информации, и содержит мультиплексор аналоговых сигналов, АЦП и ЦАП. МКС связана с пультом оператора, с которого возможно управление объектом, и контроль основных параметров. Программное обеспечение пишется на языке низкого уровня, что обеспечивает минимальные аппаратные затраты, максимальное быстродействие но при этом возрастает трудоемкость проектирования.
Данный курсовой проект призван закрепить знания, полученные при изучении дисциплины “ Микропроцессорная техника”.
Исходные данные
Период опроса: Топр = 3.2 с
Микроконтроллер: AT89C52
Тактовая частота работы МК 18.5 МГц
АЦП К1113ПВ1 (десятиразрядный выходной код)
Аналоговые сигналыU1,U2,U3
Диапазон напряжений аналоговых сигналов: 0…+10 В
Цифровые сигналыX1,X2,X3,X4, X5
Логическая функция: f( ) =X3X4Функция: g( ) =15W1+4W2-7W3+K1
Длительности импульсовt1 =65мкс, t2 = 14мс, t3 = 70мс
Дисплей на семисегментных светодиодных индикаторах
Управление дисплеемстатический
Метод получения семисегментного кода аппаратный
Интерфейс ИРПС
Скорость обмена 9600 бит/с
1. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ МКС
Структура МКС приведена на рисунке 1.1. МКС состоит из объекта управления, микроконтроллера, пульта управления и аппаратуры их взаимной связи. Микроконтроллер (МК) путем периодического опроса принимает информацию об объекте от аналоговых и цифровых датчиков. Выходные сигналы датчиков вследствие их различной физической природы могут потребовать промежуточного преобразования на аналого-цифровых преобразователях (АЦП) или на схемах формирователей сигналов (ФС), которые чаще всего выполняют функции гальванической развязки и формирования уровней двоичных сигналов стандарта ТТЛ.
Размещено на http://www.allbest.ru/
Рисунок 1.1 - Структура МКС
МК с требуемой периодичностью вырабатывает управляющие сигналы на своих выходных портах. Некоторая часть управляющих сигналов интерпретируется как совокупность простых двоичных сигналов управления, которые через схемы формирователей сигналов поступают на исполнительные устройства. Другая часть управляющих сигналов представляет собой многоразрядные двоичные коды, которые через цифро-аналоговые преобразователи (ЦАП) воздействуют на исполнительные устройства аналогового типа.
С помощью пульта управления (ПУ) оператор получает возможность управлять работой МКС и контролировать ее функционирование: запускать МКС, получать значения некоторых сигналов, снимать с индикаторов информацию о состоянии объекта и т.п. С помощью интерфейса МКС может передавать обработанную информацию на центральный компьютер по его запросу.
Структурная схема разрабатываемой МКС приведена на рисунке 1.2:
Рисунок 1.2 - Структурная схема микроконтроллерной системы управления объектом
Ее центральной частью является однокристальный микроконтроллер AT89C52, имеющий внутреннюю память программ объемом 8 Кбайт и 32 двунаправленных линий ввода/вывода. МК имеет 3 таймера Т/С0, Т/С1 и T/C2. Таймер Т/С0 используется для отсчета времени Топр, а таймер Т/С1 используется для задания требуемой скорости обмена 9600 бит/с по интерфейсу ИРПС.
Аналоговые сигналы U1,U2,U3 через коммутатор (аналоговый мультиплексор) поступают на АЦП. С выхода АЦП 10-разрядный код поступает в МК. МК выдает адрес для выбора канала коммутатора, а также сигнал для запуска АЦП.
Цифровые (двоичные) сигналы X1,X2,X3,X4, X5 поступают на входы МК. Управляющие сигналы Y1,Y2 и Y3, представляющие собой одиночные импульсы определенной длительности, вырабатываются микроконтроллером. Они усиливаются по току с помощью формирователей сигналов ФС1, ФС2, ФС3.
Сигналы последовательного интерфейса TxD (передаваемые данные) и RxD (принимаемые данные) вырабатываются последовательным портом (УАПП) микроконтроллера. Для преобразования их в сигналы интерфейса ИРПС служит блок сопряжения.
Пульт оператора включает в себя8 светодиодов для индикации значений сигналов X1,X2,X3,X4,X5,Y1,Y2,Y3; четыре семисегментных светодиодных индикатора для отображения аналоговых сигналов (напряжений) U1,U2,U3; 3 переключателя для выбора аналоговых каналов; переключатель режима работы МКС кнопку “Сброс”, при нажатии на которую производится сброс МК.
2. РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ МКС
Проектирование микропроцессорной системы начнем с аппаратурной части. Выберем схему включения микроконтроллера, разработаем схемы ввода сигналов от датчиков, подключения элементов индикации и управления, сопряжения с интерфейсом.
2.1 Схемы подключения микроконтроллера
На рисунке 2.1 приведена типовая схема подключения микроконтроллера AT89C52, имеющего внутреннюю память программ объемом 8 Кбайт.
Для обеспечения генерации тактовой частоты =18.5МГц, к выводам XTAL1 и XTAL2 подключен кварцевый резонатор ZQ1. Частота резонатора выбирается из условия =. Конденсаторы С2,С3 служат для облегчения запуска внутреннего генератора. Цепочка С1,R1 обеспечивает сброс МК при подаче электропитания. С помощью кнопки SB1, расположенной на пульте управления, сброс МК может выполнить оператор в любой момент времени. На вывод EA подан высокий уровень, что разрешает работу внутренней памяти программ. Конденсатор С4 служит для фильтрации высокочастотных помех, возникающих на выводах источника питания при работе микросхемы.
К выводам порта Р0 присоединены “подтягивающие” резисторы R2-R9, которые обеспечивают ток для входов микросхем ТТЛ, подключенных к этому порту, при высоком логическом уровне, когда все линии Р0 находятся в z-состоянии. Порты Р1,Р2,Р3 имеют внутренние “подтягивающие” резисторы.
Рисунок 2.1 -Схема подключения микроконтроллера
2.2 Схемы ввода цифровых и аналоговых сигналов
Реализация схем ввода сигналов от датчика МКС зависит от их количества, а также типа заданного АЦП. При разработке схемы подключения АЦП следует учитывать разрядность кода и возможность управления выходными буферами микросхемы.
На рис. 2.2 приведена функциональная схема ввода цифровых и аналоговых сигналов при использовании АЦП типа К1113ПВ1. Микросхема DA1 КР590КН1 является коммутатором аналоговых входных сигналов U1-U3. Переключение входных каналов коммутатора выполняется цифровыми сигналами уровней ТТЛ, подаваемых на адресные входы А1 и А0. Таблица истинности коммутатора имеет вид:
А1 |
А0 |
Соединение |
|
0 |
0 |
Y=X1 |
|
0 |
1 |
Y=X2 |
|
1 |
0 |
Y=X3 |
Операционный усилитель DA2 включен по схеме повторителя и служит для устранения влияния низкоомного входа АЦП на коммутатор.
Рис. 2.2. Схема ввода цифровых и аналоговых сигналов с АЦП К1113ПВ1
Особенностью микросхемы К1113ПВ1 является то, что в ней отсутствует возможность управления выходными буферами выдачи цифрового кода [3]. После запуска АЦП выходы буферов будут в z-состоянии. Когда преобразование закончится (сигнал на выводе станет равным 0), выходы буферов переходят в активный режим и на выводах D0-D7 появится цифровой код, который будет неизменным до нового запуска АЦП. В схеме на рис. 2.2 разряды D0-D7 выходного кода АЦП подаются на входы буферного регистра DD2. Сигнал готовности данных АЦП и цифровые входные сигналы Х1-Х4 подаются на входы DD3. Выходы регистров DD2 и DD3 соединены с выводами порта Р0 МК. Управление выходными буферами регистров осуществляется от линий Р3.3 и Р3.4. При Р3.3=1, Р3.4=1 выходы регистров DD2, DD3 находятся в z-состоянии и они отключены от выводов порта Р0. Запуск АЦП выполняется сигналом от линии Р1.4. Переключение каналов коммутатора производят сигналы с линий P1.1, Р1.2 микроконтроллера.
Рисунок 2.3 -Условное обозначение микросхемы КР590КН1
Параметры микросхемы КР590КН1:
Напряжение источника питания - +/-15В
Максимальный ток потребления высокого уровня - 1000 мкА
Максимальный ток потребления низкого уровня - 15 мкА
Максимальная потребляемая мощность - 17 мВт
Максимальный входной ток высокого уровня - 0.2 мкА
Максимальный входной ток низкого уровня - 0.2 мкА
Ток утечки в закрытом состоянии ключа - 70 нА
Сопротивление в открытом состоянии - 300 Ом
Емкость аналогового входа - 10 пФ
Коммутируемый ток - 20 мА
Операционный усилитель DA2 включен по схеме повторителя и служит для устранения влияния низкоомного входа АЦП на коммутатор.В качестве DA2 используется микросхема К140УД17.
Параметры микросхемыК140УД17:
Uпит=±15 В.
Ku=50000;
Uсм=4 мВ;
Iвх=200 нА.
Микросхема 10-разрядного быстродействующего функционально законченного АЦП последовательного приближения К1113ПВ1 предназначена для преобразования аналогового сигнала в параллельный двоичный код. Условное графическое обозначение приведено на рисунке 2.4.
Рисунок 2.4 - Условное обозначение АЦП К1113ПВ1
Параметры микросхемы К1113ПВ1:
Напряжение источника питания - +/-5 В
Опорное напряжение - +/-10 В
Максимальный ток потребления - 1,8мА
Максимальное время преобразования - 170 мкс
Число разрядов - 10
2.3 Схемы вывода управляющих сигналов
В проектируемой МКС имеются 3 управляющих сигнала Y1, Y2, Y3. Эти сигналы представляют собой одиночные импульсы ТТЛ - уровней, поступающие на исполнительные устройства МКС. Управляющие сигналы снимаются с портов МК. Однако следует учитывать, что нагрузочная способность портов P1, P2, P3 мала: 1,6 мА, 40 мкА. Емкость нагрузки не должна превышать 150 пФ. Для увеличения нагрузочной способности линий портов МК следует использовать усилительные элементы. Это обычно микросхемы, имеющие выходы с открытым коллектором. В схеме на рисунке 2.5 используется повторитель К155ЛП9. При сигнале на входе уровня логической 1 на выходе будет также 1.
Рисунок 2.5 -Схема вывода управляющих сигналов Y1,Y2,Y3
Рисунок 2.6 -Условное обозначение и назначение выводов микросхемы К155ЛП9
Параметры микросхемы К155ЛП9:
Напряжение источника питания - +5В
Максимальное выходное напряжение низкого уровня - 700 мВ
Максимальный выходной ток высокого уровня - 40 мкА
Максимальный выходной ток низкого уровня - 1.6 мкА
Максимальное время задержки включения - 30 нс
Максимальное время задержки выключения - 10 нс
2.4 Схема подключения клавиатуры
В разрабатываемой МКС на пульте управления имеется простейшая клавиатура, состоящая из клавиш для переключения аналоговых сигналов, а также переключателя (тумблера) для ввода режима работы МКС. Схема подключения клавиатуры приведена на рисунке 2.7.
Рисунок 2.7 - Схема подключения клавиатуры
Переключатели SA1-SA3 служат для выбора аналоговых сигналов U1-U3, а переключатель (тумблер) SA4 - для выбора режима работы МКС: “Работа-Пульт”. Особенностью переключателей SA1-SA3 является то, что они взаимозависимы, т.е. в любой момент времени может быть замкнут только один из них. Использование регистра DD4 обусловлено нехваткой свободных линий портов МК.
2.5 Схема подключения светодиодов индикации и семисегментных светодиодных индикаторов
В проектируемой МКС на пульте управления имеются светодиоды для индикации значений входных сигналов X1-X5 и управляющих Y1, Y2, Y3, а также семисегментные индикаторы (ССИ), предназначенные для отображения аналоговых сигналов (напряжений) U1,U2,U3. В соответствие с заданием преобразование двоичных позиционных кодов в семисегментные для CСИ осуществляется аппаратурно, выбраны семисегментные светодиодные индикаторы, число знакомест дисплея равно четырем, используется статический способ управления дисплеем.
Схема подключения светодиодов индикации VD1 - VD8 и семисегментных светодиодных индикаторов HG1 - HG4 приведена на рисунке 2.8. Ее особенностью является то, что элементы индикации непосредственно подключены к выходам регистров DD6 - DD10, без использования инверторов с открытым коллектором. Дело в том, что регистры КР1533ИР33 обладают высокой нагрузочной способностью при низком уровне сигнала на выходах I вых <= 20 мА, что вполне достаточно для яркого свечения светодиодов. Однако для работы элементов индикации нужно на входы регистров DD6 - DD10 подавать инверсные значения данных с порта P0 микроконтроллера для их отображения на VD1 - VD7 и HG1 - HG4. Индикатор HG1 отображает младшую десятичную цифру, а HG4 - старшую.
Рисунок 2.8- Схема подключения индикаторов.
2.6 Схемы сопряжения с последовательным интерфейсом
Разрабатываемая микроконтроллерная система должна иметь связь с внешним удаленным компьютером через последовательный интерфейс ИРПС (токовая петля). По запросу внешнего компьютера МК должен передавать данные о сигналах X1-Y3 и коды аналоговых сигналов U1-U3, получаемых с помощью АЦП. Обычно для связи МКС с внешним компьютером используют программный метод управления передачей, так как это позволяет уменьшить число линий связи [1]. В этом случае интерфейс должен обеспечить двустороннюю передачу, т.е. от компьютера к МК (запрос) и от МК к компьютеру (передача данных). При сопряжении МК со стандартным последовательным интерфейсом необходимо решать следующие проблемы [1]:
a) согласование уровней сигналов интерфейса с уровнями МОП МК;
b) поддержание стандартной скорости приемо-передачи;
c) поддержание стандартных форматов посылки;
d) поддержание стандартных протоколов обмена
На рис. 2.9 приведена схема сопряжения с интерфейсом ИРПС (токовая петля 20 мА). Принимаемые данные (импульсы тока 20 мА в цепи +ПрД/-ПрД) преобразуются в уровни МОП с помощью оптрона V1 и инвертора DD1. Оптрон также обеспечивает гальваническую развязку передатчика (компьютера) и приемника (МК). Передаваемые данные (импульсы тока 20 мА в цепи +ПД/-ПД) образуются из уровня МОП с помощью инвертора DD2 и оптрона V2, который также обеспечивает гальваническую развязку передатчика (МК) и приемника (компьютера). Схема требует дополнительный источник питания Uп1 напряжением 12 В, гальванически не связанный с источником +5В питания МК.
Рисунок.2.9. Схема сопряжения МК с интерфейсом ИРПС
3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАБОТЫ МКС
Блок-схема алгоритма работы МКС представлена на рисунке 3.1. После включения электропитания или нажатия кнопки “Сброс” на пульте управления (ПУ) выполняется начальная установка (инициализация) системы (блок 1 БСА): вывод начальных значений управляющих воздействий, гашение элементов индикации на ПУ, очистка рабочих ячеек памяти данных МК, настройка последовательного порта и таймеров. Таймер опроса начинает отсчет времени Топр.
Размещено на http://www.allbest.ru/
Рисунок 3.1 - Блок-схема алгоритма работы МКС
Блок 2 выполняет задачу логического управления. В нем производится ввод и обработка цифровой информации, поступающей от двоичных датчиков. В блоке 3 производится ввод и обработка аналоговой информации. Далее в блоке 4 разрешаются прерывания от интерфейса. Запрос прерывания поступает по интерфейсу от центрального компьютера. В блоке 5 проверяется положение переключателя режима работы МКС, находящегося на ПУ. Если переключатель в положении “Пульт”, то управление системой передается пульту управления (блок 6 БСА). Если переключатель находится в положении “Работа”, то программа переходит к блоку 7, в котором циклически проверяется флаг окончания счета времени Топр. По истечении времени Топр таймер устанавливает флаг окончания счета и запрещается прерывание от интерфейса. Далее программа переходит вновь на выполнение блока 2, т.е. зацикливается.
3.1 Главная программа работы МКС
Размещено на http://www.allbest.ru/
Рисунок 3.2 - БСА главной программы работы МКС
Алгоритм работы МКС был приведен на рисунке 3.1. По нему составим блок-схему алгоритма (БСА) главной программы работы МКС, которая будет иметь символическое имя CONTROL. БСА этой программы приведена на рисунке 3.2. Из нее видно, что главная программа состоит из нескольких подпрограмм, которые вызываются по мере надобности. Такое построение упрощает структуру программы, делает ее более наглядной. Кроме того, использование подпрограмм упрощает разработку и отладку всей программы работы МКС. В программе определен массив ячеек памяти данных МК с начальным символическим адресом DATA_W для хранения кодов с выхода АЦП. Так как входных переменных 4, то массив будет иметь 8 ячеек. В памяти программ, начиная с адреса 0030H, размещаются двухбайтные константы, которые будут использоваться при вычислениях функций. Значения констант условно обозначено XXXXH. Константы занимают в памяти 2 ячейки, например, по адресу ADR_K2 размещается младший байт (МлБ), а по следующему адресу ADR_K2+1 - старший байт (СтБ) константы. В главной программе используются 2 прерывания: от таймера Т/С0 и от УАПП. Флаг F0 используется для индикации окончания отсчета времени опроса Топр. Он устанавливается, когда истечет время Tопр = 3.2 с.
Текст главной программы на языке Ассемблера для МК51 имеет следующий вид:
;*************************************************************
; CONTROL - главная программа работы МКС
;*************************************************************
DATA_W: EQU 30H ; Начальный адрес массива в ПД для
; хранения кодов АЦП
ORG 0000H ; Начальный адрес программы
CONTROL: JMP MAIN ; Переход на основную программу
ORG 000BH ; Вектор прерывания от Т/С0
CALL TIMER ; Подпрограмма отсчета времени Топр
RETI
ORG 0023H ; Вектор прерывания от УАПП
CALL TRANSMIT ; Подпрограмма передачи данных в
; интерфейс
RETI
ORG 0030H ; Таблица констант
ADR_К1: DW XXXXH ; Константа К1
ADR_Q: DW XXXXH ; Константа Q
ORG 0050H ; Основная программа
MAIN: MOV SP, #70H ; Определить стек
CALL INIT ; Подпрограмма инициализации МКС
AGAIN: CALL DIGIT ; Подпрограмма ввода и обработки
; цифровой информации
CALL ANALOG ; Подпрограмма ввода и обработки
; аналоговой информации
SETB ES ; Разрешить прерывание от УАПП
SETB PS ; Присвоить прерыванию от УАПП
; высший приоритет
; Опрос состояния переключателя SA4 “Работа/Пульт”
MOV P0, #0FFH ; Настроить порт P0 на ввод
CLR P3.5 ; Открыть выходные буферы DD4
MOV A,P0 ; Ввод из P0
SETB P3.5 ; Закрытьбуферы DD4
JB ACC.7, COUNT ; Переход, если SA4 разомкнут (Работа)
CALL PULT ; Подпрограмма обслуживания пульта
; управления
JMP AGAIN ; Зацикливание программы
COUNT: JNB F0, COUNT ; Цикл отсчета времени Tопр = 3.2 с
CLR F0 ; Сбросить флаг окончания счета Tопр
CLR ES ; Запретить прерывания от УАПП
JMP AGAIN ; Зацикливание программы
3.2 Подпрограмма инициализации МКС
Размещено на http://www.allbest.ru/
Рисунок 3.3 - БСА подпрограммы инициализации МКС
Подпрограмма INIT используется для инициализации МКС после включения электропитания. БСА подпрограммы приведена на рисунке 3.3. При сбросе МК все порты настраиваются на ввод [1,2], т.е. на их выводах будут высокие уровни (логические 1). Поэтому необходимо вывести P1.2 = P1.3 = P1.4 = 0 для установки начальных значений управляющих сигналов Y1 = Y2 = Y3 = 0. Необходимо также вывести нули в порт P0 для гашения светодиодов индикации VD1- VD8 и индикаторов дисплея HG1 - HG4, так как после включения электропитания на выходах регистра DD5, DD6 могут быть случайные значения.
В подпрограмме инициализации необходимо настроить УАПП и таймеры Т/C0, T/C1 на заданные режимы работы. Для двустороннего обмена по интерфейсу ИРПС выбираем для УАПП режим 1. Управляющее слово, которое следует загрузить в регистр SCON, будет 52H [1,2]. Скорость обмена УАПП задает таймер T/C1, который должен работать в режиме 2. Управляющее слово, которое нужно загрузить в регистр TMOD, будет 20H. Для получения заданной скорости обмена в регистр TH1 таймера T/С1 необходимо загрузить число, которое вычисляется из соотношения [2]:
.
При SMOD=0, =18.5 МГц и=9600 бит/с получаем из формулы число FBH.
Для отсчета времени Топр будем использовать таймер T/С0 в 1-м режиме работы. Управляющее слово для этого режима равно 01H. При тактовой частоте работы МК, равной 18.5 МГц, максимальное время задержки будет 65536*0.6486=42510 мкс [1,2], что значительно меньше требуемой 3.2 с. Поэтому на таймере T/C0 реализуем задержку на 40мс, а в регистре общего назначения (РОН) будем накапливать количество переполнений таймера с целью получения требуемой задержки в 3.2 с. Для получения задержки 40 мс в регистры таймера TH0,TL0 первоначально необходимо загрузить число 42510-40000=2510=09СЕH. Количество переполнений таймера для отсчета времени 3.2 с будет 3200 мс / 40мс = 80. Для счета переполнений будем использовать регистр R0 1-го банка РОН.
;*************************************************************
; INIT - подпрограмма инициализации МКС
;*************************************************************
INIT: ANL P1, #00011111B ; ВыводР1.5=Р1.6=Р1.7=0
ANL P2, #11100000B ;Закрыть триггеры регистров DD5-
; DD9
; настроить УАПП
MOV P0, #0 ; Вывести нули в порт P0(погасить
; VD1-VD8)
CLR P3.6 ; Отключить DD5
MOV SCON, #52H ; Режим 1 для УАПП, двусторонний
; обмен
MOV TMOD, #20H ; Режим 2 для T/С1
MOV TH1, #0FBH ; Загрузить TH1 для скорости
; обмена 9600 бит/с
SETB TR1 ; Запустить T/С1
ORL TMOD, #01H ; Режим 1 для T/С0
MOV TH0, #09H ; Загрузить регистры T/С0
MOV TL0, #0CEH ; для отсчета задержки 40 мс
MOV 08H, #0 ; Очистка регистра R0 в 1-м банке P0H
SETB TR0 ; Запустить T/С0
SETB EA ; Общее разрешение прерываний
SETB ET0 ; Разрешить прерывание от T/С0
RET
3.3 Подпрограмма отсчета времени Tопр =3.2 с
Размещено на http://www.allbest.ru/
Рисунок 3.4 - БСА подпрограммы отсчёта времени Tопр
Подпрограмма TIMER является обработчиком прерывания при переполнении таймера T/C0, ее БСА приведена на рисунке 3.4. Эта подпрограмма производит отсчет времени опроса Топр. При каждом вызове подпрограммы вследствие переполнения таймера (истекло 40 мс) инкрементируется регистр R0 в 1-м банке РОН. Если содержимое R0 станет равным 56, то это означает, что истекло время Топр = 3.2 с. После окончания отсчета времени 3.2 с подпрограмма TIMER устанавливает флаг F0 = 1, что является сигналом для главной программы CONTROL начать новый цикл опроса датчиков и выполнения других функций управления.
;*************************************************************
;TIMER - подпрограмма отсчета времени Tопр = 3.2 с
; Выходной параметр: F0 - флаг окончания отсчета времени
; Используется 1-й банк PОH
;*************************************************************
TIMER: CLRTR0 ; Остановить T/С0
SETBRS0 ; Перейти в 1-й банк P0H
INCR0
CJNER0, #80,EXIT ; Переход, если (R0)<80
SETBF0 ; Установить флаг F0 окончания ;cчета 3.2c
MOVR0, #0 ; Очистить R0
EXIT: MOVTH0, #09H ; Перезагрузить T/С0
MOVTL0, #0CEH
SETBTR0 ; Запустить T/С0
CLRRS0 ; Перейти в 0-й банк P0H
RET
3.4 Подпрограмма ввода и обработки цифровой информации
Размещено на http://www.allbest.ru/
Рисунок 3.5 - БСА подпрограммы ввода и обработки цифровой информации
Подпрограмма DIGIT выполняет обработку цифровых сигналов X1-X5, поступающих в МКС от датчиков. БСА подпрограммы DIGIT изображена на рисунке 3.5. Ввод цифровых сигналов осуществляется через регистр DD3. Перед вводом данных из DD3 необходимо настроить порт P0 МК на ввод, а затем открыть выходные буферы DD3 подачей на управляющий вход OE низкого уровня с линии P3.4порта МК (блоки 1 и 2 БСА). После ввода данных в аккумулятор МК надо вновь закрыть выходные буферы DD3 (блоки 3 и 4 БСА).
Ячейка ПД с адресом 24H используется в программе для хранения значений входных сигналов X1-X5. Выбор этого адреса обусловлен тем, что эта ячейка, как и другие с адресами от 20H до 2FH, допускают обращение к отдельным битам с помощью команд SETBbit и CLRbit [1,2], что упрощает программирование. После выполнения подпрограммы DIGIT в ячейке 20H будет:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- разряды |
||
24H |
0 |
0 |
Y1 |
X5 |
X4 |
X3 |
X2 |
X1 |
Для формирования одиночного управляющего импульса Y1 длительностью t1 = 65мкс используется подпрограмма задержки DEL65MKS, текст которой будет приведен ниже.
;*************************************************************
; DIGIT - подпрограмма ввода и обработки цифровой информации
; Используется ячейка ПД с адресом 24H для хранения значений
; X1,X2,X3,X4,X5,Y1,Y2,Y3
;*************************************************************
DIGIT: MOV P0, #0FFH ; Настроить P0 на ввод
CLR P3.4 ; Открыть выходные буферы DD3
MOV A, P0 ; Ввод сигналов X1-X5
SETB P3.4 ; Закрыть буферы DD3
ANL A, #00011111B ;Обнулить старшую тетраду (СтТ)
; аккумулятора
RR A ; Сдвинуть содержимое
RR A ; Сдвинуть содержимое
RR A ; Сдвинуть содержимое
MOV 24H, A ; Переслать аккумулятор в ячейку 24H
MOV C, 24H.2 ; Переслать С X3
ANL C, /24H.1 ; C f( ) =
ORL C, /24H.0 ; C f( ) =
MOV 25H.0, C ; 25H.0 C
MOV C, 24H.3 ; C f( ) =
ANL C, /24H.4 ; C f( ) =
ORL C, 25H.0 ; C f( ) =
MOV 24H.5, C ; Переслать результат в 24H.5f( )
JNC EXIT ; Переход, если С = f( ) = 0
SETB P1.5 ; Вывести Y1=1
CALL DEL65MKS ; Подпрограмма задержки на 65мкс
CLR P1.5 ; Вывести Y1=0
RET
3.5 Подпрограмма ввода и обработки аналоговой информации
Размещено на http://www.allbest.ru/
Рисунок 3.6 - БСА подпрограммы ввода и обработки аналоговой информации
Подпрограмма ANALOG выполняет ввод и обработку аналоговой информации - напряжений U1 - U3, поступающих в МКС от датчиков. Детальная БСА подпрограммы ANALOG изображена на рисунке 3.6. Первый блок БСА - это подпрограмма OPROS, которая производит ввод аналоговых сигналов U1 - U3, их преобразование в цифровые коды W1 - W3 и размещение в памяти данных МК. В результате выполнения подпрограммы OPROS в ПД в ячейках с адресами 30H - 35H будет следующая информация
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- разряды |
||
35H |
0 |
0 |
0 |
0 |
0 |
0 |
x |
x |
СтБ W3 |
|
34H |
x |
x |
x |
x |
x |
x |
x |
x |
МлБ W3 |
|
33H |
0 |
0 |
0 |
0 |
0 |
0 |
x |
x |
СтБ W2 |
|
32H |
x |
x |
x |
x |
x |
x |
x |
x |
МлБ W2 |
|
31H |
0 |
0 |
0 |
0 |
0 |
0 |
x |
x |
СтБ W1 |
|
(DATA_W) 30H |
x |
x |
x |
x |
x |
x |
x |
x |
МлБ W1 |
Здесь обозначеноx - произвольное значение (0 или 1).
В блоках 2 - 4 подпрограммы ANALOG производится вычисление заданной функции g() =.
В блоке 5 БСА полученное значение функции g() сравнивается с двухбайтной константой Q, хранящейся в памяти программ по символическому адресу ADR_Q. Сравнение можно выполнить с помощью программы вычитания двухбайтных целых чисел g() - Q. Результат сравнения определяется значением флага переноса C микроконтроллера после вычитания старших байтов. Если C=1, то g()<Q. Если же С=0, то g()>=Q.
В блоке 6 подпрограммы ANALOG производится анализ флага C, и в зависимости от его значения формируются одиночные импульсы Y2 или Y3 длительностью t2 и t3 на выводах P1.5 и P1.4 порта МК. Подпрограммы задержек DEL85MS на 85 мс и DEL37MS на 37 мс будут приведены ниже. После выполнения подпрограммы ANALOG в ячейке с адресом 24H будет:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- разряды |
||
24H |
Y3 |
Y2 |
Y1 |
X5 |
X4 |
X3 |
X2 |
X1 |
;*************************************************************
; ANALOG - подпрограмма ввода и обработки аналоговой информации
;*************************************************************
ANALOG: CALL OPROS ; Подпрограмма ввода аналоговых
;сигналов U1-U3, преобразования ;их в коды W1-W5 и запоминания в
;массиве DATA_W
;Вычисление
MOV A,DATA_W+1
MOV B,#15 ; Множитель
MUL AB ; Перемножение 15*W2
MOV 25H,A ; МлБ
MOV 26H,B ; СтБ
; Вычисление
MOV A,DATA_W+2
MOV B,#4 ;Множитель
MUL AB ; Перемножение 5*W1
MOV 27H,A ; МлБ
MOV 28H,B ; СтБ
;Вычисление 15W1+4W2
MOV A,25H
CLR C ; Сбросить флаг C
ADD A,27H
MOV 25H,A ; МлБ g( )
MOV A,26H
ADD A,28H
MOV 26H,A ; СтБ g( )
; Вычисление 7W3
MOV A,DATA_W+3
MOV B,#7 ; Множитель
MUL AB ; Перемножение 7*W3
MOV 27H,A ; МлБ
MOV 28H,B ; СтБ
; Вычисление 15W1+4W2-7W3
MOV A,25H
SUBB A,27H
MOV 25H,A ; МлБ g( )
MOV A,26H
SUBB A,28H
MOV 26H,A ; СтБ g( )
; Вычисление 15W1+4W2-7W3+K1
MOV DPTR,#ADR_K1 ; Адрес константы K1
CLR A
MOVC A,@A+DPTR ; В аккумуляторе МлБ К1
MOV R4,A ; В R4-МлБ константы К1
MOV A,#1
MOVC A,@A+DPTR ; В аккумуляторе СтБ К1
MOV R5,A ; В R5-СтБ константы К1
MOV A,25H
ADD A,R4 ; Сложение МлБ
MOV 25H,A ; В ячейке 25H МлБ суммы
MOV A,26H
ADD A,R5 ; Сложение СтБ
MOV 26H,A ; В ячейке 26H СтБ суммы
; Вычисление g( ) - Q
MOV DPTR, #ADR_Q Адрес константы Q
CLR A
MOVC A, @A+DPTR
MOV R3, A ; В регистре R3 - МлБ константы Q
INC A
MOVC A, @A+DPTR
MOV R4, A ; В регистре R4 - СтБ константы Q
CLR C
MOV A, R6
SUBB A, R3 ; Вычитание младших байтов
MOV A, R7
SUBB A, R4 ; Вычитание старших байтов
JC FORM_Y2 ; Переход, если меньше (С=1)
SETB P1.7 ; Вывести Y3=1
SETB 24H.7 ; Запомнить Y3=1 в ячейке 24H
CALL DEL70MS ; Подпрограмма задержки на 70 мс
CLR P1.7 ; Вывести Y3=0
RET
FORM_Y2: SETB P1.6 ; Вывести Y2=1
SETB 24H.6 ; Запомнить Y2=1 в ячейке 24H
CALL DEL14MS ; Подпрограмма задержки на 14 мс
CLR P1.6 ; Вывести Y2=0
RET
Для формирования управляющих сигналов Y1, Y2, Y3 в программу работы МК необходимо ввести временные задержки различной длительности. Так как оба таймера МК заняты, то для реализации временных задержек используем метод программных циклов. Для задержки длительностью t1 = 65мкс используем подпрограмму DEL, которая вызывается командой CALLDEL, ее текст
DEL: MOV R7, #N
LOOP: DJNZ R7, LOOP
RET
В описании команд МК51 указывается, за сколько машинных циклов (МЦ) выполняется каждая команда: MOVR7,#N - 1 МЦ, DJNZ - 2 МЦ, RET - 2 МЦ, CALL - 2 МЦ.
Время машинного цикла связано с тактовой частотой работы МК соотношением:
. (3.1)
При Fclk=18.5 МГц имеем:
мкс.
Время задержки
(3.2)
При мкс имеем
.
Для реализации задержки длительностью =14мс и =70мс используем подпрограмму с двумя вложенными циклами:
DELAY: MOV R6, #EXTR
LOOP2: MOV R7, #INTR
LOOP1: DJNZ R7, LOOP1 ; Внутренний цикл
DJNZ R6, LOOP2 ; Внешний цикл
RET
Необходимо определить значение констант INTR и EXTR, задающих времена, соответственно, и. Можно записать для времени внутреннего цикла:
. (3.3)
Примем мкс, тогда
.
Для времени внешнего цикла
(3.4)
При
При
Окончательно подпрограммы временных задержек будут иметь следующий вид:
;*************************************************************
; DEL65MKS - подпрограмма задержки на 65мкс ;*************************************************************
DEL65MKS: MOV R7, #48
LOOP: DJNZ R7, LOOP
RET
;*************************************************************
; DEL14MS - подпрограмма задержки на 14мс ;*************************************************************
DEL14MS: MOV R6, #35
LOOP2: MOV R7, #200
LOOP1: DJNZ R6, LOOP1
DJNZ R6, LOOP2
RET
;*************************************************************
; DEL70MS - подпрограмма задержки на 70мс ;*************************************************************
DEL70MS: MOV R6, #175
LOOP2: MOV R7, #200
LOOP1: DJNZ R7, LOOP1
DJNZ R6, LOOP2
RET
3.6 Подпрограмма ввода аналоговых сигналов U1-U3
Размещено на http://www.allbest.ru/
Рисунок 3.7 - БСА ввода аналоговых сигналов U1-U3
Подпрограмма OPROS производит переключение аналоговых каналов коммутатора DA1, обслуживание АЦП и размещение в ПД в массиве DATA_W кодов W1-W3. Она использует подпрограмму ADCONV - аналого-цифрового преобразования. БСА подпрограммы OPROS приведена на рисунке 3.7.
;*************************************************************
;OPROS - подпрограмма ввода аналоговых сигналов U1-U3.
;*************************************************************
OPROS: MOV R0, #DATA_W ; Начальный адрес массива
;DATA_W
MOV R7, #3 ; Счетчик аналоговых сигналов
MOV R2, #00011100B ; Регистр R2 - код для выбора
; канала коммутатора DA1
NEXT: MOV P1, R2 ; Вывод в P1 - выбор канала
; коммутатора
CALL ADCONV ; Подпрограмма АЦ-преобразования,
MOV @R0, A ; Пересылка АЦП в массив DATA-W
INCR0
INCR2
DJNZ R7, NEXT ; Цикл, если (R7) 0
RET
3.7 Подпрограмма аналого-цифрового преобразования
микроконтроллер сигнал датчик светодиод
Размещено на http://www.allbest.ru/
Рисунок 3.8 - БСА подпрограммы обслуживания АЦП
Подпрограмма ADCONV выполняет обслуживание АЦП, ее БСА приведена на рисунке 3.8. Для запуска АЦП К1113ПВ1 формируется импульс вида 1->0->1 на линии P1.5 порта МК. После этого происходит ввод кода АЦП из регистра DD3 в регистр А МК.
;*************************************************************
; ADCONV - подпрограмма аналого-цифрового преобразования
;*************************************************************
ADCONV: CLRP1.5
SETBP1.5 ; Запустить АЦП
CLRP1.5
MOVP0, #0FFH ; Настроить порт P0 на ввод
CLRP3.4 ; Открыть выходные буферы DD3
TEST: JB P0.2, TEST ; Цикл ожидания готовности данных АЦП
SETB P3.4 ; Закрыть буферы DD3
CLR P3.3 ; Открыть буферы DD2
MOV A, P0 ; Ввод МлБ кода АЦП
SETB P3.3 ; Закрыть буферы DD2
RET
3.8 Подпрограмма обслуживания пульта управления
Размещено на http://www.allbest.ru/
Рисунок 3.9 - БСА подпрограммы обслуживания пульта управления
Подпрограмма PULT используется для обслуживания пульта управления. Она вызывается, если переключатель режима SA4 будет в положении “Пульт”. БСА подпрограммы приведена на рисунке 3.9. Рассмотрим программную реализацию некоторых блоков алгоритма.
В блоке 2 подпрограммы PULT выводится информация на светодиоды индикации VD1 - VD8 из ячейки ПД с адресом 24H, где хранятся значения переменных X1-X5, Y1-Y3.
Блок 3 - это подпрограмма IDNKEY - идентификации замкнутых контактов переключателей аналоговых каналов SA1-SA3. Затем по коду переключателя в блоке 4 вычисляется адрес кода Wi из массива DATA_W, и в блоке 5 код Wi пересылается в регистры R2 и R3.
Блок 6 - это подпрограмма CALC, в которой вычисляется значение кода Ui для вывода на дисплей.
Блок 7 - это подпрограмма вывода на индикаторы дисплея.
В блоке 8 программа проверяет положение переключателя SA4 “Работа/Пульт” на пульте управления. Если SA4 замкнут, то продолжается программа обслуживания пульта управления. Если же SA4 разомкнут, то программа гасит светодиоды индикации и дисплей (блок 9) и запускает таймер T/C0 для отсчета времени Топр (блок 10). Затем происходит переход на блок 3 главной программы CONTROL (см. рисунок 3.2).
;*************************************************************
; PULT - подпрограмма обслуживания пульта управления
;*************************************************************
PULT: CLR ES ; Запретить прерывания
CLR ET0 ; от УАПП и Т/С0
CLR TR0 ; Остановить Т/С0
; Вывод информации X1-X5, Y1-Y3 на светодиоды VD1-VD8
MOV A, 24H ; Переслать в аккумулятор содержимое
;ячейки 24H
CPL A ;Инвертировать аккумулятор
MOV P0, A ; Вывод в порт P0
SETB P2.0 ; Открыть триггеры регистра DD5 - вывод
; на VD1 - VD8
CLR P2.0 ; Защелкивание триггеров регистра DD5
KEY: CALLINDKEY ; Подпрограмма идентификации
;замкнутыхSA1-SA3 ,в регистре R7-
;двоичный код SA1-SA3
; Вычисление адреса кода Wi АЦП по коду SA1-SA3
MOV A, R7;
MOV A, #DATA_W ; Начальный адрес массив DATA_W
ADD A, R7
MOV R0, A ; В регистре R0-адрес МлБ кодаWi
; Пересылка кода Wi в регистр R3
MOV A, @R0
MOV R3, A ; В регистр R3-код АЦП
CALL CALC ; Подпрограмма вычисления кода
; Ui для вывода на HG1-HG4
CALL DISPLAY ; Подпрограмма вывода кода Ui
;наHG1-HG4
; Проверка состояния переключателя SA4
MOV P0,#FFH ; Настроить порт P0 на ввод
CLR P3.5 ; Открыть выходные буферы DD4
MOV A,P0 ; Вводиз P0
SETB P3.5 ; Закрытьбуферы DD4
JNB ACC.7, KEY ; Переход, если SA4замкнут (“Пульт”)
; Переключатель SA4 разомкнут ( положение “Работа”)
MOV P0, #FFH ; Вывод единиц в порт P0
ORL P2, #00011111B ; Открыть триггеры
; регистров DD5 - DD8,
; погасить элементы индикации
ANLP 2, #11100000B ; Защелкивание триггеров
; регистров
MOV TH0,#ЕFH ; Загрузить Т/С0
MOV TL0,#1DH
MOV 08H,#0 ; Очистить регистр R0 банка 1
CLR F0 Сбросить флаг окончания счета
; времени
SETBET0 ; Разрешить прерывание от Т/С0
SETBTR0 ; Запустить Т/С0
RET
3.9 Подпрограмма идентификации замкнутогопереключателя SA1-SA3
Размещено на http://www.allbest.ru/
Рисунок 3.10 - БСА идентификации замкнутого SA1-SA3
Определение номера замкнутого контакта переключателя SA1 - SA3 выполняет подпрограмма IDNKEY, которая присваивает ему позиционный двоичный код в соответствии с таблицей 3.1.
Таблица 3.1 - Коды для переключателей SA1-SA3
Замкнут |
Унитарный код |
Позиционный код, HEX |
|
SA1 |
XXXX1110 |
00 |
|
SA2 |
XXXX1101 |
01 |
|
SA3 |
XXXX1011 |
02 |
БСА подпрограммы приведена на рисунке 3.10. Код с входов регистра DD5 пересылается в аккумулятор (блоки 1 - 4), а затем сдвигается вправо до появления нуля во флаге переноса C. Количество сдвигов накапливается в регистре R7. При выходе из подпрограммы в нем будет позиционный двоичный код замкнутого переключателя. Для корректной работы подпрограммы необходимо, чтобы соблюдалось условие всегда имеется только один замкнутый контакт, т.е. контакты переключателей SA1 - SA3 должны быть взаимозависимы.
;*************************************************************
; IDNKEY - подпрограмма идентификации замкнутого переключателя
;SA1-SA3
; Выходной параметр: регистр R7 - позиционный код переключателя
;*************************************************************
IDNKEY: MOV P0, #0FFH ; Настроить порт P0 на ввод
CLR P3.5 ; Открыть выходные буферы DD4
MOV A, P0 ; Вводиз P0
SETB P3.5 ; Закрыть буферы DD4
ANL A,#00001111B ; Выделить разряды D3-D0
MOV R7, #0 ; Счетчик сдвигов
SHIFT: RRC A ; Сдвиг аккумулятора вправо
JNC EXIT ; Выход, еслиC=0
INC R7
JMP SHIFT ; Цикл сдвига
EXIT: RET
3.10 Подпрограмма вычисления кода сигналов U1-U3 для вывода на дисплей
Размещено на http://www.allbest.ru/
Рисунок 3.11 - БСА подпрограммы вычисления кода сигнала U1-U3 для вывода на дисплей
Подпрограмма CALC вычисляет коды, соответствующие аналоговым сигналам (напряжениям) U1 - U3, для последующего вывода на дисплей.
Для АЦП К1113ПВ1 при 8-разрядном включении диапазон изменения выходного кода будет 0000H … FFH, что соответствует входному однополярному напряжению в диапазоне 0 … +10.24 В [4]. Чтобы найти напряжение Ui, соответствующее коду АЦП Wi, составим пропорцию:
Ui В ---- Wi
10.24 В ---- FFH.
Откуда получим
.
Все входящие в эту формулу числа надо преобразовать в дробные в формате с фиксированной запятой [12].
Имеем
,
Где условно обозначено ,YYY - дробное число в формате с фиксированной запятой в двоично-десятичном коде.
БСА подпрограммы CALC приведена на рисунке 3.11. Для выполнения арифметических операций с дробными числами в формате с фиксированной запятой (ФЗ) можно воспользоваться готовыми подпрограммами. Деление дробных двоичных чисел с ФЗ,Wi/,FFвыполняется подпрограммой с именем D16_16. Для ее работы необходимо загрузить в регистр R2 код Wi (делимое), а в регистр R4 -FF (делитель). Эта операция выполняется в блоке 1 БСА. Результатом деления (блок 2) будет дробное двоичное число с ФЗ в регистрах R6 - частного. В блоке 3 частное пересылается для временного хранения в регистр DPTR.
В блоке 4 посредством подпрограммы с именем C10_16AF производится преобразование дробного двоично-десятичного числа,1024 в дробное двоичное число с ФЗ, которое размещается в регистрах R3,R4.
В блоке 6 производится умножение полученных в блоках 2 и 4 дробных двоичных чисел с помощью подпрограммы M16_16F. Результат умножения будет находиться в регистрах R7,R6.
В блоке 7 посредством подпрограммы с именем C16_10F производится преобразование дробного двоичного числа в дробное двоично-десятичное число, которое разместится в регистрах R2,R3 в виде
, |
R2 |
R3 |
|||
P1 |
P2 |
P3 |
P4 |
Здесь обозначено Р1 - 1-й (старший) разряд десятичной дроби, Р4 - 4-й (младший) разряд дроби.
;************************************************************
; CALC - подпрограмма вычисления кода сигналов U1-U3 для вывода на
; дисплей
; Входные параметры: (R2, R3) - кода АЦП
; Выходные параметры: (R2, R3) - двоично-десятичное число
; с Ф3 формата (,P1P2P3P4)
;*************************************************************
CALC: MOV R4, #00H ; Загрузить
MOV R5, #FFH ; делитель
CALL D16_16F ; Подпрограмма деления в (R6) результата
MOV DPH, R6 ; Запоминание результата деления
MOV DPL, R7 ; в регистре DPTR
; Преобразование двоично-десятичного числа с Ф3 0,1024 в двоичное
MOV R3, #10H
MOV R2, #24H
CALL C10_16AF ; Подпрограмма преобразования
; результат в регистрах R3,R2 -двоичного числа с Ф3
; Умножение двоичных чисел с Ф3
MOV R7, DPH ; В регистрах
MOV R6, DPL ; R7, R6 - множимое
MOV A, R3
MOV R5, A ; В регистрах R5, R4 - множитель
CALL M16_16F ; Подпрограмма умножения
;двоичных чисел с Ф3, результат: R7, R6
; Преобразование двоичного числа с Ф3 в двоично-десятичное
CALL C16_10F Подпрограмма преобразования,
;результат в регистрах R2, R3 - двоично-десятичное число
; формата ,P1P2P3P4
RET
; ***********************************************************
; ------------------------------ D16_16F------------------------------------------------
; Подпрограмма деления дробных двоичных чисел без знака с ФЗ
; формата 16:16=16.
; Входные параметры: (R2,R3) - СТБ,МЛБ делимого,
; (R4,R5) - СТБ,МЛБ делителя.
; Выходные параметры: (R6,R7) - СТБ,МЛБ частного.
; Используется подпрограмма D16_16.
; ***********************************************************
D16_16F:
CALL D16_16
(R6,R7) - частное
RET
; --------------------------------- D16_16 -------------------------------------------
; Подпрограмма деления целых двоичных чисел без знака
; формата 16:16 (делимое меньше делителя).
; Входные параметры: (R2,R3) - СТБ и МЛБ делимого (ДМ),
; (R4,R5) - СТБ и МЛБ делителя (ДЛ).
; Выходные параметры: (R6,R7) - СТБ и МЛБ частного (ЧСТ),
; (R2,R3) - СТБ и МЛБ остатка (ОСТ).
; Используются регистры 0-го банка
; -----------------------------------------------------------------------------------------
D16_16:
MOV В, #16
; Сдвиг частного (R6,R7) влево
LOOP:
MOV A, R7
ADD A, R7
MOV R7, A
MOV A, R6
ADDC A, R6
MOV R6, A
;Сдвинутое частное (R6,R7)
; Сдвиг остатка (промежуточного делимого) (R2,R3) влево
MOV A, R3
ADD A, R3
MOV R3, A
MOV A, R2
ADDC A, R2
MOV R2, A
;(R2,R3) - сдвинутый остаток
JC PER1
;Если переполнение остатка (C=1)
; Cложение остатка с дополнительным кодом делителя
PUSH 03H
;Сохранение МЛБ остатка - R3
PUSH 02H
;Сохранение СТБ остатка - R2
MOV A, R3
ADD A, R5
MOV R3, A
MOV A, R2
ADDC A, R4
MOV R2, A
JNC PER2
;Переход если сумма < 0
; Сумма > 0, в разряд частного записать 1
DEC SP
;DEC SP
;Баланс стека
MOV A,R7
ADD A,#1
MOV R7,A
MOV A,R6
ADDC A,#0
MOV R6, A
JMP PER3
; Переполнение остатка, в разряд частного записать 1
PER1:
MOV A, R3
ADD A, R5
MOV R3, A
;МЛБ нового остатка
MOV A, R2
ADDC A, R4
MOV R2, A
;СТБ нового остатка
MOV A, R7
ADD A, #1
MOV R7, A
MOV A, R6
ADDC A, #0
MOV R6, A
JMP PER3
; Сумма < 0, восстановление остатка
PER2:
POP 02H
;(R2) - СТБ остатка
POP 03H
;(R3) - МЛБ остатка
; Проверка конца цикла
PER3:
DJNZ В, LOOР
RET
; ------------------------------- С10_16AF---------------------------------------------- |
||||
; Подпрограмма преобразования дробного двоично-десятичного ; беззнакового числа с ФЗ формата 4*4 в двоичное число с ФЗ формата 16. ; Входные параметры: (R3,R2) - двоично-десятичное число ( ,Р1Р2Р3Р4). ; Выходные параметры: (R3,R4) - СТБ,МЛБ двоичного числа. ; Используется подпрограмма С10_16А. |
||||
; *************************************************************** |
||||
KL: |
EQU 22H |
; |
Ячейка для временного хранения |
|
; Двоичное преобразование числа (0,Р1Р2Р3Р4)*10*4 |
||||
С10_16F: |
CALL С10_16А |
; |
(R7,R6) - двоичное число |
|
; Деление двоичного целого числа на 10**4=2710Н |
||||
MOV R3, #27Н |
||||
MOV R2, #10Н |
||||
MOV R4, #0 |
||||
MOV R5, #0 |
||||
; Дополнение делителя |
||||
MOV A, R2 |
||||
CPL A |
||||
ADD A, #1 |
||||
MOV R2, A |
||||
MOV A, R3 |
||||
CPL A |
||||
ADDC A, #0 |
||||
MOV R3, A |
||||
MOV R1, #16 |
; |
; Счетчик циклов |
||
; Сдвиг частного (R5,R4) и остатка (R7,R6) влево |
||||
RED: |
MOV A, R4 |
|||
ADD A, R4 |
||||
MOV R4, A |
||||
MOV A, R5 |
||||
ADDC A, R5 |
||||
MOV R5, A |
||||
MOV A, R6 |
||||
ADD A, R6 |
||||
MOV R6, A |
||||
MOV A, R7 |
||||
ADDC A, R7 |
||||
MOV R7, A |
||||
JC MET1 |
; |
; Если переполнение остатка |
||
; Сложение остатка с дополнительным кодом делителя |
||||
MOV R0, #KL |
; |
; Сохранение |
||
MOV A, R6 |
; |
|||
MOV @R0, A |
; |
|||
INC R0 |
; |
|||
MOV A, R7 |
; |
|||
MOV @R0, A |
; |
|||
MOV A, R2 |
; |
; остатка |
||
ADD A, R6 |
||||
MOV R6, A |
||||
MOV A, R3 |
||||
ADDC A, R7 |
||||
MOV R7, A |
||||
JNC MET2 |
||||
; Сумма>0, разряд частного=1 |
||||
DEC R0 |
||||
MOV A,R4 |
||||
ADD A,#1 |
||||
MOV R4,A |
||||
MOV A,R5 |
||||
ADDC A,#0 |
||||
MOV R5,A |
||||
JMP MET3 |
||||
; Переполнение остатка, разряд частного=1 |
||||
MET1: |
MOV A, R2 |
|||
ADD A, R6 |
||||
MOV R6, A |
||||
MOV A, R3 |
||||
ADDC A, R7 |
||||
MOV R7, A |
||||
MOV A, R4 |
||||
ADD A, #1 |
Подобные документы
Расчет отдельных узлов и основных элементов схемы. Выбор счетчика и эталонного генератора импульсов, синхронизирующего устройства и его элементов. Разработка схемы индикации напряжения управления на основе семисигментных светодиодных индикаторов.
курсовая работа [1,4 M], добавлен 18.07.2013Структурная схема микроконтроллерной системы. Схемы подключения микроконтроллера, цифровых и аналоговых сигналов, линейного дисплея и клавиатуры. Текст главной программы на языке Ассемблера для МК51. Программа ввода и обработки аналоговой информации.
курсовая работа [372,6 K], добавлен 19.12.2013Принцип статического управления индикации. Три основных вида памяти, используемой в микроконтроллерах. Программа, управляющая действиями микроконтроллера по выводу информации на восемь семисегментных индикаторов в шестнадцатеричной системе счисления.
курсовая работа [2,6 M], добавлен 16.04.2014Анализ датчиков и разработка структуры измерительных каналов, схемы источника электропитания. Выбор микроконтроллера. Проектирование функциональной схемы входных и выходных узлов. Блок-схема алгоритма и программа управления микроконтроллерной системой.
курсовая работа [2,1 M], добавлен 17.07.2012Способы и методы измерения частоты, их характеристика. Типы индикаторов и проектирование принципиальной электрической схемы блока индикации. Разработка предварительного делителя частоты. Алгоритм работы микропроцессора и конструктивное решение прибора.
дипломная работа [1,0 M], добавлен 09.07.2013Проектирование принципиальной схемы устройства индикации на основе 8-битного AVR микроконтроллера типа ATmega16 с питанием от источника питания на 10 V и отображением данных на графическом LCD-дисплее. Разработка программного обеспечения микроконтроллера.
курсовая работа [11,3 M], добавлен 19.12.2010Создание микропроцессорной системы на базе микроконтроллера, предназначенного для функциональной диагностики цифровых и интегральных микросхем. Разработка и расчёт блоков микроконтроллера, сопряжения, управления, питания, цифровой и диодной индикации.
курсовая работа [1,5 M], добавлен 28.01.2016Обзор системы управления микроклиматом FC-403-65. Разработка структурной схемы системы управления температурным режимом теплицы. Выбор датчиков и исполнительных механизмов, принципиальная схема их подключения. Разработка инструкций по эксплуатации.
дипломная работа [1,8 M], добавлен 10.04.2017Анализ вариантов подключения и построения контроллеров индикации на PIC микроконтроллерах. Проектирование модулей системной шины ISA. Разработка обобщенной схемы модуля. Методы построения алгоритмов инициализации и управления, разработка программы.
курсовая работа [574,7 K], добавлен 04.09.2012Разработка микропроцессорной системы для контроля и индикации параметров изменяющегося по случайному закону 8-ми разрядного двоичного кода. Проектирование принципиальной схемы микроконтроллера, описание работы схемы. Разработка блок-схемы программы.
курсовая работа [752,4 K], добавлен 10.01.2013Разработка функциональной схемы детектора, выбор типа микропроцессорной системы. Реализация узлов управления и обработки, интерфейса RS-232, преобразователя уровней напряжения TTL/LVTTL. Расчёт частоты синхроимпульсов микроконтроллера, световой индикации.
дипломная работа [780,5 K], добавлен 26.05.2015Алгоритм работы микропроцессорной системы управления барокамерой. Подпрограмма контроля температуры. Разработка схемы сопряжения для подключения датчика уровня воды. Подключение светодиодов "Нагрев" и "Низкий уровень воды". Разработка блока питания МПС.
курсовая работа [1,7 M], добавлен 28.05.2012Проектирование устройства индикации на микроконтроллере KP1816BE51. Выбор и обоснование аппаратной части устройства. Разработка обслуживающей программы на ассемблере. Время выполнения программы индикации. Максимальная оптимизация выполняемого кода.
курсовая работа [21,6 K], добавлен 22.03.2011Разработка структурной схемы системы контроля микроклимата теплицы. Формирование выходных сигналов для запуска исполнительных устройств проветривания, нагрева, полива. Выбор температурного датчика. Пульт управления и устройство визуальной индикации.
курсовая работа [1,0 M], добавлен 25.03.2015Проектирование вычислительного модуля, состоящего из 2 датчиков давления и 4 датчиков температуры (до +125 и до +400). Составление схемы подключения датчиков. Написание демонстрационных программ для работы с устройствами DS18B20, АЦП DS2450 и MPX2010.
курсовая работа [190,3 K], добавлен 24.12.2010Общие принципы разработки программно-аппаратного терминала с CAN-шиной, его основные физические интерфейсы. Структурная схема разрабатываемого устройства. Схема подключения микроконтроллера. Схема подключения микроконтроллера Atmega128 и для ПЭВМ.
дипломная работа [1,4 M], добавлен 07.07.2011Разработка электрической принципиальной схемы и маркировочного чертежа устройства, предназначенного для сопряжении датчиков антенны обзорного радиолокатора. Составление структурной и функциональной схемы. Выбор системы индикации, расчет тока потребления.
дипломная работа [2,8 M], добавлен 24.06.2010Описание алгоритма работы и разработка структурной схемы микропроцессорной системы управления. Разработка принципиальной схемы. Подключение микроконтроллера, ввод цифровых и аналоговых сигналов. Разработка блок-схемы алгоритма главной программы.
курсовая работа [3,3 M], добавлен 26.06.2016Основные признаки классификации электронных индикаторов, (конструктивные особенности, способы управления, назначение). Применение единичных, сегментных, шкальных и электронно-механических индикаторов. Формирование изображения в матричном индикаторе.
презентация [2,0 M], добавлен 14.12.2015Принцип работы электрических термометров, преимущества использования. Структурная схема устройства, выбор элементной базы, средств индикации. Выбор микроконтроллера, разработка функциональной схемы устройства. Блок-схема алгоритма работы термометра.
курсовая работа [3,6 M], добавлен 23.05.2012