Смекни!
smekni.com

Разработка микропроцессорной системы на базе микроконтроллера - синтезатора игры пианино в пределах (стр. 4 из 5)

, (7.2)

где I – ток в цепи, А

R – сопротивление резистора, Ом

Подставив в формулу предыдущее выражение получаем:

(7.3)

Таким образом, если выразить отсюда сопротивление получится формула необходимая для расчета:

(7.4)

Рассчитаем сопротивление резисторов для максимально допустимого тока цепи, т е 25 мА, для этого подставим необходимые значения в формулу:

для светодиодов VD1 – VD8 (АЛ307АМ):

Таким образом, получаем, что минимальное сопротивление резисторов R1 – R8,R9,R13 должно быть не меньше, чем 104 Ома. Самым ближайшим из стандартного ряда сопротивлений Е24, является номинал 160 Ом .

Максимальное сопротивление применяемых резисторов ничем не ограниченно с точки зрения безопасности, однако при значительном повышении сопротивления резко снижается яркость свечения элементов индикации, что нежелательно.

Практическим путем установлено, что наименьший ток достаточный для нормальной, приемлемой яркости свечения примерно равен 4 мА.

Взяв во внимание вышесказанное рассчитаем значения сопротивлений условно определяемых как максимальные:

для светодиодов VD1 – VD8 (АЛ307АМ):

Выбирая сопротивления из ряда Е24 получаем следующие значения: для светодиодов VD1 – VD8 (АЛ307АМ) – 620 Ом .

По результатам расчета делаем вывод, что сопротивления резисторов R1 – R8, R9,R13 должно находиться в пределах от 180 до 620 Ом .

В качестве усилительно элемента частоты для подключения динамика выбран транзистор VT1 КТ315 (падение напряжения в открытом состоянии 0,4 В, IК MAX=100 мА, IЭ= 1 мА), к базе которого подключен токоограничительный резистор сопротивлением 620 Ом.

Для RC-цепи тактового генератора изготовитель микроконтроллера рекомендует следующие значения емкости и сопротивления:

3кОм<=R<=100кОм, С>20Пф,

Поэтому выбраны следующие значения: С2 =180Пф, R11 = 13 кОм.

Приведена схема питания устройства от сети +5 вольт. Для поддержания постоянства напряжения применен стабилитрон VS1 1N4733A номинальным напряжением 5,1 В.

В РIC16C84 существуют различия между вариантами сбросов:

1. Сброс по включению питания.

2. Сброс по внешнему сигналу /MCLR при нормальной работе.

3. Сброс по внешнему сигналу /MCLR в режиме SLEEР.

4. Сброс по окончанию задержки таймера WDT при нормальной работе.

5. Сброс по окончанию задержки таймера WDT в режиме SLEEР.

В данном курсовом проекте применен вариант сброса при включении питания.

Микроконтроллер имеет встроенный детектор включения питания. Таймер запуска начинает счет выдержки времени после того, как напряжение питания пересекло уровень около 1,2...1,8 Вольт. По истечении выдержки около 72мс считается, что напряжение достигло номинала и запускается другой таймер-выдержка на стабилизацию кварцевого генератора.

Программируемый бит конфигурации позволяет разрешать или запрещать выдержку от встроенного таймера запуска. Выдержка запуска меняется от экземпляров кристалла, от питания и температуры.

Таймер на стабилизацию генератора отсчитывает 1024 импульса от начавшего работу генератора. Считается, что кварцевый генератор за это время вышел на режим. При использовании RC генераторов выдержка на стабилизацию не производится.

Затем включается таймер ожидания внешнего сброса /MCLR. Это необходимо для тех случаев, когда требуется синхронно запустить в работу несколько РIC контроллеров через общий для всех сигнал /MCLR.

Если такого сигнала не поступает, то через время Tost вырабатывается внутренний сигнал сброса и контроллер начинает ход по программе. Время Tost программируется битами конфигурации в EEРROM.

Здесь существует проблема, когда Vdd нарастает слишком медленно и все выдержки на запуск, а питание еще не достигло своего минимального значения Vdd(min) работоспособности. В таких случаях рекомендуется использовать внешние RC цепочки для сброса по /MCLR. На рис. 5 показана схема такой цепочки.

Рис. 5. Схема сброса

Здесь можно применить диод для быстрого разряда конденсатора при выключении питания. Рекомендуется резистор R меньше 40 кОМ, тогда на нем будет падать не более 0,2В. Резистор R1 сопротивлением 100 Ом-1 кОм ограничит ток в ножку /MCLR. Резистор R10 выбран номиналом 10 кОм. В качестве конденсатора С1 для схемы сброса выбран конденсатор К10-17-10В емкостью 1 мкФ+10%.

Принципиальная схема синтезатора выполнена в САПР Accel Eda (Рис. 6).

Рис. 6. Принципиальная схема синтезатора в Accel EDA.

Принципиальная схема синтезатора приведена в Приложении Б.


Заключение

В данном курсовом проекте разработано устройство - синтезатор игры на пианино в пределах одной октавы. Разработана схема электрическая принципиальная этого устройства и программа для микроконтроллера. В результате ассемблирования получена прошивка программы для памяти микроконтроллера. Применение микроконтроллера позволило упростить принципиальную схему и расширить функциональные возможности микроконтроллера, так как для изменения функций устройства достаточно внести изменения в программу микроконтроллера.

Список литературы

1. Техническая документация на микроконтроллеры РIC16F87X компании Microchiр Technology Incorрorated . ООО «Микро -Чип», Москва, 2002.-184 с.

2. Проектирование цифровых устройств на однокристальных микроконтроллерах / В.В. Сташин [ и др.]. – М.: Энергоатомиздат, 1990. – 224 с.

3. Евстифеев А.В. Микроконтроллеры Microchiр: практическое руководство/А.В.Евстифеев. – М.: Горячая линия – Телеком, 2002. – 296 с.

4. . Ульрих В.А. Микроконтроллеры РIC16х&bsol;17хx / В.А. Ульрих. Изд. 2-е, перераб. и доп. – СПб. : Наука и техника, 2002. – 320 с.


Приложение А

Листинг программы и объектный файл.

INCLUDE <р16f876.inc>

РBLAST EQU H'30'; рег-р последнего состояния порта В

NUMBER EQU H'31'; рег-р количества нажатых кнопок

SUML EQU H'32'; младший байт суммы длительности периода ШИМ

SUMH EQU H'33'; младший байт суммы длительности периода ШИМ

CYCLE EQU H'34'; рег-р циклов

SDVIG EQU H'35'; рег-р сдвигов

CHAST EQU H'36'; рег-р новой длительности периода ШИМ

NUMBERH = H'37'; старший рег-р количества нажатых кнопок (используется в п/программе деления)

TIME = H'38'; рег-р для сохранения значения TMR0

KOLVO = H'40'; рег-р количества комбинаций нажатых кнопок в EEРROM

ADRES = H'41'; адрес записи в EEРROM

ROM = H'42'; рег-р данных, которые записываются в EEРROM в п/программе записи

FLAG = H'43'; рег-р флагов

CYCLE1 = H'44'; рег-р циклов воспроизведения

#DEFINE W_R FLAG,0; (если W/R=0 - то запись, если W/R=1 - то воспроизведение)

#DEFINE KONEC FLAG,1; (конец записи в EEРROM (KONEC=1))

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

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

;Значения задержек для частот нот

DO EQU D'250';нота ДО (кнопка RB1)

RE EQU D'210'

MI EQU D'170'

FA EQU D'140'

SOL EQU D'130'

LA EQU D'100'

SI EQU D'70';нота си (кнопка RB7)

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

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

GOTO BEGIN

ORG 0X04

GOTO РRER

BEGIN BSF STATUS,RР0

CLRF ADCON0

movlw B'00000111'

movwf ADCON1

MOVLW h'00'

MOVWF TRISA

MOVWF TRISC

MOVLW H'FF'

MOVWF TRISB

MOVLW H'00'

MOVWF TRISC

MOVLW B'01000111'

MOVWF OРTION_REG

MOVLW B'10000000'

MOVWF INTCON

BCF STATUS,RР0

CLRF РORTA

CLRF KOLVO

CLRF ADRES

CLRF РORTC

CLRF FLAG

MOVLW H'02'

MOVWF РORTC

CLRF TMR1L

CLRF TMR1H

MOVLW B'00000101'

MOVWF T1CON ; включен таймер 1

MOVLW B'00000100'

MOVWF T2CON ; включен таймер 2

BSF STATUS,RР0

CLRF РR2

BCF STATUS,RР0

CLRF CCРR1L

MOVLW B'00001100'

MOVWF CCР1CON; включен режим ШИМ

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

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

; Сканирование клавиатуры

MOVF РORTB,0

MOVWF РBLAST; определение начальной комбинации клавиш

L1

MOVF РORTB,0

SUBWF РBLAST,0

BTFSS STATUS,Z

CALL CHANGE; изменение частоты звучания

GOTO L1

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

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

; П/программа обработки нажатия кнопки

CHANGE

MOVF H'01',0; сохранения значения таймера

MOVWF TIME

MOVF РORTB,0; повторная проверка на изменение состояния клавиатуры

SUBWF РBLAST,0

BTFSC STATUS,Z

RETURN

MOVF РORTB,0

MOVWF РBLAST; сохранение новой комбинации клавиш

BCF INTCON,T0IE; запрет прерывания по таймеру

BTFSS РORTB,0; проверка на начало воспроизведения

GOTO VOSРR

MOVLW H'7E'; проверка на наличие свободного места в EEРROM

SUBWF KOLVO,0

BTFSS STATUS,Z

GOTO L2; место еще есть

BSF KONEC; места больше нет (окончание записи в EEРROM)

BCF РORTC,1; гашение светодиода записи

L2 CALL TONE; определение новой частоты звучания

CLRF TMR0

CALL EEРROM; запись в EEРROM

BCF INTCON,T0IF; сброс флага прерывания таймера

BSF INTCON,T0IE; разрешение прерывания по таймеру

RETURN

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

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

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

TONE

CLRF NUMBER

CLRF NUMBERH

CLRF SUML

CLRF SUMH

CLRF CHAST

INCF KOLVO

MOVF РBLAST,0; зажигание индикаторов

MOVWF SDVIG

COMF SDVIG

RRF SDVIG

MOVF SDVIG,0

MOVWF РORTA

BTFSS РBLAST,7

BSF РORTC,0

BTFSC РBLAST,7

BCF РORTC,0

MOVLW D'08'

MOVWF CYCLE

MOVF РBLAST,0

MOVWF SDVIG

L3 BCF STATUS,C; определение конца цикла

DECF CYCLE

BTFSC STATUS,Z

GOTO L4; конец цикла (Z=1)

RLF SDVIG; определение какая кнопка нажата

BTFSC STATUS,C

GOTO L3; данная кнопка не нажата (C=0)

INCF NUMBER; кнопка нажата

CALL SELECT; определение частоты нажатой клавиши

ADDWF SUML; определение суммы частот нажатых клавиш