Программно управляемый генератор сигнала типа 'меандр' сверхнизкой частоты на микроконтроллере

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

Программно управляемый генератор сигнала типа 'меандр' сверхнизкой частоты на микроконтроллере

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

Харьковский национальный университет радиоэлектроники

Кафедра радиоэлектронных устройств





КУРСОВАЯ РАБОТА

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

Программно управляемый генератор сигнала типа “меандр” сверхнизкой частоты на микроконтроллере

дисциплина: Цифровые устройства


Выполнил студент Руководитель

гр. РТ-11-1 Бондарь Е.Ю.

Воробей А.Ю.








ХАРЬКОВ 2013

РЕФЕРАТ

Расчётно-пояснительная записка содержит: 30 с., 8 рис., 10 источников

Цель работы: Построение программно управляемого генератора типа меандр сверхнизкой частоты на микроконтроллере

ПЕРЕЧЕНЬ УСЛОВНЫХ СОКРАЩЕНИЙ

МК - микроконтроллер;

ЖКИ - жидкокристаллический индикатор;

ПВВ - порт ввода-вывода;

РОН - регистр общего назначения;

ВВЕДЕНИЕ

является 8-ми разрядным CMOS микроконтроллером с низким уровнем энергопотребления, основанным на усовершенствованной AVR RISC архитектуре. Благодаря выполнению высокопроизводительных инструкций за один период тактового сигнала, ATmega8515 достигает производительности, приближающейся к уровню 1 MIPS на МГц, обеспечивая разработчику возможность оптимизировать уровень энергопотребления. Ядро AVR содержит мощный набор инструкций и 32 рабочих регистра общего назначения. Все 32 регистра напрямую подключены к арифметико-логическому устройству (АЛУ), что обеспечивает доступ к двум независимым регистрам при выполнении одной инструкции за один такт. В результате, данная архитектура имеет более высокую эффективность кода, при повышении пропускной способности, вплоть до 10 раз, по сравнению со стандартными микроконтроллерами CISC. имеет: 8 Кбайт Flash - памяти с поддержкой внутрисистемного программирования, 512 байт EEPROM, 512 байт SRAM, 32 линий I/O общего назначения, 32 рабочих регистра общего назначения, универсальные таймеры/ счетчики с режимами сравнения, внутренние и внешние прерывания, программируемый UART последовательного типа, программируемый следящий таймер с встроенным тактовым генератором и программируемый последовательный порт SPI, а также, два программно выбираемых режима экономии энергопотребления.

1 ОБЗОР АНАЛОГИЧНЫХ УСТРОЙСТВ

.1 Простейший генератор прямоугольных импульсов (ГПИ)

.1.1 Генераторы импульсов используют во многих радиотехнических устройствах (электронных счетчиках, реле времени), применяют при настройке цифровой техники. Диапазон частот таких генераторов может быть от единиц Гц до многих МГц.

На рисунке 1.1 согласно [1] приведена схема генератора, который формирует одиночные импульсы прямоугольной формы при нажатии кнопки SB1.

На логических элементах DD1.1 и DD1.2 собран RS-триггер, предотвращающий проникновение импульсов дребезга контактов кнопки на пересчетное устройство. В положении контактов кнопки SB1, показанном на схеме, на выходе 1 будет напряжение высокого уровня, на выходе 2 - напряжение низкого уровня; при нажатой кнопке - наоборот. Этот генератор удобно использовать при проверке работоспособности различных счетчиков.

Рисунок 1.1 - Схема электрическая принципиальная формирователя одиночных импульсов

.1.2 На рисунке 1.2 согласно [1] показана схема простейшего генератора импульсов на электромагнитном реле. При подаче питания конденсатор С1 заряжается через резистор R1 и реле срабатывает, отключая источник питания контактами К 1.1. Но реле отпускает не сразу, поскольку некоторое время через его обмотку будет протекать ток за счет энергии, накопленной конденсатором С1. Когда контакты К 1.1 опять замкнутся, снова начнет заряжаться конденсатор - цикл повторяется.

Частота переключении электромагнитного реле зависит от его параметров, а также номиналов конденсатора С1 и резистора R1. При использовании реле РЭС-15 (паспорт РС4.591.004) переключение происходит примерно один раз в секунду.

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

Рисунок 1.2 - Схема электрическая принципиальная простейшего генератора импульсов на электромагнитном реле

.1.3 На рисунке 1.3 согласно [1] приведена схема еще одного генератора на электромагнитном реле, принцип работы которого аналогичен предыдущему генератору, но обеспечивает частоту импульсов 1 Гц при емкости конденсатора в 10 раз меньшей. При подаче питания конденсатор С1 заряжается через резистор R1. Спустя некоторое время откроется стабилитрон VD1 и сработает реле К1. Конденсатор начнет разряжаться через резистор R2 и входное сопротивление составного транзистора VT1VT2. Вскоре реле отпустит и начнется новый цикл работы генератора. Включение транзисторов VT1 и VT2 по схеме составного транзистора повышает входное сопротивление каскада.

Реле К1 может быть таким же, как и в предыдущем устройстве. Но можно использовать РЭС-9 (паспорт РС4.524.201) или любое другое реле, срабатывающее при напряжении 15...17 В и токе 20...50 мА.

Рисунок 1.3 - Схема электрическая принципиальная генератора на электромагнитном реле

.1.4 В генераторе импульсов, схема которого приведена на рисунке 1.4 согласно [1], использованы логические элементы микросхемы DD1 и полевой транзистор VT1. При изменении номиналов конденсатора С1 и резисторов R2 и R3 генерируются импульсы частотой от 0,1 Гц до 1 МГц. Такой широкий диапазон получен благодаря использованию полевого транзистора, что позволило применить резисторы R2 и R3 сопротивлением в несколько МОм. С помощью этих резисторов можно изменять скважность импульсов: резистор R2 задает длительность напряжения высокого уровня на выходе генератора, а резистор R3 - длительность напряжения низкого уровня. Максимальная емкость конденсатора С1 зависит от его собственного тока утечки. В данном случае она составляет 1...2 мкФ. Сопротивления резисторов R2, R3 - 10...15 МОм. Транзистор VT1 может быть любым из серий КП302, КП303.

При наличии микросхемы КМОП (серия К176, К561) можно собрать широкодиапазонный генератор импульсов без применения полевого транзистора.

Рисунок 1.4 - Схема электрическая принципиальная широкодиапазонного генератора импульсов

2. ОБОСНОВАНИЕ ВЫБРАННОГО ВАРИАНТА ТЕХНИЧЕСКОГО РЕШЕНИЯ

Преимущества реализации генератора линейно - спадающего напряжения на микроконтроллере:

компактность прибора;

возможность программного управления устройством;

простота схемного решения;

точность формирования импульсов различной частоты;

простое управление режимом работы переменным резистором.

Схема разрабатываемого генератора приведена на чертеже.

В схеме применяется микроконтроллер фирмы ATMEL - ATMega8515.

Основные характеристики ATMega8515:

Ядро - Mega;

килобайт FLASH - памяти;

байт энергонезависимой памяти EEPROM;

байт памяти SRAM;

наличие 2-х таймеров-счетчиков;

программируемых порта ввода-вывода;

тактовая частота 0 - 16 МГц;

напряжение питания 4,5 - 5,5 В.

Этот МК подходит для создания генератора прямоугольных импульсов.

3. РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ УСТРОЙСТВА

Как уже было сказано выше, основными компонентами схемы генератора являются микроконтроллер, ЦАП, ЖКИ и управляющие кнопки. ЦАП имеет 8 входов, на которые подается цифровой код сигнала, и выход, с которого снимается аналоговый сигнал. В данном случае было решено подключить входы ЦАП к 8-разрядному порту B микроконтроллера. Управляющие кнопки делятся на 2 кнопки регулировки амплитуды и 4 кнопки установки частоты. Кнопки регулировки амплитуды были подключены к выходам 4 и 5 порта D. Кнопки установки частоты подключены к выводам 0, 1, 2 и 3 порта D.

ЖКИ подключается к микроконтроллеру 11-ю выводами. 8 из них являются шиной данных и подключаются к порту B. Оставшиеся 3 вывода являются управляющими: вывод RS определяет, что передается по 8-разрядной шине: команды или данные (коды отображаемых символов) и подключен он к нулевому выходу порта A, вывод R/W определяет режим чтения/записи шины данных, и подключается к первому выходу порта A, по выводу Е подаются стробирующие импульсы, сопровождающие процессы чтения или записи, подключен выход Е к выводу 2 порта A. Также у МК есть выводы XTAL1 и XTAL2, к которым подключается кварцевый резонатор. Схема генератора электрическая принципиальная приведена на чертеже, прилагающемся к пояснительной записке.

4. РАЗРАБОТКА АЛГОРИТМА И ПРОГРАММЫ ФУНКЦИОНИРОВАНИЯ УСТРОЙСТВА

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

В блоке инициализации МК производится инициализация стека, переменных, настройка портов и таймера, разрешение прерываний и запуск Т0 и Т1. Далее происходит опрос 4 кнопок изменения частоты и 2 кнопок изменения амплитуды, и если одна из частотозадающих кнопок нажата, изменяется время задержки таймера Т1 по обоим каналам, и если нажаты кнопки управления амплитудой то в ЦАП отправляется новое значение амплитуды, а в ЖКИ - новые значения отображения амплитуды.

Текст программы приводится в «Приложении В».

5. РЕЗУЛЬТАТЫ ЭМУЛЯЦИИ ПРОГРАММЫ В ПАКЕТЕ VMLAB

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

На рисунках (5.1…6) мы видим амплитуду сигнала которая изменяется в приделах от 0 до 5 В, на программной панели устанавливается 2-мя кнопками увеличения и уменьшения амплитуды через 1 В.


Рисунок 5.1-Режим работы генератора №1

Рисунок 5.2-Режим работы генератора №2

Рисунок 5.3-Режим работы генератора №3

Рисунок 5.4-Режим работы генератора №4

Рисунок 5.5-Режим работы генератора №5

На рисунках (5.6, 5.7, 5.8) представлена частота сигнала в 3-х фиксированных значениях (10, 5 и 0 Гц) на программной панели устанавливается 3-мя кнопками. Погрешность значений частоты не превышает 0.5 %.

Рисунок 5.6-Частота меандра 10 Гц

Рисунок 5.7-Рисунок 5.6-Частота меандра 5 Гц

Рисунок 5.8-Рисунок 5.6-Частота меандра 1 Гц

генератор сигнал программный радиоэлектронный

Как видно из рисунка 5.8 VMLAB неспособен на такой низкой частоте адекватно отобразить весь период сигнала.

6. АНАЛИЗ ВРЕМЕННЫХ СООТНОШЕНИЙ И ОЦЕНКА ПОГРЕШНОСТЕЙ

В результате эмуляции в VMLAB мы не наблюдаем погрешностей не в частоте, не в амплитуде. Погрешности могут вводится некоторыми элементами схемы, а именно в программе благодаря выбранному МК погрешностей не имеется. Однако вводится небольшая погрешность амплитуды 0,2% при амплитуде 10В и, так как в техническом задании это не оговорено, я считаю это допустимым.

ПЕРЕЧЕНЬ ССЫЛОК

Евстифеев А.В. Микроконтроллеры AVR семейства Сlassic фирмы Atmel - 3-е изд., стер. - М.: Издательский дом «Додэка-ХХІ»,2006. - 288 c.: ил.

Белов А.В. Создаем устройства на микроконтроллерах. - СПб.: Наука и техника, 2007. - 304 с.: ил.

Методические указания по изучению программного пакета “Visual Micro Lab” для выполнения лабораторных работ по курсу „Цифровые устройства” для студентов направления: 6.050901 ”Радиотехника”/Учред.: В.Л. Басецкий - Харьков: ХНУРЭ, 2010 - 37 с.

Методические указания к практическим и лабораторным работам по курсу «Цифровые устройства» для студентов направления «Радиотехника». / Сост. В.Л. Басецкий. - Харьков: ХНУРЭ, 2010. - 31с.

Методические указания к лабораторным работам по курсу “Цифровые устройства” для студентов направления подготовки 6.050901 "Радиотехника" / Составитель: В.Л. Басецкий. - Харьков: ХНУРЭ, 2010. - 26 с.

Мортон Дж. Микроконтроллеры AVR. Вводный курс./Пер. с англ. - М.: Издательский дом «Додэка-ХХІ», 2006. - 272 с.: ил.

Интернет-форум «Радиокот»
<http://www.radiokot.ru>

Интернет-сайт «RS-rlab»
<http://rs-rlab.narod.ru>

Официальный сайт фирмы Atmel
<http://www.atmel.com>

LCD Controller/Driver LSI. Data Book. © 1994 Hitachi America Ltd.

ВЫВОДЫ

В итоге выполнения курсового проекта была разработана схема генератора сигналов типа “меандр”, а также был составлен алгоритм и текст программы функционирования МК. Полученное устройство обладает следующими характеристиками:

частота сигнала устанавливается в 4 фиксированных значения

(10, 15, 20 и 25 Гц) 4-мя кнопками. Погрешность значения частоты не превышает 0.5%;

амплитуда сигнала изменяется в пределах от 0 до 5 Вольт 2-мя кнопками увеличения и уменьшения амплитуды через 1 Вольт;

индикация амплитуды осуществляется с помощью ЖКИ на базе контроллера HD44780.

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

ПРИЛОЖЕНИЕ А

ТЕКСТ ПРОЕКТНОГО ФАЙЛА VMLAB

; ************************************************************

; PROJECT:

; AUTHOR:

; ************************************************************

; Micro + software running

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

.MICRO "ATmega8515"

.PROGRAM "m1.asm"

.TARGET "m1.hex"

.TRACE ; Activate micro trace

; Following lines are optional; if not included

; exactly these values are taken by default

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

.POWER VDD=5 VSS=0 ; Power nodes

.CLOCK 1meg ; Micro clock

.STORE 250m ; Trace (micro+signals) storage time

; Micro nodes: RESET, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, PE0-PE2, ACO, TIM1OVF

; Define here the hardware around the micro

; ------------------------------------------------------------GND PD0GND PD1GND PD2GND PD3GND PD4GND PD5D2A8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 outLCD(16 2 300k) PA0 PA1 PA2 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

.PLOT V(out)

ПРИЛОЖЕНИЕ В

; ******************************************************

; BASIC .ASM template file for AVR

; ******************************************************

.include "C:\VMLAB\include\m8515def.inc"

; Define here the variables

;

.def temp =r16

.def amp =r17

.def regim=r19

.def data = r20

.def adress = r21

.def number = r22

.def th=r23

.def tl=r24

; Define here Reset and interrupt vectors, if any

;:start; Addr $01; Addr $02; Addr $03T1A ; Addr $04T1B ; Addr $05; Addr $06 Use 'rjmp myVector'opros ; Addr $07 to define a interrupt vector; Addr $08; Addr $09; Addr $0A; Addr $0B This is just an example; Addr $0C Not all MCUs have the same; Addr $0D number of interrupt vectors; Addr $0E; Addr $0F

reti ; Addr $10

; на РС выход,

; на РВ жки и РА0-RS PA1-R\W PA2-E

; на РД кнопки: 0-3 на частоту и 4-5 на амплитуду

start:temp, high(RAMEND)SPH, temptemp, low(RAMEND)SPL, temptemp, $ffDDRC, tempDDRA, tempPORTD, tempPORTB, temptemp, 0b00000011PORTA, temptemp, $00DDRB, tempDDRD, temp

ldi temp,0b01100010TIMSK, temp ;разрешаем прерывания по каналам А и В в Т1

ldi temp, 0b00001011TCCR1B, temptemp,0b00000110TCCR0, temptemp, (1<<SE) ; режим слипMCUCR,temptemp,high(1039)OCR1AH, temptemp, low(1039)OCR1AL, temptemp, high(516)OCR1BH, temptemp, low(516)OCR1BL, tempamp, 255amp0, $00regim, 0b00000001: ldi data ,$0C ;Read_BFWrite_IRdata ,$06Read_BFWrite_IRdata ,$38Read_BFWrite_IRadress, $00outdata: sleep

rjmp main: ldi data, $01 ;установка курсора на 1 строчку

rcall Read_BFWrite_IRnumber,$10: out EEARL,adresstemp,$00EEARH,temptemp, 0x01EECR, tempdata, EEDRRead_BFWrite_DRadressnumbermm1data, $C0Read_BFWrite_IRnumber,$10: out EEARL,adresstemp,$00EEARH,temptemp, 0x01EECR, tempdata, EEDRRead_BFWrite_DRadressnumbermm2A:PORTC, ampB:PORTC, amp0

;-------------------------------------------------------------:sbis PIND, 0f1PIND,1f5PIND,2f10PIND,3f15PIND,4plusPIND,5minusend:th, high(15624)OCR1AH, thtl, low(15624)OCR1AL, tlth, high(7812)OCR1BH, thtl, low(7812)OCR1BL, tlend:th, high(3125)OCR1AH, thtl, low(3125)OCR1AL, tlth, high(1562)OCR1BH, thtl, low(1562)OCR1BL, tlend:th, high(1562)OCR1AH, thtl, low(1562)OCR1AL, tlth, high(781)OCR1BH, thtl, low(781)OCR1BL, tlend:th, high(1039)OCR1AH, thtl, low(1039)OCR1AL, tlth, high(516)OCR1BH, thtl, low(516)OCR1BL, tlend: ldi amp,255adress,$00outdataend: ldi amp,204adress,$20outdataend

: ldi amp,153adress,$40outdataend: ldi amp,102adress,$60outdataend: ldi amp,53adress,$80outdataend: reti: sbrs regim, 0regimust:sbrs regim, 4regimust: sbrc regim,0a1regim,1a2regim,2a3regim,3a4regim,4a5end

;---------------------------------------------------------------_BF:temp, 0b11111010 ;установка R/W(чтение)PortA, temptemp, 0x00 ;порт А на ввод

out DDRB, temptemp, 0xFF ;к порту А подключаем подтягивающие резисторы

out PortB, tempPortA,2 ;установка Е,

noptemp, PinB ;записываем состояние порта А в темпPortA,2 ;сбрасываем Е;пропустить следующюю команду если бит в регистре установленtemp,7 ;если бит сброшен (мк ЖКИ не занят) выходим с подпрограммыRead_BF_IR: ldi temp, 0b11111000 ;установка RS, R/W, E в ноль

out PortA, temptemp, 0xFF ;порт А на вывводDDRB, temp

out PortB, data ;команда 00001100(включаем дисплей) ;команда 00111000 (8 бит, две строки)PortA,2 ;установка Е

nopPortA,2 ;сброс Е

ret_DR:temp, 0b11111001 ;установка RS в 1(активизация регистра данных)

out PortA, temptemp, 0xFF

out DDRB, temp ;порт А на выводPortB, data ;выводим код символа записаный в data ранееPortA,2 ; установка Е

nop

nopPortA,2 ;сбрасываем Е (высокоимпедансное состояние)

; на РВ жки и РА0-РА2

.eseg

.db $20,$20,$20,$20,$20,$50,$65,$B6,$B8,$BC,$20,$31,$20,$20,$20,$20

.db $20,$20,$BD,$61,$BE,$70,$C7,$B6,$65,$BD,$B8,$65,$20,$35,$42,$20

.db $20,$20,$20,$20,$20,$50,$65,$B6,$B8,$BC,$20,$32,$20,$20,$20,$20

.db $20,$20,$BD,$61,$BE,$70,$C7,$B6,$65,$BD,$B8,$65,$20,$34,$42,$20

.db $20,$20,$20,$20,$20,$50,$65,$B6,$B8,$BC,$20,$33,$20,$20,$20,$20

.db $20,$20,$BD,$61,$BE,$70,$C7,$B6,$65,$BD,$B8,$65,$20,$33,$42,$20

.db $20,$20,$20,$20,$20,$50,$65,$B6,$B8,$BC,$20,$34,$20,$20,$20,$20

.db $20,$20,$BD,$61,$BE,$70,$C7,$B6,$65,$BD,$B8,$65,$20,$32,$42,$20

.db $20,$20,$20,$20,$20,$50,$65,$B6,$B8,$BC,$20,$35,$20,$20,$20,$20

.db $20,$20,$BD,$61,$BE,$70,$C7,$B6,$65,$BD,$B8,$65,$20,$31,$42,$20

Похожие работы на - Программно управляемый генератор сигнала типа 'меандр' сверхнизкой частоты на микроконтроллере

 

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