Микроконтроллерные устройства

Разработка секундомера реального времени на основе 2-х семисегментных дисплеев. Определение спектра огибающей периодического сигнала при помощи прямого преобразования Фурье. График нормированного модуля спектральной плотности сигнала и его зависимости.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 20.04.2020
Размер файла 3,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовая работа

по дисциплине

"Микроконтроллерные устройства"

Лаврентьев Р.Н.

Севастополь 2020

Техническое задание

На основе микроконтроллера ATmega32 разработать устройство, выполняющее следующие функции:

Разработать секундомер реального времени на основе 2-х семисегментных дисплеев (первый отображает секунды второй минуты). Пуск отчета реализовать при нажатии кнопки SB1. Остановку отчета реализовать при нажатии кнопки SB2. При этом предусмотреть реализацию прямого и обратного отчета: так при работе схемы если однократно нажимается кнопка SB3, то отчет меняет свое направление (если время увеличивалось, после нажатия уменьшается, и наоборот).

Обеспечить формирование аналогового сигнала, вид которого изображен на рис. 1.1.

Рис. 1.1 - Заданный аналоговый сигнал

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

Согласно ТЗ, в качестве устройства обработки информации будем использовать микроконтроллер (МК) ATmega32, который производится фирмой Atmel. В качестве устройства ввода информации в МК будем использовать три кнопки SB1, SB2, SB3, которые будут выполнять функции пуска отчета, установки отчета и изменения направления отчета, соответственно. В качестве устройства вывода информации будем использовать два 7-сегментных дисплей. Для формирования аналогового сигнала будем использовать цифро-аналоговый преобразователь (ЦАП). На выходе ЦАП поставим сглаживающий фильтр нижних частот (ФНЧ). Для обеспечения более точного формирования временных интервалов, подключим к МК внешний кварцевый резонатор (КР). Структурная схема устройства, построенная с учетом вышесказанного, приведена на рис. 2.1.

Рис. 2.1 - Структурная схема проектируемого устройства

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

В качестве микроконтроллера (МК) будем использовать заданный в ТЗ ATmega32, возможности которого позволяют решить поставленную задачу. Кнопки для пуска, остановки и изменения направления отчета SB1, SB2, SB3 подключим к выводам МК PA1, PA2, PA3. Вместо внешних подтягивающих резисторов программным путем подключим к данным выводам порта внутренние подтягивающие резисторы. При таком включении: когда кнопка разомкнута, на вход МК через внутренний подтягивающий резистор подается логическая единица, при замыкании кнопки на вход МК поступает логический ноль. Для отображения значений минут и секунд будем использовать четыре симесегментных индикатора. Для сокращения числа выводов, необходимых для управления семисегменттными индикаторами применим динамическую индикацию. В этом случае необходимо использовать 11 выводов МК. Будем использовать 7 выводов порта B (PB0…PB7) и 4 вывода порта С (PС 1…PС 4). Для того чтобы токи, протекающие через светодиоды семисегментных дисплеев, не превышали допустимого тока последовательно с каждым светодиодом необходимо включить токоорганичивающий резистор (R1…R7), номинал которого определяется из закона Ома

Кварцевый резонатор X1 обеспечивает работы встроенного тактового генератора. Конденсаторы C1 и С 2 представляют собой цепи согласования кварцевого резонатора.

Для формирования аналогового сигнала заданной формы будем подавать соответствующий цифровой код на выводы порта D (PD0…PD7). Для преобразования цифрового кода в аналоговый сигнал применим простейший восьмиразрядный ЦАП, выполненный на матрице R2R (R8R23), в которой сопротивление R = 5 кОм.

После ЦАП поставим пассивный аналоговый ФНЧ 3-го порядка, выполненный на элементах L1, C3 и С 4. В качестве аналоговой нагрузки будем использовать резистор R24, с сопротивлением 5 кОм. Для определения интервала дискретизации аналогового сигнала выполним следующие действия.

Запишем аналитическое выражение одного периода аналогового сигнала, который необходимо сгенерировать

(3.1)

График сигнала, построенный в соответствии с (3.1), представлен на рис. 3.1.

Рис. 3.1 - График аналогового сигнала

Определим спектр огибающей периодического сигнала при помощи прямого преобразования Фурье

(3.2)

Подставляя (3.1) в (3.2) получаем спектр огибающей периодического сигнала, который необходимо сгенерировать. График нормированного модуля спектральной плотности сигнала (3.1) изображен на рис. 3.2.

Рис. 3.2 - График зависимости нормированного модуля спектральной плотности сигнала от частоты

По графику определяем граничную частоту в спектре аналогового сигнала

. Переведем круговую частоту в циклическую

В соответствии с теоремой Котельникова интервал дискретизации

Выберем , в этом случае количество выборок составит

Известно, что аналоговый сигнал можно восстановить по выборкам дискретного сигнала при помощи ФНЧ, частота среза которого равна максимальной частоте в спектре аналогового сигнала. Для расчета параметров данного фильтра воспользуемся программой Filter Solutions. Окна программы Filter Solutions представлены на рис. 3.3…3.5.

Рис. 3.3 - Выбор параметров фильтра в программе Filter Solutions

Рис. 3.4 - АЧХ фильтра в программе Filter Solutions

Рис. 3.5 - Принципиальная схема фильтра в программе Filter Solutions

Принципиальная схема проектируемого устройства, созданная в программе ISIS пакета Proteus, изображена на рис. 3.6.

Рис. 3.6 - Принципиальная схема проектируемого устройства

Разработка блок-схемы алгоритма работы устройства и программы для МК

Для формирования точных временных интервалов будем использовать режим работы сброс таймера при совпадении (СТС) таймера/счетчика T1. Для работы в режиме СТС используется специальный регистр микроконтроллера - регистр совпадения, в нашем случае это OCR1A. В режиме СТС таймер производит подсчет входных импульсов. Текущее значение таймера из его счетного регистра постоянно сравнивается с содержимым регистра совпадения. Когда содержимое счетного регистра совпадет с содержимым регистра OCR1A, произойдет сброс таймера и вызов соответствующего прерывания. Будем вызывать подпрограмму обработки прерывания через каждую миллисекунду. При частоте тактового генератора 1 МГц в регистр совпадения необходимо записать значение , или, представив данное значение в шестнадцатеричной системе счисления, получим 0х 03Е 8.

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

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

В качестве среды разработки программы будем использовать среду CodeVisionAVR, которая представляет собой интегрированная среду разработки программного обеспечения для микроконтроллеров семейства AVR фирмы Atmel.

Имена переменных, используемых в программе, их тип и назначение представлены в таблице 4.1.

Таблица 4.1 - Описание переменных, используемых в программе

Имя переменной

Тип переменной

Назначение переменной

msec

int

Счетчик миллисекунд

sec

int

Счетчик секунд

min

int

Счетчик минут

flag1

bit

Флаг запуска отчета

flag2

bit

Флаг направления отчета

temp

unsigned char

Разряд числа при динамической индикации

i

unsigned char

Значение, выводимое в порт С при динамической индикации

time

unsigned char

Количество интервалов дискретизации

cifri[]

unsigned char

Массив кодировки для динамической индикации

analog[]

unsigned char

Массив значений, для формирования аналогового сигнала

Блок-схемы работы основной программы и подпрограмм обработки прерываний изображены на рис. 4.1...4.3.

Рис. 4.1 - Блок-схема подпрограммы обработки прерываний для формирования аналогового сигнала

Рис. 4.2 - Блок-схема основной программы и функции динамической индикации

Рис. 4.3 - Блок-схема подпрограммы обработки прерываний для управления работой секундомера

Текст программы, написанной на языке С, представлен ниже.

#include <mega32.h>

#include <delay.h>

flash unsigned char cifri[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

flash unsigned char analog[] = {0,21,43,64,85,106,128,149,170,191,213,234,255,242,230,217,204,191,178,166,153,140,128,115,102,89,76,64,51,38,26,13,0,0,0,0,0,0,0,0,0};

int msec = 0;

int sec = 0;

int min = 0;

bit flag1 = 0;

bit flag2 = 0;

unsigned char time

void din_ind(int chislo)

{

unsigned char temp;

unsigned char i;

for(i = 16; i >= 2; i = i " 1)

{

temp = chislo % 10;

chislo = chislo / 10;

PORTC = i;

PORTB = ~cifri[temp];

delay_ms(1);

}

}

void presets()

{

PORTA=0xFF;

DDRA=0x00;

PORTB=0x00;

DDRB=0xFF;

PORTC=0x00;

DDRC=0xFF;

PORTD=0x00;

DDRD=0xFF;

TCCR0=0x09;

TCNT0=0x00;

OCR0=0xFA;

TCCR1A=0x00;

TCCR1B=0x09;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x03;

OCR1AL=0xE8;

OCR1BH=0x00;

OCR1BL=0x00;

TIMSK=0x12;

}

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

time++;

PORTD = analog[time];

if(time >= 40)

{

time = 0;

} }

interrupt [TIM1_COMPA] void timer1_compa_isr(void)

{

if(flag1 == 1)

{

if(flag2 == 0)

{

msec++;

if(msec >= 999)

{

msec = 0;

sec++;

if(sec >= 59)

{

sec = 0;

min++;

if(min >= 59)

{

msec = 0;

sec = 0;

min = 0;

}

}

}

}

else

{

msec--;

if(msec <= 0)

{

msec = 999;

sec--;

if(sec < 0)

{

sec = 59;

min--;

if(min < 0)

{

msec = 999;

sec = 59;

min = 59;

}

}

}

}

}

else

{

}

}

void main(void)

{

presets ();

#asm("sei")

while (1)

{

if(PINA.0 == 0)

{

delay_us(200);

while(PINA.0 == 0)

{

}

delay_us(200);

flag1 = 1;

msec = 0;

sec = 0;

min = 0;

}

if(PINA.1 == 0)

{

delay_us(200);

while(PINA.1 == 0)

{

}

delay_us(200);

flag1 = 0;

}

if(PINA.2 == 0)

{

delay_us(200);

while(PINA.2 == 0)

{

}

delay_us(200);

if(flag2 == 1)

{

flag2 = 0;

}

else

{

flag2 = 1;

}

}

din_ind(100*min + sec);

}

}

Результаты моделирования работы устройства в программе ISIS пакета proteus

Для моделирования нужно определить тактовую частоту. Для этого необходимо правильно настроить CSKEL Fuse . Значение этих битов определяет источника тактовых сигналов. Чтобы использовать в качестве источника тактовых сигналов кварцевый резонатор, подключенный к выводам XTAL1 и XTAL1, выставим CSKEL=1111. Загрузим файл прошивки в виртуальный МК путем выбора откомпилированного файла в строке Program file.

Результаты моделирования представлены на рис. 5.1…5.8.

Рис. 5.1 - Устройство непосредственно после запуска моделирования

Рис. 5.2 - Устройство через секунду после нажатия кнопки SB1

Рис. 5.3 - Устройство через минуту после нажатия кнопки SB1

Рис. 5.4 - Устройство непосредственно после нажатия кнопки SB3

Рис. 5.5 - Устройство через 10 с после нажатия кнопки SB3

Рис. 5.6 - Устройство непосредственно после нажатия кнопки SB2

Рис. 5.7 - Устройство через 10 с после нажатия кнопки SB2

Рис. 5.8 - Устройство с подключенным осциллографом

Рис. 5.9 - Генерируемый аналоговый сигнал на экране виртуального осциллографа

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

Разработка печатной платы

Для разработки печатной платы воспользуемся программой ARES пакета PROTEUS. Для этого, прежде всего, нужно проверить наличие посадочных мест и корпусов у всех элементов. Элементы, у которых они отсутствуют, например, кнопки и семисегментный индикатор, заменим на разъемы из библиотеки Connectors, предполагая, что кнопки и индикатор будут располагаться не на печатной плате (рис.6.1).

Так, в качестве кнопок SB1-SB4 использованы разъёмы J1-J4 Для корректной работы требуется также подать питание - напряжение 5 В - на разьём J6 и J7 и напряжение 10 В - разьём J5.

Рис. 6.1 - Подготовка схемы в ISIS для экспорта в ARES

На рисунках рис.6.2…6.4 представлена разведенная печатная плата в разных слоях. Расположение элементов выбиралось вручную, при трассировке использовался авто трассировщик.

Рис. 6.2 - Все слои платы

Рис. 6.3 - Слои Тоp Cooper и Silk

Рис. 6.4 - Слои Bottom Cooper

3-D виды платы представлены на рис. 6.5…6.6.

Рис. 6.5 - Вид платы сверху

Рис. 6.6 - Вид платы спереди

Рис. 6.7 - Вид платы слева

Рис. 6.8 - Вид платы сзади

Рис. 6.9 - Вид платы справа

Вывод

В ходе выполнения курсовой работы был спроектирован секундомер реального времени на основе 2-х семисегментных дисплеев (первый отображает секунды второй минуты). Пуск отчета реализован при нажатии кнопки SB1. Остановка отчета реализована при нажатии кнопки SB2. При этом предусмотрена реализацию прямого и обратного отчета: так при работе схемы если однократно нажимается кнопка SB3, то отчет меняет свое направление (если время увеличивалось, после нажатия уменьшается, и наоборот). Также данное устройство обеспечивает генерацию аналогового сигнала заданной формы. дисплей секундомер сигнал

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

Библиографический список

1. Белов А.В. Разработка устройств на микроконтроллерах AVR: шагаем от "чайника" до профи / А.В. Белов. - СПб.: Наука и техника, 2013 - 528 с.

2. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя/ А.В. Евстифеев. - М.: Издательский дом "Додэка-ХХI", 2007 - 592 с.

3. Лебедев М.Б. CodeVisionAVR: пособие для начинающих / М.Б. Лебедев - М.: Издательский дом "Додэка-ХХI", 2008 - 592 с.

4. Методические указания по оформлению текстовых работ для студентов дневной и заочной форм обучения направления 6.050901 - "Радиотехника" / СевНТУ; сост. В.Г. Слёзкин. - Севастополь: Изд-во СевНТУ, 2010. - 20 с.

Размещено на Allbest.ru


Подобные документы

  • Расчет спектральной плотности экспоненциального импульса цифрового устройства с помощью формулы прямого преобразования Фурье. Построение АЧХ и ФЧХ спектральной плотности. Построение амплитудного спектра периодического дискретизированного сигнала.

    контрольная работа [197,1 K], добавлен 23.04.2014

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

    контрольная работа [434,7 K], добавлен 10.05.2013

  • Графическое представление модуля и аргумента спектральной плотности. Спектрограмма сигнала, задержанного на половину длительности импульса. Аналитическое выражение и график импульсной характеристики цепи. Средняя мощность периодического сигнала.

    курсовая работа [1,5 M], добавлен 16.12.2016

  • Метод выделения огибающей АМ-сигнала при помощи преобразования Гильберта. Эквивалентная схема программного алгоритма. Способы выделения амплитудного огибающего сигнала. Синтез АМ-сигнала с несущей и боковыми частотами. Формирователь амплитудной огибающей.

    курсовая работа [279,1 K], добавлен 23.06.2009

  • Разложение непериодического сигнала на типовые составляющие. Расчет изображения аналогового непериодического сигнала по Лапласу. Нахождение спектральной плотности аналогового непериодического сигнала. Расчет ширины спектра периодического сигнала.

    курсовая работа [1,3 M], добавлен 13.01.2015

  • Спектральные характеристики периодических и непериодических сигналов. Свойства преобразования Фурье. Аналитический расчёт спектра сигнала и его энергии. Разработка программы в среде Borland C++ Bulder 6.0 для подсчета и графического отображения сигнала.

    курсовая работа [813,6 K], добавлен 15.11.2012

  • Определение спектров тригонометрического и комплексного ряда Фурье, спектральной плотности сигнала. Анализ прохождения сигнала через усилитель. Определение корреляционной функции. Алгоритм цифровой обработки сигнала. Исследование случайного процесса.

    контрольная работа [272,5 K], добавлен 28.04.2015

  • Соотношение для спектральных плотностей входного и выходного сигнала, дискретное преобразование Фурье. Статистические характеристики сигналов в дискретных системах. Дискретная спектральная плотность для спектральной плотности непрерывного сигнала.

    реферат [189,3 K], добавлен 23.09.2009

  • Нахождение корреляционной функции входного сигнала. Спектральный и частотный анализ входного сигнала, амплитудно-частотная и фазочастотная характеристика. Переходная и импульсная характеристика цепи. Определение спектральной плотности выходного сигнала.

    курсовая работа [781,9 K], добавлен 27.04.2012

  • Определение корреляционной функции входного сигнала, расчет его амплитудного и фазового спектра. Характеристики цепи: амплитудно-частотная, фазо-частотная, переходная, импульсная. Вычисление спектральной плотности и построение графика выходного сигнала.

    курсовая работа [986,4 K], добавлен 18.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.