Автор работы: Пользователь скрыл имя, 23 Марта 2014 в 21:56, курсовая работа
В ходе развития технологии микроэлектроники происходила миниатюризация электронных схем, и появились СБИС. Массовое производство СБИС привело к их удешевлению. Одним из дешёвых и миниатюрных устройств является микроконтроллер (МК). Микроконтроллер – это СБИС, содержащая на одном кристалле процессор, ПЗУ, ОЗУ, последовательный или параллельный интерфейс связи, таймеры, схему прерываний и другие периферийные устройства. Таким образом, на одной ИС можно реализовать множество различных устройств, в которых требуется управлять каким то процессом. Причём совершенствование технологии изготовления СБИС привело к повышению их производительности, и микроконтроллеры могут достаточно быстро реагировать на событие и обрабатывать его.
Порт 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 показана блок – схема алгоритма программы для МК.
Используемые в программе переменные:
Сначала программа подключает файл с определением регистров специального назначения, которые имеются в данном микроконтроллере. Регистрам общего назначения присваиваются имена переменных приведённых выше. Порты 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 |
5М |
200н |
5 мкс |
3 |
2.5М |
400н |
10 мкс |
4 |
500к |
2мк |
50 мкс |
5 |
250к |
4мк |
100 мкс |
6 |
50к |
20мк |
500 мкс |
7 |
25к |
40мк |
1 мс |
8 |
5к |
200мк |
5 мс |
9 |
2.5к |
400мк |
10 мс |
10 |
500 |
2м |
50 мс |
11 |
250 |
4м |
100 мс |
Частота дискретизации соответствующая количеству секунд на деление определяется по формуле:
, (3.3)
где n – количество байт содержащих информацию об уровне сигнала;
TimeOnDiv – количество секунд на деления;
tmax и tmin – границы временного интервала.
Скорость работы МК позволяет сохранять информацию о сигнале за 90 нс. Поэтому максимальная частота дискретизации сигнала
Необходимая частота дискретизации сигнала задаётся с помощью задания задержки между считываниями данных с АЦП. Для создания задержки используется таймер 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 |
Ниже представлена блок-схема программы для МК.
Рисунок 5.1 – Блок схема алгоритма программы для МК
Ниже приведено более подробное описание настройки контроллера SED1335.
После вывода кода 40h (команда «System Set») на шину данных контроллера, производится вывод восьми байтов (P1 – P8), содержащих параметры команды.