
- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Динамический вывод информации на дисплей из семисегментных индикаторов
При использовании внешних схем преобразователей кодов процедура индикации одного символа на ССИ в статическом режиме сводится к выдаче двоичного кода символа в соответствующий порт вывода МК (рисунок 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
; Выход из прерывания;
|
Контрольные вопросы
Чем отличается статический сигнал от импульсного?
Что такое «меандр»?
Какие основные средства отображения информации применяются в микроконтроллерных устройствах?
Разработайте алгоритм динамического вывода информации на матричный дисплей.
Разработайте алгоритм вывода информации на семисегментный дисплей.