Микропроцессорныая система. Автоматический чайник - Коммуникации, связь, цифровые приборы и радиоэлектроника дипломная работа

Микропроцессорныая система. Автоматический чайник - Коммуникации, связь, цифровые приборы и радиоэлектроника дипломная работа



































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


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

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


Микропроцессорные и информационно-управляющие системы, в настоящее время, стали одним из наиболее дешевых и быстрых способов обработки информации. Практически ни одна область современной науки и техники не обходиться без использования их.
В настоящее время всё острее встают проблемы безопасности. Практика показывает, что наибольшее число аварийных ситуаций возникает из-за ошибочных действий человека. В связи с этим большое значение имеет применение в системах управления технических средств позволяющих полностью автоматизировать этот процесс. Развитие микропроцессорных и информационно-управляющих систем позволило перейти на качественно новую элементную базу, которая в свою очередь повысила скорость и качество выполнения операций.
В течении четырех лет, начиная с 1976 г., фирмой INTEL разрабатывалось получившее широкое распространение семейство 8-и разрядных однокристальных микроконтроллеров с программным управлением MCS-48.
Вычислительные возможности первых однокристальных микроЭВМ были исчерпаны уже к началу 80-х гг. Встала задача разработки новых микроконтроллеров, обладающих расширенными функциональными ресурсами. Среди предложенных новых архитектур однокристальных микроЭВМ следует выделить 8-и разрядную архитектуру семейства микроконтроллеров MCS-51, предложенного фирмой INTEL в 1981 г. Она удовлетворяет всем требованиям, представляемым к однокристальным микроконтроллерам, и является наиболее применяемой.
Однако к настоящему времени значительную часть мирового рынка микропроцессорных средств составляет другой вид однокристальных контроллеров - это т.н. периферийные интерфейсные контроллеры или PIC. Они представляют собой высокопроизводительные БИС, в которые интегрированы помимо цифровых устройств (собственно микроконтроллера) также и аналоговые - это различные АЦП, компараторы, модули сравнения ШИМ и т.д. Это делает данные устройства чрезвычайно популярными у производителей «интеллектуальных» устройств.
Исходя из вышеперечисленного, разрабатываемая нами система управления барокамерой будет обладать следующими свойствами:
· Простота в установке, наладке и эксплуатации;
· Обработка системой различных аварийных ситуаций;
Возможность получения информации о состоянии установки и технологического процесса с помощью ЭВМ.
1 . Разработка аппаратного обеспечения
1.1 Функциональная схема микропроцессорной системы управления
Функциональная схема системы управления представлена на рисунке 1.
Рисунок 1 - Функциональная схема системы управления
На рисунке представлена функциональная схема системы управления, на которой указаны подключения к микроконтроллеру всех датчиков. При необходимости при подключении датчиков, для согласования сигналов, использовались схемы сопряжения (СС). Кроме того на схеме указано подключение к микроконтроллеру 4-х 7-сегментных светодиодных индикаторов через схему управления (СУ), подключенную к шине I 2 C и согласование микроконтроллера с интерфейсом RS-449. Также на схеме показаны все выходные сигналы, используемые для управления различными устройствами.
Таблица 1 - Наименование линий ввода / вывода микроконтроллера
2 (выводы тактового генератора таймера TMR1)
Для обработки информации со всех датчиков и для управления всеми устройствами необходимо 20 линий ввода / вывода.
Контроллер должен иметь следующие периферийные модули:
1. Модуль АЦП для обработки сигнала от датчика температуры;
2. EEPROM память данных для хранения установок времени и температуры.
3. Модуль USART для обеспечения возможности передачи данных из EEPROM во внешнее устройство.
4. Модуль MSSP для управления индикаторами по шине I 2 С.
5. Таймер TMR1 с отдельным генератором для формирования секундных импульсов.
6. Таймер TMR2 для формирования временных задержек при опросе состояния кнопок.
В данной МПС используется микроконтроллер PIC16F873. Этот контроллер содержит все необходимые периферийные модули и имеет 22 линии ввода / вывода. Назначение выводов следующее:
RA0/AN0 - вход АЦП обработки сигнала от датчика температуры;
RC0/T1OSO - выход генератора таймера TMR1;
RC1/T1OSI - вход генератора таймера TMR1;
RC3/SCL - шина синхронизации интерфейса I 2 C;
RC4/SDA - шина данных интерфейса I 2 C;
RB0/INT - вход прерываний по нажатию кнопок клавиатуры;
RA1 - RA5, RB1, RB4 - RB7 - цифровые порты ввода / вывода.
Микроконтроллеры семейства PIC имеют очень эффективную систему команд, состоящую всего из 35 инструкций. Все инструкции выполняются за один цикл, за исключением условных переходов и команд, изменяющих программный счетчик, которые выполняются за 2 цикла. Один цикл выполнения инструкции состоит из 4 периодов тактовой частоты. Каждая инструкция состоит из 14 бит, делящихся на код операции и операнд (возможна манипуляция с регистрами, ячейками памяти и непосредственными данными).
Высокая скорость выполнения команд в PIC-контроллерах достигается за счет использования двухшинной гарвардской архитектуры вместо традиционной одношинной Фон-Неймановской. Гарвардская архитектура основывается на наборе регистров с разделенными шинами и адресным пространством для команд и для данных. Набор регистров означает, что все программные объекты, такие как порты ввода / вывода, ячейки памяти и таймер, представляют собой физически реализованные аппаратные регистры.
1.2.2 Разработка схемы сопряжения для подключения дат чика уровня воды
Схема сопряжения обеспечивает гальваническую развязку датчика уровня и линии ввода RA1 контроллера. Схема сопряжения представлена на рисунке 2.
Рисунок 2 - Схема сопряжения для подключения датчика уровня воды
Сигнал сдатчика (верхний уровень +30В) через ограничительный резистор R1 поступает на транзисторный оптрон, который осуществляет гальваническую развязку. Рассчитаем сопротивление резистора R1:
где U вх - максимальное входное напряжение;
U прн - прямое падение напряжения на светодиоде оптрона;
I н - номинальный ток через светодиод;
В данной схеме используется оптрон АОТ101АС для которого U прн = 1,6В и I н = 5мА. Таким образом:
Диод VD1 типа КД521А шунтирует светодиод оптрона при отрицательном входном напряжении (-15В).
Транзистор оптрона и подтягивающий резистор R4 образуют инвертор напряжения. Для восстановления фазы сигнала, а также для приведения его к уровням ТТЛ используется инвертор DD1.1 микросхемы К155ЛН1.
1.2.3 Разработка схемы сопряжения для подключения датчика температуры
Схема сопряжения обеспечивает гальваническую развязку датчика температуры и линии ввода AN0 контроллера, а также преобразует входной аналоговый сигнал с уровнями 0…25В в выходной сигнал с уровнями 0…U вых max . Напряжение U вых max соответствует температуре 100 0 С, при этом АЦП должен выдавать значение 1000 d или 3E8h. Схема сопряжения представлена на рисунке 3.
Рисунок 3 - Схема сопряжения для подключения датчика температуры
Рассчитаем величину напряжения U вых max :
где U ref = 5В - опорное напряжение; N = 10 - разрядность АЦП.
Для преобразования уровней сигнала используется делитель напряжения на резисторах R2, R3.
Рассчитаем сопротивления резисторов R2 и R3:
Гальваническую развязку осуществляет ОУ DA2 типа AD210, работающий в режиме повторителя напряжения.
Структурная схема ОУ AD210 приведена на рисунке 4.
Рисунок 4 - Структурная схема ОУ AD210
1.2.4 Разработка схемы сопряжения для подклю чения схемы управления нагревателем
Схема сопряжения обеспечивает гальваническую развязку линии RB2 контроллера, а также преобразует выходной цифровой сигнал с уровнями ТТЛ в выходной цифровой сигнал с уровнями -5/0В. Схема сопряжения представлена на рисунке 5.
Рисунок 5 - Схема сопряжения для подключения схемы управления нагревателем
Оптрон DA1.2 осуществляет гальваническую развязку и выполняет роль ключа.
Схема работает следующим образом. Если на выходе RB2 «0», то на выходе инвертора DD1.2 «1», светодиод оптрона засвечивает базу транзистора, транзистор оптрона открыт и пропускает напряжение -5В на схему управления нагревателем. Нагреватель выключен. Если на выходе BR2 «1», на выходе инвертора DD1.2 «0», светодиод оптрона погашен, транзистор оптрона закрыт, и напряжение -5В не поступает на схему управления нагревателем. Нагреватель включен.
Питающее напряжение ±5В поступает из схемы управления нагревателем.
1.2.5 Подключени е светодиодов «Нагрев» и «Низкий уровень воды »
Для снижения нагрузки на линии RB2 и RB3 светодиоды HL1 «Нагрев» и HL2 «Низкий уровень воды» подключены через транзисторные ключи VT1 и VT2 (рисунок 6).
В качестве ключей используются маломощные транзисторы типа КТ315А.
В качестве светодиодов HL1, HL2 используются светодиоды типа АЛ307А с красным цветом свечения.
Рисунок 6 - Схема подключения светодиодов «Нагрев» и «Низкий уровень воды»
1.2. 6 Раз работка схемы индикации времени  / температуры
Схема индикации предназначена для отображения текущего времени в минутах и часах либо температуры воды (выбирается нажатием кнопки SB8 «Управление отображением времени / температуры»). Схема индикации приведена на рисунке 7.
Для управления светодиодными индикаторами применен драйвер MAX6958, управляемый по шине I 2 C. Данный драйвер позволяет управлять 4-мя светодиодными 7-сегментными индикаторами с общим катодом, а также 8-ю отдельными светодиодами. Драйвер имеет возможность программно регулировать яркость свечения индикаторов.
Подключение индикаторов к выводам драйвера приведено в таблице 2, а цоколевка драйвера - на рисунке 8.
Таблица 2 - Подключение индикаторов к выводам драйвера
Примечание: К1 - К3 - катоды индикаторов; SA - SG - сегменты индикаторов; S0 - S7 - аноды отдельных светодиодов.
Рисунок 8 - Цоколевка драйвера MAX6958
В качестве индикаторов HG1 - HG4 применены светодиодные индикаторы с общим катодом типа АЛС321А.
У индикаторов HG2 и HG3 задействованы децимальные точки. Точка в индикаторе HG2 предназначена для разделения разрядов минут и часов. Она подключена к выходу D0/S0 (отдельный светодиод S0). Программно реализовано мигание точки с частотой 0,5Гц. Точка в индикаторе HG3 разделяет целую и дробную части величины отображаемой температуры. Она подключена к выводу D3/S3 (отдельный светодиод S2).
1.2.7 Разработка схемы пульта управления (клавиатуры)
Пульт управления микропроцессорной системой изображен на рисунке 9. Он включает в себя следующие кнопки:
1. SB2 - «Установка поддерживаемой температуры»;
4. SB5 - «Установка времени включения»;
5. SB6 - «Установка времени выключения»;
6. SB7 - «Установка текущего времени»;
7. SB8 - «Управление отображением времени / температуры»;
На диодах VD3 - VD7 типа КД521А и резисторе R9 выполнена схема «ИЛИ». Нажатие одной из кнопок SB2, SB5 - SB8 приводит к появлению низкого уровня на входе INT контроллера, что вызывает прерывание программы контроллера. Кнопки SB3, SB4, SB9, SB10 подключены к входам RB4 - RB7. Их нажатие также приводит к прерыванию. Прерывания от кнопок SB3, SB4, SB9, SB10 разрешены только в том случае, если предварительно была нажата одна из кнопок SB2, SB5 - SB8. Повторное нажатие той же кнопки из SB2, SB5 - SB8 запрещает прерывания от кнопок SB3, SB4, SB9, SB10.
Рисунок 9 - Схема пульта управления
1.2.8 Организация последовательного интерфейса
В проектируемой системе управления для связи с внешним устройством используется последовательный интерфейс RS449. Роль приемопередатчика используется встроенный в микроконтроллер модуль USART. Для формирования уровней сигналов соответствующих интерфейсу RS449 используется мультистандартный преобразователь уровней MXL1543. Схема его включения приведена на рисунке 10.
Рисунок 10 - Схема включения преобразователя уровней MXL1543
Подключение к внешнему устройству осуществляется через 37-штырьковый разъем DB-37.
Для формирования тактового сигнала микроконтроллера предусмотрен внутренний генератор. Тактовый сигнал необходим для выполнения инструкций микроконтроллера и работы периферийных модулей. Внутренний машинный цикл микроконтроллера состоит из четырех периодов тактового сигнала.
Тактовый генератор микроконтроллера может работать в одном из восьми режимов. Существуют два режима внутреннего RC генератора, отличающихся между собой режимом работы вывода микроконтроллера. Режим работы тактового генератора определяется битами в слове конфигурации, расположенными в энергонезависимой памяти. Настроить биты конфигурации можно только при программировании микроконтроллера.
В данной системе управления в микроконтроллере используется режим XT, который используется для приложений со средней частотой тактового генератора. Данный режим предполагает использование внешнего кварцевого резонатора.
Чтобы обеспечить заданную частоту был выбран кварцевый резонатор с параллельным резонансом типа CDA4.00MG, который имеет частоту основной гармоники 4МГц.
Чем больше ёмкость конденсаторов С1 и С2, тем стабильнее генератор, но с повышением ёмкости увеличивается время запуска генератора, т.е. выхода колебаний на главную последовательность.
Для ожидания запуска генератора используется специальный таймер запуска генератора (OST - Oscillator Startup Timer), который обеспечивает задержку в 1024 такта генератора (вход OSC1).
Рекомендуемые значения емкостей конденсаторов C1 и C2 для режима XT и частоты резонатора 4МГц находятся в диапазоне 15…68пФ. Поскольку важна стабильность генератора, то значения емкостей C1 и C2 будут равны 68 пФ.
Для формирования секундных импульсов используется таймер TMR1 с отдельным генератором. Генератор работает в низкочастотном режиме LP. К выводам генератора подключен кварцевый резонатор ZQ2 типа C-001 R32.768K-A работающий на частоте 32,768 кГц. Для данной частоты рекомендуется емкость конденсаторов C3 и C4 33пФ.
Схема подключения кварцевых резонаторов к микроконтроллеру PIC16F873 приведена на рисунке 11.
Рисунок 11 - Схема подключения кварцевых резонаторов к микроконтроллеру PIC16F873
Схема сброса контроллера приведена на рисунке 12. При нажатии на кнопку SB1 на вывод MCLR микроконтроллера подается низкий уровень, что приводит к сбросу микроконтроллера.
Рисунок 12 - Схема сброса микроконтроллера
2 . Разработка программного обеспечения
2.1 Алгоритм работы микропроцессорной системы управления
Блок-схема алгоритма работы системы управления представлена на рисунке 13.
Рисунок 13 - Блок-схема алгоритма работы микропроцессорной системы управления
На рисунке 14 приведена блок-схема алгоритма обработки прерываний. В данной микропроцессорной системе возможны 5 видов прерываний: прерывание от модуля CCP1, прерывание от таймера TMR2, внешнее прерывание по входу INT, прерывание по изменению уровня на входах и прерывание от приемника USART.
Рисунок 14 - Блок-схема алгоритма обработки прерываний
Рисунок 14 - Блок-схема алгоритма обработки прерываний (продолжение)
Рисунок 14 - Блок-схема алгоритма обработки прерываний (продолжение)
Рисунок 14 - Блок-схема алгоритма обработки прерываний (продолжение)
Рисунок 14 - Блок-схема алгоритма обработки прерываний (продолжение)
Рисунок 14 - Блок-схема алгоритма обработки прерываний (продолжение)
Рисунок 14 - Блок-схема алгоритма обработки прерываний (продолжение)
Рисунок 14 - Блок-схема алгоритма обработки прерываний (окончание)
При запуске микроконтроллера необходимо проинициализировать следующие модули:
Необходимо настроить прерывания от приемника USART, модуля CCP1, таймера TMR2, прерывания по заднему фронту сигнала на входе INT и прерывания по изменению уровня на входах .
Листинг подпрограммы инициализации приведен ниже.
; ИНИЦИАЛИЗАЦИЯ ПОРТОВ ВВОДА/ВЫВОДА
BCF INTCON, GIE ; ЗАПРЕТИТЬ ПРЕРЫВАНИЯ
MOVLW B'00111111' ; ЛИНИИ RA0-RA5 НА ВВОД
MOVLW B'11110011' ; ЛИНИИ RB2, RB3 НА ВЫВОД
MOVLW B'10010000' ; ВКЛЮЧИТЬ МОДУЛЬ USART
MOVLW B'00000100' ; УСТАНОВИТЬ 8-РАЗРЯДНУЮ ПЕРЕДАЧУ
; АСИНХРОННЫЙ НИЗКОСКОРОСТНОЙ РЕЖИМ ПЕРЕДАЧИ
MOVLW D'129' ; СКОРОСТЬ ОБМЕНА 9600 бит/с
MOVLW B'00001000' ; ВЕДУЩИЙ РЕЖИМ I2C
MOVLW B'10000000' ; УПРАВЛЕНИЕ ДЛИТЕЛЬНОСТЬЮ ФРОНТА ВЫКЛЮЧЕНО
; ВЫХ. УРОВНИ СООТВЕТСТВУЮТ СПЕЦИФИКАЦИИ I2C
MOVLW 0x09 ; ТАКТОВАЯ ЧАСТОТА 100 кГц
MOVLW B'10001110' ; ПРАВОЕ ВЫРАВНИВАНИЕ
; КАНАЛ AN0 - АНАЛОГОВЫЙ ВХОД, ОСТАЛЬНЫЕ ЦИФРОВЫЕ
MOVLW B'10000001' ; МОДУЛЬ АЦП ВКЛЮЧЕН
MOVLW B'00001011' ; РЕЖИМ СРАВНЕНИЯ
MOVLW 0x80 ; ЗАГРУЗИТЬ 8000h В РЕГИСТРЫ CCPR1H И CCPR1L
MOVLW B'00000010' ; КОЭФФИЦИЕНТ ДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ 1:1
; ВНЕШНИЙ ИСТОЧНИК ТАКТОВЫХ ИМПУЛЬСОВ
CLRF TMR1L ; ОЧИСТКА РЕГИСТРОВ TMR1L И TMR1H
MOVLW B'01111010' ; ПРЕДДЕЛИТЕЛЬ 1/16, ВЫХОДНОЙ ДЕЛИТЕЛЬ 1/16
CLRF OPTION_REG ; ПОДКЛЮЧИТЬ ПОДТЯГИВАЮЩИЕ РЕЗИСТОРЫ
; АКТИВНЫЙ ЗАДНИЙ ФРОНТ ИМПУЛЬСА НА ВХОДЕ INT
MOVLW B'01011000' ; РАЗРЕШИТЬ ПРЕРЫВАНИЯ ОТ ПЕРИФЕРИЙНЫХ МОДУЛЕЙ
; И ПРЕРЫВАНИЯ ПО ВХОДАМ INT И
MOVLW B'00100110' ; РАЗРЕШИТЬ ПРЕРЫВАНИЯ ОТ ПРИЕМНИКА USART,
; ИНИЦИАЛИЗАЦИЯ РЕГИСТРОВ ОБЩЕГО НАЗНАЧЕНИЯ
CLRF EEADR ; ОЧИСТИТЬ РЕГИСТР АДРЕСА
BCF EECON1, EEPGD ; УСТАНОВИТЬ ЧТЕНИЕ ИЗ EEPROM
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF MAX_TL ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF MAX_TH ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF START_ML ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF START_MH ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF START_HL ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF START_HH ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF STOP_ML ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF STOP_MH ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF STOP_HL ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ НА 1
MOVF EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ
MOVWF STOP_HH ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
MOVLW B'0100000' ; ВКЛЮЧИТЬ РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИ
CLRF FLAG_R1 ; ВЫКЛЮЧИТЬ РЕЖИМ ПОДДЕРЖАНИЯ ТЕМПЕРАТУРЫ
CLRF IND_0 ; ОБНУЛИТЬ РЕГИСТРЫ ИНДИКАЦИИ
MOVLW B'00000010' ; ВКЛЮЧИТЬ ДЕЦИМАЛЬНУЮ ТОЧКУ ВО 2-М РАЗРЯДЕ
BSF SSPCON, SSPEN ; ВКЛЮЧИТЬ МОДУЛЬ MSSP
BSF SSPCON2, SEN ; СГЕНЕРИРОВАТЬ БИТ START
BTFSC SSPCON2, SEN ; ОЖИДАТЬ ОКОНЧАНИЯ ГЕНЕРАЦИИ БИТА START
MOVLW 0x38 ; ПЕРЕДАТЬ АДРЕС ДРАЙВЕРА
BTFSC SSPCON2, ACKSTAT ; ОЖИДАТЬ ФОРМИРОВАНИЕ БИТА ПОДТВЕРЖДЕНИЯ
MOVLW 0x01 ; ПРЕРЕДАТЬ АДРЕС РЕГИСТРА УПРАВЛЕНИЯ ДЕКОДИРОВАНИЕМ
BTFSC SSPCON2, ACKSTAT ; ОЖИДАТЬ ФОРМИРОВАНИЕ БИТА ПОДТВЕРЖДЕНИЯ
MOVLW 0x0F ; ВКЛЮЧИТЬ ДВОИЧНО-ДЕСЯТИЧНОЕ ДЕКОДИРОВАНИЕ ДЛЯ ВСЕХ
BTFSC SSPSTAT, BF ; ОЖИДАТЬ ОКОНЧАНИЕ ПЕРЕДАЧИ
MOVLW 0x07 ; УСТАНОВИТЬ ЯРКОСТЬ СВЕЧЕНИЯ ИНДИКАТОРОВ
BTFSC SSPCON2, ACKSTAT ; ОЖИДАТЬ ФОРМИРОВАНИЕ БИТА ПОДТВЕРЖДЕНИЯ
BSF SSPCON2, PEN ; СФОРМИРОВАТЬ БИТ STOP
BSF INTCON, GIE ; РАЗРЕШИТЬ ПРЕРЫВАНИЯ
2.3 Преобразование напряжения от датчика температуры
Ниже приведена часть программы, осуществляющая преобразование напряжения от датчика температуры. При изменении температуры от 0 до 100 0 С напряжение на входе АЦП изменяется в пределах 0…4,88 В. При этом результат преобразования в регистрах ADRESL и ADRESH будет изменяться в пределах 0…1000 d , что позволяет легко преобразовать результат в десятичный формат.
MOVLW TIME1 ; СФОРМИРОВАТЬ ЗАДЕРЖКУ 20 мкс
ADC_START ; ПОДПРОГРАММА ИЗМЕРЕНИЯ ТЕМПЕРАТУРЫ
BSF ADCON0, GO ; НАЧАТЬ ПРЕОБРАЗОВАНИЕ
BTFSC ADCON0, GO ; ОЖИДАТЬ ОКОНЧАНИЯ ПРЕОБРАЗОВАНИЯ
Для осуществления временных задержек, необходимых для заряда внутреннего конденсатора модуля АЦП реализован программный счетчик на основе регистра TIMER1, определенного по адресу 26h. Счетчик формирует временную задержку 20 мкс. Рассчитаем константу TIME1.
где T з - время задержки, F osc - тактовая частота; n - количество машинных циклов в одном цикле работы счетчика. Так как счетчик включает в себя команду DECFSZ, выполняемую за 1 МЦ (если результат не равен 0) и команду GOTO, выполняемую за 2 МЦ, то n = 3. Таким образом
2.4 Подпрограмма управления в ыводом температуры на индикацию
Данная часть программы определяет, разрешено ли отображение температуры на индикаторах. Если отображение разрешено, подпрограмма включает точку в первом разряде индикации, помещает содержимое регистров ADRESL и ADRESH во временные регистры TEMP_TL и TEMP_TH и производит вызов подпрограммы двоично-десятичной коррекции.
; ПОДПРОГРАММА УПРАВЛЕНИЯ ВЫВОДОМ ТЕМПЕРАТУРЫ НА ИНДИКАЦИЮ
BTFSS FLAG_R, 7 ; ОТОБРАЖЕНИЕ ТЕМПЕРАТУРЫ ВКЛЮЧЕНО
GOTO ST_NAGREV ; НЕТ - ПЕРЕХОД К ПОДПРОГРАММЕ УПРАВЛЕНИЯ НАГРЕВОМ
MOVLW B'00000100' ; ДА - ВКЛЮЧИТЬ ТОЧКУ В ПЕРВОМ РАЗРЯДЕ
MOVF ADRESL, W ; ПОМЕСТИТЬ РЕЗУЛЬТАТ ПРЕОБРАЗОВАНИЯ ВО ВРЕМЕННЫЕ
CALL BIN_DEC ; ВЫЗОВ ПОДПРОГРАММЫ ДВОИЧНО-ДЕСЯТИЧНОЙ
2.5 Подпрограмма управления нагревателем
Данная подпрограмма осуществляет контроль состояния датчика снижения уровня воды и проверяет включение режима поддержания температуры. Если уровень воды в норме и включен режим поддержания температуры (бит 0 в регистре FLAG_R1 установлен в 1), то происходит включение нагревателя. Если уровень воды уменьшается ниже нормы, нагреватель выключается и включается индикатор «Снижение уровня воды».
ST_NAGREV ; ПОДПРОГРАММА УПРАВЛЕНИЯ НАГРЕВАТЕЛЕМ
BTFSC FLAG_R1,0 ; РЕЖИМ ПОДДЕРЖАНИЯ ТЕМПЕРАТУРЫ ВЫКЛЮЧЕН
BCF PORTB, 2 ; ДА - ВЫКЛЮЧИТЬ НАГРЕВ
BSF PORTB, 3 ; НЕТ - ВКЛЮЧИТЬ ИНДИКАТОР «СНИЖЕНИЕ УРОВНЯ
BCF PORTB, 3 ; ВЫКЛЮЧИТЬ ИНДИКАТОР «СНИЖЕНИЕ УРОВНЯ ВОДЫ»
2.6 Подпрограмма вычисления нижнего предела температуры
Данная подпрограмма вычисляет нижний предел температуры, который принимается на 5 0 С ниже заданного (верхнего).
Рассчитаем константу DELT_T, соответствующую разности температур в 5 0 С:
где N max - значение регистров ADRESL и ADRESH, соответствующее температуре T max .
Так как T max = 100 0 С и N max = 1000 d , то
; ПОДПРОГРАММА ВЫЧИСЛЕНИЯ НИЖНЕГО ПРЕДЕЛА ТЕМПЕРАТУРЫ
CLRF MIN_TH ; ОЧИСТКА РЕГИСТРА MIN_TH
SUBLW DELT_T ; ВЫЧЕСТЬ ИЗ СОДЕРЖИМОГО MAX_TL РАЗНОСТЬ ТЕМПЕРАТУР
MOVWF MIN_TL ; ПОМЕСТИТЬ РЕЗУЛЬТАТ В MIN_TL
SUBWF MAX_TH, W ; УМЕНЬШИТЬ ЗНАЧЕНИЕ РЕГИСТРА MAX_TH НА 1
MOVWF MIN_TH ; ПОМЕСТИТЬ РЕЗУЛЬТАТ В РЕГИСТР MIN_TH
CLRF MIN_TL ; ОЧИСТИТЬ РЕГИСТРЫ MIN_TL И MIN_TH
BCF STATUS, C ; И СБРОСИТЬ ФЛАГ ПЕРЕНОСА
2.7 Подпрограмма контроля температуры
Данная подпрограмма осуществляет контроль температуры воды и при ее уменьшении ниже значения, записанного в регистрах MIN_TH и MIN_TL включает нагреватель, а при увеличении выше значения, записанного в регистрах MAX_TH и MAX_TL выключает его.
; ПОДПРОГРАММА ПРОВЕРКИ СНИЖЕНИЯ ТЕМПЕРАТУРЫ НИЖЕ НОРМЫ
BSF PORTB, 2 ; ВКЛЮЧЕНИЕ НАГРЕВАТЕЛЯ
BSF PORTB, 2 ; ВКЛЮЧЕНИЕ НАГРЕВАТЕЛЯ
BCF PORTB, 2 ; ВЫКЛЮЧЕНИЕ НАГРЕВАТЕЛЯ
BCF PORTB, 2 ; ВЫКЛЮЧЕНИЕ НАГРЕВАТЕЛЯ
2.8 Подпрограмма вывода на индикацию
Данная подпрограмма осуществляет передачу значений буферных регистров индикации IND_0, IND_1, IND_2, IND_3 и регистра управления децимальной точкой POINT во внутренние регистры драйвера LCD.
Драйвер MAX6958 поддерживает автоинкрементирование адреса при записи значений в регистры. Поэтому при передаче данных достаточно указать начальный адрес (0х20), а затем последовательно передавать данные без предварительной передачи адреса следующего регистра. Адрес драйвера на шине I 2 C 0x38.
Ниже приведен листинг программы, осуществляющей вывод на индикацию.
BSF SSPCON2, SEN ; СГЕНЕРИРОВАТЬ БИТ START
BTFSC SSPCON2, SEN ; ОЖИДАТЬ ОКОНЧАНИЯ ГЕНЕРАЦИИ БИТА START
MOVLW 0x38 ; ПЕРЕДАТЬ АДРЕС ДРАЙВЕРА
BTFSC SSPCON2, ACKSTAT ; ОЖИДАТЬ ФОРМИРОВАНИЕ БИТА ПОДТВЕРЖДЕНИЯ
MOVLW 0x20 ; ПРЕРЕДАТЬ АДРЕС ПЕРВОГО РЕГИСТРА ДАННЫХ
BTFSC SSPCON2, ACKSTAT ; ОЖИДАТЬ ФОРМИРОВАНИЕ БИТА ПОДТВЕРЖДЕНИЯ
MOVF IND_3, W ; ПЕРЕДАТЬ СОДЕРЖИМОЕ 3-ГО РАЗРЯДА ИНДИКАЦИИ
MOVF IND_2, W ; ПЕРЕДАТЬ СОДЕРЖИМОЕ 2-ГО РАЗРЯДА ИНДИКАЦИИ
MOVF IND_1, W ; ПЕРЕДАТЬ СОДЕРЖИМОЕ 1-ГО РАЗРЯДА ИНДИКАЦИИ
MOVF IND_0, W ; ПЕРЕДАТЬ СОДЕРЖИМОЕ 0-ГО РАЗРЯДА ИНДИКАЦИИ
MOVF POINT, W ; ПЕРЕДАТЬ СОСТОЯНИЕ ДЕЦИМАЛЬНОЙ ТОЧКИ
BSF SSPCON2, PEN ; СГЕНЕРИРОВАТЬ БИТ STOP
GOTO END_INT ; ПЕРЕХОД НА НАЧАЛО ПРОГРАММЫ
2.9 П одпрограмма двоично-десятичной коррекции
Данная подпрограмма осуществляет конвертирование двоичного кода, предварительно записанного в буферных регистрах TEMP_TL TEMP_TH в двоично-десятичный код, записываемый в регистры индикации IND_0, IND_1, IND_2, IND_3.
Листинг подпрограммы приведен ниже.
BIN_DEC ; ПОДПРОГРАММА ДВОИЧНО-ДЕСЯТИЧНОЙ КОРРЕКЦИИ
; РАСПРЕДЕЛЕНИЕ ТЕТРАД РЕГИСТРОВ TEMP_TL И TEMP_TH ПО РЕГИСТРАМ IND_0 - IND_3
MOVWF IND_0 ; ПОМЕСТИТЬ МЛАДШУЮ ТЕТРАДУ TEMP_TL В IND_0
MOVWF IND_1 ; ПОМЕСТИТЬ СТАРШУЮ ТЕТРАДУ TEMP_TL В IND_1
MOVWF IND_2 ; ПОМЕСТИТЬ МЛАДШУЮ ТЕТРАДУ TEMP_TH В IND_2
MOVWF IND_3 ; ПОМЕСТИТЬ СТАРШУЮ ТЕТРАДУ TEMP_TH В IND_3
BTFSS STATUS, Z ; ЕСЛИ ЗНАЧЕНИЕ IND_0 НЕ МЕНЬШЕ 0x0A
MOVWF IND_0 ; В РЕГИСТР IND_0 ЗАПИСАТЬ РАЗНОСТЬ ЕГО СОДЕРЖИМОГО И
INCF IND_1, F ; И УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ IND_1
MOVLW 0x0A ; ИНАЧЕ ЗНАЧЕНИЯ РЕГИСТРОВ ОСТАВИТЬ БЕЗ ИЗМЕНЕНИЯ
BTFSS STATUS, Z ; ЕСЛИ ЗНАЧЕНИЕ IND_1 НЕ МЕНЬШЕ 0x0A
MOVWF IND_1 ; В РЕГИСТР IND_1 ЗАПИСАТЬ РАЗНОСТЬ ЕГО СОДЕРЖИМОГО И
INCF IND_2, F ; И УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ IND_2
MOVLW 0x0A ; ИНАЧЕ ЗНАЧЕНИЯ РЕГИСТРОВ ОСТАВИТЬ БЕЗ ИЗМЕНЕНИЯ
BTFSS STATUS, Z ; ЕСЛИ ЗНАЧЕНИЕ IND_2 НЕ МЕНЬШЕ 0x0A
MOVWF IND_2 ; В РЕГИСТР IND_2 ЗАПИСАТЬ РАЗНОСТЬ ЕГО СОДЕРЖИМОГО И
INCF IND_3, F ; И УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ IND_3
Вектор прерываний находится по адресу 0х04.
Обработчик прерываний включает в себя следующие подпрограммы:
1. Подпрограмма сохранения контекста.
2. Подпрограмма определения источника прерывания.
4. Подпрограмма обработки прерываний от таймера TMR2.
5. Подпрограмма обработки прерываний по входу INT.
6. Подпрограмма обработки прерываний по входам .
7. Подпрограмма приема / передачи данных через USART.
8. Подпрограмма восстановления контекста.
При переходе на обработку прерываний необходимо сохранять текущее содержимое аккумулятора и регистра STATUS, чтобы при возврате из прерывания программа могла продолжать нормальную работу.
Ниже приведен листинг подпрограммы, осуществляющей сохранение контекста во временные регистры W_TEMP и STATUS_TEMP. Регистр STATUS_TEMP определен в 0-м банке по адресу 0х39, а регистр W_TEMP - в 0-м банке по адресу 0х3А и в 1-м банке по адресу 0хВА.
; СОХРАНЕНИЕ АККУМУЛЯТОРА И РЕГИСТРА STATUS
BTFSS STATUS, RP0 ; ОПРЕДЕЛЕНИЕ ТЕКУЩЕГО БАНКА
BCF STATUS, RP0 ; УСТАНОВИТЬ БАНК 0
MOVWF W_TEMP ; СОХРАНИТЬ АККУМУЛЯТОР
MOVWF STATUS_TEMP ; СОХРАНИТЬ РЕГИСТР STATUS
BSF STATUS_TEMP, 5 ; ВОССТАНОВИТЬ ЗНАЧЕНИЕ БИТА RP0
MOVWF W_TEMP ; СОХРАНИТЬ АККУМУЛЯТОР
MOVWF STATUS_TEMP ; СОХРАНИТЬ РЕГИСТР STATUS
Подпрограмма определения источника прерывания
Данная подпрограмма по состоянию флагов прерываний в регистрах PIR1 и INTCON определяет источник прерывания и осуществляет вызов соответствующей подпрограммы обработки.
Листинг подпрограммы приведен ниже.
CLRF STATUS ; ОЧИСТИТЬ РЕГИСТР STATUS
BTFSC PIR1, CCP1IF ; ЕСЛИ ПРЕРЫВАНИЕ ОТ МОДУЛЯ CCP1
GOTO CLOCK ; ПЕРЕХОД НА ПОДПРОГРАММУ ЧАСОВ
BTFSC PIR1, TMR2IF ; ЕСЛИ ПРЕРЫВАНИЕ ОТ ТАЙМЕРА TMR2
GOTO INT_TMR2 ; ПЕРЕХОД НА ПОДПРОГРАММУ ОБРАБОТЧИКА ПРЕРЫВАНИЙ ОТ
BTFSC INTCON, INTF ; ЕСЛИ ПРЕРЫВАНИЕ ПО ВХОДУ INT
GOTO INT_INT ; ПЕРЕХОД НА ПОДПРОГРАММУ ОБРАБОТЧИКА ПРЕРЫВАНИЙ ПО
BTFSC INTCON, RBIF ; ЕСЛИ ПРЕРЫВАНИЕ ПО ВХОДАМ
GOTO INT_RB ; ПЕРЕХОД НА ПОДПРОГРАММУ ОБРАБОТЧИКА ПРЕРЫВАНИЙ ПО
BTFSC PIR1, RCIF ; ЕСЛИ ПРЕРЫВАНИЕ ОТ ПРИЕМНИКА USART
GOTO SERIAL_PRT ; ПЕРЕХОД НА ПОДПРОГРАММУ ПРИЕМА/ПЕРЕДАЧИ
GOTO END_INT ; ИНАЧЕ ПЕРЕХОД НА ПОДПРОГРАММУ ВОССТАНОВЛЕНИЯ
Данная подпрограмма осуществляет счет и вывод на индикацию (в случае включения режима отображения текущего времени) текущего времени. Кроме того подпрограмма проверяет совпадение текущего времени с временем начала и поддержания температуры. В случае их совпадения подпрограмма включает либо выключает режим поддержания температуры. Для счета используется 6 регистров-счетчиков:
Счетчики SEC_L, MIN_L, HOUR_L инкрементируются от 0х00 до 0х0А. При достижении 0х0А счетчики сбрасываются. Счетчики SEC_H и MIN_H инкрементируются от 0х00 до 0х06. При достижении 0х06 счетчики сбрасываются. Счетчик HOUR_H инкрементируется от 0х00 до 0х02. Счетчик сбрасывается, когда в нем записано значение 0х02, а счетчик HOUR_L досчитал до 0х04.
Листинг подпрограммы часов приведен ниже.
BCF PIR1, CCP1IF ; СБРОСИТЬ ФЛАГ ПРЕРЫВАНИЯ ОТ МОДУЛЯ CCP1
INCF SEC_L, F ; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК СЕКУНД
MOVF SEC_L, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 10
GOTO CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
CLRF SEC_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК СЕКУНД
INCF SEC_H, F ; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК СЕКУНД
MOVF SEC_H, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 6
GOTO CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
CLRF SEC_H ; ДА - ОЧИСТИТЬ СТАРШИЙ СЧЕТЧИК СЕКУНД
INCF MIN_L, F ; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК МИНУТ
MOVF MIN_L, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 10
GOTO CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
CLRF MIN_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК МИНУТ
INCF MIN_H, F ; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК МИНУТ
MOVF MIN_H, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 6
GOTO CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
CLRF MIN_H ; ДА - ОЧИСТИТЬ СТАРШИЙ СЧЕТЧИК МИНУТ
INCF HOUR_L, F ; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВ
MOVF HOUR_H, W ; СТАРШИЙ СЧЕТЧИК ДОСЧИТАЛ ДО 2
GOTO M3 ; НЕТ - ПЕРЕХОД НА ПРОВЕРКУ МЛАДШЕГО СЧЕТЧИКА
CLRF HOUR_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВ
GOTO CURR_TIME ; ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
XORLW 0x0A ; СЧЕТЧИК ДОСЧИТАЛ ДО 10
GOTO CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
CLRF HOUR_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВ
INCF HOUR_H ; ИНКР
Микропроцессорныая система. Автоматический чайник дипломная работа. Коммуникации, связь, цифровые приборы и радиоэлектроника.
Смысл Названия Пьесы Вишневый Сад Сочинение
Опыт Редакционной Работы Журналиста Или Писателя Xix Xx Веков Реферат
Курсовая работа по теме Агрессия подростков
Пример Сочинения Егэ
Реферат: Эволюционные учения
Курсовая Работа На Тему Акцизы: Проблемы И Перспективы
Реферат На Статью Из Научного Журнала Пример
Курсовая Работа На Тему Расчет Электромагнитного Реле Постоянного Тока Типа Рс52
Курсовая работа: Группа как саморазвивающаяся система
Реферат На Тему История Компьютерной Техники
Дипломная Работа Самостоятельная Работа Студентов
Сочинение Дружба Огэ Аргументы Из Литературы
Эссе Как Улучшить Ситуацию На Дорогах
Реферат: New Women Of The Victorian Era Essay
Реферат: Основные мотивы в лирике Лермонтова. Скачать бесплатно и без регистрации
Дипломная Работа На Тему Методы, Проблемы И Перспективы Совершенствования Управления Человеческими Ресурсами
Реферат: Топография. Скачать бесплатно и без регистрации
Привилегированные Составы Убийства Курсовая
Реферат: Ушатый, Константин Фёдорович
Реферат На Тему Туристические Услуги
About Ireland - Иностранные языки и языкознание контрольная работа
Конвергенция российских общефедеральных эфирных каналов - Журналистика, издательское дело и СМИ реферат
Лица как субъекты гражданских правоотношений - Государство и право контрольная работа


Report Page