- •Федеральное агентство по образованию
- •Проектирование цифровых измерительных устройств
- •Удк 621.317.7 (075) ббк 34.9я73
- •Удк 621.317.7 (075) ббк 34.9я73
- •Введение
- •1. Основные определения
- •Контрольные вопросы
- •2. Циу с квантованием по уровню
- •2.1. Вольтметр на основе времяимпульсного ацп однотактного интегрирования
- •2.2. Времяимпульсный вольтметр на основе ацп двухтактного интегрирования
- •2.3. Вольтметр на основе ацп - преобразования
- •2.4. Вольтметр частотно-импульсного преобразования с пнч
- •Пнч с заданным тактом (пнч зт)
- •Пнч с заданной амплитудой (пнч за)
- •Пнч с заданным интегралом непрямоугольного компенсирующего импульса (пнч зи)
- •2.5. Вольтметры уравновешивающего преобразования (кодоимпульсные вольтметры)
- •2.5.1. Вольтметр развертывающего уравновешивания с рсо
- •2.5.2. Вольтметр развертывающего уравновешивания с нсо
- •2.5.3. Вольтметры следящего уравновешивания
- •2.5.4. Вольтметр следящего уравновешивания с рсо
- •2.5.5. Вольтметр следящего уравновешивания с нсо
- •2.6. Вольтметр на основе ацп параллельного преобразования
- •2.7. Ацп конвейерного типа
- •2.8. Краткая информация об интегральных ацп
- •Контрольные вопросы
- •3. Циу с квантованием по времени
- •3.1. Цифровые частотомеры
- •3.1.1. Частотомер непрерывного преобразования
- •3.1.2. Цифровой частотомер средних значений
- •3.1.3. Цифровой частотомер номинальных значений
- •3.1.4. Цифровой процентный частотомер
- •3.2.1. Цифровой периодомер мгновенных значений
- •Цифровой периодомер мгновенных значений (цпмз) предназначен для реализации измерения за один период входного сигнала. Один из вариантов реализации структурной схемы цпмз приведен на рис. 3.6.
- •Порядок расчета структуры
- •3.2.2. Цифровой периодомер средних значений
- •3.3. Цифровые измерители длительности импульсов
- •3.3.1. Общие сведения о цифровых измерителях длительности импульсов
- •3.3.2. Расширение длительности импульсов
- •3.3.3. Использование нониусного метода для измерения длительности импульсов
- •3.3.4. Аналого-цифровой измеритель длительности одиночных импульсов
- •3.4. Цифровые фазометры
- •3.4.1. Цифровой фазометр мгновенных значений
- •Значение кванта или абсолютной погрешности квантования
- •Для расширения частотного диапазона цфмз используют два основных способа.
- •1. Применение гоч с управляемой выходной частотой, например, на базе умножителя частоты (уч) с петлей фапч.
- •2. Применение гоч с аналого-цифровым управлением
- •3.4.2. Цифровой фазометр средних значений
- •Контрольные вопросы
- •4. Измерение параметров элементов электрических цепей
- •4.1. Измерение емкости и индуктивности
- •4.2. Измерение добротности
- •5. Автоматическое переключение пределов измерения в циу
- •6. Циу пространственного преобразования
- •6.1. Циу линейных перемещений
- •6.1.1. Циу линейных перемещений контактного типа
- •6.1.2. Циу линейных перемещений с оптическим преобразователем
- •6.1.3. Числоимпульсный метод измерения перемещения
- •6.1.4. Измерители больших перемещений (расстояния)
- •6.1.5. Измерители угловых перемещений
- •Контрольные вопросы
- •7. Преобразователи код – напряжение
- •7.1. Пкн на основе управляемого делителя напряжения последовательного типа
- •7.2. Пкн на основе управляемого делителя напряжения параллельного типа
- •7.3. Пкн с суммированием напряжений на основе сетки резисторов
- •7.4. Пкн с суммированием токов
- •7.4.1. Пкн на основе матрицы резисторов с весовыми коэффициентами
- •7.4.2. Пкн на основе резистивной матрицы r-2r
- •7.5. Краткая информация об интегральных цап
- •Контрольные вопросы
- •8. Устройства индикации цифровых приборов
- •Индикаторные панели
- •9. Интерфейсы связи цифровых приборов с эвм и другими циу
- •9.1. Применение последовательного интерфейса rs232
- •9.2. Применение параллельного интерфейса ieee1284
- •9.3. Применение однопроводной шины dallas
- •9.4. Применение двухпроводной шины i2c
- •Контрольные вопросы
- •10. Элементы микропроцессорной техники в циу
- •10.1. Общие сведения о микроконтроллерах семейства piCmicro
- •Ядро микроконтроллера
- •Порты ввода-вывода
- •Периферийные модули
- •10.2. Примеры применения микроконтроллеров piCmicro
- •10.2.1. Устройство управления четырьмя светодиодами
- •10.2.2. Управление жки с помощью последовательного адаптера
- •10.3. Общие сведения о микроконтроллерах семейства avr
- •10.4. Примеры применения микроконтроллеров avr
- •10.4.1. Ик дальномер
- •Библиографический список
- •Оглавление
10.2. Примеры применения микроконтроллеров piCmicro
10.2.1. Устройство управления четырьмя светодиодами
На рис. 10.2 приведена схема устройства для управления четырьмя светодиодами.

Рис. 10.2. Принципиальная схема устройства управления светодиодами
Ниже приводится текст программы "бегущий огонь" для данной схемы.
|
; WALKLEDS.ASM |
| ||||
|
|
LIST |
P=16C84 |
|
| |
|
; |
|
|
|
| |
|
PORTB |
EQU |
6 |
|
| |
|
TRISB |
EQU |
86h |
|
| |
|
OPTREG |
EQU |
81h |
|
| |
|
STATUS |
EQU |
3 |
|
| |
|
CARRY |
EQU |
0 |
|
| |
|
RP0 |
EQU |
5 |
|
| |
|
MSB |
EQU |
3 |
; номер бита для крайнего слева |
| |
|
светодиода |
| ||||
|
|
|
|
; |
| |
|
|
CLRF |
PORTB |
; погасить все светодиоды |
| |
|
|
BSF |
STATUS, RP0 |
; выбрать регистровый банк 1 |
| |
|
|
CLRF |
TRISB^80h |
; установить все разряды PORTB |
| |
|
на вывод информации |
| ||||
|
|
MOVWF |
0Ah |
| ||
|
|
MOVLW |
OPTREG^80h |
; настроить предварительный | ||
|
делитель в WDT на (1:4) | |||||
|
|
BCF |
STATUS, RP0 |
; выбрать регистровый банк 0 | ||
|
|
INCF |
PORTB, F |
; включить крайний справа | ||
|
светодиод | |||||
|
|
BCF |
STATUS, CARRY |
; очистить флаг CARRY | ||
|
LEFT |
SLEEP |
|
; подождать тайм-аута WDT | ||
|
|
RLF |
PORTB, F |
; сдвинуть содержимое индикатора | ||
|
влево | |||||
|
|
BTFSS |
PORTB, MSB |
; достигли крайней левой позиции? | ||
|
|
GOTO |
LEFT |
; если нет – цикл | ||
|
RIGHT |
SLEEP |
|
; подождать тайм-аута WDT | ||
|
|
RRF |
PORTB, F |
; сдвинуть содержимое индикатора | ||
|
вправо | |||||
|
|
BTFSS |
PORTB, 0 |
; достигли крайней левой позиции? | ||
|
|
GOTO |
RIGHT |
; если нет – цикл | ||
|
|
GOTO |
LEFT |
; начать новый цикл | ||
|
|
END |
|
| ||
Программа "бегущий огонь" предназначена для использования четырех светодиодов, но можно изменять значение MSB для использования большего количества светодиодов: для количества светодиодов 5, 6, 7 и 8 значения MSB должны быть 4, 5, 6 и 7 соответственно.
10.2.2. Управление жки с помощью последовательного адаптера
Несмотря на широкое применение символьных жидкокристаллических дисплеев (ЖКД), использование ЖКИ по-прежнему остается одним из распространенных способов реализации цифровых отсчетных устройств в измерительной аппаратуре с малым энергопотреблением. Это обусловлено прежде всего тем, что ЖКИ, в отличие от ЖКД, имеют более широкий диапазон рабочих температур и напряжений, а также широкий диапазон габаритов символов.
Управление ЖКИ с помощью микроконтроллеров PIC16C92x, имеющих LCD модуль, не всегда представляется целесообразным.
Для управления ЖКИ можно использовать как последовательные, так и параллельные адаптеры. Управление параллельным адаптером реализуется очень просто, применением команды MOVWF PORTx для записи подготовленных данных в регистр адаптера. Однако использование параллельных адаптеров не всегда является оптимальным (например, если все порты ввода/вывода используются по нескольким назначениям и (или) количество этих портов небольшое).
Применение последовательного адаптера требует наличия у микроконтроллера всего трех свободных (или относительно свободных) линий ввода/вывода.
Фирма Microchip Technology Incorporated производит очень удобный и недорогой последовательный адаптер символьного 32-сегментного ЖКИ AY0438.
На рис. 10.3 приводится функциональная схема управления ЖКИ через адаптер AY0438 микроконтроллерами среднего семейства.
Ниже приводится текст программы, написанной для MPASM, реализующей управление ЖКИ.
; AY0438.ASM
LIST p=16C71, f=inhx8m
;******************************************************************
; Соединение выводов PORTB с адаптером AY0438:
; PORTB.0 CLK (тактовый сигнал для сдвига данных в регистре AY0438)
; PORTB.1 DATA IN (входные данные для регистра сдвига AY0438)
; PORTB.2 LOAD (сигнал окончания загрузки данных в регистр сдвига AY0438)
;
; ЖКИ соединяется с AY0438 следующим образом:
; Старший разряд сегменты с 1-го по 7-й
; Третий разряд сегменты с 9-го по 15-й
; Второй разряд сегменты с 17-го по 23-й
; Младший разряд сегменты с 25-го по 31-й
; Выводы децимальных точек индикатора не присоединены, но могут подключаться
; к выводам адаптера: SEG8, SEG16, SEG24, SEG32.
; Для каждого разряда сегменты подключаются так:
; SEG A SEG(8n + 1)
; SEG B SEG(8n + 2)
; SEG C SEG(8n + 3)
; SEG D SEG(8n + 4)
; SEG E SEG(8n + 5)
; SEG F SEG(8n + 6)
; SEG G SEG(8n + 7)
; где n = 0, 1, 2, 3 для старшего, 3-го, 2-го, младшего разрядов ЖКИ соответственно.
; В программе приняты обозначения регистров:
; MSD, THRDSD, SCNDSD и LSD для определения цифр, выводимых на AY0438.
; В данном примере кнопка, соединенная с PORTB.7, периодически проверяется,
; и, если она нажата, данные, расположенные в регистрах от MSD до LSD,
; выводятся на соответствующие разряды ЖКИ.
;******************************************************************

Рис. 10.3. Функциональная схема управления ЖКИ через адаптер AY0438
|
#include p16с71.inc | ||||
|
_CONFIG 03FF3 ; RC генератор | ||||
|
; |
|
| ||
|
MSD |
EQU |
0x20 | ||
|
THRDSD |
EQU |
0x21 | ||
|
SCNDSD |
EQU |
0x22 | ||
|
LSD |
EQU |
0x23 | ||
|
COUNT |
EQU |
0x24 | ||
|
TEMP |
EQU |
0x25 | ||
|
PORTB |
EQU |
0x06 | ||
|
#DEFINE |
CLK |
PORTB, 0 | ||
|
#DEFINE |
DATAIN |
PORTB, 1 | ||
|
#DEFINE |
LOAD |
PORTB, 2 | ||
|
#DEFINE |
UPDATELCD |
PORTB, 7 | ||
|
W |
EQU |
0 | ||
|
STATUS |
EQU |
0x03 | ||
|
C |
EQU |
0 | ||
|
RP0 |
EQU |
5 | ||
|
OPTION |
EQU |
0x81 | ||
|
RBPU |
EQU |
7 | ||
|
PCL |
EQU |
0x02 | ||
|
PCLATH |
EQU |
0x0A | ||
|
; |
|
| ||
|
; |
|
| ||
|
|
ORG |
0 | ||
|
|
GOTO |
START | ||
|
; |
|
| ||
|
|
ORG |
0x10 | ||
|
; |
|
| ||
|
; Эта таблица кодировки цифр должна быть всегда расположена на странице 0 | ||||
|
; для работы данной программы | ||||
|
; |
|
| ||
|
DECODEVALUE |
|
|
| |
|
|
ADDWF |
PCL |
|
|
|
|
RETLW |
B'00111111' |
; код цифры "0" |
|
|
|
RETLW |
B'00000110' |
; код цифры "1" |
|
|
|
RETLW |
B'01011011' |
; код цифры "2" |
|
|
|
RETLW |
|
; код цифры "3" |
|
|
|
RETLW |
|
; код цифры "4" |
|
|
|
RETLW |
|
; код цифры "5" |
|
|
|
RETLW |
|
; код цифры "6" |
|
|
|
RETLW |
|
; код цифры "7" |
|
|
|
RETLW |
|
; код цифры "8" |
|
|
|
RETLW |
|
; код цифры "9" |
|
|
; |
|
|
|
|
|
START |
|
|
|
|
|
|
CLRF |
PORTB |
|
|
|
|
BSF |
STATUS, RP0 |
; настроить линии 0, 1, 2 |
|
|
PORTB как выходы |
| |||
|
|
MOVLW |
B'11111000' |
; сигналы управления адап- |
|
|
тером установить в "0" |
| |||
|
|
MOVWF |
PORTB |
|
|
|
|
BCF |
OPTION, RBPU |
; разрешить включение |
|
|
|
|
|
кнопки |
|
|
|
BCF |
STATUS, RP0 |
|
|
|
WAIT |
|
|
|
|
|
|
BTFSC |
UPDATELCD |
; кнопка нажата (низкий |
|
|
уровень)? |
| |||
|
|
GOTO |
WAIT |
; если нет, то перейти на |
|
|
метку WAIT |
| |||
|
|
BCF |
LOAD |
; если да, то установить сиг- |
|
|
нал LOAD = 0 |
| |||
|
|
MOVF |
LSD, W |
; получить значение цифры |
|
|
младшего разряда |
| |||
|
|
CLRF |
PCLATH |
; PCH = 0 |
|
|
|
CALL |
DECODEVALUE |
; кодировать данное значение |
|
|
|
CALL |
SEND8 |
; последовательный вывод |
|
|
значений сегментов |
| |||
|
|
MOVF |
SCNDSD, W |
; получить значение цифры |
|
|
2-го разряда |
| |||
|
|
CALL |
DECODEVALUE |
; кодировать данное значение |
|
|
|
CALL |
SEND8 |
; последовательный вывод |
|
|
значений сегментов |
| |||
|
|
MOVF |
THRDSD, W |
; получить значение цифры |
|
|
3-го разряда |
| |||
|
|
CALL |
DECODEVALUE |
; кодировать данное значение |
|
|
|
CALL |
SEND8 |
|
|
|
|
MOVF |
MSD, W |
; получить значение цифры |
|
|
старшего разряда |
| |||
|
|
CALL |
DECODEVALUE |
; кодировать данное значение |
|
|
|
CALL |
SEND8 |
; последовательный вывод |
|
|
значений сегментов |
| |||
|
|
BSF |
LOAD |
; установить сигнал LOAD = 1 |
|
|
|
BCF |
LOAD |
; установить сигнал LOAD = 0 |
|
|
KEYRELEASED |
|
|
| |
|
|
BTFSS |
UPDATELCD |
; ждать нажатия кнопки |
|
|
|
GOTO |
KEYRELEASED |
|
|
|
|
GOTO |
WAIT |
; повторить цикл. |
|
|
; |
|
|
|
|
|
; SEND8 посылает 8 битов данных, расположенных в регистре W, на адаптер |
| |||
|
; |
|
|
|
|
|
SEND8 |
|
|
|
|
|
|
MOVWF |
TEMP |
; переслать текущее содержимое |
|
|
регистра W в TEMP |
| |||
|
|
MOVLW |
.8 |
; установка на 8 |
|
|
|
MOVWF |
COUNT |
; счетчика битов |
|
|
SENDLOOP |
|
|
| |
|
|
BCF |
DATAIN |
; установить DATA IN = 0 |
|
|
|
RRF |
TEMP |
; циклический сдвиг значения |
|
|
вправо через перенос |
| |||
|
|
BTFSC |
STATUS, C |
; пропустить, если бит равен "0" |
|
|
|
BSF |
DATAIN |
; иначе установить DATA IN = 1 |
|
|
|
BSF |
CLK |
; установить CLK = 1 |
|
|
|
BCF |
CLK |
; установить CLK = 0 |
|
|
|
DECFSZ |
COUNT |
; декрементировать COUNT и |
|
|
проверить на "0" |
| |||
|
|
GOTO |
SENDLOOP |
; вывести следующий бит, если |
|
|
COUNT 0 |
| |||
|
|
RETURN |
|
; возврат из процедуры, если |
|
|
COUNT = 0 |
| |||
|
; |
|
|
|
|
|
|
END |
|
|
|
10.2.3. Аналого-цифровое преобразование
Функциональная схема 4-канального 8-разрядного преобразователя напряжение – код (АЦП) приведена на рис. 10.4. Здесь в качестве опорного напряжения используется VDD. Входные напряжения поданы на входы RA0 – RA3. Микроконтроллер PIC16C71 использует внутренний RC генератор.

Рис. 10.4. Функциональная схема 4-канального АЦП
Ниже приводится макет текста программы, написанный для MPASM, реализующий работу 4-канального 8-разрядного АЦП.
|
; Инициализация АЦП. | |||
|
; Выбор СН0:СНЗ, внутренний RC генератор. | |||
|
; Запись результата в 4 регистра, начиная с адреса ADTABLE (10h) | |||
|
; |
|
|
|
|
; Инициализация |
|
| |
|
|
BSF |
STATUS, PR0 |
; Выбор банка 1 |
|
|
MOVLW |
B'00000000' |
; Выбор RA3:RA0 как |
|
|
MOVWF |
ADCON1 |
; аналоговых входов |
|
|
BCF |
STATUS, PR0 |
; Выбор банка 0 |
|
|
MOVLW |
B'11000001' |
; Выбор канала 0, внутреннего |
|
RC |
|
|
|
|
|
MOVWF |
ADCON0 |
; генератора, включение АЦП |
|
|
MOVLW |
ADTABLE |
; Установка начала таблицы... |
|
|
MOVWF |
FSR |
; записи результата |
|
; |
|
|
|
|
NEW_AD |
CALL |
SAMPLE-DELAY |
; Временная пауза |
|
|
BSF |
ADCON0, 2 |
; Старт преобразования |
|
LOOP |
|
|
|
|
|
BTFSC |
ADCON0, 2 |
; Преобразование завершено? |
|
|
GOTO |
LOOP |
; Если нет – цикл |
|
; |
|
|
|
|
|
MOVF |
ADRES, W |
; Чтение результата преобра- |
|
зования | |||
|
|
MOVWF |
0 |
; Сохранение результата в |
|
|
|
|
таблице |
|
|
MOVLW |
4 |
; Выбор следующего канала |
|
|
ADDWF |
ADCON0 |
; |
|
|
BCF |
ADCON0, CHS2 |
; Защита от переполнения |
|
; Вычисление позиции записи результата в таблицу | |||
|
|
CLRF |
TEMP |
; Очистка регистра temp |
|
|
BTFSC |
ADCON0, CHS0 |
; Проверка установки бита CHS0 |
|
|
BSF |
TEMP, 0 |
; Если текущий канал СН1, СНЗ |
|
|
BTFSC |
ADCON0, CHS1 |
; Проверка установки бита CHS0 |
|
|
BSF |
TEMP, 1 |
; Если текущий канал СНО, СН2 |
|
|
MOVLW |
ADTABLE |
; Запись нового значения |
|
|
ADDWF |
TEMP, W |
; позиции таблицы в регистр |
|
|
MOVWF |
FSR |
; указатель косвенной адресации |
|
|
GOTO |
NEW_AD |
|
