Федеральное агентство по образованию бийский технологический институт (филиал)
Вид материала | Документы |
- Федеральное агентство по образованию бийский технологический институт (филиал), 981.77kb.
- Федеральное агентство по образованию Бийский технологический институт (филиал), 2694.55kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 2134.54kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 1660.78kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 1946.38kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 3460.44kb.
- Решением Ученого совета, 125.93kb.
- Федеральная целевая программа "Развитие электронной компонентной базы и радиоэлектроники", 3538.74kb.
- Бийский технологический институт (филиал), 2586.35kb.
- Министерство образования и науки федеральное агентство по образованию майкопский государственный, 102.13kb.
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 ; Выход из прерывания; |
Контрольные вопросы
- Чем отличается статический сигнал от импульсного?
Что такое «меандр»?
Какие основные средства отображения информации применяются в микроконтроллерных устройствах?
Разработайте алгоритм динамического вывода информации на матричный дисплей.
Разработайте алгоритм вывода информации на семисегментный дисплей.