Цифровий музичний дзвоник

Автор работы: Пользователь скрыл имя, 22 Апреля 2013 в 18:53, курсовая работа

Краткое описание

Мета роботи – розробити принципову схему гірлянди на мікроконтролері
У курсовому проекті розглядається схема гірлянди на мікроконтролері. В ході виконання курсового проекту було розглянуто технічні дані системи, розроблені режими роботи даної схеми також було докладно розглянуто принцип побудови та роботи електрично – принципових схем плат.

Прикрепленные файлы: 1 файл

Цифровий музичний дзвоник.docx

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

clr    tmp2

ldi    tmp2,  $C8    ;АЦП дозволений, старт преобразовання

out    ADCSR,  tmp2  ;Одиночное преобразовання

;Збереження данних АЦП

in     Axx,  ADCL

in      Ayy,  ADCH ; віднімання значення АЦП від набраного значення

mov   А1,  Axx

mov   Ah,  Ayy

sub    Al,  Zl

sbc    Ah,  Zh

nop

brbs  2, SleepReset      ;рівень АЦП досягнутий ;

сброс всех значень тимчасових регістрів

clr    tmp

clr    tmp2

clr    tmp3

clr    tmp4

clr  Freqlndex

clr       FreqDelay

; налаштування напрямків роботи ліній порту В

ldi    tmp2, $04

out     DDRB, tmp2

;режим работи таймера ТО з максимальним попереднім

;діленням для встановлення часу музичного супроводу

ldi    tmp3,  $05

out     TCCR0, tmp3   ;максимальне ділення  СК/1024

ldi      tmp3,  $02

out     TIMSK, tmp3  ;дозволяємо преривання по переполненню

;від ТО і преривання від Т1

Sei

 

;настройка таймера Т1 для музыкального сопровождения ;

выбор коэффициента предварительного деления тактовой частоты 

;1:64 и автоматический сброс  таймера при совпадении 

ldi    tmp4,  $9B    ;настройка режима #10011011

;режим работы таймера 1 на переключение внешнего вывода,

;состояние вывода меняется на противоположное,

out   TCCR1,  tmp4  ;вывод ОС1А линия вывода (РВ1)

 

; установка номера шага на начало

clr   Step

 

;начало воспроизведения мелодики

 

ReadNote:                     ;чтение длительности и номера одной ноты

wdr

ldi         r31,High(2*ProgramTab)             ;FreqIndex  =  Lo

;ProgramTab[Step]

ldi         r30,Low(2*ProgramTab)           ;FreqDelay  =  Hi

;ProgramTab[Step]

mov         rO,Step                                      ;   Step++

lsl        r0

add      r30,r0

inc       Step

lpm

mov     Freqlndex,r0

inc       r30

lpm

cpi       Step,   $16

brne     dal

rjmp      SleepReset                       ;это означает,   что  мелодия

;закончилась

;Если  ноты  не  закончились,   то  продолжить 

dal:    nop

mov         FreqDelay, r0

SetFreq:        ; настройка Т1 на вывод частоты текущей ноты

ldi         r31,High(2*SoundTab)       ;0CR1A =

;SoundTab[Freqlndex]

ldi          r30, Low(2*SoundTab)

lsl         Freqlndex

add       r30, Freqlndex

lpm

out        OCR1A, r0

inc          r30

lpm

out        OCRlB, rO

;Установка  длительности ноты

SetDalay:        nop

ldi         r31, High (2*NoteDelay)

ldi         r30, Low (2*NoteDelay)

lpm

mov          FreqDelay,r0

;Озвучивание ноты

Wait: tst    FreqDelay     ;Проверка на ноль длительности ноты

 

; Ожидаем заданное время, пока проигрывается 

brne  Wait                    ; текущая нота

;Если длительность ноты = 0, то переход к следующей ноте

Rjmp    ReadNote

SleepReset:

ldi     r30,  $3F                          ; подготовка к переходу в

; режим "Power Down"

out     MCUCR,  rЗО

sleep                                ; отключение микроконтроллера

rjmp  Reset          ; эта команда в данной версии

;программы не должна исполняться никогда

;Прерывание от таймера  0, уменьшение шага длительности  ноты 

ТIМЕ_0:      пор

dec   FreqDelay

clr    tmp4

out    TCNT1, tmp4   ;обнуление таймера 1

reti

.ORG    $100

SoundTab:

; Таблица констант, соответствующих нотам.

; Желательно выровнять таблицу по границе 256 байтов, чтобы

; упростить программу,  отказавшись от 16-битовых операций.

.DW 32047,32106,32095,32089,32084,32071,32063   ;440 Гц - "ля"

.DW 32060,32053,32047,32045,32042,32036,32032   ;2-я октава

.DW 32030,32027,32024,32022,32021,32018,32016   ;3-я октава

; при необходимости таблицу  можно продолжить.

.ORG  $140

ProgramTab:

; Таблица последовательности нот,

; формат таблицы: байт длительности/кода операции, байт

; номера частоты.

; В этом примере записано проигрывание гаммы.

. DW  $1000, $1002, $1003, $1004, $1005, $1006, $1007

.DW   $1008, $1009, $100А, $100В, $100С, S100D, $100Е

.DW  $200D, $200B, $2009, $2007, $2005, $2003, $2001

.DW   $8000

 

.ORG  $180

NoteDelay:

; Таблица длительности нот,

.DW  $0064, $3200, $1003, $1004, $1005, $1006, $1007

.DW  $1008, $1009, $100А, S100B, $100С, $100D, $100E

.DW  $200D, $200B, $2009, $2007, $2005, $2003, $2001

.DW  $8000

.EXIT

 

Лістинг 5.2. Шістнадцятирічний  код програми для музичного дзвоника

 

020000020000FC

100000001ЗС0000000000000000055С00000000008

1O002800000OEDE5F0E0AA27A1E8A7B9F894CC27ED

10003800C8ECC6B974B185B1172F282F1E1B2F0B1A

1000480000008AF1BB27CC27AA27992755276627BE

10005800C4E0C7BBA5E0A3BFA2E0A9BF7894 9BE911

1000680090BF4 427A895F2E0E0E804 2E00OCEO0DCC

100078004395C895502DE395C895463109F413C0AA

100088000000602DF2EOEOE0550FE50FC8 950EBCCA

1OO0980OE395C895ODBC0O00F3E0EOE0C8 956O2D3D

1000A8006623F1F7DFCFEFE3E5BF8895B9CF00000E

0800B8006A959927 9FBD189578

100200002F7D6A7D5F7D597D547D477D3F7D3C7D9F

10021000357D2F7D2D7D2A7D247D207D1E7D1B7DBE

0A022000187D167D157D127D107DFE

1002800000100210031004100510061007100810СВ

1002900009100A100B100C100D100E100D200B2061

ОС02А00009200720052003200120008019

1003000064000032031004100510061007100810D6

1003100009100A100B100C100D100E100D200B20EO

ОС03200009200720052003200120008098

00000001FF

Зверніть увагу на те, що таблицю тривалості нот і частоту  ноти можна прочитати тільки за допомогою  команди LPM мікроконтролера. Ця команда у версії ATtiny 15 по суті - єдина, вона виконує функції непрямого читання даних з пам'яті в регістр R0. Крім того, існує обмеження стека по нижньому рівню. Стек підтримує не більше трьох вкладень. Автор перевірив в симуляторі AVR Studio 4 вкладення стека на рівні 3, і виявив збій програми, оскільки команди умовного переходу теж використовують стек. Програма втрачає функціональність і послідовність. З огляду на ці зауваження, вихідна "прошивка" має невеликий обсяг (для мікроконтролера Tiny 15), але перевірена і цілком працездатна.

По закінченню програвання  мелодії мікроконтроллер переходить в "сплячий" режим незалежно  від живлення схеми.

 

4 КОНСТРУКЦІЯ І РОБОТА  ПРИСТРОЮ

 

 

Система команд мікроконтролера

Система команд представляється  специфікацією відповідності (мікро) команд розділами кодів (мікро) операцій, які виконуються при виклику  команди, що визначаються (мікро) архітектурою системи. (При цьому, на системах з  різною (мікро) архітектурою може бути реалізована одна і та ж система  команд.

     Базовими командами  є, як правило, такі:

- арифметичні, наприклад  «додавання» і «вирахування»; 

- бітові, наприклад «логічне  і», «логічне або» і «логічне  не»; 

- присвоювання даних,  наприклад «перемістити», «завантажити»,  «вивантажити»; 

- введення-виведення, для  обміну даними з зовнішніми  пристроями;

- керуючі інструкції, наприклад  «перехід», «умовний перехід», «виклик  підпрограми», «повернення з підпрограми».

Система команд мікроконтролера ATtiny15 представлена в таблиці 4.1

Таблиця 4.1 Система команд мікроконтролера ATtiny15

Позначення

Функція

ADC

Зняти з перенесенням

ADD

Скласти без переносу

ADIW

Скласти безпосереднє значення зі словом

AND

Виконати логічне AND

ANDI

Виконати логічне AND c безпосереднім значенням

ASR

Арифметично зрушити вправо

BCLR

Очистити флаг

BLD

Завантажити T флаг в біт регістра

BRBC

Перейти якщо біт в регістрі статусу очищений

BRBS

Перейти якщо біт в регістрі статусу встановлений

BRCC

Перейти якщо флаг переносу очищений

BRCS

Перейти якщо флаг переносу встановлений

BREQ

Перейти якщо одно

BRGE

Перейти якщо більше або  дорівнює (з урахуванням знаку)

BRHC

Перейти якщо флаг півпереноса очищений

BRHS

Перейти якщо флаг півпереноса встановлений

BRID

Перейти якщо глобальне переривання  заборонено

BRIE

Перейти якщо глобальне переривання  дозволено

BRLO

Перейти якщо менше (без знаку)

BRLT

Перейти якщо менше ніж (зі знаком)

BRMI

Перейти якщо мінус

BRNE

Перейти якщо не дорівнює

BRPL

Перейти якщо плюс

BRSH

Перейти якщо дорівнює або  більше (без знаку)

BRTC

Перейти якщо флаг T очищений

BRTS

Перейти якщо флаг T встановлений

BRVC

Перейти якщо переповнення очищено

BRVS

Перейти якщо переповнення встановлено

BSET

Встановити флаг

BST

Переписати біт з регістра в флаг T

CALL

Виконати довгий виклик підпрограми

CBI -

Очистити біт в регістрі I / O

CBR

Очистити біти в регістрі

CLC

Очистити флаг переносу

CLH

Очистити флаг полупереноса

CLI

Очистити флаг глобального переривання

CLN

Очистити флаг від'ємного значення

CLR

Очистити регістр

CLS

Очистити флаг знака

CLT

Очистити флаг T

CLV

Очистити флаг переповнення

CLZ

Очистити флаг нульового значення

COM

Виконати доповнення до одиниці

CP

Порівняти

CPC

Порівняти з урахуванням  перенесення

CPI

Порівняти c константою

CPSE

Порівняти й пропустити якщо одно

DEC

Декрементіровать

EOR

Виконати виключає OR

ICALL

Викликати підпрограму побічно

IJMP

Перейти побічно

IN

Завантажити дані з порту  I / O в регістр

INC

Інкрементувати

FMUL

Дробове незнакові множення

FMULS

Дробове множення зі знаком

FMULSU

Дробове множення знакового  з незнакові

JMP

Перейти

LD Rd, X

Завантажити побічно

LD Rd, X +

Завантажити побічно інкрементіровав  згодом

LD Rd,-X

Завантажити побічно декрементіровав  попередньо

LDI

Завантажити безпосереднє значення

LDS

Завантажити безпосередньо  з СОЗУ

LPM

Завантажити байт пам'яті  програм

LSL

Логічно зрушити вліво

LSR

Логічно зрушити вправо

MOV

Копіювати регістр

MUL

Перемножити

NEG

Виконати додаток до двох

NOP

Виконати холосту команду

OR

Виконати логічне OR

ORI

Виконати логічне OR з безпосереднім значенням

OUT

Записати дані з регістра в порт I / O

POP

Завантажити регістр з  стека

PUSH

Помістити регістр у стек

RCALL

Викликати підпрограму щодо

RET

Повернутися з підпрограми

RETI

Повернутися з переривання

RJMP

Перейти щодо

ROL

Перемістити ліворуч через  перенесення

ROR

Зрушити вправо через перенесення

SBC

Відняти з перенесенням

SBCI

Відняти безпосереднє значення з перенесенням

SBI

Встановити біт в регістр  I / O

SBIC

Пропустити якщо біт в  регістрі I / O очищений

SBIS

Пропустити якщо біт в  регістрі I / O встановлений

SBIW

Відняти безпосереднє значення зі слова

SBR

Встановити біти в регістрі

SBRC

Пропустити якщо біт в  регістрі очищений

SBRS

Пропустити якщо біт в  регістрі встановлений

SEC

Встановити прапор переносу

SEH

Встановити прапор полу переносу

SEI

Встановити прапор глобального  переривання

SEN

Встановити прапор від'ємного значення

SER

Встановити всі біти регістра

SES

Встановити прапор знака

SET

Встановити флаг T

SEV

Встановити флаг переповнення

SEZ

Встановити флангу льового  значення

SLEEP

Встановити режим SLEEP

ST X, Rr

Записати побічно

ST Y, Rr

Записати побічно з  регістра в СОЗУ з використанням індексу Y

ST Z, Rr

Записати побічно з  регістра в СОЗУ з використанням                                 індексу Z

STS

Завантажити безпосередньо  в СОЗУ

SUB

Відняти без переносу

SUBI

Відняти безпосереднє значення

SWAP

Поміняти ніббли місцями

TST

Перевірити на нуль чи мінус

WDR

Скинути сторожовий таймер


         

 

ВИСНОВКИ

 

 

У даному курсовому проекті  розглядалося питання розробки цифрового  музичного дзвоника на мікроконтролері ATtiny15.

Процес розробки цифрового  термометра був розбитий на ряд етапів:

- Вивчення теоретичних  основ процесу розробки пристроїв  на мікроконтролерах;

- Аналіз завдання і  сімейства МК.

- Описанняелементної бази.

- Розробка структурної  схеми пристрою;

- Розробка функціональної  схеми пристрою;

- Складання алгоритму  програми для мікроконтролера;

- Складання програми для  мікроконтролера, згідно виконуваних  функцій;

- Складання принципової  схеми пристрою;

Цей пристрій може бути рекомендовано  лише в радіоаматорській практиці.

 

ПЕРЕЛІК ПОСИЛАНЬ

 

 

1. "DimmableFluorescentBallast" –  UserGuide, 10/07, AtmelCorporation, http://www.atmel.com/dyn/resources/prod_documents/doc7597.pdf

2. ГОСТ13109-97. Нормыкачестваэлектрическойэнергии  в системах электроснабженияобщегоназначения.

3. G. Howell "Fivequestionsaboutresistors" // EDN, 9/28/2006, http://www.edn.com/contents/images/6372835.pdf

4. П. Хоровиц, У. Хилл "Искусствосхемотехники" –  Изд. 6-е, М.: Мир, 2003.

5. "TheDo'sandDon'tsofUsing MOS-Gated Transistors" – ApplicationNote AN-936, InternationalRectifier, http://www.irf.com/technical-info/appnotes/an-936.pdf

6. "CharacterizationandCalibrationofthe ADC onan AVR" – ApplicationNote AVR120, 02/06, AtmelCorporation, http://www.atmel.com/dyn/resources/prod_documents/doc2559.pdf

7."Frequentlyaskedquestionsaboutdimmers" // http://www .lutron.com/product_technical/faq.asp

16. Заец Н.И. Радиолюбительскиеконструкции  на микроконтроллерах. Книга 1 – М., Солон-ПРЕСС, 2001- 368с.

17. Заец Н.И. Радиолюбительскиеконструкции  на микроконтроллерах. Книга 2 – М., Солон-ПРЕСС, 2003- 296 с.

18. Заец Н.И. , Сергеев В.С.Радиолюбительскиеконструкции  на микроконтроллерах. Книга 4 – М., Солон-ПРЕСС, 2009 - 412с.

19. Белов А.В. МикроконтролерыAtmel в радиолюбительскойпрактике –  СПб: Наука и Техника, 2007 -352с.

20. Кравченко А.В. 10 практическихустройств  на микроконтроллерах. Книга 1 – М., Изд. Дом «Додэка-ХХ» , МК-ПРЕСС, 2008 – 224с.

 

 

 

 

 

 

 

 

 

 

 

 

 


Информация о работе Цифровий музичний дзвоник