Федеральное агентство по образованию бийский технологический институт (филиал)

Вид материалаДокументы
4.2Вывод управляющих сигналов из микроконтроллера
4.2.2Формирование импульсных сигналов
4.2.2.1Генерация меандра
4.2.2.2Формирование сигнала с заданной скважностью
4.2.3Вывод и отображение информации
4.2.3.1Динамический вывод информации на дисплей из семисегментных индикаторов
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   14

4.2Вывод управляющих сигналов из микроконтроллера

4.2.1Формирование статических сигналов


Для управления исполнительным механизмом (ИМ), работающим по принципу включено/выключено, на соответствующей выходной линии порта МК необходимо сформировать статический сигнал логического 0 или логической 1.

Это реализуется командами вывода непосредственного операнда, содержащего в требуемом бите значение 0 или 1. Рассмотрим для примера схему на рисунке 4.11. Ниже приведен листинг управляющей программы для раздельного включения/выключения устройств (листинг 4.16).




Рисунок 4.11 – Пример, иллюстрирующий подключение исполнительных механизмов к микроконтроллеру


Листинг 4.16 – Программа управления динамиком и лампой




.ORG 0000h

; Адрес начала программы




SETB P1.0

SETB P1.1



CLR P1.0

CLR P1.1

; Включение динамика

; Выключение лампы


; Выключение динамика

; Включение лампы



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

В этом случае программа управления динамиком и лампой будет выглядеть следующим образом (листинг 4.17):


Листинг 4.17 – Программа управления динамиком и лампой




.ORG 0000h

; Адрес начала программы




MOV P1, #FFh




; Включение динамика и

; выключение лампы

; одновременно




MOV P1, #00h

; Выключение динамика и

; включение лампы

; одновременно



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


Листинг 4.18 – Программа управления исполнительными
механизмами. (Последовательность управляющих сигналов
представлена в табличной форме.)

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

; механизмы подключены к порту P1, а режимы их включения

; определяются разрядами 0–3 порта P3.




.ORG 0000h

; Адрес начала программы



NEXT:


TABEL:

MOV P1, #00h

MOV P3, #FFh


MOV A, P3


ANL A, #0Fh


MOV DPTR, #TABEL


MOVC A, @A+DPTR

MOV P1, A

JMP NEXT


.DB 10, 15, 127, 20, 32, 72, 2, 7

.DB 3, 1, 0, 23, 255, 26, 34, 202

; Отключение ИМ

; Настройка порта P3 на

; ввод

; Считывание значений из

; порта P3

; Выделение значащих бит


; Загрузка в DPTR адреса

; таблицы УС

; Чтение УС

; Отправка УС в порт P1

; Переход на опрос порта

; P3


; Таблица управляющих

; слов

4.2.2Формирование импульсных сигналов


Управляющее воздействие типа «импульс» можно получить последовательной выдачей сигналов «включить» и «отключить» с промежуточным вызовом подпрограммы временной задержки (листинг 4.19).


Листинг 4.19 – Программа формирования импульсного воздействия

; Программа предполагает, что ИМ подключен к разряду 0 порта P1.




.ORG 0000h

; Адрес начала программы




SETB P1.0

CALL DELAY


CLR P1.0



; Включение ИМ

; Вызов подпрограммы

; временной задержки

; (см. листинг 4.7)

; Отключение ИМ

4.2.2.1Генерация меандра


Для генерации меандра (рисунок 4.12) необходимо выдавать на выход сигналы логической единицы и логического нуля с одинаковой длительностью (листинг 4.20).





Рисунок 4.12 – Меандр


Листинг 4.20 – Программа, реализующая меандр на выходе Р1.0




.ORG 0000h

; Адрес начала программы




SETB P1.0

CALL DELAY

CLR P1.0

CALL DELAY

JMP 0

; Выдача логической единицы

; Временная задержка

; Выдача логического нуля

; Временная задержка

; Переход на начало программы

4.2.2.2Формирование сигнала с заданной скважностью


Пример импульсного сигнала с произвольной скважностью показан на рисунке 4.13.





Рисунок 4.13 – Импульсный сигнал с произвольной скважностью


Скважность – это отношение длительности единичного импульса к периоду сигнала, выраженное в процентах.

Последовательность импульсных сигналов с произвольной скважностью может быть получена путем чередования процедур выдачи изменяемого значения сигнала (0 или 1) и вызова подпрограмм временных задержек различных длительностей (листинг 4.21).

Листинг 4.21 – Программа, формирующая сигнал с заданной
скважностью




.ORG 0000h

; Адрес начала программы




SETB P1.0

CALL DELAY1


CLR P1.0

CALL DELAY0


JMP 0

; Выдача логической единицы

; Временная задержка,

; определяющая длительность

; единицы ()

; Выдача логического нуля

; Временная задержка,

; определяющая длительность

; ноля ()

; Переход на начало программы

4.2.3Вывод и отображение информации


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

– светодиоды используют в тех случаях, когда требуется индикация типа ДА/НЕТ (рисунок 4.14);

– семисегментные индикаторы (ССИ) широко используются для отображения цифровой и буквенной информации (рисунок 4.15).





Рисунок 4.14 – Схема подключения светодиодов




Рисунок 4.15 – Структура и схема подключения семисегментного индикатора


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

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

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

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

Каждый из таких МСИ, выполненный в виде интегральной микросхемы, представляет собой матрицу светодиодов размерностью , где N – число колонок, M – число строк матрицы.

Для включения одного светодиода матрицы необходимо обеспечить протекание через него тока 10–15 мА при напряжении 2,0–2,5 В. Подключение матричного индикатора к МК осуществляется через управляемые схемы формирования тока колонок и строк (см. рисунок 4.16) .



Рисунок 4.16 – Структура и схема подключения матричного светодиодного индикатора



Для отображения многосимвольной информации используются линейные дисплеи. Такие дисплеи представляют собой «линейку», смонтированную из отдельных ССИ или МСИ. Число знакомест дисплея определяется в соответствии с требованиями к микроконтроллерной системе.

Существует два способа организации интерфейса МК с линейным дисплеем: статический и динамический.

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

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

4.2.3.1Динамический вывод информации на дисплей
из семисегментных индикаторов


При использовании внешних схем преобразователей кодов процедура индикации одного символа на ССИ в статическом режиме сводится к выдаче двоичного кода символа в соответствующий порт вывода МК (рисунок 4.17).





Рисунок 4.17 – Линейный дисплей на ССИ с динамическим отображением информации


Процедура вывода данных на линейный дисплей из СИИ включает следующие шаги.

1. Отключение всех индикаторов. В приведённой схеме (см. рисунок 4.17) этот шаг предполагает подачу на входы ОК всех индикаторов логических единиц.

2. Установка кода на информационных входах, предназначенного для отображения на одном из индикаторов.

3. Включение индикатора, на котором необходимо отобразить этот код. В привёденной схеме (см. рисунок 4.17) включение индикатора осуществляется подачей логического нуля на его вход ОК.

4. Организация временной задержки.

5. Выключение индикатора.

6. Переход на шаг 2 (вывод информации на следующий индикатор) и т.д.

Пример программной реализации данной процедуры приведен в листинге 4.22.

Листинг 4.22 – Программа вывода информации на четырехразрядный дисплей, приведенный на схеме, представленной на рисунке 4.17

; Программа реализует подсчет импульсов, подаваемых на разряд 0

; порта P0. Количество импульсов выводится на дисплей в

; десятичном виде. Индикатор HL1 используется для вывода младшего

; разряда десятичного числа, индикатор HL4 – для старшего.

; Сегменты H (точки) всех индикаторов выключены.




.ORG 0000H

JMP BEGIN


.ORG 000BH


JMP TIMER


; Адрес начала программы

; Переход к основной

; программе

; Адрес обработчика

; прерываний от таймера

; Переход к процедуре

; обработки прерывания


BEGIN:


NEXT:


TIMER:


I0:


I1:


I2:


I3:

MOV IE, #00H

MOV TMOD, #02H


MOV TL0, #7FH

MOV TH0, #7FH

MOV DPTR, #0000H

MOV P1, #00H

MOV P3, #10101010B

MOV R0, #FFH


SETB TR0

MOV IE, #82H


SETB P0.0


JB P0.0, $

JNB P0.0, $


CLR EA


MOV A, DPL

ADD A, #01H

PUSH PSW

DA A

MOV DPL, A

POP PSW


MOV A, DPH

ADDC A, #00H

DA A

MOV DPH, A

SETB EA


JMP NEXT


INC R0


CJNE R0, #00H, I1

MOV P3, #10101010B


MOV P1, DPL

MOV P3, #10101000B


RETI

CJNE R0, #01H, I2

MOV P3, #10101010B


MOV A, DPL

SWAP A

MOV P1, A

MOV P3, #10100010B


RETI

CJNE R0, #02H, I3

MOV P3, #10101010 B


MOV P1, DPH

MOV P3, #10001010 B


RETI

MOV P3, #10101010 B


MOV A, DPH

SWAP A

MOV P1, A

MOV P3, #00101010B


MOV R0, #FFH

RETI

; Запрет всех прерываний

; Настройка таймера на

; режим с автопрезагрузкой

; Загрузка регистров таймера


; Обнуление регистра DPTR


; Отключение индикаторов

; Загрузка регистра,

; отвечающего за выбор

; индикатора

; Разрешение счёта

; Разрешение прерываний от

; счётчика

; Настройка разряда порта на

; ввод

; Ожидание импульса


; Запрет всех прерываний


; Инкрементирование

; регистра DPL с десятичной

; коррекцией результата


; Инкрементирование

; регистра DPH с десятичной

; коррекцией результата;


; Разрешение прерываний от

; таймера

; Переход к следующему

; опросу P0.0


; Инкрементирование регистра,

; отвечающего за выбор

; индикатора


; Отключение всех

; индикаторов

; Вывод кода (единицы)

; Включение индикатора

; HL1

; Выход из прерывания


; Отключение всех

; индикаторов


; Вывод кода (десятки)


; Включение индикатора

; HL2

; Выход из прерывания;


; Отключение всех

; индикаторов

; Вывод кода (сотни)

; Включение индикатора

; HL3

; Выход из прерывания;

; Отключение всех

; индикаторов

; Вывод кода (тысячи)


; Включение индикатора

; HL4


; Выход из прерывания;


Контрольные вопросы
  1. Чем отличается статический сигнал от импульсного?

Что такое «меандр»?

Какие основные средства отображения информации применяются в микроконтроллерных устройствах?

Разработайте алгоритм динамического вывода информации на матричный дисплей.

Разработайте алгоритм вывода информации на семисегментный дисплей.