Разработка устройств на основе микроконтроллеров AVR фирмы Atmel Corporation

Автор работы: Пользователь скрыл имя, 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

Работа состоит из  1 файл

Мой курсовой.DOC

— 360.00 Кб (Скачать документ)

            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,8192 
 

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

;*          Таблица коэффициентов деления             *

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

tabkd: .dw  0

            .dw  4748,4480,4228,3992,3768,3556,3356,3168,2990,2822,2664,2514

            .dw  2374,2240,2114,1996,1884,1778,1678,1584,1495,1411,1332,1257

            .dw  1187,1120,1057, 998, 942, 889, 839, 792 
 

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

;*            Таблица начал всех мелодий              *

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

tabm: .dw  mel1*2,mel2*2,mel3*2,mel4*2 
 

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

;*                   Таблица мелодий                  *

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

;        В траве сидел кузнечик

mel1: .db  109,104,109,104,109,108,108, 96,108,104

            .db  108,104,108,109,109, 96,109,104,109,104

            .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,111,109,108,109,109, 96,109

            .db  111, 79, 79,111,111,112, 80, 80,112,112

            .db  112,111,109,108,141,128, 96,255  

;        Песенка крокодила Гены

mel2: .db  109,110,141,102,104,105,102,109,110,141

            .db  104,105,107,104,109,110,141,104,105,139

            .db  109,110,173, 96,114,115,146,109,110,112

            .db  109,114,115,146,107,109,110,114,112,110

            .db  146,109,105,136,107,105,134,128,128,102

            .db  105,137,136,128,104,107,139,137,128,105

            .db  109,141,139,128,110,109,176,112,108,109

            .db  112,144,142,128,107,110,142,141,128,105

            .db  109,139,128,173,134,128,128,109,112,144

            .db  142,128,107,110,142,141,128,105,109,139

            .db  128,173,146,128, 96,255 

;        В лесу родилась елочка

mel3: .db  132,141,141,139,141,137,132,132,132,141

            .db  141,142,139,176,128,144,146,146,154,154

            .db  153,151,149,144,153,153,151,153,181,128

            .db   96,255 

;        Happy births to you

mel4: .db  107,107,141,139,144,143,128,107,107,141

            .db  139,146,144,128,107,107,151,148,146,112

            .db  111,149,117,117,148,144,146,144,128,255 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Вывод

     В ходе курсовой работы мы рассмотрели особенности и возможности микроконтроллеров 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