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

Разработка программы для связи микроконтроллера низового уровня с УСПД, датчиком температуры и исполнительным устройством управления нагревателем. Разработка структурной и принципиальной схемы устройства. Создание программной продукции для контроллеров.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.09.2018
Размер файла 409,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

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

Но есть ещё один не маловажный фактор - соблюдение комфортной для человека температуры окружающей его среды.

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

Цель курсовой работы: разработать программу для связи микроконтроллера низового уровня с УСПД, датчиком температуры и исполнительным устройством управления нагревателем.

Задача курсовой работы: при имеющемся микроконтроллере 1886ВЕ2 и среды MPLAB IDE 8.5 написать программы для передачи данных и сигналов по протоколам I2C, MODBUS и по дискретному каналу.

Нормативные ссылки

ГОСТ 19.101 -77 ЕСПД Виды программ и программных документов.

ГОСТ 19.102-77 ЕСПД Стадии разработки.

ГОСТ 19.201-78 ЕСПД Техническое задание, требование к содержанию и оформлению.

ГОСТ 19.202-78 ЕСПД Спецификация, требование к содержанию и оформлению.

ГОСТ 19.401-78 ЕСПД Тексты программ, требование к содержанию и оформлению.

ГОСТ 19.402-78 ЕСПД Описание программы.

ГОСТ 19.402-78 ЕСПД Общие описания.

ГОСТ 19.402-78 ЕСПД Описание языка.

ГОСТ 19.402-78 ЕСПД Реферат и аннотация.

ГОСТ 34.ххх ЕСКД.

1. Техническое задание

1.1 Введение

Устройство мониторинга температуры и управления нагревом помещения.

Применение устройства в промышленной сфере для поддержания температуры помещения при его охлаждении в заданных пределах.

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

1.2 Основания для разработки

Документом, на основании которого ведётся разработка, является задание, выданное преподавателем на курсовую работу.

Тема разработки: “Программирование связи устройства сбора и подготовки данных и микроконтроллера низового уровня участка сети промышленного назначения, включающего датчик температуры и исполнительное устройство управления нагревателем”.

1.3 Назначение разработки

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

1.4 Требования к программе и программному продукту

1.4.1 Требования к функциональным характеристикам

Устройство должно выполнять мониторинг температуры помещения, используя датчик температуры, и управлять нагревателем. Связь датчика температуры с микроконтроллером осуществляется по протоколу I2C и опрос температуры проводится один раз в секунду. Исполнительное устройство управления нагревателем соединяется с микроконтроллером по дискретному каналу. По протоколу MODBUS соединяется микроконтроллер с устройством сбора и подготовки данных, которое в свою очередь соединяется с диспетчерским устройством (с персональным компьютером), где собираются данные о температуре, и задаётся пороговые значения для температуры.

1.4.3 Условия эксплуатации

Устройство использовать по назначению при температуре от -40 до +50 и относительной влажности воздуха не более 80%. Предостерегать от падения. Обслуживается устройство одним человеком, которые осуществляет контроль пороговых значений температуры и контроль за устройством.

1.4.4 Требования к составу и параметрам технических средств

В состав устройства входят: микроконтроллер 1886ВЕ2, четырехжильный кабель для связи по MODBUS, четырехжильный кабель для связи по I2C, двужильный для соединения микроконтроллера и нагревателем.

1.4.5 Требования к информационной и программной совместимости

Микроконтроллер считывает с датчика значение температуры, по дискретному каналу передает на обогреватель включить или выключить, а по линии MODBUS передает значение температуры и состояние обогревателя (включен или выключен). Исходный код написан в среде разработки MPLAB IDE 8.5.

1.5 Требования к программной документации

В состав программной документации входит программа для микроконтроллера, которая имеет следующие функции: связь по интерфейсу I2C, связь по протоколу MODBUS, управление нагревателем.

2. Эскизный проект

Эскизный проект курсовой работы представлен на схеме 1.

Схема 1 - Эскизный проект

Сокращения на схеме:

• УСПД - устройство сбора и передачи данных

• МК - микроконтроллер

• ДТ - датчик температуры

• ИУУН - исполнительное устройство управления нагревателем.

I2C - это шина, которая соединяет микроконтроллер низового уровня с датчиком температуры. Микроконтроллер производит запрос температуры раз в секунду, а в ответ на его запрос на его вход по линии SDA приходит значение температуры, которое он анализирует. В зависимости от того, в какой диапазон температуры попадает это значении, микроконтроллер управляет исполнительным устройством управления нагревателем, то включая его, то отключая.

Так же раз в секунду микроконтроллеру УСПД посылает запрос на состояние обогревателя (включен или нет) по протоколу MODBUS. Микроконтроллер в ответ посылает значение состояния обогревателя.

При работе устройства микроконтроллер каждую секунду посылает запрос датчику температуры. Датчик температуры мгновенно посылает обратно значение его регистра, в котором записано значение температуры в шестнадцатеричном коде. Микроконтроллер принятое значение записывает в регистр и начинаем его обрабатывать, сравнивая его с пороговыми значениями. Если значение температуры стало больше верхней границы, то микроконтроллер посылает на блок управления обогревателем ноль, чтобы отключить обогреватель, так как температура помещения нагрелась до нужного порога температуры. Если значение температуры находится между нижней и верхней границей температуры, то микропроцессор ничего не делает, так как в этот момент помещение либо нагревается, если включен обогреватель, либо остывает, если обогреватель отключен. Если значение температуры опустилось ниже нижнего порога, то значит помещение остыло и его нужно нагреть. Поэтому микропроцессор посылает на блок управления обогревателем единицу, чтобы включить обогреватель. Две границы (верхнюю и нижнюю) нужно иметь для того, чтобы не происходило такой ситуации, как постоянное то включение, то отключение обогревателя. Как правило, верхняя граница больше нижней, и разница между ними 3-5 градусов по Цельсию.

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

3. Технический проект

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

Рисунок 2 -Технический проект

Уточним структуру входных и выходных данных. Микропроцессор 1886ВЕ2 имеет 64 ножки. Было использовано для проекта 7 ножек для обмена информацией между микропроцессором и датчиком температуры, исполнительным устройством управления нагревателем, микросхемой 5559ИН, а также 6 ножек для подачи питания на микропроцессор.

Для шины I2C использовано две сигнальные линии. Первая это SCL, которая предназначена для передачи тактового сигнала, а вторая это SDA, которая предназначена для обмена данными. Так же у каждого элемента проекта есть питание и земля. Чтобы обмениваться данными между микропроцессором, необходимо определить формат пакета данных. Для работы по шине I2C. Процедура чтения значения температуры включает в себя передачу пакета данных следующего формата: условие старта (на линии SCL установлена единица, а на SDA установлен ноль), затем 7 бит адреса датчика температуры, 1 бит, в котором стоит ноль, так как мы выполняем только процедуру чтения данных с датчика. Затем микроконтроллер ждет низкий уровень сигнала АСК, как подтверждение датчиком связи. После подтверждения принимается байт данных с датчика в HEX формате. Снова ожидание низкого сигнала АСК, и ещё байт данных. И обмен данными завершается стоп-битом (на линии SCL и на SDA установлены единицы).

При реализации I.2C использовались регистры DDRD и PORTD. DDRD - регистр, который определяет направление данных для PORTD. Если 1, то порт работает на вход, иначе на выход. PORTD - регистр, который определяет состояния линий SCL и SDA.

При приеме значения температуры происходит в микропроцессоре процедура BCD конвертации, то есть шестнадцатеричное число переводится в так же в HEX, но два байта данных переводятся в 4 разряда десятичных.

Для исполнительного устройства управления нагревателем необходимо один бит, значение которого может быть ноль или единица. Если ноль, то ИУУН выключает обогреватель, если один, то включает. Для передачи бита мы используем вход/выход PD2 микропроцессора.

Чтобы организовать связь по протоколу MODBUS между процессором и УСПД, используем интерфейс RS-485. Для организации полудуплексного канала связи по стандарту RS-485 используем приемопередатчик интерфейса 5559ИН. На микроконтроллере имеются две линии RX1 и ТХ1, которые являются входом и выходом приемопередатчика. RX1 - это линия данных, а ТХ1 - линия тактовых импульсов. Используется асинхронный режим USART1. Линии RX1 и ТХ1 соединяются с контроллером 5559ИН на линиях RO и DI. Линии RE и DE необходимы для разрешения выхода приемника и входа передатчика. Выводы 6 и 7 контроллера используют для связи с УСПД.

Протокол по MODBUS организован так же пакетами. Структура пакета включает в себя:

- 1 байт - 3Ah - “:”;

- 2 байта - адрес ведомого устройства (символ таблицы ASCII);

- 2 байта - код функции (ASCII);

- п байт - данные;

- 2 байта - LRC;

- 1 байт - ODh - конец строки;

- 1 байт - OAh - возврат каретки.

При передачи данных по протоколу MODBUS, необходимо настроить приемники и передатчики. Алгоритм настройки следующий:

1. Определение скорости приемопередатчика, и коэффициент записывают в регистр SPBPR. Формула для подсчета скорости следующая:

Рс/(64*(коэффициент+1))=скорость в бод/с, где Fc - частота микропроцессора.

2. Настраиваем приемник:

а) определяем, используется ли прерывание

б) выбор режима: синхронный или асинхронный

в) выбор формата данных: 8 или 9 бит

3. Ожидание прерывания

а) чтение байта из регистра данных

б) проверяем флаг регистра (если пуст, то далее, иначе чтение байта)

4. Настройка передатчика

а) произошло ли прерывание

б) выбор режима синхронный или асинхронный

в) выбор формата 8 или 9 бит

5. Передача

а) проверка, пуст ли передатчик (если да, то на б)

б) загружаем данные в регистр передатчика

в) разрешение передачи

Алгоритм программы следующий. Сначала происходит настройка регистров и банков микропроцессора, затем выполняется главный цикл. В нем мы последовательно производим ряд действий. Во-первых, происходит считывание данных с датчика температуры, затем полученное значение сравнивается с пороговыми значениями температуры. Если полученное значение больше верхнего порога или ниже нижнего, то выполняется процедура отключения или включения обогревателя (подача нуля или единицы на PD2). Во время работы программы может возникнуть прерывание от УСПД, которое прервет выполнение программы на некоторое время, для того, чтобы передать УСПД состояние обогревателя (включен или выключен). При возникновении прерывания программа перейдет на вектор прерывания.

4. Рабочий проект

4.1 Разработка программы

Рабочий проект создавался в программе MPLAB IDE 8.5 с использованием языка Assembler. Программирование производилось командами, которые поддерживает микроконтроллер 1886ВЕ2. Количество поддерживаемых команд 58.

Блок-схема 1: Общий цикл программы

На блок-схеме 1 показаны подпрограммы, которые выполняются в основном цикле:

- I2c_read - по протоколу I2C происходит опрос датчика температуры, который в виде двух байт передает значение температуры обратно в микроконтроллер. Подробно работа I2C описана на блок-схеме 2.

- Decode_modbus - происходит анализ пакетов, которые приходят в микроконтроллер от УСПД и процедура пересылает ответный пакет на УСПД с информацией о состоянии обогревателя. Подробно работа протокола MODBUS описана на блок-схеме 3.

- Control - процедура, которая управляет исполнительным устройством управления обогревателем.

-

Блок-схема 2: Обмен с датчиком по протоколу I2C

Блок-схема 3: Обмен по протоколу MODBUS

4.2 Разработка программной документации

4.2.1 Описание применения

Отладочная среда MPLAB предназначена для создания и отладки программ для PIC контроллеров фирмы MICROCHIP. Она включает в себя компилятор с ассемблера, текстовый редактор, программный симулятор и средства работы над проектами. Кроме того, она позволяет использовать компилятор с языка Си.

MPLAB работает под управлением Windows 95/98/2000/NT и позволяет:

* Создавать, компилировать и компоновать исходный код программ

* Отлаживать программы во встроенном симуляторе или внутрисхемном эмуляторе реального времени MPLAB-ICE

* Измерять временные интервалы

* Просматривать значения переменных

MPLAB состоит из следующих основных модулей:

* MPLAB Project Manager - Средства работы на проектами

* MPLAB-SIM Software Simulator - Симулятор программ

* MPLAB Editor - Полноценный текстовый редактор

* MPASM Universal Macro Assembler - Компилятор с ассемблера, компоновщик

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

4.2.2 Описание языка

Программа начинается со строчки, в которой мы указываем наш микроконтроллер. Затем устанавливаем конфигурационные биты, в которых переводим микроконтроллер в режим микроконтроллера. Микроконтроллер поддерживает 58 различных команд. Команды в программе MPLAB IDE выделяются красным цветом, значения после команд синим. Чтобы установить комментарии, нужно поставить символ точка с запятой и писать назначение выполненного действия. Основные действия и команды, которые выполняют эти действия, приведены далее.

Сложение: ADDLW k; ADDWF f,d; ADDWFC f,d.

Операция “и”: ANDLW к; ANDWF f,d.

Сброс бита: BCF f,d.

Установка бита: BSF f,b.

Сравнение: BTFSC f,b; BTFSS f,b; CPFSEQ f; CPFSGT f; CPFSLT f; TSTFSZ f.

Инверсия бита: BTG f,b.

Вызов подпрограммы: CALL k; LCALL k.

Сброс регистра: CLRF f,s.

Инверсия битов: COMF f,d.

Декремент: INCF f,d; INCFSZ f,d; INCSNZ f,d;

Декремент: DECF f,d; DECFSZ f,d; DCFSNZ f,d.

Безусловный переход: GOTO k.

Операция “или”: IORLW k; IORWF f,d; XORLW k; XORWF f,d. Умножение: MULLW k; MULWF f.

Пустая команда: NOP.

Возврат: RETFIE; RETLW k; RETURN.

Сдвиг влево: RLCF f,d; RLNCF f,d.

Сдвиг вправо: RRCF f,d; RRNCF f,d.

Вычитание: SUBLW k; SUBWF f,d; SUBWFFB f,d.

f- адрес регистра, k - поле константы, b - адрес бита в 8 разрядном регистре, d, s - место назначения.

4.2.3 Руководство программиста

Программа MPLAB IDE 8.5 запускается Пуск->Программы- >Microchip->MPLAB IDE 8.5-> MPLAB IDE.

Чтобы создать новый проект необходимо проделать следующие операции: Project->New-> указать имя проекта и директорию, куда сохранять файлы проекта. При указании каталога и имени файла использовать имена и путь к каталогу только латинские буквы.

Чтобы добавить файл ассемблера .asm необходимо: File->Add New File to Project... -> Указать имя файла с расширением .asm и выбрать папку проекта.

С помощью пункта основного меню View можно открыть дополнительные окна программы. Нам пригодятся окно Hardware Stack, Watch, Locals, Program Memory.

Теперь печатаем программу и запуск программы осуществляется Debugger->Run. Для интерактивного показа работы программы необходимо нажать Debugger->Animate. Пошаговый режим F7.

Заключение

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

В процессе выполнения курсовой работы было выполнено ряд заданий:

- составлено техническое задание

- разработана структурная схема устройства

- разработана принципиальная схема устройства

- разработана программа для управления микроконтроллером, которая включает в себя подпрограммы обмена информацией по интерфейсу I2C, обмена данными по протоколу MODBUS и подпрограмму управления ИУУН.

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

Список использованных источников

1. Конюх В. JI. Компьютерная автоматизация в промышленности.-М.: Бестселлер, 2005.-250с.: ил.-ISBN 5-98158-016-Х.

2. Хвощь С. Т., Дорощенко В. В., Горовой В. В. Организация последовательных мультиплексных каналов САУ.-Л.: Машиностроение, 1989.-271 с.

3. Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы: учебник для ВУЗов.

4. Срибнер JI.A. Программируемые устройства автоматики. Киев: Техшка, 1982, 176 с.

5. Конюх B.J1. Информационные устройства и системы в автоматизированном производстве: Учебное пособие. - Кемерово: КузГТУ, 2000.- 132с.

6. Солодовников В.В. Основы автоматического регулирования. М.: Машгиз, 1954, 354 с.

7. Костяков С. Промышленность - в центре внимания. Концепция построения современных систем автоматизации производства // CompUnity. 1996, №9. С. 74-80.

8. Захаров В.Н., Поспелов Д.А., Хазацкий В.И. Системы управления. - М.: Энергия, 1977. -С. 419.

Приложение А.\

Листинг программы для микроконтроллера.

LIST P=PIC17c756A, f=inhx32

#include "P17C756A.INC"; Include header file

__config 0xBFE2

;PORTD equ 0x13 ;адрес регистра данных порта D

;DDRD equ 0x12 ; адрес направленной передачи данных порта D

;WREG equ ОхОА; рабочий регистр

BSR equ OxOF

UNBANK 1 EQU 0x01 A ; адрес для сохранения первой ячейки

UNBANK2 EQU 0x01В ; адрес для сохранения второй ячейки

UNBANK3 EQU 0x01C ; адрес для сохранения третьей ячейки

UNBANK4 EQU 0x01D ; адрес для сохранения четвертой ячейки

UNBANK5 EQU 0x01Е ; адрес для сохранения пятой ячейки

;***************************РОН****************************

adr equ 0x20; POH

count equ 0x21

temp equ 0x22

err equ 0x23

u_data equ 0x24

status equ 0x25

count_byte equ 0x26

temp_L 0x27

temp_H 0x28

byte_1 equ 0x29

byte_2 equ 0x2A

byte_3 equ 0x2B

byte_lrc equ 0x2C

ohl_status equ 0x2D

max_t equ 0x2E

min_t equ 0x2F

m_address equ 0x34

m_function equ 0x35

adr_buffer equ 0x40 ; начало массива в памяти

adr transmit equ 0x50 ; начало массива в памяти

**********************Блок переменных************************

REQ _bank set 0x00

**************************Начало программы *****************

CODE

org 0

goto start

org 20 ; вектор переферийного прерывания

MOVFP ALUSTA, UNBANK1 ; Запись в стек значения ALUSTA

MOVFP BSR, UNBANK2 ; Запись в стек значения BSR

MOVFP WREG, UNBANK3 ; Запись в стек значения WREG

MOVFP PCLATH, UNBANK4 ; Запись в стек значения PCLATH

movlb 1

BTFSS PIR1,0; проверяем бит RC1IF в регистре PIR1 - если 1 то было прерывание по USART1

goto no_data

movlb 0

movpf RCREG1,u_data

movlw 0x3A

movwfu_data ;для отладки смоделируем прием двоеточия(начало пакета)

movlw 0x00

cpfseq status ; принимаем ли мы в данный момент пакет MODBUS?

goto receive ; да - уходим на метку приема очередного байта

begin: ; нет - смотрим - пришедший байт начало нового сообщения?

movlw 0x3A

cpfseq u_data

goto no_data ; нет

movlw 0x01 ;да-регистр status =0x01 и начинаем принимать байты

movwf status

movlw 0x08

movwfcount_byte ; счетчик байтов - ждем 8 байтов от УСПД

movlw adr_buffer ; загрузка адреса буфера

movwf FSR0

recieve:

movfp u_data,WREG

movwf INDF0 ; записываем в буфер первый байт информационной

части пакета

incf FSR0,1 ; увеличиваем адрес в буфере на 1

decfsz count_byte ; счетчик байтов = 0?

goto end_byte ; нет - приняли очередной байт - выходим из

прервывания

movlw 0x00 ;

movwf status ; да - status = 0 - значит в след раз ждём новый пакет

movlb 1

bcf PIR1,0

no_data:

end_byte:

MOVFP UNBANK4, PCLATH ; Восстановление значения PCLATH MOVFP UNBANK3, WREG ; Восстановление значения WREG

MOVFP UNBANK2, BSR ; Восстановление значения BSR

MOVFP UNBANK 1, ALUSTA ; Восстановление значения ALUSTA

retfie

start:

; ----------настраиваем USART1----------

movlb 0 ; выбираем банк 0

movlw 0x02

movwf SPBRG1; выбирает скорость передачи по UART 9600 бод/с(кварц 1,8432 МГц)

movwf TXSTA1 ; настраиваем передатчик

movlw 0x90

movwf RCSTA1 ; настраиваем приемник

movlb 1 ; выбираем банк 1

bsf PIE1,0 ; разрешаем прерывание "Буфер приемника US ART 1 заполнен"

bcf CPUSTA,4 ; разрешаем глобальные прерывания

bsf INTSTA,3 ; разрешаем переферийные прерывания

;----------Инициализация портов, переменных и п.-----------

movlw 0x00

movwf DDRD ; все линии порта D на выход

movlw 0x03

movwf PORTD ; подтягиваем линии SDА и SCL, линии DE и RE\ в нуле

movlw 0x23

movwf max_t

movlw 0x14

movwf min_t

movlw 0x01

movwf m_address

movlw 0x04

movwf m_function

clrf status, 1 ; обнуляем status - ждем нового пакета

clrf count_byte, 1

bsf ALUSTA,5 ; FSR0 не будет изменяться после очередного доступа к

памяти

;***************Главный цикл *************************** main:

MOVLW OxF 1 ; записываем адрес устройства I2C

call i2c_read ; подпрограмма получения 2 байт температуры от датчика call decode_modbus ; подпрограмма анализа пакета MODBUS

call control

goto main

;********* Подпрограмма чтения устройства I2C ****************** i2c_read:

MOVWF temp ; в temp - адрес устройства

movlw 0x00

movwf DDRD ; все линии порта D на выход

call start_cond ; установка START состояния линии

bcf PORTD,0

;------------имитируем прерывание USART1-----------

;movlb 1

;bsf PIR1,0

;-----------------------------------------------------------------

call send_byte

;*************** * Есть ли подтверждение? ******************

bsf DDRD,1 ; SDA - на вход

MOVLW 0x00 ; очищаем флаг ошибки

MOVWF err

bsf PORTD, 1

bsf PORTD,0 ; строб

BTFSC PORTD, 1

goto er

bcf PORTD,0 ; строб

bcf DDRD, 1 ; SDA - на выход

goto yes

er:

bcf PORTD,0 ; строб

MOVLW 0xEE ; сообщение об ошибке

MOVWF err

bcf DDRD, 1 ; SDA - на выход

goto no

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

; в старшем байте - целая часть t, в младшем - дробная

yes:

call recieve_byte ; принимаем младший байт температуры

movfp temp,WREG

movwf temp_L ; сохраняем младший байт температуры

call recieve_byte ; принимаем старший байт температуры

movfp temp,WREG

movwf temp_H ; сохраняем старший байт температуры

nо:

call stop_cond ; установка STOP состояния линии

return

;********Подпрограмма, записи в устройство I2C ****************

; i2c_write:

; MOVWF temp ; в temp - адрес устройства

; movlw 0x00

; movwf DDRD ; все линии порта D на выход

; call start_cond ; установка START состояния линии

; bcf PORTD,0

; call send_byte

*********************Есть ли подтверждение?*******************

; bsf DDRD, 1 ; SDA - на вход

; MOVLW 0x00 ; очищаем флаг ошибки

; MOVWF err

; bsf PORTD, 1

; bsf PORTD,0 ; строб

; BTFSC PORTD, 1

; goto er_l

; bcf PORTD,0 ; строб

; bcf DDRD, 1 ; SDA - на выход

;goto yes_l

;er_l:

; bcf PORTD,0 ; строб

; MOVLW OxEE ; сообщение об ошибке

; MOVWF err

; bcf DDRD, 1 ; SDA - на выход

;goto no_l

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

;yes_l

; MOVLW OxAA

; MOVWF temp ; помещаем наши данные

; call send_byte

;no_l

; call stop_cond ; установка STOP состояния линии

;return

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

;********* **** Подпрограмма записи байта в устройство I2C ******* ;******* в temp байт, count = 0x08 ************

send_byte:

MOVLW 0x08 ; установить значения регистра WREG в 8

MOVWF count; пересылка значения регистра WREG в регистр Count

clrf WREG,1 ; сбрасываем WREG

cycle:

decf count,1

BTFSS temp,7;

goto ml

BSF PORTD,l

goto m2

ml:

bcf PORTD, 1

m2:

bsf PORTD,0

bcf PORTD,0

rlncf temp,l

cpfseq count

goto cycle

return

;********* Подпрограмма чтения байта из устройства I2C ********

.******************* в temp байт, count = 0x08 ************

recieve_byte:

movlw 0x02

movwf DDRD ; SDA - на вход

MOVLW 0x08 ; установить значения регистра WREG в 8

MOVWF count; пересылка значения регистра WREG в регистр Count

clrf temp,0 ; сбрасываем WREG

;clrf WREG, 1 ; сбрасываем WREG

cycle2:

decf count, 1

BTFSS PORTD, 1 ; проверяем бит 1 порта D

goto rl

BSF temp,l

goto r2

r1:

bcf temp,l

r2:

bsf PORTD,0

bcf PORTD,0

rlncf temp,l

cpfseq count goto cycle2

movlw 0x00

movwf DDRD ; SDA и SCL - на выход

return

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

start_cond:

bsf PORTD,0

bcf PORTD, 1

return

stop_cond:

bsf PORTD,0

bsf PORTD, 1

return

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

; адрес ведомого 0x01

;функция 0x04 - чтение внутренних регистров ведомого

decode_modbus:

swapf 0x40,0

iorwf 0x41,0

movwf byte_l

swapf 0x42,0

iorwf 0x43,0

movwf byte_2

swapf 0x44,0

iorwf 0x45,0

movwf byte_3

swapf 0x46,0

iorwf 0x47,0

movwf byte_lrc

movlw 0x00

addwf byte_l,0

addwf byte_2,0

addwf byte_3,0

comf WREG,0

incf WREG,0

cpfseq byte_lrc

goto end_decod

;********** LRC - верна

movfp byte_l,WREG

cpfseq m_address

goto end_decod ; пакет адресован не нам

movfp byte_2,WREG

cpfseq m_function

goto end_decod ; ведомый не поддерживает эту функцию

;*********** Формирует ответ MODBUS ********

movlw 0x3 А ; символ двоеточия":"

movwf 0x50 ;

movfp m_address,WREG

andlw 0xF0

swapf WREG,0

movwf 0x51 ; 1 ый информационный байт - адрес ведомого

movfp m_address,WREG

andlw 0x0F

movwf 0x52 ; 2ой информационный байт - адрес ведомого

movfp m_function,WREG

andlw 0xF0

swapf WREG,0

movwf 0x53 ; Зий информационный байт - код функции

movfp m_fimction,WREG

andlw 0x0F

movwf 0x54 ; 4ый информационный байт - код функции

movfp ohl_status,WREG

andlw 0xF0

swapf WREG,0

movwf 0x55 ; Зий информационный байт - код функции

movfp ohl_status,WREG

andlw 0x0F

movwf 0x56 ; 4ый информационный байт - код функции

movlw 0x00

addwf m_address,0

addwf m_function,0

addwf ohl_status,0

comf WREG,0

incf WREG,0

MOVFP WREG, UNBANK5 ; Запись в стек значения WREG

andlw 0xF0

swapf WREG,0

movwf 0x57 ; бой информационный байт - LRC

MOVFP UNBANK5, WREG ; Восстановление значения WREG

andlw 0x0F

movwf 0x58 ; 7ой информационный байт - LRC

movlw 0x0D ; CR - возврат каретки

movwf 0x59 ;

movlw 0x0A ; LF - перевод строки

movwf 0x5A

;********* 5559ИН10 - переводим в режим передачи ********

bsf PORTD,4 ; устанавливаем линию DE в "1", RS-485 на передачу

********** отправка пакета*********

movlw adr_transmit; загрузка адреса буфера

movwf FSR0

movlw 0х0В

movwf count

loop:

movlb 1

movfp INDF0,WREG

movlb 0

movwf TXREG1

bsf TXSTA1,5

call delay

incf FSR0,1

decfsz count ; счетчик байтов = 0?

goto loop

movlb 0

bcf TXSTA1,5

movlb 1

.*********5559ИН10 - переводим в режим приема ********

bcf PORTD,4 ; устанавливаем линию DE в "0", RS-485 на прием

end_decod:

return

;****************** Задержка около 5мкс **************** delay:

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

return

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

control:

movfp temp_H,WREG

cpfsgt min_t

goto _min_

cpfslt max_t

goto _max_

goto end_control

_min_:

bcf PORTD,2

movlw 0x00

movwf ohl_status

goto end_control

_max_:

bsf PORTD,2

movlw 0x01

movwf ohl_status

end_control:

return

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

END

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [577,8 K], добавлен 24.06.2013

  • Виды терморегуляторов и их общее устройство. Разработка устройства для управления микроклиматом в теплице. Возможные варианты модернизации системы контроля температуры. Блок инициализации микроконтроллера. Разработка структурной схемы работы программы.

    курсовая работа [1,8 M], добавлен 27.05.2015

  • Разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы. Текст программы, инициализация указателя стека, структура системы и ресурсов микроконтроллера. Запись кодов при программировании данного устройства.

    контрольная работа [18,4 K], добавлен 24.12.2010

  • Проектирование устройства контроля температуры в холодильных установках. Устройство измеряет температуру с помощью схемы измерения температуры. Значение температуры представлены в 8-битном формате. Создание компьютерной программы для устройства.

    курсовая работа [29,5 K], добавлен 22.02.2008

  • Разработка компьютерного устройства RAM-диск, позволяющего считывать, записывать и хранить информацию в модулях динамической памяти типа SDRAM под управлением микроконтроллера. Составление структурной и принципиальной схемы устройства, листинг программы.

    курсовая работа [3,9 M], добавлен 24.12.2012

  • Сравнительный анализ существующих приборов. Разработка функциональной схемы устройства. Выбор и статистический расчет элементов, входящих в систему: датчика, источник тока, усилителя, микроконтроллера, блок питания. Блок-схема управляющей программы.

    курсовая работа [769,9 K], добавлен 12.01.2015

  • Принцип действия устройства сбора информации на базе микроконтроллера МК51: индикация, "рабочий режим" и передача данных персонального компьютера. Алгоритм начального опроса датчиков. Электрическая принципиальная схема устройства, текст программы.

    курсовая работа [102,5 K], добавлен 21.10.2012

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

    курсовая работа [2,1 M], добавлен 08.02.2015

  • Идея создания системы удаленного управления и контроля устройств. Разработка электрической принципиальной и структурной схемы. Обоснование выбора микроконтроллера и чипа ENC28J60. Обоснование выбора и отладки среды моделирования, программы и компилятора.

    курсовая работа [3,5 M], добавлен 26.08.2014

  • Разработка структурной и принципиальной схемы. Блок-схема основной программы и подпрограмм обработки прерываний. Имена переменных, используемых в них. Результаты моделирования работы устройства в программе ISIS пакета Рroteus. Разработка печатной платы.

    курсовая работа [1,5 M], добавлен 13.11.2016

  • Создание приемника команд RC5 для персонального компьютера на основе микроконтроллера ATmega8. Особенности написания файла прошивки и симулирование устройства. Порядок выполнения сборки собственной схемы и характеристика полученного микроконтроллера.

    курсовая работа [2,0 M], добавлен 24.11.2013

  • Разработка принципиальной электрической схемы микропроцессорного устройства управления двигателем постоянного тока на базе контроллера ATmega 128. Разработка пакета подпрограмм на языке Assembler в целях регулирования и корректной работы устройства.

    курсовая работа [271,5 K], добавлен 14.01.2011

  • Назначение и применение микроконтроллеров - интегральных микросхем, предназначенных для управления электронными схемами. Описание способа адресации. Разработка программы, описание электрической и структурной схемы разрабатываемого микроконтроллера.

    курсовая работа [177,6 K], добавлен 30.06.2014

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

    курсовая работа [2,7 M], добавлен 10.11.2014

  • Описание области применения устройства релаксационного воздействия на человека "Лампа хорошего настроения". Выбор микроконтроллера устройства. Алгоритм функционирования программы, её тестирование. Правила и нормы охраны труда при работе с компьютером.

    дипломная работа [5,8 M], добавлен 28.09.2015

  • Применение однокристального микроконтроллера в адаптере параллельного обмена. Связь с внешними устройствами. Структурная схема устройства и ее описание. Назначение отдельных функциональных блоков. Разработка принципиальной схемы и программы устройства.

    курсовая работа [303,0 K], добавлен 06.01.2009

  • Микропроцессоры позволяют строить универсальные устройства управления электронными весами. Разработка функциональной схемы, схемы алгоритма прикладной программы. Разработка принципиальной схемы, управляющей программы. Листинг управляющей программы.

    курсовая работа [118,0 K], добавлен 04.07.2008

  • Проектирование устройства, выполняющего функцию определения минимального давления на основе информации о показаниях полученных от 7 датчиков. Разработка набора команд управления микроконтроллером в среде программного обеспечения Code Vision AVR.

    курсовая работа [24,5 K], добавлен 28.06.2011

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

    курсовая работа [304,4 K], добавлен 17.08.2013

  • Рассмотрение структурной схемы микропроцессорной системы обработки данных. Описание архитектуры микроконтроллера ATmega161. Расчет оперативного запоминающего устройства. Строение, назначение адаптера параллельного интерфейса, способы его программирования.

    курсовая работа [621,5 K], добавлен 24.09.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.