Разработка схемы устройства 'Цифровой осциллограф' с использованием микроконтроллеров

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    114,63 Кб
  • Опубликовано:
    2012-11-06
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка схемы устройства 'Цифровой осциллограф' с использованием микроконтроллеров














разработка схемы устройства «Цифровой осциллограф» с использованием микроконтроллеров

Содержание

Введение

Обоснование выбора микроконтроллера

Краткое описание микроконтроллера Aduc812

Описание периферийных устройств

Разработка структурно-функциональной схемы

Выбор элементной базы

Разработка программной части устройства

Приложения

Введение

Целью данной курсовой работы является разработка схемы устройства - «Цифровой осциллограф» с использованием микроконтроллеров.

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

Обоснование выбора микроконтроллера

Несмотря на непрерывное совершенствование ранее созданных и разработку новых моделей 16- и 32-разрядных микроконтроллеров и микропроцессоров, наибольшая доля мирового микропроцессорного рынка остается за 8-разрядными устройствами.

Среди 8-разрядных однокристальных микроконтроллеров (ОМК) ведущие позиции, бесспорно, занимает семейство MCS-51, родоначальницей которого является фирма INTEL. На сегодняшний день известно свыше 200 модификаций ОМК семейства MSC-51, выпускаемых примерно 20 фирмами. В состав ряда модификаций MCS-51 входят как относительно простые ОМК, выпускаемые в виде 20-выводных микросхем с одним таймером и ЗУ программ емкостью до 1 Kбайт, так и 100-выводные микросхемы с набором таймеров-счетчиков, с ЗУ программ емкостью 64 Kбайт, аппаратными 16-разрядными умножителями и встроенными системами сбора данных с 10-разрядными АЦП. Ежегодно появляются новые модификации этого семейства.

Из этой серии нам наиболее знаком (по прошедши лабораторным работам) ADUC812 и самое главное данный контролер обладает всеми необходимыми средствами(АЦП, таймер и ОЗУ) для реализации поставленной задачи и имеет достаточно высокую частоту работы - 12Мгц что важно при обработке данных.

Краткое описание микроконтроллера Aduc812

Данный микроконтроллер представляет собой следующую архитектуру:

Ø  3 16-ти разрядных счетчика/таймера;

Ø  8-ми канальный 12-ти разрядный АЦП;

Ø  2 двенадцати разрядных ЦАП;

Ø  8 Кб FLASH ПЗУ;

Ø  640 байт FLASH данных;

Ø  256 Байт внутреннего ОЗУ;

Ø  позволяет адресовать 16 Мб внешнего ОЗУ;

Ø  позволяет адресовать 64 Кб памяти программ;

Ø  система прерываний имеет 9 источников, 2 уровня приоритетов;

Ø  Поддерживается последовательный канал стандарта I2C;

Ø  4 восьми разрядных порта ввода/вывода

Данный контроллер реализован в виде одноплатного модуля, имеющего в своем составе не только буферные элементы, но и внешнее ОЗУ, в которое производиться загрузка программы с персонального компьютера.


Название

Вывод

Тип

Назначение

AGND

22

I

Аналоговая земля.

DVdd

44

I

Питание +5V

P0.0-P0.7

43-46, 49-52

I/O

Порт P0. Двунаправленный порт с открытым стоком.

P1.0-P1.7

1-4, 11-14

I

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

P2.0-P2.7

28-31, 36-39

I/O

Порт P2. Двунаправленный порт с внутренними подтягивающими резисторами.

P3.0-P3.7

16-19, 22-25

I/O

Порт P3. Двунаправленный порт с внутренними подтягивающими резисторами.

XTAL1

21

I

Вход тактового генератора

XTAL2

20

O

Выход тактового генератора


Описание периферийных устройств


·        Таймеры/счётчики:

ADuC812 содержит три 16-ти разрядных счетчика таймера: Таймер0, Таймер1 и Таймер2. Каждый таймер/счетчик состоит из двух 8-ми разрядных регистров THx и TLx (х = 0, 1 и 2). Все три можно сконфигурировать как таймеры, либо как счетчики событий.

Счетчики/таймеры могут работать в 3-х основных режимах:

I. Оставлен для совместимости с 48-й серией, на таймер поступает OSC/32, разрядность 13 бит.

II.      Работает как 16-ти разрядный счетчик. При переполнении состояние изменяется с FFFFh на 0000h. При необходимости изменения коэффициента деления после переполнения в каждом такте необходимо записывать заданную константу..        Счетчик работает как 8-ми разрядный, причем используется младшая часть - TL. В старшей части (TH) находится делитель, который по переполнению TL автоматически перегружается из TH в TL.

Режимы работы таймеров Таймер0 и Таймер1 задают два регистра специальных функций (SFR - Special Function Register): регистр режима - TMOD, расположенный по адресу 89h в регистровой памяти и регистр управления таймерами и внешними прерываниями - TCON (88h). Для управления работой таймера Таймер2 служит регистр T2CON.

Регистр TMOD условно разбит на две половины: первая его часть отвечает за Таймер0, а вторая - за Таймер1.

Распределение битов регистра TMOD следующее:

Бит0 - (М0) - Младший байт поля управления режимом;

Бит1 - (М1) - Старший байт поля управления режимом;

Бит2 - (С/Т0) - Выбор функции таймера или счетчика для Таймера0: 0 - таймер; 1 - счетчик;

Бит3 - (GATE0) - Флаг управления входом:

- работа канала разрешается (INT0=1, TR=1)

- работа счетчика зависит только от TR0

Распределение битов регистра TCON следующее:

Бит0 - (IT0) - Управление типом входа INT0:

- вход прог-ся как динамич по зад фронту импльса,

- статическое состояние входа.

Бит1 - (IE0) - Флаг запроса прерывания INT0 при динамическом входе. Сбрасывается, когда происходит режим подтверждения прерывания.;

Бит2,3 - (IT1/IE1) - Тоже, что и предыдущие биты, но для Таймера0;

Бит4 - (TR0) - Флаг программного запуска Таймера0

Бит5 - (TF0) - Флаг переполнения Таймера0, который вызывает запрос прерывания. При подтверждении прерывания флаг сбрасывается;

Бит6,7 - (TR1,TF1) - Для Таймра1;

Для работы с таймером используется механизм прерываний, работой которого можно управлять через регистр маски прерываний IE (Interrupt Enable). Назначение битов регистра IE следующее:

Бит0 - (EX0) - Бит разрешения внешнего прерывания INT0.

Бит1 - (ET0) - Бит разрешения прерывания по переполнению Таймера0;

Бит2 - (EX1) - Бит разрешения внешнего прерывания INT1;

Бит3 - (ET1) - Бит разрешения прерывания по переполнению Таймера1;

Бит4 - (ES) - Бит разрешения прерывания от последовательного порта UART.

Бит5 - (ET2) - Бит разрешения прерывания по переполнению Таймера 2

Бит6 - (EADC) - Бит разрешения прерывания АЦП

Бит7 - (EA) - Бит разрешения глобального прерывания. Если EA=0, то все прерывания запрещены;

·        12-ти разрядный 8-ми канальный АЦП;

Блок АЦП представляет собой восьмиканальный пяти микросекундный преобразователь с однополярным питанием. АЦП позволяет работать как в однократном режиме измерения, так и в циклическом. Запуск на преобразование осуществляется или по внешнему сигналу, подаваемому на 23-й контакт (CONVST/) или по сигналу переполнения Таймера2.

Для управления АЦП имеется 3 основных SFR-регистра: ADCCON1, ADCCON2, ADCCON3.

Регистр ADCCON1 производит управление преобразованием, временем переключения и режимами. Структура управления бит ADCCON1 следующая:

№ бита

Мнемоника

Описание

0

EXС

Бит разрешения внешнего запуска. Если установлен, то контакт 23 (CONVST/) будет использоваться как сигнал запуска (активный низкий должен быть не менее 100 нс).

1

T2C

Бит запуска преобразования от Таймера2. Если бит установлен, то сигнал переполнения Таймера2 используется для запуска АЦП.

2

AQ0

Биты задержки переключения, выбирают время, необходимое для перезарядки УВХ при переключении мультиплексора: AQ1 AQ0 Число тактов задержки запуска АЦП 0 0 1 0 1 2 1 0 3 1 1 4

3

AQ1


4

CK0

Биты деления тактовой частоты, выбирают коэффициент деления основной частоты микропроцессора для получения тактовой частоты АЦП. Цикл преобразования АЦП занимает 16 тактов, в дополнении к числу тактов переключения. Коэффициент выбирается из:CK1 CK0 Делитель для MCLK 0 0 1 0 1 2 1 0 4 1 1 8

5

CK1


6

MD0

Биты режима выбирают режимы работы АЦП следующим образом: MD1 MD0 Режим АЦП 0 0 Дежурный 0 1 Нормальный 1 0 Дежурный, если не выполняется цикл преобразования 1 1 Холостой, если не выполняется цикл преобразования

7

MD1



Регистр ADCCON2 управляет выбором канала и режимами преобразования. Он имеет следующий формат:

№ бита

Мнемоника

Описание

0

CS0

Биты выбора входных каналов. Позволяют осуществлять выбор номера канала АЦП под управлением программы. Преобразование будет выполняться для канала, номер которого указан данными битами. В режиме ПДП выбор номера канала осуществляется из ID канала, записанного во внешней памяти. CS3 CS2 CS1 CS0 CH# 0 n2 n1 n0 Номер входного канала(n2n1n0) 1 0 0 0 Температурный сенсор 1 x x x Другие комбинации 1 1 1 1 Останов ПДП

1

CS1


2

CS2


3


4

SCONV

Бит запуска однократного преобразования. Устанавливается пользователем для однократного запуска АЦП. Бит сбрасывается автоматически по завершению преобразования.

5

CCONV

Бит циклического преобразования. Устанавливается пользователем для установки АЦП в режим непрерывного циклического преобразования. В этом режиме АЦП выполняет преобразование в соответствии с типом синхронизации и конфигурацией каналов, выбранными в других SFR.

6

DMA

Бит разрешения режима ПДП. Устанавливается пользователем для начала операции ПДП со стороны АЦП.

7

ADCI

Бит прерывания АЦП устанавливается аппаратно по окончанию однократного цикла преобразования АЦП или по окончанию передачи блока в режиме ПДП. ADCI очищает аппаратно при переходе по вектору на процедуру обслуживания прерывания.


Регистр ADCCON3 является регистром статуса АЦП и используется только для чтения. Бит 7 этого регистра - бит занятости, автоматически устанавливается в 1 во время преобразования, по окончанию цикла преобразования автоматически очищается. Биты с 0-го по 6-й зарезервированы и в программе пользователя не используются.

Как только АЦП сконфигурирован и установлен бит SCONV регистра ADCCON2 , начинается преобразование аналоговых входных сигналов и выдача 12-разрядных выходных кодов в регистры ADCDATAH и ADCDATAL.состоит из двух частей: номер канала (старшие четыре бита)+старшие разряды(младшие четыре бита), ADCDATAL содержит младшие разряды АЦП :

ADCDATAH


ADCDATAL


















не используются

старшие 4 разряда 12-разрядного слова АЦП


младшие 8 разрядов12-разрядного слова АЦП


Разработка структурно-функциональной схемы

Устройство состоит из следующих функциональных блоков:

·   Блок микроконтроллера

Осуществляет функционирование микроконтроллера. Состоит из следующих элементов:

o С1, С2, X1 - схема тактового генератора. Осуществляет выработку внешнего сигнала тактирования микроконтроллера частотой 12МГц.

o   С3, R1 - схема первоначального сброса микроконтроллера. Обеспечивает корректный запуск.

o   D1 - сам микроконтроллер.

·   Блок клавиатуры

Клавиатура состоит из 8 кнопок. Выбор уровня осуществляется нажатием одной из кнопок.

·   Блок светодиодной матричной индикации

Состоит из дешифратора кода 4х16 для индикатора.

Выбор элементной базы

При разработке устройства были использованы следующие электронные компоненты:

·        Микроконтроллер ADUC812. Этот микроконтроллер был выбран по причине хорошего соответствия поставленной задаче и низкой стоимости.

·        Микросхема К555ИД3, представляющая собой дешифратор-демультиплексор кодов 4 на 16 с инверсным выходом.

·        Микросхема К555ТЛ2, представляет собой 6 триггеров Шмидта-инверторов.

·        Светодиоды любые слаботочные планарного исполнения.

Разработка программной части устройства

Программа состоит из следующих частей:

·   Блок обработчика прерывания АЦП выполняет минимальные функции сохранения результатов после оцифровки аналоговых данных.

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

·        Блок инициализации программы

В этом блоке осуществляется первоначальная настройка микроконтроллера. Установка битов управления и направления передачи данных в портах ввода вывода.

·   Основной цикл программы построен по типовой схеме бесконечного цикла в котором осуществляется выполнение обработки функций нажатия на соотвествующие клавиши и изменение параметров системы по заранее установленному алгоритму.

Расчет временных констант

Так как частота тактового генератора равна 12 МГц, то в 1ом режиме таймера приращение счетчика будет осуществляться в каждом машинном цикле, т.е. через каждую микросекунду( частота 1МГц). При этом если задать делитель для АЦП=1 и 1 такт на перезагрузку максимально возможная частота оцифровки 58кГц (цикл преобразования АЦП занимает 16 тактов + 1 такт на перезагрузку АЦП откуда задержка 17тактов или 17мксекунд). Частота конечно не очень высокая но достаточная для звуковых схем работающих в ограниченном частотном диапазоне.

Поэтому инициализационное значения для счетчиков таймера берем исходя из максимального значения частоты оцифровки, что равно 65536-17=65519 (FFEEh), это значит, что через 17 тактов произойдет прерывание по переполнению счетчика таймера. Таким образом минимальный интервал между прерываниями равен 17мкс. Для максимального коэффициента деления частота оцифровки может быть минимально 15Гц, что достаточно для снятия медленно изменяющихся сигналов.

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

Описание функций клавиатуры

Кнопками SA1, SA2 (+,-) выполняется выбор интервала между считыванием амплитуд, т.е. меняется значение таймера счетчика на значения от : 17мкс до 65 мс.

Кнопка SA3 переключает режим приращение на 10 или на 1 по нажатию клавиш 1 и 2

Кнопка SA4 переключает режим изменение частоты или уровня синхронизации по клавишам 1 и 2.(изменяя уровень синхронизации можно сдвигать осциллограмму по горизонтали)

Кнопками SA5, SA6 (+,-) выполняется приращение смещения амплитуды оцифрованного сигнала, что обеспечивает смещение отображаемой осциллограммы по вертикали.

Кнопкой SA7, производится запись формы сигнала в память микроконтроллера, при этом сохраняется 160 тактов оцифровки.

Кнопкой SA8 производится вывод записанной формы сигнала на светодиодный индикатор при каждом нажатии выводиться следующая порция из 160 оцифрованных тактов сканирования сигнала.

Заключение

цифровой осциллограф микроконтроллер

В ходе выполнения курсовой работы было выполнено проектирования микропроцессорного устройства «Цифровой осциллограф».

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

Приложения

Приложение А. Функциональная схема устройства

Приложение Б. Схема устройства

Приложение В. Спецификация

Номер

Название

Обозн.

Назначение

1

80С554

Микроконтроллер

2-5

K555ИД3

DD2-DD5

Дешифратор-демультиплексор 4х16

6-11

К555ТЛ2

DD6-DD11

6ть триггеров Шмидта - Инверторов

12

КРЕН5А

DA1

стабилизатор напряжения на 5В

13-21

R2-R9

Ограничивающие резисторы клавиатуры

22-23

30pf

C1-C2

Времязадающие конденсаторы

24

1μF

С3

Конденсатор цепи сброса


Приложение Г

Листинг программной части

kurs:do;

$include(reg51.dcl)

data(384) byte auxiliary;  /* Массив данных */

/* Объявление переменных */AUXR1 register at (0a2h);ADCON register at (0c5h);ADCH register at (0c6);

P20 bit at (0a0h) register;P21 bit at (0a1h) register;P22 bit at (0a2h) register;P23 bit at (0a3h) register;P24 bit at (0a4h) register;P25 bit at (0a5h) register;P26 bit at (0a6h) register;P27 bit at (0a7h) register;

t word;                /* Счетчик интервала между амплитудами */ am byte;                  /* делитель кода АЦП */s byte;           /* Флаг шага между запросами */flag byte;        /* флаг замиси значения амплитуд */res(33) word; /*Массив значений амплитуд*/shag byte;        /* задание интервала шага между изменением «t» */ mem(33) word; /*Массив памяти значений амплитуд*/amp(33) word; /*Массив вывода значений амплитуд*/sinh byte;    /* переменная синхронизации (изменение интервала */

/* прерывания счетчика) */

i byte;                   /* Счетчик интевалав для вывода амплитуд */key byte;                /* Флаг памяти */k byte;             /* флаг делителя кода АЦП */

/* Обработка прерывания таймера */:procedure interrupt 1;

         ea=0;

         =sf-1;                             /* изменение интервала между записью знач амплитуд */sf=0 then                    /* когда интервал пройден */;                                     /* */=t+1;                       /* счет шага */=shag;                       /**/

          if t=32 then                   /* прошел 31 шаг */

                   do;                      

                    t=0;           /**/

                    flag=1;                /* изменение флага записи амплитуд */;

         end;

         Th0=0FFh;

         tl0=sinh;

         tf0=0;

         t=t+1;

         et0=1;

         ea=1;timer;

/* Ининциализация */

         PUMP = 0;

         DRAIN = 0;         

         P2 = 255;    /* P2 на вход */

         shag = 0;

         t = 0;          

         k = 2;

         am = 8;

         sinh=01Fh= 0;               /* сбрасываем флаг переполнения */

         ea = 1;

         et0 = 1;

         s=2;

        

         Th0=0FFh;  /* 15536 - счет до 65536 -> 50000 тактов таймера по 1мкс */

         Tl0=01Fh;

         tmod=00000001b; /* 1ый режим таймера 0 */

         scon=00000001b;

         flag = 0;

         connected = 0;      /* Если 0 -> устройство не подключено */

         /* Ининциализация АЦП */

         AUXR1 = 1;        /* Установка 8битного преобразования */


/* ------------------------------- */

         do while 1;  /* Главный цикл */

                  

         /* Определение нажатой клавиши */

         Key=0;

         if p20 = 0 then

                   if s<>0 then s=s+1; /* изменение флага периода запроса */

         if p21 = 0 then s<6 then s=s-1;

         if p22 = 0 then k<>0 then k=k-1;        /* изменение флага делителя амплитуды */        

         if p23 = 0 then k<4 then k=k+1;

         if p24 = 0 then key=1;

         if p25 = 0 then key=2;

         if p26 = 0 then sinh=sinh-01h; /* изменение синхронизации */

         if p27 = 0 then sinh=sinh+01h;

         /* Если кнопка была нажата - фиксируем новый уровень */

                  Do case k;

                            Am=4;                  /**/

                            Am=8;                  /**/

                            Am=16;       /**/

                            Am=32;       /**/

                   End;

                   Do case s;

                            Shag=1;      /**/

                            Shag=5;      /**/

                            Shag=6;      /**/

                            Shag=20;     /**/

                            Shag=50;     /**/

                            Shag=100;   /**/

                   End;

                   I=0;

         if key = 2 then do; /* Выводим записанный сигнал */while i=32;

                            p0=mem(i); /* по ось у */=i; /* по оси х*/

                            i=i+1;

                   end;

                  

                   key=0;

         end;

                   else do;

                    do while i<32;               /* Выводим амплитуды сигнал */=amp(i);                  /* по оси у */=i;                      /* по оси х */=i+1;

                    end;

                   end;

                                     /* Ожидание преобразования */

                            ADCON = 01000b;        /* Начало преобразования */

/* Ожидание окончания преобразования */

                            do while (ADCON AND 010000b) = 0; end;

/* Выделяем старшие три бита результата */

/* k- коэфец увелицени\уменьшения апмлитуды сигнала */

                            res(t) = ADCH /am;

                                              

                            if flag=1 then while i<32;

                                               amp(i)=res(i);

                                               i=i+1;

                                      end;

                            if key = 1 then res(t)=lvl;

                   flag=0;

                                              

/* Ждем 1 мс. Если устройство подключено, то за это время придет подтверждение */

                  

                            end;kurs;

Похожие работы на - Разработка схемы устройства 'Цифровой осциллограф' с использованием микроконтроллеров

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!