Проектирование задающего генератора пачек прямоугольных импульсов на микропроцессоре
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ребление около 1,5 Вт
Значит берем 5 Вт трансформатор питания и ставим КР142ЕН8А и КР142ЕН5А способные давать ток до 1,5 А. В качестве входного усилителя применим микросхему TDA1013B способную давать выходную мощность до 4Вт (запас по мощности позволит поставить микросхему без теплоотвода). Построечный резистор R4 позволит добиться нужного напряжения на нагрузке.
4.2 Подключение ЦАП
Особенности ЦАП описаны выше. Логическая схема управления предназначена для работы микросхемы на общей шине с другими устройствами. Так как у нас нет разделения шины мы выбираем такой режим работы: внутренние регистры прозрачны и любые изменения на шине данных тут же отражаются на выходном сигнале. Для этого мы садим выводы CS, WR, LDAC на землю чем разрешаем прямое управление ЦАП. Выходное напряжение снимается с 2 вывода нагруженного на резистор R4 позволяющий регулировать напряжение на нагрузке и добиться требуемой амплитуды в 7 В.
4.3 Схема электрическая принципиальная
Схема электрическая принципиальная программно управляемого задающего генератора пачек прямоугольных импульсов на микроконтроллере для физиотерапевтической установки представлена ниже.
Рисунок 4.1 - Схема генератора электрическая принципиальная
5. РАЗРАБОТКА АЛГОРИТМА РАБОТЫ УСТРОЙСТВА И СОСТАВЛЕНИЕ ПРОГРАММЫ
.1 Разработка алгоритма работы устройства
Рисунок 5.1 - Основной алгоритм работы программы
Пояснения:
Вначале происходит конфигурация контроллера, потом опрашивается клавиатура и (если была нажата одна из клавиш, что в начале работы маловероятно) контроллер перейдет на один из режимов, если клавиша нажата не была, вызовется 1 режим. Подпрограмма Режим 1 формирует 1 период сигнала с требуемыми параметрами (сюда входит пачка импульсов и время между пачками), здесь же после каждого периода вызывается подпрограмма опроса клавиатуры. То есть контроллер зациклен на функциях формирования пачки импульсов, паузы между пачками и опросом клавиатуры.
Ниже приведен алгоритм подпрограммы Режим 1.
Рисунок 5.2 - Алгоритм работы подпрограммы Режим 1
Рисунок 5.3 - Продолжение алгоритма работы подпрограммы Режим 1
5.2 Составление программы
;*******************************************************************************
;DEVICE AT90S2313
;*******************************************************************************
;Порт В ЦАП
;РB.0 - ЦАП
;PB.1 - ЦАП
;PB.2 - ЦАП
;РB.3 - ЦАП
;PB.4 - ЦАП
;PB.5 - ЦАП
;РB.6 - ЦАП
;PB.7 - ЦАП
;PD.0 - светодиод
;PD.1 - светодиод
;РD.2 - светодиод
;PD.3 - кнопка
;PD.4 - кнопка
;PD.5 - кнопка
;PD.6 -
;
;**** Includes ****
.INCLUDE "C:\VMLAB\include\2313def.inc"
; Подключение файла конфигурации устройства
;**** Глобальные Регистровые переменные ****
.def data =r25; -> РАБОЧИЙ
.def nol =r26; -> РАБОЧИЙ
.def temp1 =r27; -> РАБОЧИЙ
.def waitH =r28; -> РАБОЧИЙ
.def schetchik =r29; -> РАБОЧИЙ
.def N =r30; -> текущее напряжение на выходе ЦАП
.def cikle =r31
;*******************************************************************************
; Начальные установки
;*******************************************************************************
.cseg
.org 0 ; начать коипилирование с адреса 00
rjmp label1 ; переход на метку label1
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti ; выход из подпрограммы прерывания: ldi temp1,$C8; загрузка конечного адреса стекаSPL,temp1;вывод в порт значение конечного адреса стека; разрешить все прерыванияtemp1,0b11111111;весь порт на выводDDRB,temp1temp1,0b11000111; выводы на которые подключены кнопки конфигурируються как входыDDRD,temp1temp1,0b00111000;включаю подтягивающие реисторы на кнопках
out PORTD,temp1temp1,0b10000010
out TIMSK,temp1 ; РЕГИСТР МАСКИ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА/iЕТЧИКА - TIMSK(резрешение прерывания от iетчика 1)
ldi nol,0: rcall oprosregim1main
;*********************************************************************:PIND,PIND3regim1PIND,PIND4regim2PIND,PIND5regim3
;*********************************************************************:cbi PORTD,PD0PORTD,PD1PORTD,PD2:ldi data,0b00000001cikle,20:ldi N,3:out PORTB,datawait_impuls1PORTB,nolwait_nol1NN,0l2dataN,4:out PORTB,datawait_impuls1PORTB,nolwait_nol1NN,0l3dataciklecikle,0l1cikle,215:ldi N,4:out PORTB,datawait_impuls1PORTB,nolwait_nol1NN,0l5dataciklecikle,0l4wait_long1oprosreg1
;*********************************************************************: cbi PORTD,PD1PORTD,PD0PORTD,PD2:ldi data,0b00000001cikle,20:ldi N,3:out PORTB,datawait_impuls2PORTB,nolwait_nol2NN,0l7dataN,4:out PORTB,datawait_impuls2PORTB,nolwait_nol2NN,0l8dataciklecikle,0l6cikle,215:ldi N,4:out PORTB,datawait_impuls2PORTB,nolwait_nol2NN,0l10dataciklecikle,0l9wait_long1oprosreg2
;*********************************************************************: cbi PORTD,PD2PORTD,PD0PORTD,PD1:ldi data,0b00000001cikle,20:ldi N,3:out PORTB,datawait_impuls3PORTB,nolwait_nol3NN,0l12dataN,4:out PORTB,datawait_impuls3
out PORTB,nol
rcall wait_nol3NN,0l13datacikle
cpi cikle,0l11
ldi cikle,215:ldi N,4:out PORTB,datawait_impuls3PORTB,nolwait_nol3NN,0l15dataciklecikle,0l14wait_long1opros
rjmp reg3
;*********************************************************************_impuls1:temp1,0b00000001TCCR1B,temp1 ; установка предварительного деления тактовой частоты iетчика на 1024waitH,$FFTCNT1H,waitH ; запись старшего байта в порт таймера длительности пачкиwaitH,$C4TCNT1L,waitH ; запись малого байта в порт таймера длительности пачкиtemp1,0b00100000MCUCR,temp1 ; разрешение режима пониженого энергопотребления
SLEEPtemp1,0b00000000TCCR1B,temp1 ; останов
ret
wait_nol1:temp1,0b00000001
out TCCR1B,temp1 ; установка предварительного деления тактовой частоты iетчика на 1024waitH,$FDTCNT1H,waitH ; запись старшего байта в порт таймера длительности пачкиwaitH,$48TCNT1L,waitH ; запись малого байта в порт таймера длительности пачкиtemp1,0b00100000MCUCR,temp1 ; разрешение режима пониженого энергопотребления
SLEEPtemp1,0b00000000TCCR1B,temp1 ; останов_impuls2:temp1,0b00000001
out TCCR1B,temp1 ; установка предварительного деления тактовой частоты iетчика на 1024waitH,$FFTCNT1H,waitH ; запись старшего байта в порт таймера длительности пачкиwaitH,$5FTCNT1L,waitH ; запись малого байта в порт таймера длительности пачкиtemp1,0b00100000MCUCR,temp1 ; разрешение режима пониженого энергопотребления
ldi temp1,0b00000
Copyright © 2008-2014 geum.ru рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение