Цифровой осциллограф

Содержание

Стр.

 TOC o "1-3" h z u Введение. h 3

Актуальность темы.. h 4

Постановка задачи. h 5

1 Разработка структурной схемы устройства. h 6

2 Выбор МК и АЦП.. h 8

3 Разработка принципиальной схемы и выбор электронных компонентов. h 10

4. Описание работы устройства. h 21

5 Описание программы для микроконтроллера. h 22

ПРИЛОЖЕНИЕ A   Программа для МК цифрового осциллографа. h 30

Заключение. h 42

Список использованных источников. h 43

Введение

В ходе развития технологии микроэлектроники происходила миниатюризация электронных схем, и появились СБИС. Массовое производство СБИС привело к их удешевлению. Одним из дешёвых и миниатюрных устройств является микроконтроллер (МК). Микроконтроллер – это СБИС, содержащая на одном кристалле процессор, ПЗУ, ОЗУ, последовательный или параллельный интерфейс связи, таймеры, схему прерываний и другие периферийные устройства. Таким образом, на одной ИС можно реализовать множество различных устройств, в которых требуется управлять каким то процессом. Причём совершенствование технологии изготовления СБИС привело к повышению их производительности, и микроконтроллеры могут достаточно быстро реагировать на событие и обрабатывать его.  

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

Можно выделить следующие преимущества цифрового осциллографа:

- высокая точность измерений;

- яркий хорошо сфокусированный экран  на любой скорости развёртки;

- возможность отображения сигнала до момента запуска;

- возможность останова обновления экрана на произвольное время;

- возможность детектирования импульсных помех;

- автоматические средства измерения параметров сигналов;

- возможность подключения принтера для создания отчётов измерений;

- возможность статистической обработки сигнала;

- средства самодиагностики и самокалибровки;

- резко очерченные контуры изображения сигнала;

- возможность исследовать детально переходные процессы;

- считывание предварительно записанных данных;

- широкие аналитические возможности и упрощённая архивация;

- возможность сравнения предварительно записанных данных с текущими.

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

         Теми же возможностями обладают осциллографы с ЖКД (жидкокристаллическим дисплеем). Все возможности связанные с автоматизаций измерений встроены в цифровой осциллограф.

Актуальность темы

В настоящее время на рынке измерительной техники присутствует множество производителей цифровых запоминающих осциллографов (ЦЗО). Наиболее преуспевающие производители в России: «АКТАКОМ», ОАО «Руднёв - Шиляев», ЗАО «Компания Сигнал». Лидирующие производители за рубежом: компании «Tektronix», «Hitachi-Denshi», «Agilent Technologies», «LeCroy», «GaGe Applied Technologies», Good Will instrument Co. Ltd, фирма «Chauvin Arnoux», корпорация «Fluke».

ЦЗО используются для исследовательских работ или для тестирования, наладки, настройки электронных устройств.

 

Постановка задачи

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

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

Число каналов: 2

Разрядность АЦП: 8

Частота дискретизации АЦП: 20 МГц

Размер кадра: 240 байт

Максимальный диапазон входного напряжения:

Количество вольт на деление, В/дел:  1, 0.5, 0.2, 0.1, 0.01

Количество времени на деление: от 500 нс/дел до 10 с/дел

Полоса пропускания по уровню - 3 дБ аналогового блока: 10 МГц

Входное сопротивление:1 МОм

Входная ёмкость: 20 пФ

Устройство отображения: ЖКД 320X240

1 Разработка структурной схемы устройства

Аналоговый сигнал перед оцифровкой в зависимости от амплитуды и выбранного пользователем количества вольт на деление (В/дел) нужно, как известно, ослабить  или усилить. Важно, чтобы напряжение на аналоговом входе аналого-цифрового преобразователя (АЦП) после преобразований не выходило за пределы максимального допустимого значения. Обычно размах напряжений аналогового входа АЦП равен 1 В (от - 0.5 В до + 0.5 В), а шаг квантования 8 – разрядного АЦП равен 0.004 В. Поэтому напряжение от 0.5 В до 5 В нужно уменьшить по амплитуде, чтобы не превысить максимальные значения, а напряжение от 0.004 В до 0.5 В – усилить перед оцифровкой для получения большей информации о сигнале.  Для этого на вход ставятся аттенюаторы и усилитель [1]. На рисунке 1.1 представлена функциональная схема аналогового блока для одного канала.

         Информацию о сигнале после оцифровки с помощью АЦП нужно быстро сохранить в память, так чтобы сохранилась его частота дискретизации. Для выполнения условия нужно, что бы время доступа у памяти (tдос) совпадало с периодом дискретизации АЦП (Tд). В нашем случае   Tд= tдос = 50 нс.

На рисунке 1.2 изображена структурная схема устройства. МК предназначен для обработки информации о сигнале и передачи данных на ЖКД. Чем выше скорость работы МК, тем больше  информации о сигнале удаётся получить.

Аттенюатор

Ku=1/5

Аттенюатор

Ku=1/10

Аттенюатор

Ku=1/2

Ключ 2

Ключ 1

Ключ 3

Ключ 4

Усилитель Ku=10

AIn

Ключ 6

Рисунок 1.1 – Структурная схема аналогового блока

 

 SHAPE  * MERGEFORMAT

8

8

AIn2

AIn1

Аналоговый блок

АЦП

8 – разрядный МК

Рисунок 1.2 –  Структурная схема устройства

Графический ЖКД

2 Выбор МК и АЦП

Для быстрого сохранения в ОЗУ информации о сигнале нужно выбрать МК с максимальной производительностью. Объём ОЗУ должен быть не меньше 512 + 256 байт, так как размер кадра равен 240 байт и осциллограф двухканальный. Для считывания данных с выходов АЦП нужно 2 порта ввода-вывода. Также для управления ЖКД нужно ещё 2 порта. Для управления ключами и кнопок ещё 2 порта. Периферия должна содержать таймеры для создания задержек и встроенный АЦП для измерения постоянного напряжения. В таблице 2.1 приведены результаты обзора микроконтроллеров с наиболее популярными микропроцессорными ядрами MCS-51 и PIC. Из таблицы выберем по главному параметру – быстродействию лучший МК.

Таблица 2.1 – Результаты обзора микроконтроллеров различных производителей

Производитель

Наименование

Тактовая частота, МГц

Количество линий ввода - вывода

Размер ОЗУ, байт

Интерфейсы

Intel

87C51FC-20

20

32

256

UART

Atmel

AT89C51RB2

60

32

1280

UART

Dallas Semiconductor

DS87C550

33

55

1280

2 UARTs

Silicon Laboratories

C8051F120

100

64

8448

2 UARTs, SMBus, SPI

Microchip

PIC18F4455

48

34

2048

USB 2.0, I2C, SPI, USART

Отличительной особенностью МК DS87C550 является перепроектированное ядро процессора, позволяющее исключить холостые такты и циклы памяти. В результате, каждая команда системы команд 8051 выполняется в три раза быстрее, чем стандартным МК, работающем на той же тактовой частоте. DS87C550 имеет максимальную тактовую частоту 33MHz, что эквивалентно работе стандартного МК с тактовой частотой до 99MHz.

МК C8051F120 выполняет 70% команд за 1 или 2 такта и обладает производительность до 100 MIPS на тактовой частоте 100МГц. Кроме того, он подходит по всем остальным параметрам для разрабатываемого устройства. Поэтому остановим свой выбор на нём.

АЦП должен быть сдвоенный и иметь частоту дискретизации 20 МГц. Такие АЦП выпускают многие производители. Так как Analog Devices выпускает качественные АЦП, то выберем из её продукции микросхему AD9288  c частотой преобразования 40 МГц. 

3 Разработка принципиальной схемы и выбор электронных компонентов

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

Рисунок 3.1 – Делитель напряжения

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

Таблица 3.1 – Номиналы резисторов для аттенюаторов

0.5

0.5

0.8

0.2

0.9

0.1

Резисторы на высоких частотах имеют паразитную ёмкость на подложку. Проволочные резисторы ведут себя хорошо на частотах до 50 кГц, углеродные резисторы используются на частотах до 1 МГц. Для данной схемы нужно использовать плёночные резисторы, которые имеют стабильные параметры на частотах до 100 МГц.

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

Делители должны отключаться и подключаться к цепи по отдельности. Для этого будем использовать аналоговые ключи ADG201, обладающие сопротивлением 60 Ом в открытом состоянии и размахом напряжения аналогового входа [2].

Для усиления сигнала будем использовать сдвоенный ОУ AD8008. ОУ имеет полосу пропускания  по уровню -3 дБ равную 600 МГц при коэффициенте усиления  и диапазон напряжения на входе равный

На рисунки 3.2 показана рекомендуемая производителем схема включения [3].

Рисунок 3.2 – Схема включения ОУ

Как известно при не инвертирующем включении идеального ОУ, его коэффициент усиления определяется простой формулой:  в документации рекомендуется использовать следующие номиналы резисторов в:

Для фильтрации ВЧ помех в цепи питания микросхем включаем конденсаторы.

На рисунке 3.3 представлена схема аналогового блока.

Выбранный АЦП имеет дифференциальные аналоговые входы. Для преобразования однопроводного сигнала в дифференциальный производитель рекомендует использовать ВЧ трансформатор ADT1-1WT, который имеет сопротивление 75 Ом и полосу пропускания 800 МГц [4]. Трансформатор не пропускает постоянный ток, поэтому для измерения постоянного напряжения будем использовать встроенный в микроконтроллер АЦП.

Через состояние входов S1 и S2 задаётся режим вывода данных на цифровые выходы D7-D0. При S1=1, S2=0 (нормальный режим) данные на цифровые выходы канала A и B выводятся одновременно, как показано на рисунке 3.4.

Рисунок 3.4 – Временные диаграммы для нормального режима работы АЦП

Рисунок 3.3 – Принципиальная схема аналогового блока

         АЦП имеет встроенный источник опорного напряжения (ИОН) напряжением 1.25 В, который подключен к выводу REFOUT. Ко входам REFINA и REFINB можно подключить внешний ИОН. Мы будем использовать встроенный источник, поэтому эти выводы не используются.

         При подаче высокого уровня на вход DFS (Data Format Output) данные выводятся в дополнительном коде, а при низком уровня – в прямом коде.

         На вход ENCA и ENCB подадим тактовый сигнал от МК для запуска процесса преобразования. На рисунке 3.5 изображена схема включения АЦП.

         Порт P4 и P5 микроконтроллера подключены к цифровым выходам канала A и B АЦП соответственно.

Порт P0 используется для вывода сигнала тактирования АЦП. Порт P3 - для подачи сигналов управления на ЖКД.

Порт P1 – используется для вывода данных на ЖКД.

Вывод VDD – напряжение питания цифровой части МК, DGND – земля цифровой части МК. Вывод AV+ – напряжение питания аналоговой части МК, DGND – земля аналоговой части МК [5].

TMS, TCK, TDI, TDO – выводы через которые производится загрузка и отладка программы. Они соединены c выводами JTAG интерфейса.

Так как мы будем использовать встроенный тактовый генератор с частотой 24.5 МГц, выводы XTAL1 и XTAL2 не используются. MONEN – монитор питания при высоком уровне напряжения на нём сбрасывает микроконтроллер, если VDD<VRST, а при низком уровне – он отключен.

На вывод VREF выводится напряжение ИОН. Вход VREFA подключим к выходу VREF для того чтобы использовать внутренний ИОН для работы АЦП. Таким образом, встроенный в МК АЦП будет измерять постоянное напряжение.

Для измерения постоянного напряжения с канала 1 будем использовать вход AIN0.1, а для измерения постоянного напряжения с канала два - вход AIN0.2.

На рисунке 3.6 представлена схема цифрового блока.

Рисунок 3.5 – Схема включения АЦП

Рисунок 3.6 – Схема включения МК

К порту P6 подключаются 8 кнопок, с помощью которых задаётся количество вольт на деление. К порту P7 подключены такие же кнопки, но с помощью них задаётся количество секунд на деление. После нажатия кнопка остаётся нажатой. Повторное нажатие переводит кнопку в исходное состояние. Схема иерархического блока кнопок приведена на рисунке 3.7.

Рисунок 3.7 - Схема иерархического блока кнопок.

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

Для отображения осциллограммы воспользуемся ЖКД производства компании «Hantronix»  HDM3224-1 c разрешением 320x240 пикселов и встроенным контроллером SED1335 фирмы «Epson».

Описание контактов SED1335 [6]:

Выходы:

VA0 - VA15 - 16 разрядный адрес памяти дисплея. Выходы подключены к адресным входам микросхем памяти.

VD0 – VD7 - 8 разрядная шина данных дисплея. Шина соединена с шинами данных микросхем памяти.

VRD - активный по низкому уровню выход управления чтением памяти дисплея.        

VCE  - активный по низкому уровню сигнал управления режимом ожидания статической памяти.   

VWR - активный по низкому уровню выход управления записью памяти дисплея.

XD0 - XD3 - 4 разрядные выходы данных Х-драйвера (управление столбцами). Выходы соединены со входами данных D3 – D0 дисплея.        

XSCL – выход, вырабатывающий сигнал тактирования для сдвигового регистра (соединён со входом CP дисплея). Задний фронт XSCL защёлкивает данные XD0…XD3 на входе регистра сдвига.   

LP – защёлка импульса. Защёлкивает сигнал на сдвиговых регистрах Х-драйвера в защёлках выходных данных. LP - сигнал, отпирающий по заднему фронту, и приходящий один раз в каждой строке дисплея.       

YD – пусковой импульс развёртки. Он действует во время последней строки каждого кадра и сдвигает Y-драйверы один за другим (по YSCL), для проверки общих соединений дисплея.

Входы:

XG и XD – входы, к которым подключается внешний тактовый генератор

VDD - напряжение питания от 2.7 В до 5.5 В.

VSS – общий вывод.

D0 - D7 – шина данных. Контакты входа/выхода на три состояния. Подключаются к микропроцессорной шине данных.

SEL1 и SEL2 – контакты выбора интерфейса микропроцессора (таблица 3.2).

Таблица 3.2 – Виды интерфейсов, поддерживаемые контроллером SED1335

SEL1

SEL2

Интерфейс

A0

RD

WR

CS

0

0

Семейство 8080

A0

RD

WR

CS

1

0

Семейство 6800         

A0

E

R/W

CS

A0 – выбор типа данных. А0, в конъюнкции с сигналами RD и WR или R/W и Е, контролирует тип доступа к SED1335F, как показано ниже в таблице 3.3.

Таблица 3.3 – Функции, поддерживаемые контроллером SED1335, настроенного на интерфейс семейства 8080

А0

RD

WR

Функция

 0

0

1

Чтение флага статуса

 1

0

 1

Чтение данных дисплея и адрес курсора

 0

1

 0

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

 1

1

0

Запись команды

RD или E – сигнал чтения или разрешения. Когда выбран интерфейс семейства 8080, этот сигнал действует как активный низко уровневый строб-импульс чтения.    

WR или R/W – сигнал записи. Когда выбран интерфейс семейства 8080, этот сигнал действует как активный низко уровневый строб-импульс чтения. Шина данных защёлкивается по переднему фронту этого сигнала.

CS - выбор чипа. Этот активный по низкому уровню вход разрешает SED1335F.

RES – сброс. Этот активный по низкому уровню вход осуществляет аппаратный сброс SED1335F.

Схема представлена на рисунке 3.8.

Рисунок 3.8 – Схема подключения ЖКД

  4. Описание работы устройства

Аналоговый сигнал подаётся на вход Ain1 или Ain2. Сигнал ослабляется или усиливается по амплитуде в зависимости от заданного количества вольт на деление. После этого он преобразуется в дифференциальную форму трансформатором. И затем попадает на аналоговый вход АЦП. АЦП оцифровывает сигнал и каждые 25 нс на цифровых выходах АЦП появляется цифровой код соответствующий определённому уровню напряжения. Этот цифровой код считывается МК и записывается в память XRAM через промежуток времени, зависящий от количества секунд на деление. То есть происходит прореживание цифрового кода.

После записи в память, МК не реагирует ни на какие прерывания, а выводит информацию о сигнале в виде осциллограммы на ЖКД. После вывода одного кадра происходит считывание следующего кадра с выходов АЦП.

5 Описание программы для микроконтроллера

Разработка программы для МК C8051F120 фирмы Silicon Laboratories с системой команд совместимой с MCS – 51 проводилось с помощью программного продукта Keil mVision2 версии 2.40a, симулирующего работу МК.

Программа состоит из блока настройки портов ввода – вывода, генератора, периферийных устройств, прерываний, ЖКД и подпрограммы для ввода данных с АЦП - InputADC. На рисунке 5.1 показана блок – схема алгоритма программы для МК.

Используемые в программе переменные:

–       kfn – коэффициент частоты дискретизации (n=1 или 2 – номер канала);

–       CoefAmplif – содержит число выводимое в порт P6 для задания коэффициента усиления;

–       i – переменна – счётчик;

–       Num – переменная, используема для записи в XRAM последовательности чисел;   

–       Switch – порт, управляющий аналоговыми коммутаторами;

–       Button_kf – порт, к которому подключены кнопки задающие kf

–       Button_CefAmplif - порт, к которому подключены кнопки задающие CefAmplif

–       Padc1 – АЦП канал 1;

–       Padc2 – АЦП канал 2;

Сначала программа подключает файл с определением регистров специального назначения, которые имеются в данном микроконтроллере. Регистрам общего назначения присваиваются имена переменных приведённых выше. Порты P4 и P5 подключены к цифровым выходам АЦП и настроены как цифровые входы с открытым стоком. С помощью приоритетного декодера матрицы на разряд P0.0 выводится сигнал тактирования АЦП с частотой SYSCLK/4 (SYSCLK=100 МГц).  

В переменную kf производится запись в младшие четыре разряда – коэффициента kf1 для задания частоты дискретизации сигнала с канала 1 и в старшие четыре разряда -  коэффициента kf2 для задания частоты дискретизации сигнала с канала 2. Связь значения коэффициента и частоты дискретизации приведена в таблице 3.1 (n=1 или 2).

Таблица 5.1 – Связь коэффициента частоты и периода дискретизации

kfn

f, Гц

T, с

TimeOnDiv

1

10М

100н

4 мкс

2

200н

5 мкс

3

2.5М

400н

10 мкс

4

500к

2мк

50 мкс

5

250к

4мк

100 мкс

6

50к

20мк

500 мкс

7

25к

40мк

1 мс

8

200мк

5 мс

9

2.5к

400мк

10 мс

10

500

50 мс

11

250

100 мс

        

Частота дискретизации соответствующая количеству секунд на деление определяется по формуле:

   ,                         (3.3)

где  n – количество байт содержащих информацию об уровне сигнала;  

       TimeOnDiv – количество секунд на деления;

       tmax и tmin – границы временного интервала.

            Скорость работы МК позволяет сохранять информацию  о сигнале за 90 нс. Поэтому максимальная частота дискретизации сигнала

                                             (5.1) .

Необходимая частота дискретизации сигнала задаётся с помощью задания задержки между считываниями данных с АЦП. Для создания задержки используется таймер TMR3. Таймер тактируется системным тактовым сигналом, и изменение значения таймера на 1 происходит каждые 10 нс. Для создания необходимой задержки в таймер записывается число, с  которого он начинает счёт. Флаг переполнения таймера проверяется до тех пор, пока таймер не переполнится. Таким образом, создаётся задержка с точностью до 10 нс.

В переменную CoefAmplif загружается байт данных, содержащий информацию о коэффициенте усиления и о виде измеряемого напряжения (переменного или постоянного). Биты 7 и 6 управляют ключами S2A и S2C соответственно, которые подключают или отключают конденсатор. Биты 5, 4, 3 и 2, 1, 0 задают коэффициент усиления или ослабления Ku для канала 1 и канала 2 соответственно.

Связь Ku и вида измеряемого напряжения с числом в переменной  CoefAmplif приведена в таблице 5.2 (n=1 или 2 – номер канала).

Таблица 5.2 – Зависимость Ku и вида напряжения от CoefAmplif

CoefAmplif

Вид напряжения

Kun

XX 000 000

X

1/2

XX 001 001

X

1/5

XX 010 010

X

1/10

XX 011 011

X

10

XX 100 100

X

1

XX 000 000

DC

X

XX 000 000

AC

X

         Ниже представлена блок-схема программы для МК.

 SHAPE  * MERGEFORMAT

Начало

Объявление переменных

Отключение WDT

Настройка портов ввода - вывода

Настройка генератора

Настройка таймеров

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

Подпрограмма ввода данных  с АЦП

Подпрограмма преобразования данных для вывода на ЖКИ

1

1

Считывание данных с портов P6 и P7

Вывод значения CoefAmplif в порт P2

Настройка контроллера SED1335

Вывод осциллограммы

Рисунок 5.1 – Блок схема алгоритма программы для МК

Ниже приведено более подробное описание настройки контроллера SED1335.

После вывода кода 40h (команда «System Set») на шину данных контроллера, производится вывод восьми байтов (P1 – P8), содержащих параметры команды.

В программе задаются следующие значения этих параметров:

P1=30h.

M0=0 - внутренний генератор символов ROM.

М1=0 - генератор символов RAM1; 32 знака.

М2=0 - высота символа 8 пикселов (2716 или эквивалент ROM).

W/S=0 -  однопанельное управление

IV=1- нет коррекции верхней строки экрана (нет смещения)    

T/L=1 - режим ТВ

DR=0 - нормальная операция

P2=87h.

FX=7h - ширина символа равна 8 пикселей.

WF=1 - двухкадровое управление АС

P3 = FY= 07h - высота символа равна 8 пикселей.

P4 = С/R = 27h - адресный диапазон равен 40 байтов на одну строку дисплея.

P5 = TC/R =39h - длина строки равна 58 байтов.

P6 = L/F = EFh -  количество линий на кадр равно 240.

P7 = AL = 28h и P8 = AH = 0 - горизонтальный адресный диапазон (текстовый) равен 40.

Значения параметров команды «Scroll» (код 44hрр):

P1 = SAD 1L = 0 и P2 = SAD1H = 0 - начальный адрес первого экранного блока прокрутки.

P3 = SL1 = P6 = SL2 = EFh - 255 строк на прокручиваемый блок.

P4 = SAD2L = B0h и P5 = SAD2H = 04h - начальный адрес второго блока прокрутки.

P7 = SAD3L = 0h и P8 = SAD3H = 0h - начальный адрес третьего блока прокрутки.

P9 = SAD4L = 0h и P10 = SAD4H = 0h - начальный адрес четвёртого блока прокрутки.

Значения параметров команды «CURSOR FORM» (код 5Dhрр):

P1= CRX = 04h – ширина курсора равна 5 пикселей.

P2 = 86h.

CRY = 6h - высота курсора равна 7 пикселей

CM = 1 – блочный курсор.

Далее выставляется команда  «CURSOR DIRECTION» с кодом  4Сhрр. Два младших бита кода команды CD1 и CD2 сброшены, поэтому курсор будет двигаться вправо.

Значения параметра команды «HORIZONTAL SCROLL RATE» (код 5Ahрр):

P1 = 0 – ноль пикселей для прокрутки.

Значения параметра команды «OVERLAY» (код 5Ahрр): P1 = 01h.

MX0 = 0 и MX1 = 1 - метод композиции наслоённого экрана следующий: (L1 and L2) or L3.

DM1 = DM2 = 0 – текстовый режим отображения блоков экрана 1 и 3, соответственно.

         Командой «DISPLAY ON/OFF» (код 59h)  включается дисплей (P1=16h).

         Изображение выводится на дисплей сканированием его памяти. Курсор двигается слева направо и сверху вниз. Каждый бит в памяти соответствует пикселю на дисплее. Контроллер настроен так, что ширина горизонтальной линии равна 40 байтов (40*8=320) и этих линий 240. Контроллер сканирует память дисплея, пока не достигнет конца ряда, а потом переходит на следующий ряд. То есть адрес начала ряда  с номером n равен 40*n или 28h*n.

         Информация о сигнале с канала 1 хранится в XRAM микроконтроллера по адресу 000h – 0F0h (240 байтов).

         Для отображения осциллограммы по вертикали нужно 256 пикселей, так как АЦП 8 – ми разрядный. По горизонтали будем использовать 240 пикселей. То есть размер графического экрана равен XRAM по адресу 0200h – 1FFFh.

         Коду 0 соответствует напряжение -0.512 В, а коду 255 соответствует напряжение +0.512 В. Коду 128 – напряжение 0 В. В каждом байте, которые хранятся по адресу 000h – 0F0h содержится номер пикселя в строке дисплея, который нужно зажечь. Адрес байта – это номер строки (Рисунок 5.2).

 SHAPE  * MERGEFORMAT

0h

1Fh

27h

2580h

.

.

.

 .   .   .

.

.

.

 .   .   .

 .   .   .

 .   .   .

240

линий

40 байтов

240

Осциллограмма

Рисунок 5.2 – Соответствие байтов памяти дисплея и положения пикселей на дисплее.

            На рисунке 5.3 более подробно приведены блок-схемы подпрограмм для записи команд и данных в память дисплея.

           

Перед выводом осциллограммы посылается команда с кодом 46h «CSRW» - установка адреса курсора. У неё два параметра – два байта шестнадцатиразрядного адреса. Мы устанавливаем курсор в начало графической страницы.

Осциллограмма выводится путём подачи команды «MWRITE» контроллеру SED1335. После выставления кода команды 42h производится посылка байтов данных в память дисплея.

         Текст программы представлен в приложении A. В программе приведена только подпрограмма InputADC1, так как подпрограмма InputADC2 – такая же.

Изменены лишь названия переменных.

 SHAPE  * MERGEFORMAT

Начало

A0=1

(тип данных -  команды)

Вывести на P1 код команды

 CS =0

(контроллер выбран)

WR =0 (запись)

Загружен последний параметр ?

Подпрограмма Write

нет

да

Загрузка в Acc значения параметра из ПЗУ

Загрузка в R1 содержимого Acc

Начало

Выход

Выход

DPTR++

WrComm

WrData

Начало

A0=0

(тип данных -  параметры)

Write

Рисунок 5.3 – Блок схема алгоритма подпрограммы WrComm и WrData

         240 команд идущих подряд, записывающих данные с АЦП с частотой дискретизации 10 МГц также не приведены.

ПРИЛОЖЕНИЕ A

Программа для МК цифрового осциллографа.

;--------------------------------------------------------------------------------

;     НГТУ РЭФ Кафедра ЭП  2006г.

;     Азанов М.А. РЭ3-11

;     FILE NAME   : dig_osc.asm

;     TARGET MCU  : C8051F120

;     DESCRIPTION : Программа для МК цифрового осциллографа.

;     NOTES       : Прием данных с АЦП, сохранение выборки в памяти, вывод данных

;                   на ЖКИ, прием данных о параметрах сигнала и установка нужной

;                   частоты дискретизации и уровня сигнала

;----------------------------------------------------------------------------------

$include (c8051f120.inc) 

;-------------------------

;Объявление переменных

;-------------------------

kf equ      R0    ;коэффициент частоты дискретизации

; kfn f        Т

; 1    10М     100н            

; 2    5М      200н

; 3   2.5М     400н

; 4  500к     2мк

; 5  250к     4мк

; 6    50к     20мк

; 7    25к     40мк

; 8    5к      200мк

; 9   2.5к     400мк

;10   500      2м

;11   250      4м

CoefAmplif equ R2  ;коэффициент усиления 

i equ R3           ;переменная - cчётчик1

Num equ R4

kf1 equ R5

kf2 equ R6

switch equ P2      ;порт, управляющий аналоговыми коммутаторами

Button_kf equ P6

Button_CoefAmplif equ P7

Padc1 equ P4         ;АЦП канал 1

Padc2 equ P5         ;АЦП канал 2

;-----------------------------------------------------------------------------

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

;-----------------------------------------------------------------------------

      cseg AT 0   ;Определение сегмента в адресном пространсве CODE по адресу 0

      jmp Config      ;Относительный переход на Config

;------------------------------------

; Объявленеие сегмента Main

;------------------------------------

Main segment CODE ;объявление сегмента Main, имеющего класс памяти CODE

     rseg Main          ;выбор сегмента Main

     using    0         ;использовать банк регистров 0

Config:

      mov SP,#07Fh      ;стек расположен по адресу 80h в ОЗУ

;----------------------------------------------------------------

; Настройка WDT

;----------------------------------------------------------------

;Отключение WDT

      clr EA             ;Запретить все прерывания

      mov WDTCN, #0DEh

      mov WDTCN, #0ADh

      setb EA   

                 

;----------------------------------------------------------------

; Настройка портов ввода-вывода

;----------------------------------------------------------------

      mov SFRPAGE, #00Fh ;Переход на страницу F  SFR

;Связывание периферийных устройств с разрядами портов

      mov XBR0, #000h  

                              

      mov XBR1, #080h   ;биты      SYSCKE T2EXE T2E INT1E T1E INT0E T0E CP1E

                  ;значения     1      0   0    0    0    0    0    0

                  ;/SYSCLK подключен

                            

      mov XBR2, #040h   ;биты       WEAKPUD XBARE CNVST2E T4EXE T4E UART1E EMIFLE CNVST0E

                    ;значения      0      1     0        0   0    0       0      0

                  ;Разрешить установленные перемычки

     

;Настройка режимов вывода разрядов портов

;1 - режим Push-Pull

;0 - режим Open-Drein

      mov P0MDOUT, #03Fh 

;Результат настройки портов ввода-вывода

;порт P0

       ;P0.0 = SYSCLK     (Push-Pull Output)(Digital)

       ;P0.1 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.2 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.3 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.4 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.5 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.6 = GP I/O     (Open-Drain Output/Input)(Digital)

       ;P0.7 = GP I/O     (Open-Drain Output/Input)(Digital)

      mov P1MDOUT, #0FFh

      mov P3MDOUT, #0FFh

;----------------------------------------------------------------

; Настройка генератора (SYSCLK=100 МГц и на P0.6 выводится 50 МГц )

;----------------------------------------------------------------

      mov SFRPAGE, #00Fh

      mov OSCICN, #083h ;1    ;биты     IOSCEN IFRDY - - - - IFCN1 IFCN0

                         ;значения    1     0             1     1

                 

                         ;внутренний генератор разрешён

                         ;частота не программируется

                         ;значение предделителя = 1 (SYSCLK=25 МГц)

      mov PLL0CN, #000h ;2    ;PLL использует в качестве опорной частоты

                        ;частоту внутреннего генератора

      mov SFRPAGE, #000h

      mov FLSCL, #030h  ;3    ;биты      -  -   FLRT   - - - FLWE 

                          ;значения         1  1           0

                        ;стирание и запись Flash памяти запрещена

                        ;Память работает на частоте SYSCLK <= 100 MHz

      mov SFRPAGE, #00Fh

      mov PLL0CN, #001h  ;4   ;PLL включен

      mov PLL0DIV, #001h ;5   ;предделитель PLL установлен в 1

     

      mov PLL0FLT, #001h ;6   ;диапазон частот, которые делятся 19-30 МГц

                     ;7   ;выходная частота PLL = 65-100 МГц

      mov PLL0MUL, #004h ;8   ;коэффициент умножения PLL равен 4

      ;задержка - 5 мкс  ;9

      mov i, #040h            ;установка задержки

      djnz i, $               ;i-- и переход на себя, если не 0

   

      mov PLL0CN, #003h  ;10  ;включение PLL

     

      mov i, #0FFh            ;установка задержки

PLL_WAIT:

      dec i

      mov ACC, i        ;если нет синхронизации с PLL в течении 5us,

      jz PLL_NOWAIT           ;то ошибка в установках PLL

      mov ACC, PLL0CN

      jnb ACC.4, PLL_WAIT     ;задержка до появления синхроимпульсов с PLL

      mov CLKSEL, #022h ;системная частота берётся с PLL и

                        ;делится на 4 перед выводом на P0.0

PLL_NOWAIT:

     

;----------------------------------------------------------------

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

;----------------------------------------------------------------

;таймер 3 используется для задания частоты дискретизации сигнала с АЦП

 

      mov SFRPAGE, #001h;

      mov TMR3CF, #008h  ; Таймер 3 тактируется от частоты SysClk

                 

;----------------------------------------------------------------

; Настройка прерываний

;----------------------------------------------------------------

      mov SFRPAGE, #000h

      mov IE, #000h          ;Запретить все прерывания

      mov IP, #000h          ;Все устройства имеют низкий приоритет

;-----------------------------------------------------------------

; Главная часть программы

;-----------------------------------------------------------------

; Настройка контроллера SED1335

ConfigSED1335:

      mov R1,#40h    ;установка системы   

      lcall WrComm

      mov DPTR,#msg1 ;параметры установки системы

      lcall WrData

      mov R1,#44h    ;прокрутка

      lcall WrComm

      mov dptr,#msg2 ;параметры прокрутки

      lcall WrData

      mov r1,#5Dh    ;форма курсора

      lcall WrComm

      mov dptr,#msg3 ;параметры курсора

      lcall WrData

      mov r1,#4Ch    ;направление курсора

      lcall WrComm

      mov R1,#5Ah  ;прокрутка по точкам

      lcall WrComm

      mov DPTR,#msg18  ;параметр прокрутки по точкам

      lcall WrData

      mov dptr,#5Bh  ;наложение

      lcall WrComm

      mov dptr,#msg4 ;параметр наложения

      lcall WrData

     

      mov r1,#59h    ;включение/выключение дисплея

      lcall WrComm

      mov dptr,#msg5; параметр дисплея

      lcall WrData

Dig_osc: 

      mov kf,Button_kf 

     

;Выделение битов b2,b1,b0 и запись в kf1

      mov A, kf

      anl A, #007h

      mov kf1, A

;Выделение битов b5,b4,b3 и запись в kf2

      mov A, kf

      RR A

      RR A

      RR A

      anl A, #007h

      mov kf2, A

 

      mov CoefAmplif,Button_CoefAmplif

      mov switch,CoefAmplif

      call InputADC1

      call Converting

; Вывод осциллограммы

      mov R1,#46h; установка курсора

      lcall WrComm

      mov DPTR,#msg6

      lcall WrData

     

      mov R1,#42h; запись в память дисплея

      lcall WrComm

      mov DPTR,#00h

M0:   movx A, @DPTR           ;загрузка в A данных из XRAM

      cjne A, #0A1h, M1       ;загружены все данные?

      ljmp M2

M1:

      mov R1, A

      clr p3.2    ;a0=0=данные

      mov A, R1   ; послать байт данных

      mov P1, A

      clr P3.0    ; CS - строб

      clr P3.1    ; дисплея

      setb P3.1

      setb P3.0

      inc DPTR

      sjmp M0   ; следующий байт

M2:

      sjmp Dig_osc

; Подпрограммы

; WrComm посылает байт в контроллер в виде команды

WrComm:

      setb P3.2   ; a0=1=команда

WrComm_1:

      mov A, R1   ; послать байт данных

      mov P1, A

      clr P3.0    ; CS - строб

      clr P3.1    ; дисплея

      setb P3.1

      setb P3.0

      ret

Write:  clr p3.2       ;a0=0=данные

      sjmp WrComm_1

; WrData посылает байт на который указывает

; DPTR в контроллер ввиде данных.

WrData: clr A                

      movc A, @A+DPTR       ;загрузка в A значения параметра, записанного в ПЗУ

      cjne A, #0A1h, WrData1;загружены все параметры?

      ret

WrData1:

      mov R1, A

      lcall Write   ; отправить

      inc DPTR

      sjmp WrData   ; следующий байт

;-----------------------------------------------------------------

; Подпрограмма ввода с канала 1 АЦП

;-----------------------------------------------------------------

InputADC1:

      mov SFRPAGE, #00Fh                            

;Ввод в XRAM 240 байтов

      cjne kf1,#001h,_5MHz1

;--------------------------

;Частота дискретизации 10 МГц

;--------------------------

_10MHz1:

      mov DPTR, #000h         ;3 

      mov ACC, Padc1            ;3

      movx @DPTR, A             ;3         

      nop               ;1

      mov DPTR, #001h          

      mov ACC, Padc1           

      movx @DPTR, A                        

      nop  

      mov DPTR, #002h          

      mov ACC, Padc1           

      movx @DPTR, A                        

      nop              

;     .

;     .

;       .

      mov DPTR, #0EFh          

      mov ACC, Padc1           

      movx @DPTR, A                        

      nop  

;---------------------------

;Частота дискретизации 5 МГц

;---------------------------

_5MHz1:

      cjne kf1, #002h, _2_5MHz1

      mov DPTR, #000h  

Input1_2:

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      ;задержка 70 нс

      nop

      nop

      nop

      nop

      nop

      nop

      nop

      cjne A, DPL, Input1_2       

;-----------------------------

;Частота дискретизации 2.5 МГц

;-----------------------------

_2_5MHz1:

      cjne kf1, #003h, _500KHz1

      ; Задание числа c которого считает таймер

     

      mov DPTR, #000h  

Input1_3:

      mov A, Padc1        ;2     

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      ;задержка 270 нс

      mov i,#008h       ;2

      djnz i,$            ;3

      nop

      nop

      cjne A, DPL, Input1_3       

;-----------------------------

;Частота дискретизации 500 КГц

;-----------------------------

_500KHz1:

      cjne kf1, #004h, _250KHz1

      ; Задание числа c которого считает таймер

      mov SFRPAGE, #001h

      mov RCAP3H,#0FFh

      mov RCAP3L,#05Ch

           

      mov DPTR, #000h  

Input1_4:

      mov SFRPAGE, #00Fh  ;3

      mov A, Padc1          ;2  

      movx @DPTR, A         ;3             

      inc DPTR        ;1   

      mov A, #0F0h          ;2   

      mov SFRPAGE, #001h  ;3

      mov TMR3CN, #004h   ;3

     

      ;задержка 1690 нс

      jnb TMR3CN.7,$     ;4

      nop

      nop

      mov TMR3CN,#000h   ;3

      mov TMR3H,#0FFh ;3

      mov TMR3L,#05Ch ;3

      cjne A, DPL, Input1_4  ;5   

;-----------------------------

;Частота дискретизации 250 КГц

;-----------------------------

_250KHz1:

      cjne kf1, #005h, _50KHz1

      ; Задание числа c которого считает таймер

      mov SFRPAGE, #001h

      mov RCAP3H,#0FEh

      mov RCAP3L,#094h

           

      mov DPTR, #000h  

Input1_5:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h  

     

      ;задержка 3690 нс

      jnb TMR3CN.7,$

      nop

      nop

      mov TMR3CN,#000h       

      mov TMR3H,#0FEh ;3

      mov TMR3L,#094h ;3

      cjne A, DPL, Input1_5       

;-----------------------------

;Частота дискретизации 50 КГц

;-----------------------------

_50KHz1:

      cjne kf1, #006h, _25KHz1

      ;Задание числа c которого считает таймер

     

      mov SFRPAGE, #001h

      mov RCAP3H,#0F8h

      mov RCAP3L,#054h

      mov DPTR, #000h  

Input1_6:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h

        

      ;задержка 19690 нс

      jnb TMR3CN.7,$    

      nop

      nop

      mov TMR3CN,#000h 

      mov TMR3H,#0F8h

      mov TMR3L,#054h

      cjne A, DPL, Input1_6       

;-----------------------------

;Частота дискретизации 25 КГц

;-----------------------------

_25KHz1:

      cjne kf1, #007h, _5KHz1

      mov SFRPAGE, #001h

      mov RCAP3H,#0F0h

      mov RCAP3L,#084h

      mov DPTR, #000h  

Input1_7:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h  

      ;задержка 39 690 нс

      jnb TMR3CN.7,$

      nop

      nop

  

        mov TMR3CN,#000h 

      mov TMR3H,#0F0h

      mov TMR3L,#084h

     

      cjne A, DPL, Input1_7       

;-----------------------------

;Частота дискретизации 5 КГц

;-----------------------------

_5KHz1:

      cjne kf1, #008h, _2_5KHz1

      mov SFRPAGE, #001h

      mov RCAP3H,#0B2h

      mov RCAP3L,#004h

      mov DPTR, #000h  

Input1_8:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h  

      ;задержка 199690 нс

      jnb TMR3CN.7,$  

      nop

      nop 

        mov TMR3CN,#000h 

      mov TMR3H,#0B2h

      mov TMR3L,#004h

     

      cjne A, DPL, Input1_8       

;-----------------------------

;Частота дискретизации 2.5 КГц

;-----------------------------

_2_5KHz1:

      cjne kf1, #009h, _500Hz1

      mov SFRPAGE, #001h

      mov RCAP3H,#063h

      mov RCAP3L,#0E4h 

      mov DPTR, #000h  

Input1_9:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h

      ;задержка 399 690 нс

      jnb TMR3CN.7,$ 

      nop

      nop  

     

      mov TMR3CN,#000h 

      mov TMR3H,#063h

      mov TMR3L,#0E4h

     

      cjne A, DPL, Input1_9       

;-----------------------------

;Частота дискретизации 500 Гц

;-----------------------------

_500Hz1:

      cjne kf, #010h, _250Hz1

      ; Задание числа c которого считает таймер

     

      mov SFRPAGE, #001h

      mov RCAP3L,#000h

      mov RCAP3H,#000h

      mov DPTR, #000h  

Input1_10:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h  

      mov TMR3CN, #004h

     

      ;задержка 1 999 690 нс

      mov i,#3

M1_10:

      mov TMR3CN, #004h

      jnb TMR3CN.7,$  

 

        mov TMR3CN,#000h 

            mov TMR3H,#000h

      mov TMR3L,#000h

     

      djnz i, M1_10    

     

      cjne A, DPL, Input1_10      

;-----------------------------

;Частота дискретизации 250 Гц

;-----------------------------

_250Hz1:

      cjne kf1, #011h, ExitInputADC

      ; Задание числа c которого считает таймер

     

      mov SFRPAGE, #001h

      mov RCAP3L,#000h

      mov RCAP3H,#000h

      mov DPTR, #000h  

Input1_11:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h

     

      ;задержка 3 999 690 нс

      mov i,#006d

M1_11:

      mov TMR3CN, #004h  

      jnb TMR3CN.7,$    

   

      mov TMR3CN,#000h 

      mov TMR3H,#000h

      mov TMR3L,#000h

     

      djnz i, M1_11

     

      cjne A, DPL, Input1_11

     

ExitInputADC:    

      ret

;----------------------------------------------------------------

; Подпрограмма заполняет память XRAM данными,

; которые записываются в память дисплея

;----------------------------------------------------------------

Converting:

      mov DPTR, #200h

L1:   ;Смещение адреса на 240 байтов назад

      mov A, DPH

      clr C

      subb A, #02h

      mov DPH,A

     

      movx A, @DPTR 

      mov R1, A      ;в R1 номер пикселя в строке

           

        ;вычисление адреса байта на дисплее

      mov B, #08h

      div AB

      mov R3, A ; в R3 адрес байта

     

      ;вычисление номера пикселя в байте

      inc A

      mov B, #08h

      mul AB

      clr C

      subb A, R1

     

      ;установка бита в байте

      mov R7, A

      inc R7

      mov A, #01h

L0:   RLC A

      dec R7

      cjne R7, #00h, L0

      mov R7, A ; в R7 содержимое байта

      ;запись в XRAM байта с установленным битом    

      mov DPH, #02h

      mov DPL, R3

      mov A,R7

      movx @DPTR, A

     

      mov A, DPH

      cjne A, #1Fh, L1 

;Запись метки конца массива данных

      mov DPTR, #2000h

      mov A, #0A1h

      movx @DPTR, A

      ret

;----------------------------------------------------------------

; Таблицы и данные

;----------------------------------------------------------------

; Инициализация параметров SED1335.

;установка системы

msg1: db 30h, 87h, 07h, 27h, 39h, 0EFh, 28h, 0h, 0A1h

;прокрутка

msg2: db 0, 0, 0EFh, 0B0h, 04h, 0EFh, 0, 0, 0, 0, 0A1h

msg3: db 04h, 86h, 0A1h; форма курсора

msg4: db 01h, 0A1h; параметр наложения

msg5: db 16h, 0A1h; включение/выключение дисплея

msg6: db 0B0h, 04h, 0A1h; установка курсора на графическую страницу

msg11: db, 01Ah

msg18: db 0, 01Ah; параметр прокрутки по горизонтали

END

Заключение

После выполнения работы была разработана цифрового осциллографа, придумана программа для МК.

В ходе проделанной работы были изучены:

–       принципы построения цифровых осциллографов

–       документация на выбранные микросхемы

–       принцип работы ЖКД

Цифровой осциллограф позволяёт наблюдать на ЖКД переменное напряжение любо частоты до 10 МГц. Также можно исследовать два сигнала одновременно.

Частота дискретизации и коэффициент ослабленияусиления сигнала задаются кнопками.

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

Список использованных источников

1.     Б.П. Хромой, Ю.Г. Моисеев. Электрорадиоизмерения. Учебник для техникумов. – M: Издательство "Радио и связь", 1985г.

2.     ADG211- Документация. Режим доступа: [http://www.analog.com/UploadedFiles/Data_Sheets/74187780adg211a2.pdf].

3.     AD8008 – Документация. Режим доступа: [http://www.analog.com/UploadedFiles/Data_Sheets/3836143348442092336AD8007_8_d.pdf].

4.     AD9288 – Документация. Режим доступа: [http://www.analog.com/UploadedFiles/Data_Sheets/54479363AD9288_c.pdf].

5.     C8051F120 – Документация. Режим доступа: [http://www2.silabs.com/public/documents/tpub_doc/dsheet/Microcontrollers/Precision_Mixed-Signal/en/C8051F12x-13x.pdf].

6.     SED1335 – Перевод документации. Режим доступа: [http://www.ineltek.ru/html.cgi/txt/lcd/chips/sed1335/index.php].

Доработка цифрового осциллографа

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

 По умолчанию осциллограф работает в автоколебательном режиме. При ждущем режиме сигнал отображается не непрерывно, а только с приходом сигнала. При этом происходит отображение сигнала полностью. В однократном режиме сигнал оцифровывается и отображается при нажатии кнопки «СТАРТ».

Также обычно имеется возможность выбирать источник синхронизации внешний или внутренний. При внутренней синхронизации сигнала при рисовании графика функции U(t), момент времени t=0 делают совпадающим с моментом начала следующего периода исследуемого аналогового сигнала на входе осциллографа, а при внешней – с моментом начала внешнего сигнала синхронизации.

В автоколебательном режиме для получения чёткого изображения на панель прибора выводится регулятор уровня запуска (LEVEL) и переключатель выбора запускающего перепада положительного или отрицательного (SLOPE).

Переключатель SLOPE определяет на фронте или на спаде импульса будет находиться точка запуска развертки (Рисунок 1).  

Рисунок 1 – Регулировка наклона и уровня

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

Дле регулировки уровня подключим ко входу Ain0.0 потенциометр. Напряжение на Ain0.0 может меняться от 0 до 1 В. Ain0.0 подключим при программировании к 10 – ти разрядному ADC0.

Рисунок 2 – потенциометр для регулировки уровня

Для настройки АЦП0 загружаются регистры AMX0CF, AMX0SL, ADC0CF, ADC0CN значениями приведёнными в таблице 1.1.

Таблица 1.1 – Регистры для настройки и управления АЦП0

Название регистра

Значение

Описание

AMX0CF

xxxx0000

Регистр настройки AMUX0

AMX0SL

xxxx0000

Регистр выбора канала AMUX0

ADC0CF

11111000

Регистр конфигурации АЦП0

ADC0CN

10000000

Регистр управления АЦП0

ADC0H

11111111

Регистр старшего байта слова данных АЦП0

ADC0L

11111111

Регистр младшего байта слова данных АЦП0

В результате настройки Ain0.0 - Ain0.7 – независимые одиночные входы.

Выбран канал Ain0.0 мультиплексора.

Частота дискретизации вычисляется из формулы:

 ,

где - системная тактовая частота (100 МГц);

 - число, задаваемое битами 3 – 7 регистра ADC0CF.

Коэффициент усиления встроенного усилителя равен 1.

Более подробно опишем назначения битов регистра ADC0CN:

Бит 7: AD0EN: Бит включения АЦП0.

0: АЦП0 отключен. АЦП0 находится в режиме пониженного энергопотребления.

1: АЦП0 включен. АЦП0 находится в активном режиме и готов к преобразованию данных.

Бит 6: AD0TM: Бит установки режима слежения АЦП0.

0: Нормальный режим слежения: Когда АЦП0 включен, слежение осуществляется всегда, за исключением момента преобразования.

1: Энергосберегающий режим слежения: Режим слежения определяется битами AD0CM1-0 (см. ниже).

Бит 5: AD0INT: Флаг прерывания от АЦП0 (устанавливается при завершении преобразования).

Этот флаг должен быть сброшен программно.

0: АЦП0 не закончил преобразование данных (с момента последнего обнуления этого флага).

1: АЦП0 закончил преобразование данных.

Бит 4: AD0BUSY: Бит занятости АЦП0.

Чтение:

0: Преобразование данных завершено или в данный момент преобразование не осуществляется.

При аппаратном обнулении этого бита флаг AD2INT устанавливается в 1.

1: Идет процесс преобразования данных АЦП0.

Запись:

0: Не оказывает никакого влияния.

1: Инициирует запуск преобразования АЦП0, если биты AD2CM1-0 = 00b.

Биты 3-2: AD0CM1-0: Биты выбора режима запуска преобразования АЦП0.

Если AD2TM = 0:

00: Запуск преобразования осуществляется установкой в 1 бита AD2BUSY.

01: Запуск преобразования осуществляется при переполнении Таймера 3.

10: Запуск преобразования осуществляется нарастающим фронтом внешнего сигнала CNVSTR2.

11: Запуск преобразования осуществляется при переполнении Таймера 2.

Если AD2TM = 1:

00: слежение (выборка) начинается в момент установки в 1 бита AD2BUSY и длится 3 периода сигнала дискретизации АЦП0; затем начинается преобразование данных.

01: слежение (выборка) начинается при переполнении Таймера 3 и длится 3 периода сигнала дискретизации АЦП0; затем начинается преобразование данных.

10: слежение (выборка) происходит лишь при низком уровне сигнала на входе CNVSTR2; преобразование запускается нарастающим фронтом сигнала на входе CNVSTR2.

11: слежение (выборка) начинается при переполнении Таймера 2 и длится 3 периода сигнала дискретизации АЦП0; затем начинается преобразование данных.

Бит 1: AD2WINT: Флаг прерывания от детектора диапазона АЦП0 (сбрасывается программно)

0: Преобразованные данные не соответствуют заданному диапазону (с момента последнего обнуления этого флага).

1: Преобразованные данные соответствуют заданному диапазону

Бит 0: AD2LJST: Бит выравнивания результата преобразования

0: Данные в регистровой паре ADC0H:ADC0L выровнены вправо

1: Данные в регистровой паре ADC0H:ADC0L выровнены влево

 

 SHAPE  * MERGEFORMAT

Начало

Загрузка числа, с которого считает таймер 3

Загрузка  в XRAM байта по адресу addr; DPTR++

Запуск таймера

1

1

Загрузка числа, с которого считает таймер 3

Fд = 10  или 5  МГц?

нет

да

Загрузка в DPTR адреса ячейки памяти addr

Загрузка в Acc значения регистра порта P4

Загрузка из Acc в XRAM байта по адресу addr

Addr=0;

Synchronization=0

Задержка 10 или 70 нс;

Addr++

Addr=240 ?

Выход

да

нет

Таймер переполнен?

нет

да

Addr=240 ?

2

2

нет

Выход

3

4

3

4

Рисунок 3 – Блок – схема алгоритма подпрограммы InputADC1

 SHAPE  * MERGEFORMAT

3

R1=Acc ?

да

4

2

нет

Synchronization =1

да

4

нет

Synchronization =1

Загрузка ADC0L в R1

Продолжение рисунка 3

Ниже приведены фрагмент текста программы для настройки АЦП (фрагмент нужно разместить после фрагмента для настройки прерываний):

;----------------------------------------------------------------

; Настройка АЦП0

;----------------------------------------------------------------

      mov SFRPAGE, #000h

      mov AMX0CF, #000h         

      mov AMX0SL, #000h  

      mov ADC0CF, #0F8h  

mov ADC0CN, #080h

  

Дальше приведён фрагмент текста программы подпрограммы InputADC1, который соответствует частоте дискретизации 500 КГц (для остальных частот аналогично):

;-----------------------------

;Частота дискретизации 500 КГц

;-----------------------------

_500KHz1:

      cjne kf1, #004h, _250KHz1

      ; Задание числа c которого считает таймер

      mov SFRPAGE, #001h

      mov RCAP3H,#0FFh

      mov RCAP3L,#05Ch

mov R4, #000h ;переменная synchronization

      mov DPTR, #000h  

Input1_4:

      mov SFRPAGE, #00Fh  ;3

      mov A, Padc1          ;2  

      movx @DPTR, A         ;3             

      inc DPTR        ;1   

       

      cjne R3,#000h, L0

      clr AD0INT

setb AD0BUSY ; запуск АЦП

      jz AD0INT,&

mov A, ADC0L

      mov R0, A

      clr C

      subb A,R0

      cjne A, #000h, Input1_4

mov R4, #001h

mov A, #0F0h          ;2   

L0:   mov SFRPAGE, #001h  ;3

      mov TMR3CN, #004h   ;3

     

       

      ;задержка 1690 нс

      jnb TMR3CN.7,$     ;4

      nop

      nop

      mov TMR3CN,#000h   ;3

      mov TMR3H,#0FFh ;3

      mov TMR3L,#05Ch ;3

      cjne A, DPL, Input1_4  ;5