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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Федеральное агентство по образованию РФ
Санкт-Петербургский Государственный Электротехнический университет
Кафедра БЭМиОС
Курсовая работа по дисциплине: Узлы и элементы медицинской техники
на тему:
«Цифровой Генератор Аналоговых Сигналов
на основе Микроконтроллера»
Выполнила: студентка гр.5503
Копанева А.К.
Проверил: Ахлаков М.К.
Санкт-Петербург 2009
Содержание
1. Задание 2
2. Введение 3
3. Разработка структурной схемы 4
4. Подбор элементов принципиальной схемы 6
4.1 Выбор устройства ввода
45.2 Выбор дисплея
45.3 Выбор ЦАП и источника питания
4.4 Выбор МК
45.5 Выбор стабилизатора напряжения и инвертора
4.6 Выбор УМ
5. Блок-схемы 19
6. Программа 22
7. Заключение 32
8. Список литературы 32
9. Приложение 28
1.Задание
В данном курсовом проекте необходимо разработать цифровой генератор аналоговых сигналов, со следующими характеристиками:
Форма сигналов |
Sin, Rest, Lin |
Напряжение источника питания |
±12 В |
Погрешность формирования сигналов |
не более 1% |
Диапазон изменения амплитуды |
1÷10 В с шагом 0.1 В |
Диапазон изменения частоты |
0÷100 кГц с шагом 1 Гц |
Табл.1
Питание данного прибора осуществляется от батареек. В соответствии с исходными данными необходимо разработать функциональную и принципиальную электрическую схемы, алгоритм и программу работы электронного генератора.
2.Введение
В последние годы получили развитие системы прямого цифрового синтеза сигналов, обеспечивающие высокую точность задания частоты и начальной фазы сигналов, а также высокую верность воспроизведения их формы. Более того, эти системы позволяют генерировать сигналы большого многообразия форм, в том числе и форм, задаваемых пользователем. Генератор синусоидального напряжения является одним из наиболее распространенных приборов в измерительной лаборатории. Генераторы промышленного производства имеют большие габариты и вес, а к тому же, немалую стоимость. Кроме того, аналоговые генераторы обладают целым рядом недостатков: недостаточной точностью установки и стабильностью частоты и амплитуды, относительно большим коэффициентом гармоник.
Существуют цифровые методы синтеза сигнала и не только синусоидального. В связи с этим в данной курсовой работе будет разработан программный метод задания формы сигнала и изменение его некоторых параметров.
3. Разработка структурной схемы
Условные обозначения:
МК микроконтроллер фирмы Analog devices
УВ устройство ввода, для задания формы и параметров сигнала
ПК блок синхронизации интерфейса (БСИ): последовательный интерфейс связи с ПК необходим для передачи полученных данных в персональный компьютер;
ЦАП цифро-аналоговый преобразователь,
УМ усилитель мощности (буферный)
ИП источник питания всех устройств
СН стабилизатор напряжения, который стабилизирует напряжения до необходимого нам уровня.
Принцип работы генератора: Управляющим элементом системы является МК, в памяти программ которого хранится программа, реализующая определенную форму сигнала на выходе, с заданной амплитудой и частотой, также в ПЗУ хранится таблица синусов.
Амплитуда, частота и форма сигнала вводятся с запрограммированных кнопок. Изменение частоты будет происходить за счёт программно реализованной задержки между выдачей значений в ЦАП. По заданию диапазон изменения частоты лежит в пределах от 0 до 100кГц, а в таблице синусов находится 256 значений. Таким образом, на максимальной частоте задержка равна (1/100000)/256=390 мкс. Вывод табличных значений синуса осуществляется с помощью ЦАПа. Усилитель мощности необходим для обеспечения выхода по напряжению и требуемой нагрузочной способностью.
Для связи с пользователем используется компьютер, который подключается по средствам последовательного интерфейса RS232 и DB9. Так как амплитуда и частота и амплитуда изменяются дискретно, с заданным шагом, предусмотрены следующие кнопки: «амплитуда +», «амплитуда -» и «частота +» , «частота -». Управление и сканирование кнопок осуществляется Микроконтроллером.
4. Подбор элементов принципиальной схемы
4.1 Выбор устройства ввода
Клавиатуру можно было бы выбрать из готовых, однако это не целесообразно экономически. В готовых клавиатурах предусмотрено большое количество клавиш, что в нашем случае ненужно, можно обойтись гораздо меньшим числом. Так как нам нужно задавать только два параметра ( амплитуду и частоту), причем каждый из них может изменяться только с определенным шагом (амплитуда от0до 100 кГц с шагом 1Гц, частота от 1 до 10В с шагом 0.1В), то вполне достаточно наличие 5 кнопок, одна из которых будет определять вид сигнала, а остальные 4 соответственно: «амплитуда», «частота», «больше», «меньше».
Для того чтобы при замыкании кнопки МК нормально работал, необходимо уменьшить подаваемое напряжение до уровня логической единицы. Для выполнения этой цели поставим сопротивления R1,R2,R3,R4,R5.
4.2 Выбор связи с компьютером
Для связи с компьютером используем последовательный интерфейс RS232 реализованный на SP202 и DB9.
Последовательный интерфейс RS232:
Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT. Изначально создавался для связи компьютера с терминалом. В настоящее время используется в самых различных применениях.
Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс) Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.
Скорость передачи |
115 Кбит/с (максимум) |
Расстояние передачи |
15 м (максимум) |
Характер сигнала |
несимметричный по напряжению |
Количество драйверов |
1 |
Количество приемников |
1 |
Схема соединения |
полный дуплекс, от точки к точке |
Компьютер имеет 9-контактный (DB9P) разъем для подключения RS-232C.
Назначение сигналов следующее.
FG - защитное заземление (экран).
-TxD - данные, передаваемые компьютером в последовательном коде (логика отрицательная).
-RxD - данные, принимаемые компьютером в последовательном коде (логика отрицательная).
RTS - сигнал запроса передачи. Активен во все время передачи.
CTS - сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника.
DSR - готовность данных. Используется для задания режима модема.
SG - сигнальное заземление, нулевой провод.
DCD - обнаружение несущей данных (детектирование принимаемого сигнала).
DTR - готовность выходных данных.
RI - индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети.
Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи (рис.1.3.). Отметим, что данные передаются в инверсном коде (лоической единице соответствует низкий уровень, логическому нулю - высокий уровень).
Формат передачи данных RS-232
4.3. Выбор ЦАП и источника питания
Так как МК выдает последовательность импульсов, который можно принять за сигнал, квантованный как по уровню, так и по времени, то для преобразования этой последовательности в аналоговый непрерывный сигнал требуется Цифро-аналоговый преобразователь (ЦАП). Важной областью применения ЦАП является синтез аналоговых сигналов необходимой формы. Аналоговые генераторы сигналов - синусоидальной, треугольной и прямоугольной форм - имеют низкую точность и стабильность, не могут управляться от ЭВМ. В последние годы получили развитие системы прямого цифрового синтеза сигналов, обеспечивающие высокую точность задания частоты и начальной фазы сигналов, а также высокую верность воспроизведения их формы. Более того, эти системы позволяют генерировать сигналы большого многообразия форм, в том числе и форм, задаваемых пользователем.
Следовательно, в ЦАПах мы имеем не достаточно большую мощность, для усиления которой нам необходим усилитель мощности (УМ), для которого питание должно быть биполярным ±12В. Значит, одной батареи на 5В нам не достаточно. Этот вопрос я решила с помощью батарей на 12В. Возьмем 4 батарейки типа GR2025, литиевые с напряжением по 3В. Также нам необходим инвертор, с помощью которого можно получить -12В и стабилизатор напряжения на 5В, чтобы питать МК и ЦАП. Подсчитаем необходимую нам разрядность: число возможных значений амплитуд N=10/0.1=100 отсюда разрядность ЦАП n=7, следовательно, можно взять 10 разрядный ЦАП. В данном случае нам подходит ЦАП AD5310.
4.4 Выбор МК
При выборе МК следует учитывать такие параметры, как наличие опыта работы с применением данного МК, соответствие МК поставленной задаче и др. В качестве управляющего микроконтроллера был выбран МК MEGA 8. ATmega8, ATmega8L: 8-разрядные микроконтроллеры с 8 Кбайтами внутрисистемно программируемой Flash памятью.
Отличительные особенности:
Рабочие напряжения Рабочая частота
2,7 - 5,5 В (ATmega8L) 0 - 8 МГц (ATmega8L)
4,5 - 5,5 В (ATmega8) 0 - 16 МГц (ATmega8)
Расположение выводов:
Блок-схема:
Описание выводов модели ATmega 8:
Название вывода |
Назначение |
Порт В. |
|
PB0(ICP) |
Вход захвата таймера/счётчика |
PB1(OC1A) |
Выход А таймера/счётчика Т1 |
PB2 (SS/OC1B) |
Выбор Slave-устройства в канале SPI /выход В таймера / счётчика Т1 |
PB3(MOSI/OC2) |
Выход (Master) или вход (Slave) данных канала SPI/ Выход таймера/счётчика Т2 |
PB4(MISO) |
Вход (Master) или выход (Slave) данных канала SPI) |
PB5(SCK) |
Выход (Master) или вход (Slave) тактового сигнала SPI |
PB6(XTAL1/TOSC1) |
Вход тактового генератора/Вывод для подключения резонатора к таймеру/счётчику Т2 |
PB7(XTAL2/TOSC2) |
Выход тактового генератора/ Вывод для подключения резонатора к таймеру/счётчику Т2 |
Порт С. |
|
PC0(ADC0) |
Вход АЦП |
PC1(ADC1) |
Вход АЦП |
PC2(ADC2) |
Вход АЦП |
PC3(ADC3) |
Вход АЦП |
PC4(ADC4/SDA) |
Вход АЦП/Линия данных модуля TWI |
PC5(ADC5/SCL) |
Вход АЦП/Тактовый сигнал модуля TWI |
PC6(RESET) |
Вход сброса |
ADC6 |
Вход АЦП |
ADC7 |
Вход АЦП |
Порт D. |
|
PD0(RXD) |
Вход USART |
PD1(TXD) |
Выход USART |
PD2(INT0) |
Вход внешнего прерывания |
PD3(INT1) |
Выход внешнего прерывания |
PD4(T0/XCK) |
Вход внешнего тактового сигнала таймера/счётчика Т0/Вход/выход внешнего тактового сигнала USART |
PD5(T1) |
Вход внешнего тактового сигнала таймера/счётчика Т1 |
PD6(AIN0) |
Положительный вход компаратора |
PD7(AIN1 |
Отрицательный вход компаратора |
AREF |
Вход опорного напряжения для АЦП |
AGND |
Аналоговый общий вывод |
AVcc |
Вывод источника питания АЦП |
GND |
Общий вывод |
Vcc |
Вывод источника питания |
4.5 Выбор Стабилизатора напряжения и Инвертора
Для обеспечения питания микросхем используем стабилизатор напряжения компенсационного типа с отрицательной обратной связью - 142ЕН5, который стабилизирует подаваемое напряжение 12В в напряжение 5В, необходимое для питания микросхем генератора.
Инвертор возьмём 3-фазный мостовой MiniSKiiP 2:
Рабочие характеристики (если не указано прочее значение, то полагается Tc = 25 °C) |
||||||
Обозначение |
Наименование |
Условия снятия характеристики |
мин. |
ном. |
макс. |
Единица измерения |
IGBT-транзистор инвертора |
||||||
VCE(sat) |
напряжение насыщения коллектора-эмиттера |
ICnom = 100 A, Tj = 25 (150) °C |
1,05 |
1,45 (1,65) |
1,85 (2,05) |
В |
VGE(th) |
пороговое напряжение затвор-эмиттер |
VGE = VCE, IC = 2 мА |
|
5,8 |
|
В |
VCE(TO) |
Пороговое напряжение коллектора-эмиттера (статическое) |
Tj = 25 (150) °C |
|
0,9 (0,8) |
1,1 (1) |
В |
rT |
Дифференциальное сопротивление во включенном состоянии |
Tj = 25 (150) °C |
|
5,5 (8,5) |
7,5 (10,5) |
мОм |
Cies |
Входная емкость при закороченном выходе |
VGE = 25, VCE = 0 В, f = 1 МГц |
|
6,15 |
|
нФ |
Coes |
выходная емкость при закороченном входе |
VGE = 25, VCE = 0 В, f = 1 МГц |
|
1,12 |
|
нФ |
Cres |
Обратная передаточная емкость (емкость Миллера) |
VGE = 25, VCE = 0 В, f = 1 МГц |
|
0,9 |
|
нФ |
RCC'+EE' |
сопротивление пружинный контакт-кристалл |
Ts = 25 (150 )°C |
|
|
|
мОм |
Rth(j-s) |
Тепловое сопротивление |
для одного IGBT |
|
0,6 |
|
K/Вт |
|
||||||
td(on) |
длительность задержки включения |
VCC = 300 В, VGE = -8/+15В ICnom = 100 A, Tj = 125 °C RGon = RGoff = 8,2 Ом индуктивная нагрузка |
|
40 |
|
нс |
tr |
время нарастания |
|
40 |
|
нс |
|
td(off) |
длительность задержки выключения |
|
410 |
|
нс |
|
tf |
время спада |
|
50 |
|
нс |
|
Eon(Eoff) |
рассеиваемая энергия в процессе включения (выключения) |
|
3,4 (3,5) |
|
мДж |
|
Обратный диод инвертора |
||||||
VF = VEC |
прямое напряжение, равное напряжению на эмиттере-коллекторе |
IFnom = 100 A; Tj = 25 (150) °C |
|
1,3 (1,3) |
1,5 (1,5) |
В |
V(TO) |
пороговое напряжение |
Tj = 25 (150) °C |
|
0,9 (0,8) |
1 (0,9) |
В |
rT |
прямое дифференциальное сопротивление |
Tj = 25 (150) °C |
|
4 (5) |
|
мОм |
Rth(j-s) |
Тепловое сопротивление |
для одного диода |
|
0,8 |
|
K/Вт |
|
||||||
IRRM |
максимальный ток обратного восстановления |
IIFnom = 100 A, VR = 300 В VGE = 0В, Tj = 125 °C diF/dt = 2560 A/мкс |
|
102 |
|
A |
Qrr |
заряд восстановления |
|
15,5 |
|
мкКл |
|
Err |
Рассеиваемая энергия в процессе обратного восстановления |
|
3,3 |
|
мДж |
|
Датчик температуры |
||||||
Rts |
сопротивление |
3 %, Tr = 25 (100) °C |
|
1000 (1670) |
|
Ом |
Механические данные |
||||||
Ms |
монтажный вращающий момент |
|
2 |
|
2.5 |
Н · м |
M |
масса |
|
|
|
65 |
грамм |
IC - ток коллектора;
VGE - напряжение затвор-эмиттер;
VCE - напряжение коллектор-эмиттер;
Tj - температура перехода;
ICnom - номинальный ток коллектора;
VCC - напряжение питания коллектора-эмиттера;
RGon (RGoff)- внешнее последовательное сопротивление с затвором во время включения (выключения);
IFnom - номинальный прямой ток.
Внешний вид модулей семейства SKIIP 2:
Схема модуля:
Типовая схема включения:
4.6 Выбор УМ
Входное напряжение подается на свободный вывод резистора обратной связи ЦАП, размещенного на кристалле ИМС. В этой схеме выходной ток ЦАП
что при выполнении условия Rос=R дает
Следует отметить, что при коде "все нули" обратная связь размыкается. Предотвратить этот режим можно, либо запретив такой код программно, либо включив между выходом и инвертирующим входом ОУ резистор с сопротивлением, равным R·2N+1.
Схема делителя на основе ЦАП с выходом в виде напряжения, построенном на инверсной резистивной матрице и включающем буферный ОУ. Выходное и входное напряжения этой схемы связаны уравнением
Отсюда следует
В данной схеме усилитель охвачен как положительной, так и отрицательной обратными связями. Для преобладания отрицательной обратной связи (иначе ОУ превратится в компаратор) необходимо выполнение условия D<2N-1 или MD<1/2. Это ограничивает значение входного кода нижней половиной шкалы. Резисторы на отрицательной обратной связи нужны для компенсации смещения, вызванного входным током. Так же с их помощью рассчитан коэффициент усиления.
Для выполнения поставленной задачи будем использовать усилитель AD 718.
5. Блок-схемы
Блок-схемы подпрограммы ввода/вывода:
6. Программа
; включаем файл определний символических имен для процессора AT90Mega8
.include "m8def.inc"
; объявляем адреса расположения пользовательских переменных в ОЗУ
.equ MyTIrqCntr = $100
.equ MyADC_resLO = $101
.equ MyADC_resHI = $102
.equ MyADC_ReadyFlag = $103
; таблица векторов прерываний:
;#################################################
.org 0 ; - расположить следующие инструкции начиная с этого абсолютного адреса FLASH ПЗУ
rjmp RESET ;переход на RESET
; reti
; reti
; reti
.org OVF1addr ; == то же, что и .org 8 - Overflow1 Interrupt Vector Address
rjmp MyIntTimerOVF ;
.org ADCCaddr ; =$00e - ADC Interrupt Vector Address
rjmp MyIntADCsampleReady
;
;#################################################
RESET:
;1***** Инициализация указателя стека
;* Инициализация стека по старшему адресу внутренней SRAM
;* Комментарий для устройст без SRAM
ldi r16,high(RAMEND) ;старший байт требует только если
out SPH,r16 ;RAM больше чем 256 байт
ldi r16,low(RAMEND)
out SPL,r16
;2***** Конфигурации таймера 1 - 100 Гц Режим работы:
; - нормальный способ действия, prescaler Fosc/256
ldi r16, (0<<ICNC1 | 0<<ICES1 | 0<<WGM13 | 0<<WGM12 | 1<<CS12 | 0<<CS11 | 0<<CS10) ;== ldi r16, 0x07 ; == 00000100b
out TCCR1B, r16
ldi r16, (0<<COM1A1 | 0<<COM1A0 | 0<<COM1B1 | 0<<COM1B0 | 0<<FOC1A | 0<<FOC1B | 0<<WGM11 | 0<<WGM10) ;== ldi r16, 0x00
out TCCR1A, r16
in r16, TIMSK ;прывание по переполнению
ori r16,1<<TOIE1 ; == 0000 0100 == 7
;andi r16,~(1<<TOIE1) ; == 1111 1011 == 0xFB
out TIMSK, r16
;
;#################################################
;3***** Инициализация АЦП
;ADMUX регистр
ldi r16, 0b10000101; REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0
; REFS1,REFS0 = b10 => выбор источника опорного напряжения
; ADLAR = b0 => выравнивание результата преобразования
; MUX3..0 = b0101 => выбор входного канала ADC5
out ADMUX, r16
;ADCSRA регистр
ldi r16, 0b10001111; ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
;ADEN - разрешение АЦП
;ADSC - запуск преобразования (однократно)
;ADFR - выбор режима работы АЦП
;ADIF - флаг прерывания от компаратора (только чтение)
;ADIE - разрешение прерывания от компаратора
;ADPS2..0 - выбор частоты преобразования (b111 => 1/128)
out ADCSRA, r16
rcall Init_uart
sei ;
;ОСНОВНОЙ ЦИКЛ ПРОГРАММЫ
;в нем анализируется флаг готовности данных АЦП (установит прерывание)
;по готовности данных происходит подготовка и передача по последовательному порту RS-232
main_prog_loop:
;АЦП данные готовы?
lds r16, MyADC_ReadyFlag ; устанавливается в прерываниии АЦП
cpi r16, 1 ; сравнить с числом 1 (== ДА)
brne main_prog_loop ; если не готовы.. ждем
ldi r16, 0
sts MyADC_ReadyFlag, r16 ; сбрасываем флаг готовности данных
;Подготовить входные данные для вызова подпрограммы преобразования чисел в BCD (двоично-десятичный) формат
;fbinL =r16 ;двоичное значение, младший байт
;fbinH =r17 ;двоичное значение, старший байт
lds r16, MyADC_resLO ;
lds r17, MyADC_resHI ;
;ldi r16, low(12345) ; проверка преобразования и передачи известного числа
;ldi r17, high(12345)
rcall bin16BCD5 ; вызов подпрограммы BIN->BCD
;Результат BCD - теперь в регистрах:
;tBCD0 =r17 ;BCD значение, цифры 1 и 0
;tBCD1 =r18 ;BCD значение, цифры 3 и 2
;tBCD2 =r19 ;BCD значение, цифра 4
;ldi r20,'0' ;для преобразование в символ ASCII
mov r16,r19 ;BCD значение, цифра 4
andi r16, 0x0f ;для маскирования старших бит
add r16, r20
rcall Send
mov r16,r18 ;BCD значение, цифра 3
swap r16 ; поменять местами 4 старшие бита с 4-мя младшими
andi r16, 0x0f ;для маскирования старших бит
add r16, r20
rcall Send
mov r16,r18 ;BCD значение, цифра 2
andi r16, 0x0f ;для маскирования старших бит
add r16, r20
rcall Send
mov r16,r17 ;BCD значение, цифра 1
swap r16 ; поменять местами 4 старшие бита с 4-мя младшими
andi r16, 0x0f ;для маскирования старших бит
add r16, r20
rcall Send
mov r16,r17 ;BCD значение, цифра 0
andi r16, 0x0f ;для маскирования старших бит
add r16, r20
rcall Send
ldi r16, 13 ; символ - возврат каретки
rcall Send
rjmp main_prog_loop;
;Запустить цикл преобразования АЦП
ldi r16, 0b11001111; ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
;ADEN - ADC Enable
;ADSC - ADC Start Conversion (однократно)
;ADFR - ADC Free Running Select
;ADIF - ADC Interrupt Flag (только чтение)
;ADIE - ADC Interrupt Enable
;ADPS2..0 - ADC Prescaler Select Bits (b111 => 1/128)
out ADCSRA, r16
pop r16
out SREG,r16
pop r17
pop r16
reti
;#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
MyIntADCsampleReady:
;#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
push r16 ;сохранить знак
in r16, SREG ;сохранить значение
push r16 ;сохранить указатель строки результата
; Результат преобразования АЦП сейчас в паре регистров ADCH:ADCL
; Когда читаем ADCL, возможность обновления самим блоком АЦП регистра ADCH аппартно блокируется.
; Поэтому важно считывать результат в таком порядке - сначала ADCL, затем ADCH
in r16, ADCL
sts MyADC_resLO, r16 ; сохраняем результат в ячейки ОЗУ
in r16, ADCH
sts MyADC_resHI, r16
ldi r16, 1 ; активируем ячейку
sts MyADC_ReadyFlag, r16 ; устанавливаем для основного цикла флаг готовности данных
pop r16 ;загрузить адрес строки
out SREG,r16
pop r16
reti
Работа с прерываниями:
; включаем файл определний символических имен для процессора AT90Mega8
.include "m8def.inc"
; объявляем адреса расположения пользовательских переменных в ОЗУ
.equ MyTIrqCntr = $100
.equ MyADC_resLO = $101
.equ MyADC_resHI = $102
.equ MyADC_ReadyFlag = $103
; таблица векторов прерываний:
;#################################################
.org 0 ; - расположить следующие инструкции начиная с этого абсолютного адреса FLASH ПЗУ
rjmp RESET ;переход на RESET
; reti
; reti
; reti
.org OVF1addr ; == то же, что и .org 8 - Overflow1 Interrupt Vector Address
rjmp MyIntTimerOVF ;
.org ADCCaddr ; =$00e - ADC Interrupt Vector Address
rjmp MyIntADCsampleReady
;
;#################################################
RESET:
;1***** Инициализация указателя стека
;* Инициализация стека по старшему адресу внутренней SRAM
;* Комментарий для устройст без SRAM
ldi r16,high(RAMEND) ;старший байт требуется, так как
out SPH,r17
ldi r16,low(RAMEND) ;RAM больше чем 256 байт
out SPL,r16
;2***** Конфигурации таймера 1 - 100 Гц Режим работы:
; - нормальный способ действия, prescaler Fosc/256
ldi r16, (0<<ICNC1 | 0<<ICES1 | 0<<WGM13 | 0<<WGM12 | 1<<CS12 | 0<<CS11 | 0<<CS10) ;== ldi r16, 0x07 ; == 00000100b
out TCCR1B, r16
ldi r16, (0<<COM1A1 | 0<<COM1A0 | 0<<COM1B1 | 0<<COM1B0 | 0<<FOC1A | 0<<FOC1B | 0<<WGM11 | 0<<WGM10) ;== ldi r16, 0x00
out TCCR1A, r16
in r16, TIMSK ; прывание по переполнению
ori r16,1<<TOIE1 ; == 0000 0100 == 7
;andi r16,~(1<<TOIE1) ; == 1111 1011 == 0xFB
out TIMSK, r16
;
;#################################################
;3***** Запись таблицы синусов
; ***** EEPROM ***********************
; EEDR - EEPROM Data Register
; EECR - EEPROM Control Register
.equ EERE = 0 ; EEPROM Read Enable
.equ EEWE = 1 ; EEPROM Write Enable
.equ EEMWE= 2 ; EEPROM Master Write Enable
.equ EEWEE= EEMWE ; For compatibility
.equ EERIE = 3 ; EEPROM Ready Interrupt Enable
;****AVR studio: View New Memory View(Alt+4) EEPROM записываем туда таблицу ;синусов
Ram:
in R16, EEDR
sts MyADC_resLO, R16 ; сохраняем результат в ячейки ОЗУ
in R16, EEDR
sts MyADC_resHI, R16
; *****Настраиваем таймер
; ******разрешаем прерывания
loop:
; Define pull-ups and set outputs high
; Define directions for port pins
ldi r16, 1<<PB1
ldi r17, 1<<DDB1
;init port b
out PORTB,r16
out DDRB,r17
mainloop:
; Read port pins
in r16,PINB
;invert bit 1 state
ldi r17, 1<<PB1
eor r16,r17
; wr to port
out PORTB,r16
rcall delay1
rcall delay1
rcall delay1
rcall delay1
rcall delay1
rjmp mainloop;
;########################## передача данных из ОЗУ
;по готовности данных происходит подготовка и передача по последовательному порту SPI
delay1:
; готов??
lds r16, My ADC _ReadyFlag ; устанавливается в прерывании и АЦП
cpi r16, 1 ; сравнить с числом 1 (== ДА)
brne delay1 ; если пока не готовы.. ждем
lds temp, Low ; загрузить в SPI младший байт ОЗУ
out MyADC_resLO, temp
out SPI, temp ; вывод в порт
delay2:
; готов??
ldi r16, My ADC _ReadyFlag ; устанавливается в прерывании и АЦП
cpi r16, 1 ; сравнить с числом 1 (== ДА)
brne delay2 ; если пока не готовы.. ждем
ldi temp, High ; загрузить в SPI старший байт ОЗУ
out MyADC_resHI, temp
out SPI, temp ; вывод в порт
rjmp delay1;
7. Заключение
В ходе данной курсовой работы по проектированию цифрового генератора аналоговых сигналов были разработаны структурная, электрическая и функциональные схемы устройства. Разработана блок-схема опроса кнопок и работы генератора, а также написана программа
8.Список литературы
1.Д.Гивоне.Р.Россер «Микропроцессоры и микрокомпьютеры» Москва «Мир» 1983
2.А.В.Евстифеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы Atmel» Москва, «Додэка- XXI»,2005
3.М.Гук «Энциклопедия «Аппаратные средства IBM PC», С-Пб, «Питер» 2003
4.www.atmel.com
5.www.analog.com
6.www.eltech.ru
7.www.chip-dip.ru
8.www.radiokot.ru
9.www.gaw.com
Лист
№ докум.
Подпись
Дата
Лист
1
Содержание
программа
Программа
21
Дата
Подпись
№ докум.
Лист
Изм.
RET
call DBNC
call WAITOP
call Scan
dec R17
inc R16
call PRINT
Jmp Start IO
Да Start IO: R17=0 Нет
Пуск таймера
Разрешение прерываний
Установка начального режима таймера Т0
Конец
Загрузка начального адреса данных синуса
Преобразование частоты в задержку, коррекция с учётом длины прерывания Т0 и сохранение в регистры
Преобразование амплитуды в байт и сохранение в регистр
Литература
27
Дата
Подпись
№ докум.
Лист
Изм.
Блок - схемы
20
Дата
Подпись
№ докум.
Лист
Изм.
Нет Введено значение Да
0,1..100?
Вызов программы ввода/вывода
Загрузка в регистр количества символов для ввода
Загрузка в регистр начального адреса для записи кнопок
Перевод строки
Да Введено значение нет
1..10?
Вызов программы ввода/вывода
Загрузка в регистр количества символов для ввода
Загрузка в регистр начального адреса для записи нажатых кнопок
Инициализация таймера
Запрет всех прерываний
Инициализация порта
Инициализация стека
Инициализация всех устройств
Начало
Блок -схемы
19
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
17
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
16
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
15
Дата
Подпись
№ докум.
Лист
Изм.
Разработка микропроцессорного измерителя пульса.
12
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Разработка микропроцессорного измерителя пульса.
7
Лист
Дата
Подпись
№ докум.
Лист
Изм.
азработка микропроцессорного измерителя пульса.
9
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Разработка микропроцессорного измерителя пульса.
11
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
18
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
14
Дата
Подпись
№ докум.
Лист
Изм.
Разработка микропроцессорного измерителя пульса.
10
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
6
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
13
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
8
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Подбор элементов принципиальной схемы
6
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Рис.1 Упрощеная структурная схема цифрового генератора аналоговых сигналов
Структурная схема
5
Лист
Дата
Подпись
№ докум.
Лист
Изм.
ИП
СН
УМ
ЦАП
ПК
УВ
МК
Задание
2
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Введение
3
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Структурная схема
4
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Передача данных на RS-232
25
Дата
Подпись
№ докум.
Лист
Изм.
Программа
23
Лист
Дата
Подпись
№ докум.
Лист
Изм.
Изм.
Лист
№ докум.
Подпись
Дата
Лист
22
Программа
Изм.
Лист
№ докум.
Подпись
Дата
Лист
24
программа
Заключение
26
Дата
Подпись
№ докум.
Лист
Изм.
1
В
12В
Батарея
1
R7
МЛТ-0.25-1.4кОм±5%
1
R6
МЛТ-0.25-1кОм±5%
5
R1,2,3,4,5
МЛТ-0.25-10 ОМ±5%
Резисторы
3
С1,С2,С3
КЛС - 12нФ ± 0.1%
Конденсаторы
1
Z
11МГЦ
Кварцевый резонатор
1
D
ATmega8
Микроконтроллер
Кол.
Примечание
Наименование
Поз.
обозн.
Спецификация
Лист
Дата
Подпись
№ докум.
Лист
Изм.