на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


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


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

Весьма важным блоком программы является работа с ЖКИ.

При установке режима по умолчанию на ЖКИ выводится следующее:

«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

№ кнопки Задаваемая программно частота, Гц Полученная в ходе эмуляции частота, Гц
0 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 .ASM template file for AVR

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

.include "D:\0B54~1\9E9E~1\VMLAB\include\m8515def.inc"

; Define here the 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 here Reset and interrupt vectors, if any

reset:

rjmp start

reti ; Addr $01

reti ; Addr $02

reti ; Addr $03

rjmp generation ; 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

; 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 Comand,$0C ;1100 определение режима отображения

rcall gotov

rcall LCD_Delay

rcall zap_IR

ldi Comand,$06 ;110 выбор направления сдвига

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 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: ldi x,$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: 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

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

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

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

mm3:

rcall LCD_Delay 

rcall gotov

rcall LCD_Delay

rcall zap_DR      

ret


Страницы: 1, 2


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

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


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.