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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Воробей А.Ю.

ХАРЬКОВ 2013

РЕФЕРАТ

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

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

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

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

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

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

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

ВВЕДЕНИЕ

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

ATmega8515 имеет: 8 Кбайт Flash - памяти с поддержкой внутрисистемного программирования, 512 байт EEPROM, 512 байт SRAM, 32 линий I/O общего назначения, 32 рабочих регистра общего назначения, универсальные таймеры/ счетчики с режимами сравнения, внутренние и внешние прерывания, программируемый UART последовательного типа, программируемый следящий таймер с встроенным тактовым генератором и программируемый последовательный порт SPI, а также, два программно выбираемых режима экономии энергопотребления.

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

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

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

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

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

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

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

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

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

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

1.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.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;

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

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

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

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

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

тактовая частота 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 В.

Индикация частоты производится на ЖКИ модуль, которого также встроен в пакет VMLAB.

Рисунок 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

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

K1 GND PD0

K2 GND PD1

K3 GND PD2

K4 GND PD3

K5 GND PD4

K6 GND PD5

X1 D2A8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 out

X2 LCD(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 amp0=r18

.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

;

reset:

rjmp start

reti ; Addr $01

reti ; Addr $02

reti ; Addr $03

rjmp T1A ; Addr $04

rjmp T1B ; Addr $05

reti ; Addr $06 Use 'rjmp myVector'

rjmp opros ; Addr $07 to define a interrupt vector

reti ; Addr $08

reti ; Addr $09

reti ; Addr $0A

reti ; Addr $0B This is just an example

reti ; Addr $0C Not all MCUs have the same

reti ; Addr $0D number of interrupt vectors

reti ; Addr $0E

reti ; Addr $0F

reti ; Addr $10

; на РС выход,

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

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

start:

ldi temp, high(RAMEND)

out SPH, temp

ldi temp, low(RAMEND)

out SPL, temp

ldi temp, $ff

out DDRC, temp

out DDRA, temp

out PORTD, temp

out PORTB, temp

ldi temp, 0b00000011

out PORTA, temp

ldi temp, $00

out DDRB, temp

out DDRD, temp

ldi temp,0b01100010

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

ldi temp, 0b00001011

out TCCR1B, temp

ldi temp,0b00000110

out TCCR0, temp

ldi temp, (1<<SE) ; режим слип

out MCUCR,temp

ldi temp,high(1039)

out OCR1AH, temp

ldi temp, low(1039)

out OCR1AL, temp

ldi temp, high(516)

out OCR1BH, temp

ldi temp, low(516)

out OCR1BL, temp

ldi amp, 255

ldi amp0, $00

ldi regim, 0b00000001

sei

indic: ldi data ,$0C ;

rcall Read_BF

rcall Write_IR

ldi data ,$06

rcall Read_BF

rcall Write_IR

ldi data ,$38

rcall Read_BF

rcall Write_IR

ldi adress, $00

rcall outdata

main: sleep

rjmp main

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

rcall Read_BF

rcall Write_IR

ldi number,$10

mm1: out EEARL,adress

ldi temp,$00

out EEARH,temp

ldi temp, 0x01

out EECR, temp

in data, EEDR

rcall Read_BF

rcall Write_DR

inc adress

dec number

brne mm1

ldi data, $C0

rcall Read_BF

rcall Write_IR

ldi number,$10

mm2: out EEARL,adress

ldi temp,$00

out EEARH,temp

ldi temp, 0x01

out EECR, temp

in data, EEDR

rcall Read_BF

rcall Write_DR

inc adress

dec number

brne mm2

ret

T1A:

out PORTC, amp

reti

T1B:

out PORTC, amp0

reti

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

opros:sbis PIND, 0

rjmp f1

sbis PIND,1

rjmp f5

sbis PIND,2

rjmp f10

sbis PIND,3

rjmp f15

sbis PIND,4

rjmp plus

sbis PIND,5

rjmp minus

rjmp end

f1:

ldi th, high(15624)

out OCR1AH, th

ldi tl, low(15624)

out OCR1AL, tl

ldi th, high(7812)

out OCR1BH, th

ldi tl, low(7812)

out OCR1BL, tl

rjmp end

f5:

ldi th, high(3125)

out OCR1AH, th

ldi tl, low(3125)

out OCR1AL, tl

ldi th, high(1562)

out OCR1BH, th

ldi tl, low(1562)

out OCR1BL, tl

rjmp end

f10:

ldi th, high(1562)

out OCR1AH, th

ldi tl, low(1562)

out OCR1AL, tl

ldi th, high(781)

out OCR1BH, th

ldi tl, low(781)

out OCR1BL, tl

rjmp end

f15:

ldi th, high(1039)

out OCR1AH, th

ldi tl, low(1039)

out OCR1AL, tl

ldi th, high(516)

out OCR1BH, th

ldi tl, low(516)

out OCR1BL, tl

rjmp end

a1: ldi amp,255

ldi adress,$00

rcall outdata

rjmp end

a2: ldi amp,204

ldi adress,$20

rcall outdata

rjmp end

a3: ldi amp,153

ldi adress,$40

rcall outdata

rjmp end

a4: ldi amp,102

ldi adress,$60

rcall outdata

rjmp end

a5: ldi amp,53

ldi adress,$80

rcall outdata

rjmp end

end: reti

plus: sbrs regim, 0

ror regim

rjmp ust

minus:sbrs regim, 4

rol regim

rjmp ust

ust: sbrc regim,0

rjmp a1

sbrc regim,1

rjmp a2

sbrc regim,2

rjmp a3

sbrc regim,3

rjmp a4

sbrc regim,4

rjmp a5

rjmp end

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

Read_BF:

ldi temp, 0b11111010 ;установка R/W(чтение)

out PortA, temp

ldi temp, 0x00 ;порт А на ввод

out DDRB, temp

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

out PortB, temp

nop

nop

sbi PortA,2 ;установка Е,

nop

nop

nop

nop

in temp, PinB ;записываем состояние порта А в темп

nop

cbi PortA,2 ;сбрасываем Е

nop

nop

nop

nop ;пропустить следующюю команду если бит в регистре установлен

sbrs temp,7 ;если бит сброшен (мк ЖКИ не занят) выходим с подпрограммы

ret

rjmp Read_BF

Write_IR: ldi temp, 0b11111000 ;установка RS, R/W, E в ноль

out PortA, temp

ldi temp, 0xFF ;порт А на выввод

out DDRB, temp

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

nop

nop

sbi PortA,2 ;установка Е

nop

nop

nop

nop

nop

nop

cbi PortA,2 ;сброс Е

nop

nop

ret

Write_DR:

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

out PortA, temp

ldi temp, 0xFF

out DDRB, temp ;порт А на вывод

out PortB, data ;выводим код символа записаный в data ранее

nop

nop

sbi PortA,2 ; установка Е

nop

nop

nop

nop

nop

nop

nop

nop

nop

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

nop

nop

ret

; на РВ жки и РА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

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


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

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