Автор работы: Пользователь скрыл имя, 17 Мая 2012 в 19:37, курсовая работа
Научно-технический прогресс неутомимо идет вперед, в результате не только в промышленной, но и в бытовой технике все шире используются встроенные компьютерные системы на основе микроконтроллеров.
Вступление……………………………………………………………………………...3
Раздел 1. Разработка устройств на основе микроконтроллеров AVR фирмы Atmel Corporation……………………………………………………………………………....4
1.1. Общий обзор микроконтроллеров AVR…………………………………...4
1.2. Программное обеспечение…………………………………………………8
1.2.1. AVR Studio…………………………………………………….……8
1.2.2. Code Vision AVR…………………………………………………...9
1.4. Обзор микроконтроллеров AVR семейства Tiny………………………..10
Раздел 2. Задание на разработку устройства на основе микроконтроллера AVR..13
2.1. Выбор элементов системы управления и разработка принципиальной схемы……………………………………………………………………………13
2.2 Разработка алгоритма управляющей программы………………………...16
Раздел 3. Программная реализация задачи………………………………………….18
Вывод…………………………………………………………………………………..29
Список использованной литературы………………………………………………...30
lds count,melod ; Читаем код текущей мелодии
inc count ; Увеличение номера мелодии на 1
cpi count,4 ; Проверка не последняя ли мелодия
brne km2 ; Если не последняя, переход
clr count ; Обнуление счетчика
km2: sts melod,count ; Помещаем
номер в ячейку памяти
;-------------------------- Выбор мелодии
km3:
mov YL, count ; Вычисляем адрес, где
ldi ZL, low(tabm*2) ; хранится начало мелодии
ldi ZH, high(tabm*2)
rcall addw ; К подпрограмме
16-разрядного сложения
lpm XL, Z+ ; Извлекаем адреса из таблицы
lpm XH, Z ; и помещаем в X
;--------------------------- Воспроизведение
мелодии
km4: mov ZH, XH ; Записываем в Z начало мелодии
mov ZL, XL
km5: in temp, PINB ; Читаем содержимое порт B
sbrc temp, 6 ; Проверяем нажата ли еще кнопка звонка
rjmp km6 ; Если равно (кнопки
отпущены) в начало
lpm temp, Z ; Извлекаем код ноты
cpi temp, 0xFF ; Проверяем не конец ли мелодии
breq km4 ; Если конец, начинаем
мелодию сначала
andi temp, 0x1F ; Отделяем от кода частоту
mov fnota, temp ; Записываем в регистр частоту ноты
lpm temp, Z+ ; Еще раз берем код ноты
rol temp ; Сдвигаем так, что бы три старших
rol temp ; разряда стали младшими
rol temp
rol temp
andi temp, 0x07 ; Извлекаем код длительности задержки
mov dnota, temp ; Помещаеем ее
в ячейку длительности
rcall nota ; К подпрограмме
воспроизведения ноты
rjmp km5 ; В начало цикла (следующая
нота)
km6: ldi temp, 0x00 ; Выключаем звук
out TCCR1A, temp
rjmp main
;*****************************
;*
Вспомогательные подпрограммы
;*****************************
; ---------------------- Подпрограмма 16-ти разрядного сложения
addw: push YH
lsl YL ; Умножение первого слагаемого на 2
ldi YH, 0 ; Второй байт первого слагаемого = 0
add ZL, YL ; Складываем два слагаемых
adc ZH, YH
pop YH
ret
;----------------------- Подпрограмма исполнения одной ноты
nota: push ZH
push ZL
push YL
push temp
cpi fnota, 0x00 ; Проверка не пауза ли
breq nt1 ; Если пауза, переходим
сразу к задержке
mov YL, fnota ; Вычисляем адрес, где хранится
ldi ZL, low(tabkd*2) ; коэффициент деления для текущей ноты
ldi ZH, high(tabkd*2)
rcall addw ; К подпрограмме
16-разрядного сложения
lpm temp, Z+ ; Извлекаем мл. разр. КД для текущей ноты
lpm temp1, Z ; Извлекаем ст. разр. КД для текущей ноты
out OCR1AH, temp1 ; Записать в старш. часть регистра совпадения
out OCR1AL, temp ; Записать в младш.
часть регистра совпадения
ldi temp, 0x40 ; Включить звук
out TCCR1A, temp
nt1: rcall wait1 ; Задержка
ldi temp, 0x00 ; Выключить звук
out TCCR1A, temp
ldi dnota,0 ; Сбрасываем задержку
rcall wait1 ; Пауза между нотами
pop temp
pop YL
pop ZL
pop ZH
ret
;----------------------- Подпрограмма задержки
wait1: push ZH
push ZL
push YH
push YL
mov YL, dnota ; Вычисляем адрес, где хранится
ldi ZL, low(tabz*2) ; нужный коэффициент задержки
ldi ZH, high(tabz*2)
rcall addw ; К подпрограмме
16-разрядного сложения
lpm YL, Z+ ; Читаем первый байт коэффициента задержки
lpm YH, Z ; Читаем второй байт
коэффициента задержки
clr ZL ; Обнуляем регистровую пару Z
clr ZH
; Цикл задержки
ww1: ldi loop,255 ; Пустой внутренний цикл
ww2: dec loop
brne ww2
adiw R30, 1 ; Увеличиваем регистр Z на единицу
cp YL, ZL ; Проверка младшего разряда
brne ww1
cp YH, ZH ; Проверка старшего разряда
brne ww1
pop YL ; Завершение подпрограммы
pop YH
pop ZL
pop ZH
ret
;*****************************
;*
Таблица задержек
;*****************************
tabz: .dw
128,256,512,1024,2048,4096,
;*****************************
;*
Таблица коэффициентов деления
;*****************************
tabkd: .dw 0
.dw 4748,4480,
.dw 2374,2240,
.dw 1187,1120,
;*****************************
;*
Таблица начал всех мелодий
;*****************************
tabm: .dw mel1*2,mel2*2,mel3*
;*****************************
;*
Таблица мелодий
;*****************************
; В траве сидел кузнечик
mel1: .db 109,104,109,104,
.db 108,104,108,
.db 109,108,108, 96,108,104,108,104,108,141
.db 96,109,111, 79, 79,111,111,112, 80, 80
.db 112,112,112,
.db 111, 79, 79,111,111,112, 80, 80,112,112
.db 112,111,109,
; Песенка крокодила Гены
mel2: .db 109,110,141,102,
.db 104,105,107,
.db 109,110,173, 96,114,115,146,109,110,112
.db 109,114,115,
.db 146,109,105,
.db 105,137,136,
.db 109,141,139,
.db 112,144,142,
.db 109,139,128,
.db 142,128,107,
.db 128,173,146,
; В лесу родилась елочка
mel3: .db 132,141,141,139,
.db 141,142,139,
.db 153,151,149,
.db 96,255
; Happy births to you
mel4: .db 107,107,141,139,
.db 139,146,144,
.db 111,149,117,
Вывод
В
ходе курсовой работы мы рассмотрели особенности
и возможности микроконтроллеров AVR. Также
было разработано устройство на основе
микроконтроллера AVR, а именно электронный
кодовый замок. Особенностью разработанного
устройства является минимальное использование
различных составляющих компонентов,
а следовательно и низкая стоимость при
значительных функциональных возможностях.
Программа была разработана среде
разработки AVR Studio, которая предоставляет
большие возможности по отладке и разработке
различных программ для AVR микроконтроллеров.
Список
использованной литературы
1. Белов А. В. Микроконтроллеры
AVR в радиолюбительской практике. — СПб.:
Наука и Техника, 2007. — 352 е.: ил.
2. Белов А. В. Самоучитель разработчика устройств на микроконтроллерах AVR
Наука и Техника,
2008. — 544 с: ил.
3. Белов А. В. Создаем
устройства на микроконтроллерах. — СПб.:
Наука и Техника, 2007. — 304 с: ил.
4. Голубцов М. С.
Микроконтроллеры AVR: от простого к сложному
/ М. С. Голубцов — М.: СОЛОН-Пресс, 2003. 288
с. — (Серия «Библиотека инженера»).
5. Гребнев В. В. Микроконтроллеры
семейства AVR фирмы Atmel. — М.: ИП РадиоСофт
2002— 176 с: ил.
6. Евстифеев А.В.
Микроконтроллеры AVR семейства Classic фирмы
ATMEL - 3е изд., стер. — М.: Издательский дом
«Додэка_XXI», 2006. - 288 с.: ил. (Серия «Мировая
электроника»).
7. Система команд
8-розрядных RISK микроконтроллеров семейства
AVR
8. Трамперт В. AVR-RISC
микроконтроллеры.: Пер, с нем, — К,; "МК-Пресс",
2006,— 464 с, ил.
9. ATtiny2313 Datasheet: 8-bit
Microcontroller with 2K Bytes In-System Programmable Flash ATtiny2313/V
Preliminary
Информация о работе Разработка устройств на основе микроконтроллеров AVR фирмы Atmel Corporation