Реферат по предмету "Коммуникации и связь"


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

Министерство образования и науки, молодежи и спорта Украины
ХарьковскийНациональный Университет Радиоэлектроники
Курсоваяработа
Программноуправляемый генератор линейно-нарастающего напряжения сверхнизкой частоты намикроконтроллере
Харьков 2011

Введение
Генераторы линейно – изменяющегося напряжения называют иногдагенераторами развёртки, хотя этот термин не отражает их гораздо более широкогоприменения. Из области разверток заимствованы названия двух основных частейпилообразного импульса: прямой ход (главный, почти линейный участок t п ) и обратный ход (сравнительнокороткий участок t о, формакоторого обычно несущественна).
Пилообразное напряжение это такое напряжение, котороенарастает или спадает линейно в течение некоторого отрезка времени, называемоговременем рабочего хода tодостигает первоначального значения. Такое напряжение используется устройствахсравнения, для горизонтальной развёртки электронного луча в электронно-лучевойтрубке в других устройствах. Возврат луча в исходное положение долженпроисходить, возможно, быстрее, вследствие чего спадающий участок пилообразногонапряжения должен иметь большую крутизну и малую продолжительность.
Пилообразные импульсы можно получить с помощью любогорелаксатора: мультивибратора, одно вибратора или блокинг-генератора. Поэтомугенераторы пилообразного напряжения составляют особый класс импульсныхустройств и заслуживают специального рассмотрения. Генераторылинейно-изменяющегося напряжения являются широко известными устройствамиимпульсной техники. В данной курсовой работе будет рассмотрено созданиегенератора линейно-спадающего напряжения на МК ATMega8515.

1. Обзор аналогичныхустройств
 1.1Простейшийгенератор пилообразного напряжения (ГПН)
В простейшем случае,когда не требуется высокая линейность рабочего участка выходного напряжения,применяют заряд (рисунок 1.1, а) или разряд конденсатора через резистор R. После размыкания ключа Клконденсатор заряжается по закону:
u=E(1-e -t/τ), где τ=RC.
Если во время рабочегохода использовать лишь начальный участок экспоненты, т.е. при tраб
ε=Um/E. (1.1)
Можно определить ε ипо формуле
ε=Um/E=1-e-tраб/τ≈ tраб/τ.
Из (1.1) следует, чтокоэффициент нелинейности ε оказывается равным Um/E. Обычно этосоотношение называется коэффициентом использования источника питания. При этомдля получения достаточно малого значения ε приходится выбирать значение E во много раз большим амплитуды Um т.е. плохо использовать напряжениеисточника питания. Таким образом, простейшая схема с зарядом или разрядомконденсатора через резистор оказывается пригодной лишь при сравнительноневысокой линейности (примерно 10%).
Принципиальная схемапростейшего ГПН с транзисторным ключом и соответствующие временные диаграммынапряжения приведены на рисунке 1.1б и 1.1в согласно[2].
/>
Рисунок 1.1-Принципиальнаясхема ГПН с транзисторным ключем и соответствующие временные диаграммы1.2КлассификацияГПН со стабилизаторами тока
Как уже указывалось выше,принцип действия схем генераторов пилообразного напряжения заключается виспользовании заряда или разряда конденсатора во время рабочего хода черезстабилизатор тока. Учитывая принципиальную общность почти всех применяемых напрактике схем генераторов, целесообразно рассматривать их как варианты одной итой же схемы. При этом они отличаются друг от друга, главным образом, лишьспособом создания напряжения в цепи стабилизатора тока. Согласно [2] по этомуклассификационному признаку различают следующие типы генераторов:
1). Генераторы, в которыхстабилизатор тока реализован в виде отдельного структурного элемента соспециальным источником напряжения Ест.
2). Генераторы, в которыхисточник напряжения Ест стабилизатора тока реализован в виде заряженногоконденсатора. Необходимо отметить, что этот генератор по другомуклассификационному признаку часто относят к группе компенсационных устройств.Идея построения таких устройств основана на том, что стабилизация зарядного(или разрядного) тока конденсатора С может быть достигнута, еслипоследовательно с ним включить источник, напряжение которого изменяется по томуже закону, что и на конденсаторе С, но имеет обратную полярность. Роль такогоисточника напряжения выполняет усилитель. В зависимости от способа включенияусилителя различают схемы с положительной и отрицательной обратной связью.
/>
Рисунок 1.2-компенсационный генератор с ООС (а), с ПОС(б).
На рисунке 1.2а показанвариант функциональной схемы компенсационного генератора с положительнойобратной связью (ПОС): если коэффициент усиления усилителя К0=+1, то повышениепотенциала в точке а1 при заряде конденсатора С компенсируется точно таким жеповышением потенциала в точке а2, и зарядный ток i останется неизменным. Конечно, в практических схемахвследствие того, что коэффициент усиления К0 не остается в процессе работыпостоянным и точно равным 1, а так же в результате нестабильности другихпараметров схем наблюдается определенное не постоянство тока i и большее или меньшее значение коэффициентанелинейности напряжения на конденсаторе и выходного напряжения uвых. Генератор, реализующийфункциональную схему на рисунке 1.2а, называют компенсационным генератором сПОС.
3). Генераторы, в которыхроль источника напряжения стабилизатора тока выполняет источник питания схемы.Такой генератор по другому классификационному признаку относится ккомпенсационным генераторам с ООС (отрицательной обратной связью);функциональная схема такого генератора показана на рисунке 1.2б.1.3 Генераторыпилообразного напряжения на операционных усилителях
Интегрирующее включениеоперационного усилителя, обеспечивающего получение выходного напряжения,пропорционального интегралу от входного напряжения, предполагает включениеконденсатора в цепь отрицательной обратной связи. Поэтому генераторыпилообразного напряжения на операционных усилителях строят по принципугенераторов с обратной связью, интегрирующих постоянное напряжения источникапитания, которое для них является входным.
На рисунке 1.3а показанасхема генератора пилообразного напряжения с интегрирующей RC-цепочкой, включенной в цепьотрицательной обратной связи операционного усилителя.
/>

2. Обоснованиевыбранного варианта технического решения
Преимущества реализациигенератора линейно нарастающего напряжения на микроконтроллере:
-компактность прибора;
-возможность программногоуправления устройством;
-простота схемногорешения;
-точность формированияимпульсов различной частоты;
-простое управлениережимом работы с помощью клавиатуры;
-отображение частотыгенерируемых импульсов на ЖКИ.
Схема разрабатываемогогенератора приведена на чертеже РТ 468.524.008 ЭЗ. В схеме применяетсямикроконтроллер фирмы ATMEL– ATMega8515. Микросхема создана на основеядра Mega, имеет в своём составе 8-разрядный и16-разрядный таймеры для формирования временных задержек и 4 порта для ввода ивывода информации с внешних устройств.
Основные техническиехарактеристики микроконтроллера:
-Форма входного сигнала-произвольная
-Максимальная амплитудавходного сигнала, 20В
-Дискретность отсчетачастоты, 10Гц
-Время измерения, 100мс
-Период повторенияизмерений, 200 мс
-Напряжение питания, 5В
Цифровое значениеамплитуды необходимо подавать на ЦАП, который преобразовывает его в аналоговуюформу. В работе был использован параллельный восьмиразрядный ЦАП AD5601 фирмыAnalog devices.
Регулировка амплитудыпроизводится потенциометром R1, подключеннымко входу управления ЦАП. Так как нагрузка низвоомная( 50 ОМ), то длясогласования сопротивления нагрузки с выходом устройства, применяется эмитерныйповторитель на транзисторе 2N636. Для преобразования выходного сигналамикроконтроллера из уровня TTL в более мощный сигнал, а также для согласованияустройства с нагрузкой (генератор работает на низкоомную нагрузку),используется выходной каскад. В качестве выходного каскада применён транзисторVT1. При появлении на выводе 6 импульса, он поступает через резистор R4 на базуVT1. В связи с тем, что величина импульса значительно меньше напряжения наэмиттере, т.е. база имеет менее положительный потенциал, транзистор открываетсяна время, равное длительности импульса. Резистор R4 ограничивает выходной сигналмикроконтроллера до значения, необходимого для нормальной работы транзистораVT1. В то время, когда открыт транзистор, в нагрузке протекает ток источникапитания, т.ё. на нагрузке появляется импульс с амплитудой, равной амплитуденапряжения питания. Таким образом, осуществляется усиление последовательностиимпульсов. Так как выходом является коллектор, а такая схема включения имеетнизкое выходное и достаточно высокое входное сопротивление, то этот каскадуспешно выполняет функцию согласования выхода микроконтроллера с нагрузкой, таккак по ТЗ генератор должен работать на низкоомную нагрузку.
Применены непроволочныетонкослойные металлодиэлектрические резисторы марки C2-23 постоянногосопротивления. У данных резисторов в качестве резистивного элемента используетсятонкая плёнка слоя проводящего металла, поэтому они характеризуются повышеннойтеплостойкостью. Резисторы имеют невысокую стоимость.
Питание генератораосуществляется с помощью трансформатора, выпрямительного мостика иинтегрального стабилизатора 78LR05.
Изменение частоты сигналаосуществляется матрицей кнопок 4х4.
Индикация частотыосуществляется алфавитно-цифровым ЖКИ с контроллером HD44780. Так как необходимо выводить не более 16ти символов,занимающих одну строку, был выбран символьный ЖКИ формата 16х1 WH1601B фирмыWinstar.

3. Разработкапринципиальной схемы устройства
/>Разрабатываемоеустройство должно генерировать линейно-нарастающее напряжение сдискретно-изменяющейся частотой и плавно-изменяющейся амплитудой.Принципиальная схема устройства приведена на чертеже РТ 468.524.008 ЭЗ.
Для дискретного изменениячастоты будет использована матричная клавиатура 4х4, подключенная к порту D микроконтроллера. К кнопкамклавиатуры програмно подключены подтягивающие резисторы во избежание «обрыва»на входе. Подтяжка работает следующим образом: в ненажатом состояниисопротивление между нулём и входом очень велико, и через резистор на входесоздаётся потенциал, воспринимаемый МК как логическая единица. При нажатиикартина меняется: теперь резистор — относительно бесконечное сопротивление, ана пине — потенциал нуля. Клавиатура будет обеспечивать изменение частоты от 2Гц до 32 Гц с шагом 2 Гц. По умолчанию будет установлен режим генерации частоты2Гц.
Цифровое значениеамплитуды необходимо подавать на ЦАП, подключенный к порту С микроконтроллера.
Регулирование амплитудыпроизводится переменным резистором R1, подключенным ко входу управления ЦАП.
Отображение генерируемойчастоты в данном режиме будет осуществляться ЖКИ. Шина передачи данных на ЖКИподключена к порту А микроконтроллера. Управляющие сигналы подключены к ножкамРВ0, РВ1, РВ2.
Питание генератораосуществляется с помощью трансформатора, выпрямительного мостика иинтегрального стабилизатора 78LR05.

4. Разработкаалгоритма и программы функционирования устройства
Алгоритм главнойпрограммы включает в себя следующие блоки:
-инициализация МК. Вданном блоке осуществляется инициализация стека, настройка портов(на ввод/выводданных), конфигурирование первого таймер-счетчика, настройка/разрешениепрерываний, загрузка констант. Ниже приведен листинг инициализации МК:
.include «D:\0B54~1\9E9E~1\VMLAB\include\m8515def.inc»
.def temp = r16
.def adr = r17
.def reg = r18
.def const0 = r19
.def const01 = r20
.def time = r21
.def lev =r22
.def Comand =r23
.def lcd =r24
.def x =r25
.equ        E                             = 2
.equ        RW                        = 1
.equ        RS                          = 0
reset:
rjmp start
reti; Addr $01
reti; Addr $02
reti; Addr $03
rjmp generation
reti; Addr $05
reti; Addr $06
reti; Addr $07
reti; Addr $08
reti; Addr $09
reti; Addr $0A
reti; Addr $0B
reti; Addr $0C
reti; Addr $0D
reti; Addr $0E
reti; Addr $0F
reti; Addr $10
; Program starts here after Reset
start: ldi temp,$02
out SPH,temp
ldi temp,$5F
out SPL,temp
;====== настройка портов ===========
ldi temp,$F0
out DDRD,temp
ldi temp,$FF
out PORTD,temp
out DDRC,temp
out PORTC,temp
;===== настройка Т1 и прерываний ====
ldi temp, $40
out TIMSK, temp
ldi temp, $09
out TCCR1B, temp
sei
;======== загрузка констант ========
ldi const0,0
ldi const01,$01
ldi lev,$00
ldi x, $00
;===== режим по умолчанию ========
ldi temp, high($1E78)
out OCR1AH, temp
ldi temp, low($1E78)
out OCR1AL, temp
ldi adr,0
-инициализация ЖКИ. Вданном блоке реализуется инициализацию ЖКИ: определение направленияотображения, выбор направления сдвига и настройка развертки в одну строку.Настройка каждого из параметров происходит по следующему алгоритму:
/>
Рис. 4.1 — Алгоритмпоследовательности конфигурации ЖКИ
Листинг инициализации ЖКИ
 ldi Comand,$0C; определение режима отображения
rcall gotov
rcall LCD_Delay
rcall zap_IR
ldi Comand,$06; выбор направления сдвига
rcall LCD_Delay
rcall gotov
 rcall LCD_Delay
rcall zap_IR
ldi Comand,$38; развертка в одну строку
rcall LCD_Delay
rcall gotov
rcall LCD_Delay
rcall zap_IR        

-установка режима поумолчанию. Данный блок алгоритма включает в себя установку частоты поумолчанию, а также установку индикации по умолчанию. Листинг установки режима ииндикации по умолчанию:
 ldi temp, high($1E78)
out OCR1AH, temp
ldi temp, low($1E78)
out OCR1AL, temp
;=====Вывод надписи==============
ldi lcd,$46 ;F
rcall mm3
ldi lcd,$20
rcall mm3
ldi lcd,$3D ;=
rcall mm3
 ldi lcd,$20
rcall mm3
ldi lcd,$20
rcall mm3
ldi lcd,$32 ;2
rcall mm3
ldi lcd,$20
rcall mm3
ldi lcd,$48 ;H
rcall mm3
ldi lcd,$7A ;z
После инициализации МК,ЖКИ и установки режима по умолчанию следует реализовать динамический опросклавиатуры, который представляет собой следующую последовательность действий: группыкнопок условно разбиты на «линейки» и «колонки». Сначалапрограммно на выходах PВ0-PВ3 выставляются единицы, а на P40 — ноль. При этомвключена первая колонка, и осуществляется проверка нажатия кнопок именно этойколонки. Затем первая колонка отключается, и подключается следующая, и т.д.
Алгоритм опроса клавиатуры,который является частью главной программы, указан в чертеже РТ 468.524.008 П3,а ниже можно ознакомиться с листингом динамического опроса клавиатуры:
forever:
ldi reg,$7F; маска 01111111
out PORTD,reg
nop
nop
sbis PIND,0; проверка нажатия кнопки
rjmp r3; переход к метке нажатия кнопки
sbis PIND,1
rjmp r7
sbis PIND,2
rjmp r11
sbis PIND,3
rjmp r15
ldi reg,$BF; маска 10111111
out PORTD,reg
nop
nop
sbis PIND,0
rjmp r2
sbis PIND,1
rjmp r6
sbis PIND,2
rjmp r10
sbis PIND,3
rjmp r14
ldi reg,$DF; маска 11011111
out PORTD,reg
nop
nop
sbis PIND,0
rjmp r1
sbis PIND,1
rjmp r5
sbis PIND,2
rjmp r9
sbis PIND,3
rjmp r13
ldi reg,$EF; маска 11101111
out PORTD,reg
nop
nop
sbis PIND,0
rjmp r0
sbis PIND,1
rjmp r4
sbis PIND,2
rjmp r8
sbis PIND,3
rjmp r12
rjmp forever
Как видно из блок-схемыалгоритма работы программы, в случае нажатия какой-либо кнопки, программапереходит на метку той кнопки, которая оказалась нажатой. Здесь с помощьюпервого таймер-счетчика устанавливается порог счета, который определяет частотуданного режима, а также вызывается подпрограмма замены символа, которыйотображает частоту данного режима. После чего программа возвращается обратно наметку forever, где снова начинается динамическийопрос клавиатуры. Ниже приведен листинг блока обработки нажатий кнопок:
r0:
ldi temp, high($1E78) ;2Гц
out OCR1AH, temp
ldi temp, low($1E78)
out OCR1AL, temp
ldi lcd, $32
rcall zamena1
rjmp forever
r1:
ldi temp, high($F40) ;4Гц
out OCR1AH, temp
ldi temp, low($F40)
out OCR1AL, temp
ldi lcd, $34
rcall zamena1
rjmp forever
r2:
ldi temp, high($A60) ;6 Гц
out OCR1AH, temp
ldi temp, low($A60)
out OCR1AL, temp
ldi lcd, $36
rcall zamena1
rjmp forever
r3:
ldi temp, high($7A0) ;8Гц
out OCR1AH, temp
ldi temp, low($7A0)
out OCR1AL, temp
ldi lcd, $38
rcall zamena1
rjmp forever
r4:
ldi temp, high($618) ;10Гц
out OCR1AH, temp
ldi temp, low($618)
out OCR1AL, temp
ldi lcd,$31
rcall zamena
ldi lcd,$30
rcall zamena1
rjmp forever
r5:
ldi temp, high($510) ;12Гц
out OCR1AH, temp
ldi temp, low($510)
out OCR1AL, temp
ldi lcd,$31
rcall zamena
ldi lcd,$32
rcall zamena1
rjmp forever
r6:
ldi temp, high($45C) ;14Гц
out OCR1AH, temp
ldi temp, low($45C)
out OCR1AL, temp
ldi lcd,$31
rcall zamena
ldi lcd,$34
rcall zamena1
rjmp forever
r7:
ldi temp, high($3D0) ;16Гц
out OCR1AH, temp
ldi temp, low($3D0)
out OCR1AL, temp
ldi lcd,$31
rcall zamena
ldi lcd,$36
rcall zamena1
rjmp forever
r8:
ldi temp, high($358) ;18Гц
out OCR1AH, temp
ldi temp, low($358)
out OCR1AL, temp
ldi lcd,$31
rcall zamena
 ldi lcd,$38
rcall zamena1
rjmp forever
r9:
ldi temp, high($30C) ;20Гц
out OCR1AH, temp
ldi temp, low($30C)
out OCR1AL, temp
ldi lcd,$32
rcall zamena
ldi lcd,$30
rcall zamena1
rjmp forever
r10:
ldi temp, high($2C6) ;22Гц
out OCR1AH, temp
ldi temp, low($2C6)
out OCR1AL, temp
ldi lcd,$32
rcall zamena
ldi lcd,$32
rcall zamena1
rjmp forever
r11:
ldi temp, high($28B) ;24Гц
out OCR1AH, temp
ldi temp, low($28B)
out OCR1AL, temp
ldi lcd,$32
rcall zamena
ldi lcd,$34
rcall zamena1
rjmp forever
r12:
ldi temp, high($259) ;26Гц
out OCR1AH, temp
ldi temp, low($259)
out OCR1AL, temp
ldi lcd,$32
rcall zamena
ldi lcd,$36
rcall zamena1
rjmp forever
r13:
ldi temp, high($22E) ;28Гц
out OCR1AH, temp
ldi temp, low($22E)
out OCR1AL, temp
ldi lcd,$32
rcall zamena
ldi lcd,$38
rcall zamena1
rjmp forever
r14:
ldi temp, high($208) ;30Гц
out OCR1AH, temp
ldi temp, low($208)
out OCR1AL, temp
ldi lcd,$33
rcall zamena
ldi lcd,$30
rcall zamena1
rjmp forever
r15:
ldi temp, high($1E8) ;32Гц
out OCR1AH, temp
ldi temp, low($1E8)
out OCR1AL, temp
ldi lcd,$33
rcall zamena
ldi lcd,$32
rcall zamena1
rjmp forever
Был полностью описаналгоритм основной программы. Далее будет приведен алгоритм подпрограммыгенерации и приведен ее листинг.
Подпрограмма генерациивызывается по прерыванию от первого таймер-счетчика при нажатии кнопки.Прерывания предварительно разрешены в инициализации микроконтроллера:
 ldi temp, $40; настройка прерываний от Т1
out TIMSK, temp
sei; разрешение общих прерываний

Генерация пилообразныхимпульсов была организована следующим образом: создана переменная, в которуюизначально записано значение 0 и командой inc происходит увеличение значения переменной на 1, покаоно не достигнет 255. Далее сброс значения константы в ноль, и возобновлениесчета до порога. Блок-схема алгоритма подпрограммы генерации приведена на рис.4.3.
Листинг подпрограммыгенерации
generation:
out PORTC, lev
inc lev
reti
Как видно подпрограмма,соответствующая такому алгоритму генерации линейно-нарастающего напряжения, являетсяоптимальной с точки зрения кода и выполняется за минимальное количество тактов.
Весьма важным блокомпрограммы является работа с ЖКИ.
При установке режима поумолчанию на ЖКИ выводится следующее:
«F = 2 Hz ».Далее при нажатии на кнопки изменяются лишь 4й и 5й символы, отображающиезначение частоты, что происходит при помощи подпрограмм zamena и zamena1 соответственно. Для отображения на ЖКИ одногосимвола необходимо в переменную lcdзаписать значение символа, который необходимо отобразить, а далее проверить ЖКИна готовность к общению и произвести запись в регистр DR. На рис. 4.4 приведен алгоритм вывода надписи на ЖКИ.
Рассмотрим алгоритм,который реализован в подпрограммах готовности и записи в регистры IR и DR. Для этого на рис. 4.5 приведена а блок-схема алгоритмаподпрограммы готовности, на рис.4.6а подпрограмма записи в регистр DR, на рис. 4.6б подпрограмма записи врегистр IR.
Для осуществления работыс ЖКИ в каждой конкретной подпрограмме формируются необходимые в данном случаевременные диаграммы: для случая записи в регистр IR и DR.
/>
Рис. 4.5 – Блок-схемаалгоритма проверки ЖКИ на готовность
Листинг подпрограммыготовности:
gotov:
ldi temp, $00
out DDRB,temp
ldi temp, $FF
out PORTB,temp
out DDRA, temp
mm1: ldi temp,0b00000010
out PORTA, temp
rcall LCD_Delay
 sbi PORTA, E
rcall LCD_Delay
in temp, PIND
rcall LCD_Delay
cbi PORTA,E
rcall LCD_Delay
cbi PORTA,RW
sbrs temp,7
ret
rjmp mm1
/> />а). б).
Рис. 4.6 – Блок-схемаалгоритма подпрограмм записи в регистр IR(a) и записи в регистр DR(б)
Листинг подпрограммызаписи в регистр IR
zap_IR:
ldi temp, $FF
out DDRD,temp
ldi temp, $00
out PORTA, temp
 out PORTD, Comand
sbi PORTA,E
rcall LCD_Delay
cbi PORTA,E
rcall LCD_Delay
ret

Листинг подпрограммызаписи в регистр DR
zap_DR:
ldi temp, $FF
out DDRD, temp
ldi temp,0b00000001
out PORTA, temp
rcall LCD_Delay
 out PORTD, lcd
sbi PORTA,E
rcall LCD_Delay
cbi PORTA,E
rcall LCD_Delay
ret
В подпрограммах заменыуказывается символ, который изменяется. Значение символа указываетсянепосредственно в блоке обработке нажатия кнопки.
В случае если изменяетсяодин выводимый на ЖКИ знак, вызывается подпрограмма zamenа (единицы), в случаеизменения десятков дополнительно вызывается подпрограмма zamena1.
Листинг подпрограммызамены единиц (zamenа) и десятков(zamena1):
zamena:
ldi Comand, $84
mm2: rcall LCD_Delay    
rcall gotov
rcall LCD_Delay
rcall zap_IR        
rcall LCD_Delay
 rcall gotov
rcall LCD_Delay
rcall zap_DR
ret          
zamena1:
ldi Comand,$85
rjmp mm2
Как видно из листинга, необходимоевремя задержки реализуется подпрограммой задержки, использование которойявляется более оптимальной с точки зрения программного кода.
LCD_Delay:        ldi x,$04              
L_loop: dec x                                     
 brne L_loop
 ret

Текст программыуправления генератором линейно-нарастающего напряжения сверхнизкой частоты вполном объеме приведен в приложении А.
5. Результаты эмуляциив программы в пакете VMLAB
Ниже приведены результатыэмуляции в пакете VMLAB, которые представляют собой полученные значениягенерируемых частот, сведенные в таблицу 5.1. В качестве примера приводятсяокно осциллографа программы, и отображаемая при этом на ЖКИ частота для второгои шестого режимов.
Таблица 1 – Результатыэмуляции в пакете VMLAB№ кнопки Задаваемая программно частота, Гц Полученная в ходе эмуляции частота, Гц 2.0 2.0 1 4.0 4.0 2 6.0 5.9 3 8.0 8.0 4 10.0 10.0 5 12.0 12.0 6 14.0 14.1 7 16.0 16.0 8 18.0 18.0 9 20.0 20.0 10 22.0 22.0 11 24.0 24.0 12 26.0 26.0 13 28.0 28.0 14 30.0 30.0 15 32.0 32.0
Отображаемое на ЖКИзначение частоты соответствует генерируемой в данный момент частоте для всех16ти режимов. Соответствие кнопок частоте и полученная при анализе частотагенерации показаны в таблице 5.1.

6. Анализ временныхсоотношений и оценка погрешностей
Расчет константы N, которая записывается в регистрсравнения первого таймер-счетчика выполняется по следующим соотношениям:
/>,
Где 0.25 мкс – времятактирования генератора при тактовой частоте f=4МГц;
/>
Согласно техническомузаданию расчет константы необходимо провести для шестнадцати режимов.Полученную константу Nпереведем в шестнадцатеричную систему. Соответственно ниже приведена таблицарасчетов для 16ти частот:
Табл. 2 – Расчеткоэффициента N в зависимости от частотыF, МГц
/>, мкс
/>
/> 2 1960 7800 1E78 4 976 3904 F40 6 664 2656 A60 8 488 1952 7A0 10 390 1500 618 12 324 1296 510 14 279 1116 45C 16 244 976 3D0 18 214 906 358 20 195 780 30C 22 175 700 2BC 24 162 648 288 26 148 592 250 28 139 556 22C 30 128 512 200 32 122 488 1E8
Тот факт, что делениеприводит к наличию более чем 4х знаков за запятой, и значения необходимоокруглять до целых, говорит о том, что при генерации возможно возникновениепогрешностей. Однако согласно эмуляции в пакете VMLAB погрешности генерации частоты не превышают 1%.

Выводы
В ходе выполнения данногокурсового проекта был разработан алгоритм, спроектирована принципиальная схемаи написана программа управления генератора линейно-нарастающего напряжения сдискретно-изменяющейся частотой с помощью матрицы кнопок и плавно-изменяющейсяамплитудой.
Отображение генерируемойчастоты осуществлялось с помощью ЖКИ.
После выполненияпоставленной задачи были сделаны такие существенные выводы:
— проектирование итехническое выполнение генераторов линейно-нарастающего напряжения на баземикроконтроллеров является более оптимальным со схемотехнической точки зрения,с точки зрения управления и компактности устройства, а также точностиполучаемых значений;
— погрешности получаемыепри генерации весьма малы, что свидетельствует о точности расчета;
— спроектированноеустройство целиком и полностью соответствует техническому заданию.
Данное устройство можетполучить применение в сфере телевидения для горизонтальной развёрткиэлектронного луча в электронно-лучевой трубке, а также широко применяться вимпульсной технике.

ПриложениеА
;******************************************************
; BASIC .ASMtemplate file for AVR
; ******************************************************
.include«D:\0B54~1\9E9E~1\VMLAB\include\m8515def.inc»
; Define herethe variables
; программа генератор пилообразный напряжение
.def temp =r16
.def adr = r17
.def reg = r18
.def const0 =r19
.def const01 =r20
.def time =r21
.def lev =r22
.def Comand=r23
.def lcd =r24
.def x =r25
.equ   E                =2
.equ   RW             =1
.equ   RS              =0
; Define hereReset and interrupt vectors, if any
reset:
rjmp start
reti; Addr$01
reti; Addr$02
reti; Addr$03
rjmpgeneration; Addr $04
reti; Addr$05
reti; Addr$06 Use 'rjmp myVector'
reti; 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
; Programstarts here after Reset
start: lditemp,$02
out SPH,temp
ldi temp,$5F
out SPL,temp
;=================настройка портов ===================
ldi temp,$F0
out DDRD,temp
ldi temp,$FF
out PORTD,temp
out DDRC,temp
out PORTC,temp
;================настройка Т1 и прерываний ==========
ldi temp, $40
out TIMSK,temp
ldi temp, $09
out TCCR1B,temp
sei
;================загрузка констант ===================
ldi const0,0
ldiconst01,$01
ldi lev,$00
ldi x, $00
;================ режим поумолчанию ==================
ldi temp,high($1E78)
out OCR1AH,temp
ldi temp,low($1E78)
out OCR1AL,temp
;================инициализация ЖКИ ===================
ldi Comand,$0C ;1100определение режима отображения
rcall gotov
rcallLCD_Delay
rcall zap_IR
ldi Comand,$06 ;110 выборнаправления сдвига
rcall LCD_Delay
rcall gotov
rcallLCD_Delay
rcall zap_IR
ldi Comand,$38; разверткав одну строку
rcallLCD_Delay
rcall gotov
rcallLCD_Delay
rcall zap_IR        
;================Выводнадписи============================
ldi lcd,$46 ;F
rcall mm3
ldi lcd,$20
rcall mm3
ldi lcd,$3D ;=
rcall mm3
ldi lcd,$20
rcall mm3
ldi lcd,$20
rcall mm3
ldi lcd,$32 ;2
rcall mm3
ldi lcd,$20
rcall mm3
ldi lcd,$48 ;H
rcall mm3
ldi lcd,$7A ;z
rcall mm3
;================последовательныйопрос клавиатуры =============
forever:
ldi reg,$7F
out PORTD,reg
nop
nop
sbis PIND,0
rjmp r3
sbis PIND,1
rjmp r7
sbis PIND,2
rjmp r11
sbis PIND,3
rjmp r15
ldi reg,$BF
out PORTD,reg
nop
nop
sbis PIND,0
rjmp r2
sbis PIND,1
rjmp r6
sbis PIND,2
rjmp r10
sbis PIND,3
rjmp r14
ldi reg,$DF
out PORTD,reg
nop
nop
sbis PIND,0
rjmp r1
sbis PIND,1
rjmp r5
sbis PIND,2
rjmp r9
sbis PIND,3
rjmp r13
ldi reg,$EF
out PORTD,reg
nop
nop
sbis PIND,0
rjmp r0
sbis PIND,1
rjmp r4
sbis PIND,2
rjmp r8
sbis PIND,3
rjmp r12
rjmp forever
;===================подпрограмма генерации ======================
generation:
out PORTC, lev
inc lev
reti
;================== меткиперехода на кнопки =====================
r0:
ldi temp,high($1E78) ;2Гц
out OCR1AH,temp
ldi temp,low($1E78)
out OCR1AL,temp
ldi lcd, $32
rcall zamena1
rjmp forever
r1:
ldi temp,high($F40) ;4Гц
out OCR1AH,temp
ldi temp,low($F40)
out OCR1AL,temp
ldi lcd, $34
rcall zamena1
rjmp forever
r2:
ldi temp,high($A60) ;6 Гц
out OCR1AH,temp
ldi temp,low($A60)
out OCR1AL,temp
ldi lcd, $36
rcall zamena1
rjmp forever
r3:
ldi temp,high($7A0) ;8Гц
out OCR1AH,temp
ldi temp,low($7A0)
out OCR1AL,temp
ldi lcd, $38
rcall zamena1
rjmp forever
r4:
ldi temp,high($618) ;10Гц
out OCR1AH,temp
ldi temp,low($618)
out OCR1AL,temp
ldi lcd,$31
rcall zamena
ldi lcd,$30
rcall zamena1
rjmp forever
r5:
ldi temp,high($510) ;12Гц
out OCR1AH,temp
ldi temp,low($510)
out OCR1AL,temp
ldi lcd,$31
rcall zamena
ldi lcd,$32
rcall zamena1
rjmp forever
r6:
ldi temp,high($45C) ;14Гц
out OCR1AH,temp
ldi temp,low($45C)
out OCR1AL,temp
ldi lcd,$31
rcall zamena
ldi lcd,$34
rcall zamena1
rjmp forever
r7:
ldi temp,high($3D0) ;16Гц
out OCR1AH,temp
ldi temp,low($3D0)
out OCR1AL,temp
ldi lcd,$31
rcall zamena
ldi lcd,$36
rcall zamena1
rjmp forever
r8:
ldi temp,high($358) ;18Гц
out OCR1AH,temp
ldi temp,low($358)
out OCR1AL,temp
ldi lcd,$31
rcall zamena
ldi lcd,$38
rcall zamena1
rjmp forever
r9:
ldi temp,high($30C) ;20Гц
out OCR1AH,temp
ldi temp,low($30C)
out OCR1AL,temp
ldi lcd,$32
rcall zamena
ldi lcd,$30
rcall zamena1
rjmp forever
r10:
ldi temp,high($2C6) ;22Гц
out OCR1AH,temp
ldi temp,low($2C6)
out OCR1AL,temp
ldi lcd,$32
rcall zamena
ldi lcd,$32
rcall zamena1
rjmp forever
r11:
ldi temp,high($28B) ;24Гц
out OCR1AH,temp
ldi temp,low($28B)
out OCR1AL,temp
ldi lcd,$32
rcall zamena
ldi lcd,$34
rcall zamena1
rjmp forever
r12:
ldi temp,high($259) ;26Гц
out OCR1AH,temp
ldi temp,low($259)
out OCR1AL,temp
ldi lcd,$32
rcall zamena
ldi lcd,$36
rcall zamena1
rjmp forever
r13:
ldi temp,high($22E) ;28Гц
out OCR1AH,temp
ldi temp,low($22E)
out OCR1AL,temp
ldi lcd,$32
rcall zamena
ldi lcd,$38
rcall zamena1
rjmp forever
r14:
ldi temp,high($208) ;30Гц
out OCR1AH,temp
ldi temp,low($208)
out OCR1AL,temp
ldi lcd,$33
rcall zamena
ldi lcd,$30
rcall zamena1
rjmp forever
r15:
ldi temp,high($1E8) ;32Гц
out OCR1AH,temp
ldi temp,low($1E8)
out OCR1AL,temp
ldi lcd,$33
rcall zamena
ldi lcd,$32
rcall zamena1
rjmp forever
;==================работа с ЖКИ ==============
LCD_Delay: ldix,$04  
L_loop: dec x                        
 brne L_loop
 ret
gotov:
ldi temp, $00
out DDRB,temp
ldi temp, $FF
out PORTB,temp
out DDRA, temp
mm1: lditemp,0b00000010
out PORTA,temp
rcallLCD_Delay
sbi PORTA, E
rcallLCD_Delay
in temp, PIND
rcallLCD_Delay
cbi PORTA,E
rcallLCD_Delay
cbi PORTA,RW
sbrs temp,7
ret
rjmp mm1
zap_IR:
ldi temp, $FF
out DDRD,temp
ldi temp, $00
out PORTA,temp
out PORTD,Comand
sbi PORTA,E
rcall LCD_Delay
cbi PORTA,E
rcallLCD_Delay
ret
zap_DR:
ldi temp, $FF
out DDRD, temp
lditemp,0b00000001
out PORTA,temp
rcallLCD_Delay
out PORTD, lcd
sbi PORTA,E
rcall LCD_Delay
cbi PORTA,E
rcallLCD_Delay
ret
zamena:
ldi Comand,$84
mm2: rcallLCD_Delay
rcall gotov
rcallLCD_Delay
rcall zap_IR        
rcallLCD_Delay 
rcall gotov
rcallLCD_Delay
rcall zap_DR
ret    
zamena1:
ldi Comand,$85
rjmp mm2
mm3:
rcallLCD_Delay 
rcall gotov
rcallLCD_Delay
rcall zap_DR      
ret


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.