Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра автоматизированных систем упр

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.11.2024

МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА

И ПРОДОВОЛЬСТВИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Учреждение образования

«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ

АГРАРНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра автоматизированных систем

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

ИЗУЧЕНИЕ МИКРОПРОЦЕССОРНЫХ

КОНТРОЛЛЕРОВ И РЕГУЛИРУЮЩИХ БЛОКОВ

Методические указания

к лабораторным работам по дисциплине

«Автоматика и электроника»  для студентов специальности

1-74 06 05  «Энергетическое обеспечение сельского хозяйства (по направлениям)»

Минск

БГАТУ

2009


УДК 681.5(07)

ББК 32.965я7

      М 74

Рекомендовано научно-методическим советом агроэнергетического факультета БГАТУ

Протокол № от 10 декабря 2009 г.

Составители:

канд. техн. наук О.Ч. Ролич;

ассистент А.Г. Сеньков

Рецензенты:

канд. техн. наук, старший инженер Республиканского центра топочно-горелочных устройств и защиты атмосферы РУП БЕЛТЭИ

В.Г. Пирогов

канд. техн. наук, доцент кафедры вычислительной техники БГАТУ

Н.В. Исаеня

© БГАТУ, 2009


Содержание

СПИСОК ПРИНЯТЫХ УСЛОВНЫХ ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ………………………………………….

4

ВВЕДЕНИЕ.

ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ МИКРОПРОЦЕССОРНЫХ СИСТЕМ АВТОМАТИКИ……………….

5

Лабораторная работа № 1.

ИМПУЛЬСНОЕ УПРАВЛЕНИЕ ИСПОЛНИТЕЛЬНЫМИ УСТРОЙСТВАМИ……………………………………

20

Лабораторная работа № 2.

ЦИФРОВАЯ ОБРАБОТКА СИГНАЛОВ ДАТЧИКОВ СИСТЕМ АВТОМАТИКИ………………………………...

45

Лабораторная работа № 3.

ДИСТАНЦИОННОЕ УПРАВЛЕНИЕ В СИСТЕМАХ АВТОМАТИКИ……………………………………………

60

ЛИТЕРАТУРА……………………………………………..

68


СПИСОК ПРИНЯТЫХ УСЛОВНЫХ ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ

АЦП – аналого-цифровой преобразователь

Д – дифференциальный

ЖКД – жидкокристаллический дисплей

ЖКИ – жидкокристаллический индикатор

ИК – инфракрасный

ОЗУ – оперативное запоминающее устройство

П – пропорциональный

ПДУ – пульт дистанционного управления

ПИД – пропорционально-интегрально-дифференциальный

ПЗУ – постоянное запоминающее устройство

РОН – регистр общего назначения

РСФ – регистр специальных функций

ЦАП – цифро-аналоговый преобразователь

ШИМ – широтно-импульсная модуляция


ВВЕДЕНИЕ.

ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ МИКРОПРОЦЕССОРНЫХ СИСТЕМ АВТОМАТИКИ

Современные системы автоматики являются цифровыми, строятся по архитектуре фон-Неймана и включают блоки ввода (например, клавиатуру, инфракрасный приёмник сигналов телевизионного ПДУ, GSM-модуль), отображения (светодиодный или ЖК дисплей) информации и память (ПЗУ и ОЗУ), управляемые микроконтроллерами – программируемыми устройствами с процессорным ядром. Микроконтроллер функционирует в соответствии с заложенной в него программой. Одним из основных языков программирования микроконтроллеров является Ассемблер.

Алфавит и лексические основы Ассемблера.

Алфавит Ассемблера состоит из латинских букв (при этом строчные и прописные символы являются эквивалентными), цифр от 0 до 9, специальных знаков: @ # $ / _ и разделителей . , : ; ‘ + – пробел табуляция.

Из символов алфавита формируются языковые лексемы: идентификаторы, ключевые (служебные) слова (команды), константы, знаки операций.

Идентификатор представляет собой набор букв, цифр и символов _ $ @, не начинающийся с цифры. Он должен полностью размещаться в одной строке текста. Идентификаторы отделяются пробелом, табуляцией или разделителем, которым является любой недопустимый в идентификаторе символ. Идентификаторами представляются метки, имена переменных, а также имена других объектов программы.

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

Константой (литералом) является лексема, изображающая фиксированное числовое или символьное (литерное) значение и определяется в Ассемблере директивой EQU в начале программы либо с помощью символа ' # ' непосредственно в команде. В Ассемблере используются только целые константы в десятичном (#54), двоичном (#01101001b) или шестнадцатеричном (#0FAh) видах. При этом сама константа (кроме десятичной) должна заканчиваться идентификатором системы счисления: b – для двоичной, h – для шестнадцатеричной. Если шестнадцатеричная константа начинается не с цифры, впереди необходимо дописывать 0. Символьная константа заключается в апострофы: 'А', '1', '*'. Каждой символьной константе ставится в соответствие числовое значение – её внутренний код, например символу '0' сопоставляется внутренний код 30h, символу '1' – 31h, символу '2' – 32h, символу 'A' – 41h, символу 'В' – 42h и т.д.

Команды Ассемблера ядра 8051. Команды Ассемблера являются сокращением (обозначением, мнемокодом или аббревиатурой) основных арифметических и логических операций, и их комбинаций, представленных в англоязычном варианте. Множество всех команд для ядра 8051 отображается в виде определённой таблицы, где каждой команде соответствует шестнадцатеричный машинный код (код операции).

Машинный код является основой функционирования микропроцессорных систем. Процессор, покомандно выполняя программу, сначала дешифирирует код команды. В зависимости от кода команды считываются дополнительные, следующие за ним аргументы (значения констант или адресов), а затем полностью выполняется сама команда. После этого процессор переходит к очередной операции.

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

Безоперандовые команды занимают в памяти один байт. К ним относятся пустая команда (nop) и команды возврата из подпрограммы (ret, reti).

Унарные операции в зависимости от типа операнда (аккумулятора, РОН или ячейки памяти ОЗУ) представляются одним, двумя или реже тремя байтами. К ним относятся:

  •  однобайтовые команды очистки clr (аббревиатура от «clear») и инверсии cpl (сокращение от «complement») аккумулятора, обмена тетрад в аккумуляторе (swap), двоично-десятичного представления (da), сдвига (rl (rotate left), rr (rotate right), rlc (rotate left with bit C), rrc (rotate right with bit C)), установки setb (set bit), сброса (clr) или инверсии (cpl) бита C;  инкремента inc (increment) или декремента dec (decrement) значения аккумулятора или РОН;
  •  двухбайтовые команды для работы со стеком (push, pop); установки (setb), сброса (clr) или инверсии (cpl) бита ячейки ОЗУ с побитовым доступом; ближнего вызова подпрограмм (ACALL) и безусловного ближнего перехода (sjmp, ajmp), где в качестве операнда выступает однобайтное смещение относительно адреса текущей команды; инкремента (inc) или декремента (dec) значения ячейки ОЗУ;
  •  трёхбайтные команды дальнего вызова подпрограмм (LCALL) и безусловного дальнего перехода (ljmp). В эти команды кроме кода операции входит двухбайтный адрес подпрограммы или перехода.

Бинарные команды в зависимости от типов операндов занимают в памяти один, два или три байта. К ним относятся:

  •  однобайтовые операции обмена байтами (xch) между аккумулятором и РОН или косвенно адресованной ячейкой памяти;
  •  двухбайтовые арифметические (сложения add, сложения addc с добавлением значения бита С, вычитания subb, умножения mul, деления div), логические поразрядные операции (логического сложения orlor» logical), логического умножения anland» logical), логического исключающего сложения xrlxor» logical)) и операции перемещения (mov), где в качестве одного из операндов выступает аккумулятор или РОН;
  •  трёхбайтовые логические поразрядные команды (orl, anl, xrl) и операции перемещения (mov), оперирующие с ячейками ОЗУ.

Бинарные команды стандарта 8051 читаются справа налево, т.е. результат действия команды записывается в ячейке левого операнда, например команда mov A,R2 означает перемещение значения регистра R2 в аккумулятор A.

Тетрарными операциями являются команды условного перехода, в состав которых входят три операнда: объект сравнения (аккумулятор, РОН, косвенный адрес, бит), константа либо состояние бита, относительный адрес перехода.

Размер команды можно оценить исходя из следующих правил:

  •  безоперандовая команда занимает в памяти 1 байт;
  •  унарная или бинарная команда, оперирующая с аккумулятором или РОН, будет занимать не более двух байтов;
  •  команда, в которой имеется адресный операнд, будет занимать не менее двух байтов;
  •  команда, оперирующая только с аккумулятором, РОН или битом C, занимает 1 байт.

Иными словами, под код безоперандовой команды или команды, оперирующей с аккумулятором, РОН или битом С, отводится 1 байт. Наличие в команде константы или адреса ячейки ОЗУ (бита или байта) увеличивает её размер ещё на один байт. Наличие относительного адреса – ещё на один байт. Команды с абсолютными адресами имеют размер три байта.

Структура ОЗУ и регистровая модель ядра 8051. ОЗУ ядра 8051 имеет размер 256 байтов, логически разделённых на две области: старшие 128 байтов и младшие 128 байтов, представленных на рисунке 1.

Рис. 1. Структура ОЗУ ядра 8051

Старшая половина ОЗУ (старшие 128 байтов) также именуется как дополнительное ОЗУ. Доступ к его ячейкам производится только посредством косвенной адресации: @R0 или @R1, где в R0 или R1 записывается адрес необходимой ячейки. Прямой доступ к ячейкам дополнительного ОЗУ эквивалентен доступу к соответствующим регистрам специальных функций, предназначенных для настройки и  управления «внешними» для микроконтроллерного ядра устройствами: АЦП, ЦАП, таймерами, внешними портами и их прерываниями.

Младшая половина ОЗУ представлена тремя адресными секциями:

  •  30h-7Fh – ячейки только с побайтовым доступом;
  •  20h-2Fh – ячейки как с побайтовым, так и с побитовым доступом;
  •  00h-1Fh – ячейки четырёх банков РОН R0, …, R7. Смена банков производится посредством битов RS1 и RS0. Доступ к этим ячейкам эквивалентен записи данного в один из РОН соответствующего банка. Отличия применения эквивалентных команд mov 00h,# и mov R0,# нулевого регистрового банка заключаются как в скорости доступа (команда с явным указанием РОН выполняется быстрее), так и в экономии памяти программ (команда с явным указанием РОН занимает в памяти меньше места, нежели эквивалентное прямое обращение к соответствующей ячейке).

Основным регистром, участвующим в большинстве операций, является аккумулятор A. На операнде-аккумуляторе базируется группа поразрядных логических и арифметических команд, команд сдвига, очистки и инверсии аккумулятора, двоично-десятичного преобразования, обмена тетрадами и байтами. Доступ к отдельным битам аккумулятора производится посредством имени ACC, например, ACC.2, ACC.5 и т.д.

Основным битом, участвующим в большинстве битовых и условных операций, является бит С, расположенный в регистре PSW (Program State Word) состояния программы наряду с вышеупомянутыми битами RS1 и RS0 выбора регистрового банка.

Директивы Ассемблера и структура программы ядра 8051. Директивы предназначены для указания компилятору выполнения определённых действий и применяются в структурной организации программы, определении переменных и распределении памяти. Среди директив языка Ассемблера выделяются следующие:

  •  org применяется в организации прерывания:

org 0 ;прерывание, генерируемое во время сброса микроконтроллера

jmp init ;процедура, выполняемая сразу после старта микроконтроллера

org 0Bh ;прерывание, генерируемое таймером 0 микроконтроллера

jmp _Timer0 ;процедура обработки запроса прерывания таймера 0

  •  equ определяет константу:

const equ 34

const_1 equ 27h

const_2 equ 01010010b

  •  data используется в распределении памяти и определении переменных:

x data 20h ;переменная x с адресом 20h с побайтовым и побитовым доступами

y data 33h ;переменная y с адресом 33h

  •  bit применяется в определении бита:

bit_0 bit x.0 ;нулевой бит переменной x; эквивалентная запись 20h.0

  •  cseg указывает на расположение следующих за директивой данных в сегменте кода;
  •  DB применяется в определении таблиц:

Table: DB 12,14,16,23h,01001101b

  •  End указывает на завершение программы.

Структура Ассемблерной программы представлена на рисунке 2. В ней особым образом выделены два основных блока, присутствующих в любой программе: определений векторов прерываний и основного цикла программы.

Рис. 2. Основная структура Ассемблерной программы

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

  •  определений битовых и байтовых констант и переменных;
  •  определений таблиц;
  •  подпрограмм.

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

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

В блоке подпрограмм определяются процедуры (подпрограммы), вызываемые посредством команд ACALL или LCALL в основной программе. Любая процедура должна завершаться командой ret возврата в точку её вызова.

Применение процедур рекомендовано в двух случаях:

  •  при вынесении большого блока команд из основного цикла для формирования в нём ближнего перехода. При этом, команде вызова подпрограммы предшествует команда условного перехода или sjmp либо ajmp ближнего безусловного перехода. Например,

mov A,Mode  //(1)

cjne A,#0, $+7  //(2)

ACALL Mode0  //(3)

sjmp  Label  //(4)

cjne A,#1, $+7  //(5)

ACALL Mode1  //(6)

sjmp  Label  //(7)

cjne A,#2, $+6  //(8)

................................

 Label:

В приведённом примере предполагается, что коды подпрограмм Mode0 и Mode1 имеют большой размер (более 256 байтов), и их локализация (имеется ввиду самих кодов подпрограмм) вместо строк (3) и (6) может привести к ошибкам программы в строках (2), (4) и (5), содержащих ближний как условный (строки (2), (5)), так и безусловный (строка (4)) переходы.

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

Среда разработки и отладки программ для ядра 8051. В создании и отладке программ для микроконтроллерного ядра 8051 применяется среда Proview. Среда включает в себя интерфейс пользователя стандартного типа Windows, редактор кода, компилятор (интерпретатор) программ, отладчик и систему справочной информации (help). То есть среда Proview  содержит все необходимые инструменты для создания, редактирования, компиляции и отладки программ для ядра 8051 (рис. 3).

В создании файла программы для ядра 8051 в среде Proview выделяются следующие шаги:

  1.  С помощью пунктов меню FileNewAssembler Files создаётся новый файл. При этом на экране появляется чистое окно ввода и редактирования кода программы.
  2.  Посредством клавиатуры вводится код программы.
  3.  Посредством пунктов меню FileSave As файл с введённой программой сохраняется на жестком диске. При этом, в появившейся диалоговой панели сохранения в строке «Тип файла» устанавливается запись «Assembler Files», затем выбирается папка на жестком диске, в которой будет сохранён данный файл, вводится его имя, и подтверждается сохранение. Для ассемблерного файла типа «Assembler Files» автоматически устанавливается расширение «а51».

Рис. 3. Общий вид пользовательского интерфейса среды Proview в режиме отладки

  1.  Отладка программы производится как в режиме симуляции, так и в реальном масштабе времени, предварительно загрузив программу в стенд-контроллер. Компиляция программы и одновременный переход в режим отладки осуществляется с помощью команды меню DebugStart или посредством комбинации клавиш Ctrl + D. При наличии в программе синтаксических ошибок компилятор выдаст соответствующую информацию в окне Message с указанием строк с обнаруженными ошибками и их типов. Двойное нажатие левой клавиши мыши на указанной ошибке в окне Message производит переход к той строке в программе, где данная ошибка обнаружена. После окончательного исправления ошибок, сохранения файла (FileSave или посредством комбинации клавиш Ctrl + S) и компиляции, программа запускается в режиме отладки, переход в который осуществляется с помощью комбинации клавиш Ctrl + D. При этом, если установлен флажок Intel Hex в группе Misc. диалоговой панели опций компоновщика (Linker Options), вызываемой путём выбора пунктов OptionsLink главного меню, генерируется одноимённый файл машинных кодов с расширением «hex», предназначенный для непосредственной загрузки в микроконтроллер.

Отладчик среды Proview наделён полным стандартным набором инструментов для пошаговой и комбинированной отладки программ. К инструментарию отладчика относятся (см. на рис. 3):

  •  пошаговая отладка посредством клавиши F8 или с помощью пункта DebugStep over главного меню. При этом, место выполняемой команды обозначается строчным курсором синего цвета;
  •  отладка с применением точек прерывания, устанавливаемых клавишей F5 или выбором последовательности DebugToggle breakpoint главного меню. При этом, сами точки прерывания обозначаются строчным курсором красного цвета;
  •  слежение за изменением основных битовых и байтовых переменных ОЗУ, интересующих ячеек памяти, регистров, машинного кода программы с помощью соответствующих окон Bit, Data, Watch, Main Registers, Code, подключаемых путём выбора подпунктов Data dumpBit View, Data dumpData View, Watch, Main registers, Code пункта View главного меню.

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

Методика анализа незнакомых команд состоит в следующем:

  •  определении типа команды и контекста, в котором команда может встречаться;
  •  определении типов операндов, с которыми команда связана: аккумулятор, РОН, бит, константа, адрес.
  •  по мере возможности, в предварительной инициализации объектов-операндов путём записи в них постоянных величин, т.к. согласно множеству команд ядра 8051 константу можно заносить в любую ячейку памяти: аккумулятор, РОН, бит, ячейку ОЗУ;
  •  слежении в пошаговом режиме за изменениями объектов-операндов с помощью окон Bit, Data, Watch, Main Registers.

Для установки относительного смещения в командах переходов необходимо придерживаться следующей методики.

  1.  Определиться с местом назначения перехода.
  2.  Поставить в этом месте временную метку, например Metka.
  3.  Посчитать сумму длин всех команд от места источника до места назначения согласно правилу: «Безоперандовая команда или команда, оперирующая с аккумулятором, РОН или битом С, занимает один байт. Наличие в команде константы или адреса ячейки ОЗУ (бита или байта) увеличивает её размер ещё на один байт. Присутствие относительного адреса – ещё на один байт. Команды с абсолютными адресами имеют размер три байта».
  4.  Если какая-либо команда оказалась незнакомой, её смысл можно либо определить из справочной системы, вход в которую осуществляется посредством клавиши «F1» или пункта HelpIndex главного меню, либо оценить её размер в два байта.
  5.  Проверить правильность установки относительного смещения путём:
  •  входа в отладочный режим (Ctrl + D);
  •  автоматического поиска в окне исходного кода программы ранее определённой метки «Metka» (Ctrl + F);
  •  поиска места источника перехода;
  •  перехода в окно «Code» кода программы;
  •  автоматического поиска метки «Metka» в окне «Code» кода посредством нажатия на правую клавишу мыши в окне «Code» кода, выбора пункта «Search symbol» всплывшего меню и ввода имени «Metka» метки;
  •  поиска места источника перехода в окне «Code» кода;
  •  подтверждения в наличии в строке источника перехода ссылки на метку «Metka». Если в строке источника перехода отсутствует конкретная запись – имя «Metka», то вместо неё присутствует адрес строки перехода, что означает неверное относительное смещение в строке назначения перехода. В этом случае необходимо произвести коррекцию текущего смещения путём добавления к нему разности адресов, где фактически установлена метка «Metka», и адреса ссылки в строке назначения перехода (см. рис. 3, окно «Code», где команда с адресом 00D3 производит фактический переход не на строку с меткой «Metka1» и адресом 00DB, а на строку с адресом 00DA).

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

Отличительной особенностью в представлении знаковых и беззнаковых целых чисел является их интерпретация внутреннего представления. В знаковых числах значение старшего бита определяет знак: 0 – знак «+», 1 – знак «–», остальные биты – непосредственно число в дополнительном коде. Например, двоичный восьмиразрядный вид 10101100b в безнаковом представлении соответствует числу 172, а в знаковом – числу  –84, т.к. в знаковой интерпретации старший единичный бит определяет отрицательное число, а оставшиеся биты – само число в дополнительном коде, перевод из которого в основной код осуществляется по следующему правилу: двоичный код поразрядно инвертируется и добавляется единица, т.е. число 10101100b поразрядно инвертируется, в результате чего получается число 01010011b, и добавляется единица (01010011b + 1 = 01010100b = 84). Следует обратить внимание на то, что 84 = 28 – 172, т.е. число дополнительного кода как бы дополняет «основное число» к максимально представимому целому числу для данной разрядности, равной восьми.


Лабораторная работа № 1

Импульсное управление исполнительными устройствами

Цель работы – изучение архитектуры цифровых систем автоматики и принципов импульсного управления исполнительными устройствами

Количество часов аудиторных занятий – 4.

Рекомендации: для выполнения данной лабораторной работы пользуйтесь также литературой [1 – 5].

Теоретические сведения

Базовая архитектура современных систем автоматики воплощена в изображённом на рис. 4 стенде на основе микроконтроллера ADμC812 с процессорным ядром 8051.

Рис. 4. Стенд-контроллер


Рис. 5. Принципиальная схема стенда


Принципиальная схема стенда представлена на рис. 5. Кроме микроконтроллера DD1, в стенд входят: двухразрядный дешифратор DD2, восьмиразрядные регистры DD3 – DD6, датчики влажности DT1 и давления DT2, инфракрасный приёмник IR1 сигналов пульта дистанционного управления, миниатюрные реле K1 – K8, дисплей LCD.

Дешифратор, регистры, реле и дисплей образуют множество исполнительных устройств. Управление ими производится двоичным кодом на основе транзисторно-транзисторной логики, в которой логическому нулю сопоставляется уровень напряжения примерно от 0 до 2,0 В, а логической единице – от 2,5 до 5 В.

Дешифратор выполнен на микросхеме K1533ИД14 (зарубежный аналог 74HС139), выполняющей функцию демультиплексирования с 1 на 4. Множество состояний дешифратора приведено в таблице 1. Микросхема имеет два адресных входа A0 и A1, которые служат для управления выходными состояниями дешифратора. В дешифраторе имеется отдельный информационный вход E, сигнал которого в зависимости от состояния адресных входов A0 и A1 «коммутируется» с одним из выходов Y0 – Y3.

Таблица 1. Состояния дешифратора К1533ИД14

Микросхема К1533ИР37 (зарубежный аналог 74HC574) представляет собой восьмиразрядный буферный регистр с тремя состояниями на выходе и импульсным управлением. Вход Е – прямой динамический, переключение положительным перепадом (фронтом) тактового импульса. Регистр имеет восемь входов данных D0..D7 и восемь выходов Q0..Q7. Выходные буферные элементы могут иметь Z-состояние, если на специальный вывод /ОЕ разрешения выхода  подать высокий уровень напряжения. Когда на вывод /ОЕ подано напряжение низкого уровня, то после поступления положительного перепада тактового импульса на вывод Е данные со входов Dn регистра  поступают на его выходы Qn, n = 0,…,7.

Таблица 2. Состояния регистра К1533ИР37

Реле TQ2-5V или AZ850-5V – миниатюрное герконовое реле размерами примерно 8 мм х 10 мм с двумя переключательными контактами (рис. 6), номинальным управляющим напряжением катушки 5 В и коммутируемой мощностью 30Вт.

Дисплей жидкокристаллического символьного модуля BC1602

Рис. 6. Расположение катушки и переключательных контактов в герконовом реле TQ2-5V

разделён на две строки по 16 символов в каждой. Управление дисплеем осуществляется посредством параллельного интерфейса, включающего две группы шин: 8-разрядную шину D0 – D7 данных или команд и 3-разрядную шину RS, R/W (Read/Write), E управления.

Выводы R/W (или RL0_R/W) и RS (или RL1_RS) дисплея подключены соответственно к выходам Q0 и Q1 регистра DD5 (W1). Вывод Е синхронизации записи команд и данных в модуль дисплея подключен к выходу Q3 регистра DD3 (W0). Состояние линии R/W (или RL0_R/W) определяет направление передачи данных: 0 – от микроконтроллера к дисплею, 1 – от дисплея к микроконтроллеру (в этом случае имеется возможность чтения содержимого дисплея, т.е. множества отображаемых на текущий момент символов). Линия RS (или RL1_RS) определяет тип информации на шине данных дисплея: 0 означает интерпретацию данных на шине дисплея как код команды управления дисплеем; 1 – как код отображаемого на дисплее символа.

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

Режим инициализации, алгоритм которого представлен на рис. 7, стандартизирован и предназначен для настройки интерфейса дисплейного модуля и параметров последующего отображения символов. На каждом алгоритмическом шаге после передачи команды от микроконтроллера на шину данных дисплея через регистр DD4 и установки управляющих битов RS и R/W посредством регистра DD5 необходимо подать импульс синхронизации, т.е. логическую последовательность 0→1→0 на вывод Е регистра DD3, после чего данные со входа дисплейного модуля поступают на декодирование и выполнение.

В качестве параметров алгоритма инициализации выступают: * – произвольное значение бита, DL = 1 – 8-битный интерфейс, N = 1 – две активные строки дисплея, F = 0 – символьная матрица 5 х 7 пикселей,

D – разрешение вывода информации на дисплей (0 – вывод запрещен, 1 – разрешён), С – наличие курсора (0 – курсор выключен, 1 – включен), В – мерцание курсора (0 – мерцание  выключено, 1 – включено), I/D – направление смещения курсора (0 – влево (декремент), 1 – вправо), S – сдвиг видимого поля на дисплее (0 – сдвига нет, 1 – сдвиг выполняется), S/C – объект смещения (0 – смещается курсор,  1 – видимое поле), R/L – направление смещения видимого поля (0 – влево, 1 – вправо).

После инициализации дисплейного модуля на его входы подаются команды отображения информации в символьном виде. При этом, сначала сигнал на линии RS сбрасывается в низкий уровень (логический нуль), а в шине данных указывается координата отображения символа: (80h + номер_ячейки_в_верхней_строке) для верхней строки, (0С0h + номер_ячейки_в_нижней_строке) – для нижней.

Рис. 7. Алгоритм инициализации символьного дисплейного модуля

Затем сигнал в линии RS устанавливается в единицу, а в шину данных посылается табличный код самого символа, согласно таблицы 3. Последовательность команд поступает на дисплейный модуль с задержкой примерно в 100 мкс. Во время отображения символьной информации на дисплее можно производить смену настроек дисплея (RS = 0), например отключение курсора в соответствии с приведёнными на рис. 7 командами, входящими в процесс инициализации.

Таблица 3. Табличные коды символов дисплея

00

10

20

30

40

50

60

70

80

90

A0

B0

C0

D0

E0

F0

0

0

@

P

`

p

Б

Ю

ч

Д

¼

1

!

1

A

Q

a

q

Г

Я

ш

Ц

2

"

2

B

R

b

r

Ё

б

ъ

Щ

½

3

#

3

C

S

c

s

Ж

в

ы

д

¾

4

$

4

D

T

d

t

З

г

ь

ф

5

%

5

E

U

e

u

И

ё

э

ц

6

&

6

F

V

f

v

Й

ж

ю

щ

7

'

7

G

W

g

w

Л

з

я

I

´

8

(

8

H

X

h

x

П

и

«

II

9

)

9

I

Y

i

y

У

й

»

˜

A

*

:

J

Z

j

z

Ф

к

B

+

;

K

[

k

10

Ч

л

|←

C

,

<

L

ф

l

12

Ш

м

|

D

-

=

M

]

m

15

Ъ

н

¿

|→׀

E

.

>

N

^

n

Ы

п

F

/

?

O

_

o

Э

т

£

Таким образом, для того, чтобы передать на дисплей информацию размером 1 байт, необходимо проделать шаги, представленные в таблице 4.

К каждой линии шин данных и управления, т.е. к выходам регистров DD3, DD4 и DD5 подключены индикаторные светодиоды, основное назначение которых – отладка программ управления. С точки зрения автоматики светодиоды тоже являются исполнительными устройствами. Интенсивность излучения светодиода зависит от режима управления им. Существует два режима управления светодиодом: статический и динамический.

Таблица 4. Последовательность передачи информации на дисплей

Передача команды управления на дисплей

Передача кода символа для отображения на дисплее

1.

RL0_RW = 0

2.

Передать на вывод RL1_RS шины управления логический нуль

Передать на вывод RL1_RS шины управления логическую единицу

3.

Передать на выводы шины данных дисплея (D0…D7) код команды управления

Передать на выводы шины данных дисплея (D0…D7) код отображаемого символа

4.

Передать на вывод Е шины управления дисплея импульс синхронизации – логическую последовательность «0 → 1 → 

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

В основе динамического режима управления лежит широтно-импульсная модуляция (ШИМ), заключающаяся в подаче на светодиод последовательности управляющих импульсов с частотой, превышающей частоту 15÷20 Гц пороговой чувствительности человеческого глаза.

Интенсивность излучения – это энергетический параметр. Средняя энергия Е в импульсе длительностью tи и амплитудой А равна

,

где T – период следования импульсов,  – скважность импульсной последовательности (определяется как отношение периода следования импульсов к их длительности). Принимая во внимание постоянство амплитуды во время ШИМ, можно сделать вывод о том, что управление интенсивностью излучения в импульсных и цифровых устройствах производится посредством варьирования скважности импульсной последовательности, подаваемой на излучатель. Чем больше скважность, тем ниже интенсивность излучения светодиода.

Дисплей, светодиодная линейка и реле образуют выходной интерфейс стенда, т.е. множество оптико-электронных связей с внешними для стенда системами, в том числе и человеком. Управление выходными интерфейсными устройствами стенда производится посредством регистров DD3 – DD6. Входы D0 – D7 регистров DD3 – DD5 параллельно подключены к соответствующим выходным линиям P0.0 – P0.7 порта Р0 микроконтроллера DD1. Избирательность процесса записи данных из аккумулятора в один из регистров DD3 – DD5 по шине Р0 осуществляется с помощью дешифратора DD2, выполняющего функцию коммутатора сигнала /WR записи (иначе он называется сигналом синхронизации) микроконтроллера DD1 на регистр, определённый сочетанием состояний адресных линий A1, A0. Пара (А1, А0) задаёт следующие регистры: (0,0) – DD3, (0,1) – DD5, (1,0) – DD4. Таким образом, для передачи данных от микроконтроллера к регистру по параллельной шине P0 в данном стенде необходимо:

  •  установить состояния адресных линий (А1, А0) командами setb или clr;
  •  записать данные в аккумулятор с помощью команды mov;
  •  вывести данные из аккумулятора в порт Р0 посредством команды movx @Ri,A (i = 0, 1).

Порт Р0 микроконтроллера является динамическим. В исходный момент его линии находятся в т.н. Z-состоянии, т.е. в неопределённом состоянии, при котором напряжение (примерно от 2,0 до 2,5 В) на отдельной линии не соответствует ни логическому нулю, ни логической единице. Запись данных в порт Р0 осуществляется командой movx @Ri,A. При этом, сначала данные из аккумулятора устанавливаются на линиях порта Р0, а затем генерируется сигнал /WR записи.

Процесс записи данных из аккумулятора в регистр через порт Р0 иллюстрирован на рис. 8. В данном примере в аккумуляторе находится число 80h или 10000000b.

  

(а) (б)

(в) (г)

Рис. 8. Последовательность действий микроконтроллера при выполнении команды movx:

(а) – установка в порту Р0 значения из аккумулятора;

(б) – формирование импульса записи /WR данных из порта Р0 в регистр;

(в) – переход порта Р0 в Z-состояние;

(г) – временная диаграмма состояний линий порта Р0 и /WR микроконтроллера.

Управление реле осуществляется путём выставления данных, соответствующих срабатыванию (замыканию или размыканию) конкретного реле, на выходе регистра DD5 и последующей синхронизации посредством логических переходов 1→0→1 (или 0→1→0) на линии Q7 регистра DD3 (W0).

В генерации временных диаграмм на уровне ШИМ при управлении исполнительными устройствами принимают непосредственное участие таймеры микроконтроллера, формирующие определённые задержки.

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

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

В архитектуру микроконтроллера ADμC812, функциональная блок-схема которого изображена на рис. 9, входят три 16-битных таймера/счётчика, обозначаемые как Timer0, Timer1, Timer2.

Рис. 9. Функциональная блок-схема микроконтроллера ADμC812

Для работы с таймерами используются следующие РСФ: TMOD, TCON, T2CON, а также пара (THx,TLx), x = 0, 1, 2.

Регистр TMOD (Timers0,1 MODe) определяет режимы работы таймеров 0 и 1. Его адрес в ОЗУ микроконтроллера равен 89h. TCON (Timers 0, 1 CONtrol) управляет работой таймеров 0 и 1. Содержит биты запуска или останова таймеров, разрешения или запрета их прерываний и др. Адрес регистра TCON 88h.

T2CON (Timer2 CONtrol) управляет работой 16-разрядного таймера 2. Его адрес С8h.

(TH0,TL0), (TH1,TL1), (TH2,TL2) – это пары 8-разрядных регистров счёта. Их адреса соответственно равны (8Ch,8Ah), (8Dh,8Bh), (CDh,CCh). Приведённые пары составляют 16-разрядные регистры таймеров Timer0, Timer1, Timer2 соответственно. Они подсчитывают количество тактов микроконтроллера.

Структура регистра TCON:

  •  7 (самый старший бит) – TF1 – бит-индикатор (флаг) переполнения таймера 1; устанавливается и сбрасывается аппаратно; бит TF1 устанавливается в момент переполнения таймера 1, сброс TF1 происходит при входе в процедуру обработки прерывания таймера 1;
  •  6 – TR1 – запуск (включение) таймера 1 из программы;
  •  5 – TF0 – флаг переполнения таймера 0; устанавливается и сбрасывается аппаратно по аналогии с битом TF1;
  •  4 – TR0 – программный запуск таймера 0;
  •  3 – IE1 – флаг внешнего прерывания /INT1 – линии Р3.3 на рис. 9; управляется аппаратно; флаг устанавливается в момент перехода логического уровня на выводе /INT1 1→0 либо при нулевом логическом уровне на выводе /INT1 в зависимости от бита IT1; сбрасывается при входе в процедуру обработки прерывания логического события на выводе /INT1;
  •  2 – IT1 – программно устанавливаемый переключатель режима внешнего прерывания /INT1: принимает значение 1 для детектирования логического перехода 1→0 на выводе /INT1 и 0 – для детектирования логического нуля на выводе /INT1;
  •  1 – IE0 – флаг внешнего прерывания /INT0; управляется аппаратно аналогично IE1;
  •  0 – IT0 – переключатель режима внешнего прерывания /INT0; функциональное назначение аналогично биту 2 (IT1)

Структура старшей тетрады регистра TMOD:

  •  7 (самый старший бит) – Gate – бит внешнего разрешения счёта таймера 1; бит управляется программно для включения (либо отключения) функции счёта таймера 1 при высоком уровне на выводе /INT1 и установленном бите TR1 регистра TCON
  •  6 – C/T – бит выбора внутренней (1) или внешней (0) синхронизации счёта таймера 1; управляется программно, внешний вывод синхронизации обозначается T1 (вывод 23)
  •  5 – M1 5-й и 4-й биты определяют режим
  •  4 – M0 работы таймера 1
  •  M1 M0
  •  0 0 13-битный режим: TH1 работает как 8-битный счётчик, а в TL1 при этом используются только 5 битов
  •  0 1 16-битный режим: TH1 – старший байт, TL1 – младший
  •  1 0 8-битный перезагружаемый режим с активным регистром TH1; при этом в регистре TH1 хранится начальное значение, записываемое в регистр TL1 после его переполнения
  •  1 1 8-разрядный режим с остановкой счёта после переполнения таймера
  •  3 – Gate – бит внешнего разрешения счёта таймера 0; данный бит аналогичен биту 7 для таймера 1
  •  2 – C/T – бит выбора внутренней (1) или внешней (0) синхронизации счёта таймера 0; управляется программно, внешний вывод синхронизации обозначается T0 (вывод 22)
  •  1 – M1 режим
  •  0 – M0 работы таймера 0
  •  M1 M0
  •  0 0 13-битный режим: TH0 работает как 8-битный счётчик, а в TL0 при этом используются только 5 битов;
  •  0 1 16-битный режим: TH0 – старший байт, TL0 – младший;
  •  1 0 8-битный перезагружаемый режим с активным  регистром TH0; при этом в регистре TH0 хранится  начальное значение, записываемое в регистр TL0 после его переполнения;
  •  1 1 режим с двумя независимыми 8-разрядными таймерами TL0, TH0.

ADμC812 обеспечивает обработку девяти источников прерываний, перечисленных в таблице 5. Основными объектами, участвующими в обработке прерываний, являются: векторы и процедуры обработки прерываний, стек.

Таблица 5. Источники прерываний микроконтроллера ADμC812

Прерывание

Наименование источника прерывания

Адрес вектора

Уровень приоритета

PSM1

Монитор источника питания

43H

1

IE0

Внешнее прерывание INT0/

03H

2

ADCI

Конец преобразования АЦП

33H

3

TF0

Переполнение таймера 0

0BH

4

IE1

Внешнее прерывание INT1/

13H

5

TF1

Переполнение таймера 1

1BH

6

I2CI/ISPI

Прерывание синхронного последовательного интерфейса I2C

3BH

7

RI/TI

Прерывание асинхронного последовательного интерфейса UART

23H

8

TF2/EXF2

Прерывание от таймера 2

2BH

9

Вектор прерывания – это адрес 8-байтной области в памяти программ, расположенной в её начале, куда записывается адрес соответствующей процедуры обработки прерывания. Каждому устройству, входящему в архитектуру микроконтроллера, сопоставляется собственный фиксированный вектор прерывания, представленный в таблице 5. При обработке прерывания микроконтроллер обращается к соответствующему вектору, считывает в нём адрес процедуры обработки прерывания и выполняет её. Организация прерываний в тексте программы производится с помощью директивы org.

Принцип обработки прерывания графически отражён на рис. 10.

Рис. 10. Граф-схема процесса обработки прерывания

Биты разрешения/запрета прерываний находятся в регистре IE (Interrupt Enable):

  •  7 EA – включение (1) или отключение (0) обработки всех прерываний;
  •  6 EADC – разрешение/запрет прерывания АЦП;
  •  5 ET2 – разрешение/запрет прерывания таймера 2;
  •  4 ES – разрешение/запрет прерывания последовательного порта;
  •  3 ET1 – разрешение/запрет прерывания таймера 1;
  •  2 EX1 – разрешение/запрет внешнего прерывания /INT1;
  •  1 ET0 – разрешение/запрет прерывания таймера 0;
  •  0 EX0 – разрешение/запрет внешнего прерывания /INT0.

В реальных задачах автоматики прерывание часто инициируется либо объектом управления, либо возмущающими воздействиями, и программисту неизвестно в какой именно момент произойдёт запрос конкретного прерывания. Для корректной его обработки важное содержимое основных регистров (аккумулятора и РОН) необходимо сохранить в отдельной области памяти, для чего предназначен стек.

Стек – это динамическая структура (участок памяти с переменной длиной в зависимости от выполняемого блока программы), функционирующая по принципу LIFO (Last Input First Output), что в буквальном смысле означает «последний пришёл, первый ушёл». Основные достоинства стека проявляются именно в процессе обработки прерываний. Программист самостоятельно выделяет под стек определённый участок памяти ОЗУ с началом, хранящемся в регистре SP (адрес 81h), например, mov SP,#26h. Размер стека как участка памяти зависит от задачи, решаемой устройством автоматики. Запись (точнее, заталкивание) данных в стек производится с помощью команды push, выталкивание – посредством pop. После заталкивания данного в стек значение SP его указателя автоматически увеличивается на 1, во время выталкивания – автоматически уменьшается на единицу.

Наиболее часто сохраняемые в стеке регистры – это аккумулятор А и регистр PSW состояния программы (Program State Word). В регистре PSW хранятся признаки (флаги) операций, формируемые в ходе выполнения команд. В  таблице 6 приводится их перечень, даются символические имена и описываются условия их формирования.

Таблица 6. Формат регистра PSW

Признак

Разряд

Имя бита и назначение

C

PSW.7

Флаг  переноса. Устанавливается и сбрасывается  аппаратно  или  программно  при  выполнении  арифметических  и  логических операций

AC

PSW.6

Флаг вспомогательного  переноса. Устанавливается  и  сбрасывается  только  аппаратно при  выполнении  команд  сложения  или  вычитания и сигнализирует о переносе или займе в бите 3 аккумулятора

F0

PSW.5

Флаг, который может быть использован на усмотрение программиста

RS1

PSW.4

Выбор банка регистров в соответствие с таблицей 7. Биты устанавливаются и сбрасываются программно для выбора рабочего банка регистров общего назначения

RS0

PSW.3

OV

PSW.2

Флаг  переполнения.  Устанавливается  и сбрасывается  аппаратно  при  выполнении арифметических операций

PSW.1

Не используется

P

PSW.0

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

Наиболее «активным» флагом PSW является флаг С переноса, который принимает участие и модифицируется в процессе выполнения множества операций, включая сложение, вычитание и сдвиг. Кроме того, флаг переноса (C) выполняет функции «булева аккумулятора» в логических командах, манипулирующих битами.

Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со  знаком и делает возможным использование арифметики в дополнительных кодах.

Таблица 7. Диапазон адресов и выбор рабочего банка РОН

RS1

RS0

Банк

Границы адресов

0

0

0

00h – 07h

0

1

1

08h – 0Fh

1

0

2

10h – 17h

1

1

3

18h – 1Fh

Микроконтроллер не управляет флагами (RS1, RS0) селекции банка регистров. Их значения  полностью  определяются  прикладной программой, т.е. программистом и используются для выбора одного из четырёх регистровых банков. При обработке прерывания рекомендуется сначала сохранить в стеке текущее значение регистра PSW, а затем сменить регистровый банк, сохраняя таким образом все восемь текущих значений РОН R0 ÷ R7. По окончании выполнения процедуры обработки прерывания исходные значения основных регистров необходимо восстановить с помощью команды pop, но в порядке, обратном заталкиванию (рис. 10).

Примеры программ управления

К работе прилагаются тексты следующих программ:

  •  Пример 1. Программа управления светодиодами регистра DD4 или DD5. В программе в соответствии с принципиальной схемой стенда (см. рис. 8) сначала определяются имена _OE, A0, A1 линий P2.4 (А12-А20), P2.6 (А14-А22), P2.7 (А15-А23) микроконтроллера, управляющих регистрами (сигнал _OE – сигнал активации регистров; символ «_» или «/» в обозначении сигнала означает, что логическим уровнем активации является нуль) и дешифратором. Затем выбирается регистр DD4 для записи в него значения 01h с целью последующего включения соответствующего светодиода. После этого командой movx производится непосредственное включение требуемого светодиода.
  •  Пример 2. Программа формирования циклической задержки. Программа демонстрирует эффект бегущего огня. Скорость перемещения огня регулируется задержкой, сформированной вложенным циклом, вынесенным в отдельную процедуру Delay. В этом цикле три вложения. Строка «djnz R7, $» является внутренним циклом. Его действие состоит в следующем: исходное значение регистра R7 равно 0; с каждым шагом значение регистра R7 уменьшается на 1 (декрементируется) до тех пор, пока оно снова не обнулится, причём операция сравнения значения регистра R7 с нулём производится после его декремента. В 8-разрядных системах вычитание от нуля единицы даёт в результате 0FFh (или -1 в знаковом эквиваленте). В промежуточном цикле «djnz R6, $-2» уменьшается на единицу значение регистра R6, после чего полностью выполняется внутренний цикл «djnz R7, $», затем снова декрементируется значение R6, выполняется внутренний цикл и.д. Это происходит 256 раз, т.к. исходное значение регистра R6 равно нулю. Внешний цикл производит повторение двух внутренних вложенных циклов 2 раза, т.к. исходное значение регистра R5 равно двум. После выполнения цикла задержки значение аккумулятора сдвигается на один разряд влево и подаётся в регистр DD4, зажигая очередной светодиод. Недостатком такого способа формирования задержки является «зависание» микроконтроллера в цикле задержки, и в случае многопоточной программы (а в данном примере работает только один поток «бегущего огня») это чревато приостановкой всех рабочих потоков.
  •  Пример 3. Программа формирования задержки по прерыванию таймера. Эта программа тоже демонстрирует эффект бегущего огня, скорость которого регулируется настройкой таймера Timer0, приведённой в строке «mov TMOD,#00100001b». В данной программе таймер Timer0 работает в 16-разрядном режиме и переполняется каждые 216/(11059200/12)) = 65536/(11059200/12) = 71.1 мс, где число (11059200/12) определяет тактовую частоту микроконтроллера (на схеме рис. 8 задающий кварцевый элемент Q1 имеет частоту 11.0592 МГц). По каждому переполнению таймера Timer0 генерируется запрос на прерывание. В программе организована обработка прерывания Timer0 посредством строк «org 000Bh jmp _Timer0», при этом _Timer0 – имя процедуры обработки прерывания, также определённая в программе за основным блоком. В процедуре _Timer0 происходит сдвиг содержимого аккумулятора на один разряд влево и подача результата на выходную шину регистра DD4. В-общем, для работы с прерыванием необходимо:
    •  Настроить режим работы объекта, генерирующего прерывание. В данном случае – это таймер Timer0, работающий в 16-разрядном режиме, о чём свидетельствует строка «mov TMOD,#00100001b», где младшая тетрада отвечает за настройки таймера 0.
    •  Разрешить прерывание целевого объекта. в нашем случае это производится с помощью командной строки «setb ET0» (ET0 – это бит регистра IE).
    •  С помощью строки «setb EA» (EA – это бит регистра IE) включить все разрешённые прерывания.
    •  Организовать обработку прерывания с помощью директивы org и непосредственной процедуры прерывания.
  •  Пример 4. Программа управления реле. Программа демонстрирует управление реле, контакты которого периодически переключаются. Период срабатывания реле задаётся как режимом работы таймера Timer0, так и константой OneSecTimer, и равен  (OneSecTimer*216/(11059200/12)) = (14*65536/(11059200/12)) = 14*71.1 мс ≈   ≈ 1 с, где (11059200/12) – тактовая частота микроконтроллера (на схеме рис. 8 задающий кварц Q1 имеет частоту 11.0592 МГц). Если через контакты реле запитать двигатель (асинхронный или постоянного тока), а в программе ввести не одну константу OneSecTimer, а две, одна из которых будет отвечать за время подачи питания на двигатель, а другая – за время его прерывания, то появляется возможность регулирования частоты вращения вала двигателя путём кратковременной подачи питания для неполного разгона и его прерывания для неполной остановки, причём, в связи с тем, что время разгона меньше времени остановки, значение константы, отвечающей за подачу питания, должно быть меньше константы, отвечающей за его прекращение.
  •  Пример 5. Программа управления жидкокристаллическим символьным дисплеем. Программа отображает на дисплее фразу «Основы автоматики», причём слово «Основы» пишется в верхней строке, «автоматики» – в нижней. В программе реализован алгоритм инициализации дисплейного модуля в соответствии с рис. 10. Выводимая на дисплей информация записана в таблице DataTable, располагающейся во Flash-памяти программ. В таблице DataTable первому байту сопоставляется образ символа в левом верхнем углу дисплея, а затем – символов, следующих в последовательности слева направо, сверху вниз. Коды символов взяты из таблицы 3; код 20h означает символ ' ' пробела. Длина таблицы DataTable равна 32 байтам, что соответствует общему количеству символов, отображаемых на дисплее. Обращение к таблице DataTable производится с помощью регистра-указателя данных DPTR командой movc. Двухбайтный регистр-указатель данных DPTR обычно  используется для фиксации 16-битного адреса в операциях обращения как к внешней памяти данных, так и к ячейкам памяти программ. Командами микроконтроллера  регистр-указатель данных может быть использован или как 16-битный регистр, или как два независимых 8-битных регистра (DPH и DPL). Для анализа работы программы рекомендуется убрать комментарии в строках с вызовом процедуры DemoDelay задержки для демонстрации подаваемых на дисплейный модуль команд.

После компиляции программы в среде Proview формируется соответствующий hex-файл машинных кодов, которые посредством одного из загрузчиков cLoad, ComLoad или uLoad записываются во Flash-память программ микроконтроллера. Основными функциями программ-загрузчиков являются: чтение требуемого hex-файла, тестирование состояния контроллера и непосредственная запись программы в его память.

Вопросы для самоподготовки

  1.  Функциональная схема стенда
  2.  Функциональная схема микроконтроллера ADμC812
  3.  Функционирование регистра К1533ИР37
  4.  Функционирование дешифратора К1533ИД14
  5.  Строение и принцип действия герконовых реле
  6.  Параметры и алгоритм инициализации символьного дисплейного модуля
  7.  Последовательность действий для отображения символов на символьном ЖКД модуле
  8.  Принцип ШИМ
  9.  Действие команды «movx @R0,A» на физическом (сигнальном) уровне
  10.  Методика организации и обработки прерывания


Задания к лабораторной работе № 1

  1.  Напишите программу, реализующую последовательное перемещение светящегося огня в линейке светодиодов на выходе регистра DD4 сначала слева направо, а затем наоборот – справа налево.
  2.  Составьте программу мигания произвольного светодиода на выходе  регистра DD4.
  3.  Напишите программу управления интенсивностью излучения произвольного светодиода регистра DD4. Для этого настройте три таймера, один из которых определяет период T зажигания светодиода (например, T = 5 мс), другой – длительность его горения (от 0 до T), третий – период изменения длительности свечения (например, 71.1 мс).
  4.  Отобразите на дисплее собственные фамилию, имя, отчество, номер группы.
  5.  Отобразите на дисплее шестнадцатиразрядное число, расположенное в ячейках с адресами 30h (старший байт), 31h (младший байт). Число представьте в шестнадцатеричной системе счисления.
  6.  Запрограммируйте однобайтный счётчик с периодом счёта примерно 500 мс. Результат отобразите на дисплее в шестнадцатеричной и десятичной системах счисления.
  7.  Сымитируйте массив двухбайтных чисел из восьми элементов и напишите цикл их отображения на дисплее в шестнадцатеричном виде.
  8.  К одному из реле подключен двигатель постоянного тока. Путём перебора битов в регистре DD6 (т.е. вариацией константы #20h в команде «xrl DD6_Value,#20h» примера 4) определите, к какому именно реле подключен двигатель, и путём периодического замыкания/размыкания релейных контактов поддержите его промежуточную частоту вращения.

Содержание отчёта

  1.  Алгоритмы, граф-схемы и тексты программ управления

Контрольные вопросы

  1.  ШИМ в управлении излучателями
  2.  Управление реле
  3.  Управление таймерами в формировании временных задержек


Лабораторная работа № 2

Цифровая обработка сигналов датчиков

систем автоматики

Цель работы – изучение типовых алгоритмов обработки сигналов датчиков в системах управления

Количество часов аудиторных занятий – 4.

Рекомендации: для выполнения данной лабораторной работы пользуйтесь также литературой [1 – 9].

Теоретические сведения

Лабораторный стенд управления содержит два датчика: относительной влажности DT1 HIH-4000 Honeywell и давления DT2 MPX4115A Motorola.

Принцип действия датчика относительной влажности – ёмкостной, основанный на измерении реактивного сопротивления R = 1/(ωC) на частоте ω встроенного в датчик генератора. Конструктивно датчик выполнен в виде плоскопараллельного конденсатора с площадями обкладок в несколько мм2, расположенных на расстоянии в несколько десятков микрометров. Ёмкость датчика С = εε0S/d прямо пропорциональна диэлектрической проницаемости ε, зависящей от относительной влажности RH окружающей среды. Следовательно, зависимость измеряемой относительной влажности RH окружающей среды от реактивного сопротивления R обратно пропорциональная: RH = kd/ε0R, где k – коэффициент пропорциональности.

Внешний вид датчика представлен на рис. 11, а его структура отражена на рис. 12. В структуре датчика выпрямитель предназначен для преобразования переменного напряжения на ёмкости в постоянное выходное. Датчик имеет три вывода: два вывода питания и один – выходного напряжения.

Рис. 11. Внешний вид датчика относительной влажности

Рис. 12. Структура датчика относительной влажности

Ёмкость датчика варьируется в пределах нескольких единиц – десятка пФ, его реактивное сопротивление на частоте в несколько десятков МГц измеряется сотнями кОм или единицами Мом.

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

Основные параметры датчика:

  •  тип аналоговый;
  •  питание Vsupply 4.0 ÷ 5.8 В (стандарт 5 В);
  •  диапазон измеряемых значений относительной влажности 0,…,100%;
  •  выходное напряжение                              Vout = Vsupply·(0.0062·RH + 0.16);
  •  потребляемый ток 500 мкА;
  •  точность 3,5 % при аппроксимации прямой, 2,5 % при аппроксимации квадратичной параболой;

Рис. 13. Зависимость выходного напряжения от относительной влажности

  •  стабильность 1,2 % в год;
  •  время измерения влажности 70 мс;
  •  рабочий температурный диапазон –40ºС,…,+85ºС.

Рис. 14. Рабочий температурный диапазон датчика HIH-4000 относительной влажности

Принцип действия датчика давления MPX4115 – тензометрический на основе прямого пьезоэффекта, заключающегося в появлении разности потенциалов на противоположных концах пьезоэлектрика в зависимости от внешнего давления. Этот датчик позволяет измерять давление воздуха от 15 до 115 кПа. Датчик имеет три основных вывода: два для питания и один – выходной. Выходным сигналом датчика служит напряжение, изменяющееся практически линейно в зависимости от внешнего давления от 0.2 до 4.8 В. Это отражено на рис. 15.

Конструктивно датчик выполнен в пяти вариантах, два из которых (со штуцером (рис. 16, а) и без него (рис. 16, б)) представлены в лабораторных стендах. Датчик со штуцером может быть установлен в воздухопроводе, датчик без штуцера используется в барометрах для измерения атмосферного давления.

Рис. 15. Зависимость выходного напряжения датчика MPX4115 от внешнего давления

 

 (а) (б)

Рис. 16. Внешний вид закреплённых на стендах датчиков давления:

(а) – со штуцером; (б) – без штуцера

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

Рис. 17. Структура датчика давления

Точность показаний датчика давления, в общем случае, зависит от окружающей температуры. Эта зависимость, отражённая на рис. 18, является нелинейной, симметричной относительно 42.5 ºС.

Рис. 18. Графическая характеристика температурной погрешности

В ней выделяются три прямолинейных участка. В диапазоне от 0 до 85 ºС точность датчика давления не зависит от окружающей температуры и равна 1%, а в диапазоне отрицательных и высоких для датчика (более 85 ºС) температур необходима температурная коррекция на уровне обработки сигналов в микроконтроллере. Для этого рекомендуется дополнительная установка в системах автоматики датчика температуры.

Основные параметры датчика MPX4115:

  •  тип аналоговый;
  •  диапазон измеряемых давлений 15,…,115 кПа (околоатмосферное);
  •  чувствительность 45,9 мВ/кПа;
  •  диапазон выходного напряжения 0,…,5 В;
  •  потребляемый ток 7 мА;
  •  точность 1,5 %;
  •  рабочий температурный диапазон –40ºС,…,+125ºС.

В лабораторном стенде датчики влажности и давления через резистивные делители R2 и R_2 подключены соответственно к нулевому и второму каналам АЦП микроконтроллера. В связи с тем, что опорное напряжение для АЦП микроконтроллера равно 2.5 В, а выходные напряжения датчиков влажности и давления лежат в диапазоне 0, …, 5В, коэффициент деления резистивных делителей R2 и R_2 равен двум.

В-общем, архитектурой контроллера предусмотрено подключение восьми различных аналоговых датчиков. Блок АЦП микроконтроллера принадлежит входному порту P1 и включает в себя восьми канальный минимум пяти микросекундный (т.е. с предельной частотой дискретизации, равной 200 кГц) аналого-цифровой преобразователь с однополярным питанием и стабилизированным опорным напряжением 2.5 В. 12-разрядный АЦП имеет 212 = 4096 уровней квантования, что определяет изменение напряжения на его входе на 2.5 В / 4096 = 610 мкВ при изменении выходного числового значения АЦП на единицу.

АЦП управляется посредством трёх интерфейсных РСФ ADCCON1 – ADCCON3.

Регистр ADCCON1 (адрес EFh) управляет режимами и скоростью работы, а также энергопотреблением АЦП. Основные его биты представлены в таблице 8.

В зависимости от состояния битов регистра ADCCON2 (адрес D8h) таблицы 9 однократный или повторяющийся режим преобразования может выполняться программно путём управления битами CCONV (Continuous CONVersion) или SCONV (Single CONVersion) или подачей внешнего сигнала «Запуск преобразования» на контакт 23 (/CONVST – CONVersion STart) микроконтроллера. В последнем случае должен быть установлен бит ADCCON1.0. Также для инициирования повторяющегося процесса преобразования можно использовать сигналы таймера Timer2, что устанавливается посредством бита ADCCON1.1.

В-общем, регистр ADCCON2 с побитовым доступом позволяет выбрать номер обрабатываемого канала и управлять режимами преобразования: непрерывным и однократным.

В регистре ADCCON3 значимым является единственный самый старший (седьмой) бит, означающий текущую занятость АЦП, и устанавливаемый аппаратно.

Непосредственный процесс аналого-цифрового преобразования занимает определённое время. Для рассматриваемого стенда – это как минимум 5 мкс при периоде тактов микроконтроллера 12/11059200 ≈ 1 мкс. В момент начала аналого-цифрового преобразования микроконтроллер автоматически устанавливает бит ADCCON3.7 в значение 1, а в момент его окончания сбрасывает в нуль.

АЦП контроллера получает отсчёты сигналов датчиков путём последовательного переключения каналов: с нулевого на второй и наоборот в соответствии с принципиальной схемой стенда рис. 5. Последовательность и период опроса определяются программистом.


Таблица 8. Назначение битов регистра ADCCON1

Биты

Назначение

ADCCON1.7

ADCCON1.6

Биты выбора режима работы АЦП

ADCCON1.7

ADCCON1.6

Режим работы

0

0

Отключение АЦП (powered down) – режим пониженного энергопотребления

0

1

Нормальный

1

0

Включение АЦП только на момент преобразования (в противном случае происходит  его отключение)

1

1

Включение АЦП только на момент преобразования (в противном случае АЦП переходит в режим ожидания)

ADCCON1.5

ADCCON1.4

Биты деления тактовой частоты. Определяют коэффициент деления основной частоты микропроцессора для получения частоты дискретизации АЦП:

ADCCON1.5    ADCCON1.4 Делитель

 0 0 1

 0 1 2

 1 0 4

 1 1 8

ADCCON1.1

Бит разрешения запуска АЦП от  таймера Timer2. Если бит установлен, то сигнал переполнения таймера Timer2 инициирует запуск цикла аналого-цифрового преобразования.

ADCCON1.0

Бит разрешения внешнего запуска цикла аналого-цифрового преобразования посредством сигнала на выводе 23 (/CONVST)

Таблица 9. Назначение битов регистра ADCCON2

№ бита

Имя бита

Назначение

7

ADCI

Флаг завершения текущего цикла преобразования (флаг прерывания АЦП); устанавливается и сбрасывается аппаратно; устанавливается по окончании преобразования, сбрасывается в момент входа программы в обработчик прерывания

5

CCONV

Бит непрерывного преобразования; управляется программно

4

SCONV

Бит однократного преобразования; устанавливается в том месте программы, где требуется сделать аналого-цифровое преобразование, сбрасывается аппаратно по окончании преобразования

3

CS3

Биты номера оцифровываемого канала (управляются программно)

 CS3 CS2 CS1 CS0 Номер канала

 0 0 0 0 0

  0 0 0 1 1

  0 0 1 0 2

  0 0 1 1 3

  0 1 0 0 4

  0 1 0 1 5

  0 1 1 0 6

  0 1 1 1 7

  1 0 0 0 Датчик темп.

2

CS2

1

CS1

0

CS0

По окончании оцифровки отсчёта текущего канала числовые данные автоматически помещаются в регистры данных АЦП – это регистры ADCDATAH (старший байт) и ADCDATAL (младший байт), которые впоследствии заносятся в ОЗУ данных, формируя таким образом сигнальную выборку, соответствующую определённому датчику. Т.к. разрядность АЦП равна 12, то в регистре ADCDATAH задействованы только 4 младших бита (младшая тетрада), а старшая тетрада хранит номер обрабатываемого канала.

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

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

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

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

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

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

Рис. 19. Наглядное представление действия ПИД-закона

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

В Д и ПИД управлении сначала формируется первая сигнальная выборка «Выборка 1». С учётом её данных вычисляется «первый интеграл», т.е. «интегральное значение для выборки 1». Следом формируется вторая выборка и вычисляется «второй интеграл». После этого находится разность Δ1 интегральных значений для первой и второй выборок. Управляющее воздействие на объект для ПИД-закона является суперпозицией интегральной и дифференциальной составляющих, т.е. решение об управлении принимается в сочетании интегрального и дифференциальной величин. Приведённые действия повторяются в реальном времени с учётом сохранения текущего оцифрованного отсчёта в ОЗУ для последующей обработки.

Примеры типовых программ обработки

сигналов датчиков

К работе прилагаются тексты следующих программ:

  •  Пример 1. Программа светодиодной индикации давления в воздухопроводе, в торце которого установлен датчик давления MPX4115. Программа реализует алгоритм П-закона управления. В блоке INIT инициализации сначала настраивается режим АЦП – это строка «mov ADCCON1,#60h», означающая нормальный режим работы с коэффициентом деления 4, т.е. предельной частотой дискретизации (11059200/17)/4 ≈ 163 кГц для кварца 11.0592 МГц (см. рис. 8). В основном цикле START проводится оцифровка данных датчика давления и их отображение на светодиодах регистра DD4. Программа использует второй канал АЦП (строка «mov ADCCON2,#2»), к которому подключен датчик давления. Процесс оцифровки включает строки «setb SCONV» установки бита SCONV – команды старта оцифровки и «jnb ADCI, $» ожидания её окончания (бит ADCI свидетельствует об окончании оцифровки данного). В полученном 12-разрядном числе выделяется старшая тетрада, т.е. младшая тетрада старшего байта ADCDATAH (строки «mov A,ADCDATAH» и «anl A,#0Fh»). Результирующее значение, лежащее в диапазоне от 0 до 0Fh, преобразуется табличным способом (посредством таблицы ledTable) в число, подаваемое в регистр DD4 для зажигания единственного светодиода, определяющего уровень давления в воздухопроводе.
  •  Пример 2. Программа управления реле в зависимости от давления в воздухопроводе. Программа анализирует старшую тетраду оцифрованного 12-разрядного значения датчика давления и замыкает контакты реле в двух случаях: когда значение тетрады меньше 8, определяя таким образом нижний порог срабатывания по давлению в 0.8 атм, и когда оно больше 0Bh, что соответствует верхнему порогу срабатывания по давлению в 1.1 атм. В нормальном состоянии при нормальном атмосферном давлении значение старшей тетрады равно 0Ah.
  •  Пример 3. Программа детектирования ударной волны, т.е. резкого изменения давления в воздухопроводе. Программа реализует алгоритм Д-закона управления. Программа формирует выборку в 16 отсчётов с частотой дискретизации примерно 160 кГц, вычисляет интеграл, сохраняя его в ячейках (sum_0+1, sum0), причём в (sum0+1) заносится старший байт, в sum0 – младший. После этого находится дифференциал – модуль разности интегральных значений для текущей и предыдущей выборок. Результат сравнивается с порогом 0010h и принимается решение о наличии либо отсутствии в воздухопроводе ударной волны с автоматическим включением/отключением реле для имитации, например, перепуска избыточного давления по обводной трассе.
  •  Пример 4. Программа отображения на дисплее первых восьми 12-разрядных данных массива. Программа формирует сигнальную выборку от датчика давления, состоящую из  восьми отсчётов, и отображает их шестнадцатеричные значения на дисплее. На дисплее также отображается среднее значение по выборке. Программа позволяет менять частоту дискретизации путём изменения в строке (*) постоянной, определяющей задержку при дискретизации отсчётов. В строке (**) настраивается период обновления данных на дисплее, который регулируется для возможности непринуждённого переписывания данных с дисплея на бумажный или электронный носитель информации. Для отображения всех отсчётов сигнальной выборки на дисплее стенда-контроллера, а также их среднего значения данные в нижней строке следуют без пробелов.

Вопросы для самоподготовки

  1.  Принципы действия датчиков давления и влажности
  2.  Принцип действия АЦП

Задания к лабораторной работе № 2

  1.  Проанализируйте работу программ примеров 1 – 3.
  2.  В программе примера 4 в строке (**) установите постоянную, равную 90, а в строке (*) единицу. Загрузите программу в контроллер. Сформируйте сигнальную выборку от датчика давления, находящегося в состоянии покоя, т.е. под воздействием нормального атмосферного давления. Постройте график полученной сигнальной выборки.
  3.  В программе примера 4 последовательно изменяя задержку в дискретизации (т.е. постоянную в строке (*)) от 1 до 70 с шагом 10 и запуская программу на исполнение, сформируйте для каждой задержки в дискретизации 5 выборок; выделите в выборках переходной (связанный с изменением режима работы АЦП в момент формирования выборки) и установившийся режимы; заполните следующую таблицу.

Объясните полученные изменения результатов.


№ выборки

Значения в выборке

Среднее значение по выборке

Примерный график сигнала

Минимальное значение в выборке в установившемся режиме оцифровки

Максимальное значение в выборке в установившемся режиме оцифровки

Максимальное отклонение от среднего значения в выборке

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

Десятичный вид

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

Десятичный вид

Содержание отчёта

  1.  График сигнальной выборки, построенный по заданию 2
  2.  Таблица задания 3
  3.  Выводы по заданию 3

Контрольные вопросы

  1.  Методика управления работой АЦП и процессом оцифровки данных в микропроцессорных контроллерах
  2.  Элементарные алгоритмы обработки сигнальных выборок: реализация операций интегрирования и дифференцирования.


Лабораторная работа № 3

Дистанционное управление в системах автоматики

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

Количество часов аудиторных занятий – 4.

Рекомендации: для выполнения данной лабораторной работы пользуйтесь также литературой [1 – 4, 10 – 12].

Теоретические сведения

Системы дистанционного управления делятся на два класса: проводные и беспроводные. Беспроводные оптический и радио каналы связи и управления представляют особый интерес для автоматики. Информация по беспроводным каналам передаётся в бифазном коде. Кстати, на основе бифазного кода построена мировая система штрих-кодирования товаров.

Рассмотрим системы дистанционного управления с инфракрасным каналом связи. Суть бифазного кода для ИК-систем дистанционного управления заключается в генерации импульсного пакета, состоящего из 14 битов, первые два из которых являются стартовыми и имеют строго определённую длительность, затем следует бит-индикатор последовательного нажатия одной и той же клавиши (toggle bit), следующие пять битов определяют адрес источника данных, оставшиеся шесть битов – код клавиши. Длительность стартового импульса – это так называемая «базовая длительность» зависит от типа ПДУ. Длительность остальных битов пакета кратна базовой длительности.

Среди основных типов инфракрасных ПДУ наибольшее распространение получили RC5 и RC6. Их общей чертой является идентичность принципа кодирования данных. Отличительные временные параметры сигналов приведены в таблице 10 и на рисунке 20.

Таблица 10. Основные параметры сигналов ПДУ типов RC5 и RC6

Параметр сигнала \ Тип ПДУ

RC5

RC6

Базовая длительность импульса, tи

860 мкс

890 мкс

Длительность импульсного пакета, tп

24 мс

25 мс

Период повторения импульсного пакета, T

110 мс

114 мс

Рис. 20. Параметры сигнала инфракрасного ПДУ

Процесс декодирования сигналов ПДУ визуально пояснён на рисунке 21 и состоит:

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

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

 

(а) (б)

Рис. 21. Сигналы бифазного кода инфракрасного ПДУ:

(а) – для клавиши «1»; (б) – для клавиши «увеличение силы звука»

Информационный бит изменяет своё значение на противоположное при появлении импульса удвоенной (по отношению к стартовому импульсу) длительности. Если «удвоенный импульс» имеет логически низкий уровень, то к коду клавиши дописываются сначала текущее, а затем инверсное значение информационного бита; при этом сам информационный бит инвертируется. Если же «удвоенный импульс» имеет логически высокий уровень, то информационный бит инвертируется без дополнений его к выходному коду.

В лабораторном стенде специализированный ИК-датчик ТК69 подключен к выводу P3.2/INT0 микроконтроллера, т.е. к выводу внешнего прерывания /INT0. В этом случае архитектура микроконтроллера ADμC812 предусматривает возможность детектирования перепадов 1→0 на линии /INT0  (посредством установки бита IT0, т.е. бита 0 регистра TCON и запуска таймера Timer0 с помощью установленного бита TR0) и измерении временного интервала между соседними перепадами, либо автоматического измерения длительностей импульсов низкого уровня при работе таймера Timer0 в режиме 1 со схемой его функционирования, представленной на рисунке 22, где бит 3 регистра TMOD, т.е. бит Gate0 равен нулю и TR0 равен нулю.

Рис. 22. Схема функционирования таймера Timer0 в режиме 1

Таким образом, с помощью микроконтроллера ADμC812 можно измерять как длительность импульса с логическим низким уровнем, так и суммарную длительность импульсов с логическим низким и логическим высоким уровнями. Опыт показывает, что для декодирования импульсных сигналов ИК ПДУ достаточно измерять только суммарную длительность, т.е. временной интервал между соседними переходами 1→0.

Примеры программ приёма сигналов от ИК ПДУ и их декодирования

К работе прилагаются тексты следующих программ:

  •  Пример 1. Программа детектирования события нажатия какой-либо клавиши на ПДУ. Программа командой «setb IT0» настраивает контроллер на детектирование перепада 1→0 на линии P3.2/INT0, к которому подключен выход ИК-приёмника, и командой «setb EX0» разрешает обработку внешнего прерывания по линии /INT0. В момент детектирования этого перепада, т.е. во время приёма импульсного пакета от ПДУ в процедуре _Int0 обработки внешнего прерывания /INT0 происходит инверсия состояния светодиодной линейки на выходе регистра DD4.
  •  Пример 2. Программа детектирования начала импульсного пакета. В программе в дополнение к примеру 1 подсчитывается количество принятых пакетов. Результат отображается на линейке светодиодов регистра DD4. Детектирование нового пакета происходит по событию логического перехода 1→0 на линии P3.2/INT0 при условии нулевого значения бита strt. Нулевое состояние бита strt определяет конец текущего импульсного пакета. Завершение импульсного пакета определяется прерыванием таймера Timer2 в случае, когда временной интервал между соседними перепадами 1→0 становится выше порогового значения, определяемого постоянной TH2_0 = 0C0h, что соответствует времени (10000h – 0C000h)/(11.0592 МГц/12) = 17.78 мс.
  •  Пример 3. Программа детектирования и вычисления длительности стартового импульса. В примере задействован жидкокристаллический символьный дисплей контроллера. В программе присутствуют блоки инициализации дисплея, отображения в верхней его части строки «Длительность импульса», а в нижней – длительность стартового импульса кодового пакета, представленная в шестнадцатеричном виде и хранящаяся в ячейках (pulseW+1, pulseW).
  •  Пример 4. Программа подсчёта и отображения на дисплее количества переходов 1→0 в импульсном пакете для нажатой клавиши.
  •  Пример 5. Программа отображения отношений длительностей текущего импульса к базовому (стартовому). Программа формирует и отображает на дисплее последовательность отношений временных интервалов между соседними переходами 1→0 в пакете к базовой длительности. Полученная последовательность отношений идентифицирует нажатую клавишу.
  •  Пример 6. Программа дистанционного управления частотой вращения двигателя постоянного тока посредством варьирования временами подачи и отключения питания.

Задания к лабораторной работе № 3

  1.  Загрузите в контроллер программу примера 1 и проанализируйте её функционирование.
  2.  Вычислите период повторения импульсных пакетов в ПДУ типов RC5 и RC6. Для этого загрузите в контроллер программу примера 2. С помощью линейки светодиодов регистра DD4 зафиксируйте текущее, т.е. стартовое число. Нажмите любую клавишу на ПДУ типа RC5 и держите её (не отпуская) в течение 20 секунд. По истечении контрольного времени отпустите клавишу, зафиксируйте конечное число на выходе регистра DD4 и вычислите количество принятых импульсных пакетов и период их следования. Повторите аналогичные действия с ПДУ типа RC6. Результаты занесите в следующую таблицу.

Тип ПДУ

Стартовое значение в регистре DD4

(до нажатия клавиши)

Конечное значение в регистре DD4

(после отпускания клавиши)

Количество принятых импульсных пакетов

Период следования импульсных пакетов

Двоичный вид

Десятичный вид

Двоичный вид

Десятичный вид

RC5

RC6

  1.  Вычислите среднее значение базовой длительности. Для этого загрузите в стенд-контроллер программу примера 3. Нажмите десять раз на любую клавишу ПДУ типа RC5. Зафиксируйте отображаемые на дисплее длительности и найдите их среднее значение. Аналогичные действия проведите с ПДУ типа RC6. Результаты занесите в следующую таблицу.


Тип ПДУ

№ опыта

Шестнадцатеричное значение базовой длительности, отображаемое на дисплее

Базовая длительность,

мкс

Среднее значение базовой длительности

RC5

RC6

Примечание: для приведения шестнадцатеричного значения базовой длительности к системной единице измерения времени его необходимо умножить на 12 и разделить на частоту кварца, т.е. на 11.0592 МГц

  1.  Загрузите в стенд-контроллер программу примера 5. Для всех клавиш ПДУ типов RC5 и RC6 заполните следующую таблицу. На её основании сделайте вывод по отношению к одним и тем же функциональным клавишам ПДУ типов RC5 и RC6.

Тип ПДУ

Обозначение клавиши

Количество логических переходов 1→0 в импульсном пакете

Последовательность отношений временных интервалов между соседними переходами 1→0 в пакете к базовой длительности, отображаемая на дисплее

Шестнадцатеричное значение, отображаемое на дисплее

Десятичное значение

RC5

RC6

  1.  Загрузите в стенд-контроллер программу примера 6 – программу дистанционного управления двигателем постоянного тока. Для всех сочетаний длительностей замкнутого и разомкнутого состояний контактов реле, управляющего подачей питания на двигатель, в диапазоне от 1 до 5 с шагом 1 заполните следующую таблицу

Отображаемое на дисплее число, определяющее время замкнутого состояния контактов реле

Отображаемое на дисплее число, определяющее время разомкнутого состояния контактов реле

Наличие полной остановки двигателя

1

1

1

2

………………………………………………………………………….

1

5

2

1

2

2

………………………………………………………………………….

2

5

………………………………………………………………………….

5

5

Содержание отчёта

  1.  Граф-схема функционирования программы примера 1
  2.  Таблицы заданий 2 – 5
  3.  Выводы по заданию 4

Контрольные вопросы

  1.  Принцип бифазного кодирования
  2.  Формирование кода клавиши ИК ПДУ типов RC5 и RC6 по заданной временной импульсной последовательности
  3.  Методика управления таймерами и обработки внешних прерываний /INT0 и /INT1 микроконтроллера ADμC812


ЛИТЕРАТУРА

  1.  Сташин В. В., Урусов А. В., Мологонцева О. Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М.: Энергоатомиздат, 1990.
  2.  Бродин В. Б., Шагурин И. И. Микроконтроллеры. Архитектура, программирование, интерфейс. – М.: Издательство ЭКОМ, 1999. – 400с.
  3.  MicroConverter®, Multichannel 12-Bit ADC with Embedded Flash MCU // Режим доступа: http://www.analog.com/static/imported-files/data_sheets/ADUC812.pdfДата доступа: 1.09.2008.
  4.  Баранов В. Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы, - М.: Додэка, 2004.
  5.  Цифровые интегральные микросхемы: Справ. / М. И. Богданович, И. Н. Грель, В. А. Прохоренко, В. В. Шалимо. – Мн.: Беларусь, 1991. – 493 с.
  6.  Семёнов Б.Ю. Шина I2C в радиотехнических конструкциях. Изд. 2-е, доп. – М.: СОЛОН-Пресс, 2004. – 224 с.
  7.  HIH-4000 Series. Humidity sensors // Режим доступа: http://www.honeywell.com/sensing/HIH-4000_SERIES.pdf – Дата доступа: 1.11.2009.
  8.  Integrated silicon pressure sensor for manifold absolute pressure, altimeter or barometer applications on-chip signal conditioned, temperature compensated and calibrated // http://www.motorola.com/semiconductors/MPX4115A.pdf
  9.  Сидоренко, Ю.А. Теория автоматического управления: учеб. пособие / Ю.А. Сидоренко. – Минск: БГАТУ, 2007. – 124 с.
  10.  Протокол RC5 // Режим доступа: http://fi-com.ru/mcu/rc5.htm – Дата доступа: 30.11.2009.
  11.  Протокол RC5 // Режим доступа: http://infrared.h1.ru/protocol.shtml – Дата доступа: 30.11.2009.
  12.  Decode TV IR Remote Control Signals Using Timer_A3 // Режим доступа: http://www.gaw.ru/pdf/TI/app/msp430/slaa134.pdfДата доступа: 30.11.2009.




1. Новогодние старты старших школьников 2224 мая 2013 г
2. Оперативне управління електростанцією та обов~язки чергового персоналу
3. Античная мифология и ее влияние на современность1
4. варианта взять из таблицы
5. реферат дисертації на здобуття наукового ступеня кандидата медичних наук Вінниц
6. Методические рекомендации по выполнению контрольной работы по дисциплине Теория государства и права
7. Ж Жданова Дарья 2012г
8. Тема 39- Дефект массы атомного ядра
9. тема открытого образования Философия Части IIIIV Курс лекций п
10. Пророчестве богатого папы следует искать не в колебаниях финансового рынка а в недостаточном внимании шк
11. Сутність і завдання представництва прокуратурою інтересів громадянина або держави в суді Підручники онла
12.  Способы клеточной миграции
13. Есть ли альтернатива разграничению государственной собственности на землю
14. тема охорони праці
15. Тема- РИСОВАНИЕ ГЕОМЕТРИЧЕСКИХ ФОРМ И КОМПОЗИЦИЙ
16. Духовный кризис современной цивилизации
17. Тема ’ 8. Христианство как мировая религия Католицизм и протестантизм как направления христианства
18. то еще в XVIII XIX вв
19. ПРАКТИКУМ ПО КОНФЛИКТОЛОГИИ 2е издание дополненное и переработанное Допущено Министерством образов
20. Задание 1 Составить управленческие решения по повышению конкурентоспособности